
- •Введение
- •Жизненный цикл it-проекта
- •Концепция проекта
- •Определение проекта
- •Выполнение проекта
- •Завершение проекта
- •Стандарты жизненного цикла
- •Выбор методологии
- •Жесткие и гибкие методологии Модель водопада
- •Итеративная разработка
- •Спиральная модель
- •Архитектура Вычислительные системы
- •Операционные системы
- •Выбор языка и среды программирования
- •Краткий обзор распространенныхпромышленных языков программирования и программных платформ
- •Разработка программного обеспечения Парадигмы программирования
- •Структурное программирование
- •Процедурное программирование
- •Функциональное программирование
- •Событийно-ориентированное программирование
- •Объектно-ориентированное программирование
- •Аспектно-ориентированное программирование
- •Визуально-ориентированное программирование
- •Метапрограммирование
- •Качество кода. Критерии качества кода
- •Форматирование и оформление
- •Комментарии
- •Читаемость
- •Обработка исключений
- •Документирование
- •Рефакторинг
- •Архитектура программного обеспечения
- •Отличие архитектуры по от детального проектирования по
- •Примеры архитектурных стилей и моделей
- •Паттерны проектирования
- •Адаптер (adapter, wrapper)
- •Абстрактная фабрика (abstractfactory, kit)
- •Стратегия (strategy, policy)
- •Менеджмент Проекта
- •Проектный менеджмент
- •Команда менеджмента проекта Команды в проекте
- •Соотношение между различными командами в проекте
- •Цели кмп в проекте
- •Создание и развитие кмп Сущность и характеристики кмп
- •Управление трудовыми ресурсами проекта и менеджмент человеческих ресурсов проекта
- •Интегрированная культура кмп
- •Оценка деятельности кмп Что такое эффективная кмп?
- •Команда Менеджмента Проекта – критический фактор успеха проекта
- •Структура проекта Определение проекта
- •Основные признаки проекта
- •Направленность на достижение целей
- •Координированное выполнение взаимосвязанных действий
- •Ограниченная протяженность во времени
- •Уникальность
- •Структура проекта
- •Разработка программного обеспечения Виртуальная реальность
- •Виртуальная реальность в играх.
- •Виртуальная реальность и 3d.
- •История виртуальной реальности.
- •Что такое виртуальная реальность?
- •Миры с различными потенциально-возможными сценариями хода событий
- •Студии виртуальной реальности на телевидении
- •Имитационное моделирование
- •Искусственный интеллект
- •Предпосылки развития науки искусственного интеллекта
- •Подходы и направления
- •Тест Тьюринга
- •Символьный подход
- •Логический подход
- •Накопление и использование знаний
- •Суть процесса искусственного мышления
- •Применение
- •Перспективы
- •Искусственный интеллект в играх
- •Распределённые и облачные вычисления Распределённые вычисления
- •История
- •Участие в проектах распределенных вычислений Общая схема участия
- •Привлечение и мотивация участников
- •Критика проектов распределенных вычислений
- •Организации, участвующие в проектах распределенных вычислений
- •Список проектов распределённых вычислений
- •Биология и медицина
- •Математика и криптография
- •Естественные науки
- •По для организации распределённых вычислений
- •Облачные вычисления
- •Терминология
- •Критика
- •Примеры
- •Потребность
- •Внешние и внутренние облака
- •Стоимость
- •Надёжность
- •Проблемы облачных технологий
- •Нейронные сети
- •Возможные способы применения и реализации
- •Категории аппаратного обеспечения инс
- •Цифровое исполнение
- •Аналоговое исполнение
- •Гибридное исполнение
- •Области применения нейронных сетей
- •Аутсорсинг
- •Мировой рынок экспортного программирования
- •Прогноз развития мирового и российского рынка
- •Белорусскиекомпании
- •Типы аутсорсинга
- •Развитие cad технологий
- •Исправление ошибок
- •Системы старшего класса
- •Большие сборки
- •Зачем нужны сборки
- •Стратегии упрощения
- •Моделирование
- •Параметризация
- •Гибридное моделирование
- •Практические результаты
- •Проектная база: технология моделирования
- •Переход к гибридному моделированию
- •Электронная сборка
- •Модель акторов
- •История
- •Фундаментальные концепции
- •Формальные системы
- •Применения
- •Семантика передачи сообщений
- •Локальность
- •Безопасность
- •Актуальность в настоящий момент
- •Социальный компьютинг
- •Сферы применения
- •С чего начать
- •Тестирование программного обеспечения Уровни тестирования
- •Модульное тестирование
- •Интеграционное тестирование
- •Системы непрерывной интеграции
- •Системное тестирование программного обеспечения
- •Функциональное тестирование
- •Регрессионное тестирование
- •Виды тестов регрессии
- •Нагрузочное тестирование
- •Тестирование «белого ящика» и «чёрного ящика»
- •Серый ящик. Комбинация предыдущих.
- •Права автора Личные неимущественные права:
- •Личные имущественные права:
- •Способы защиты авторского права
- •Защита при помощи компьютерных компакт-дисков
- •Методы взлома/обхода технических мер защиты
- •Нарушение авторских прав
- •Типы лицензий
- •Проприетарные лицензии
- •Свободные и открытые лицензии
- •Пиратское по
- •Взгляд в будущее
- •Взлом информации и защита от взлома Классы атак Аутентификация (Authentication)
- •Авторизация (Authorization)
- •Атакинаклиентов (Client-side Attacks)
- •Выполнение кода (Command Execution)
- •Разглашение информации (Information Disclosure)
- •Логические атаки (Logical Attacks)
- •Компьютерные вирусы
- •Классификация вирусов
- •Антивирусные программы
- •Методы обнаружения вирусов
- •Метод соответствия определению вирусов в словаре
- •Метод обнаружения странного поведения программ
- •Метод обнаружения при помощи эмуляции
- •Метод «Белого списка»
- •Эвристический анализ
- •Классические hips
- •Экспертные hips
- •Жизненный цикл вируса.
- •Стратегии развития крупнейших it-компаний
- •Перспективы развития Microsoft
- •Секреты успеха
- •Крупнейшие производители современных операционных систем и их продукты
- •Основные заблуждения по поводу Macintosh
- •Технические подробности операционной системы
- •Причины успеха и будущее компании
- •История создания Linux
- •Свободное программное обеспечение
- •Графические интерфейсы Linux
- •Дистрибутивы Linux
- •Безопасность Linux
- •Краткая история FreeBsd и unix
- •Рождение системы bsd
- •Bsd на платформах Intel х86
- •Рождение FreeBsd
- •Преимущества FreeBsd
- •Различия между FreeBsd и Windows
- •Мобильные ос
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет прикладной математики и информатики
Кафедра технологий программирования
Software
Engineering
Минск 2011
Рабочая группа 8а ФПМИ БГУ, кафедра ТП 2011:
Беличенко Алексей
Визгалова Елена
Конколович Дмитрий
Кошман Екатерина
Микита Алексей
Мищенчук Владимир
Монич Елена
Петкун Павел
Трухан Станислав
Халупко Алексей
Хомякова Екатерина
Шеповалов Артём
Contents
Введение 8
Жизненный цикл IT-проекта 10
Концепция проекта 10
Определение проекта 11
Выполнение проекта 12
Завершение проекта 12
Стандарты жизненного цикла 13
Выбор методологии 13
Жесткие и гибкие методологии 14
Модель водопада 14
Итеративная разработка 14
Спиральная модель 15
XP 16
Scrum 18
Lean 19
Архитектура 20
Вычислительные системы 20
Операционные системы 21
Выбор языка и среды программирования 22
Краткий обзор распространенныхпромышленных языков программирования и программных платформ 25
Java 25
C# 26
Ruby 27
Python 28
PHP 29
Scala 30
C++ 31
Разработка программного обеспечения 33
Парадигмы программирования 33
Структурное программирование 33
Процедурное программирование 34
Функциональное программирование 34
Событийно-ориентированное программирование 35
Объектно-ориентированное программирование 35
Аспектно-ориентированное программирование 37
Визуально-ориентированное программирование 38
Метапрограммирование 38
Качество кода. Критерии качества кода 39
Форматирование и оформление 39
Комментарии 40
Читаемость 40
Обработка исключений 40
Документирование 41
Рефакторинг 41
Архитектура программного обеспечения 42
Отличие архитектуры ПО от детального проектирования ПО 44
Примеры архитектурных стилей и моделей 44
Паттерны проектирования 45
Адаптер (adapter, wrapper) 45
Абстрактная фабрика (abstractfactory, kit) 46
Стратегия (strategy, policy) 46
Менеджмент Проекта 48
Проектный менеджмент 48
Команда менеджмента проекта 48
Команды в проекте 48
Соотношение между различными командами в проекте 49
Цели КМП в проекте 49
Создание и развитие КМП 49
Сущность и характеристики КМП 49
Управление трудовыми ресурсами проекта и менеджмент человеческих ресурсов проекта 50
Интегрированная культура КМП 51
Оценка деятельности КМП 51
Что такое эффективная КМП? 51
Команда Менеджмента Проекта – критический фактор успеха проекта 51
Структура проекта 52
Определение проекта 52
Основные признаки проекта 52
Направленность на достижение целей 52
Координированное выполнение взаимосвязанных действий 53
Ограниченная протяженность во времени 53
Уникальность 54
Структура проекта 54
Разработка программного обеспечения 57
Виртуальная реальность 57
Виртуальная реальность в играх. 58
Виртуальная реальность и 3D. 58
История виртуальной реальности. 60
Что такое виртуальная реальность? 61
Миры с различными потенциально-возможными сценариями хода событий 62
Студии виртуальной реальности на телевидении 67
Имитационное моделирование 68
Искусственный интеллект 78
Предпосылки развития науки искусственного интеллекта 78
Подходы и направления 78
Тест Тьюринга 79
Суть процесса искусственного мышления 80
Применение 80
Перспективы 81
Искусственный интеллект в играх 81
Этика 81
Распределённые и облачные вычисления 82
Распределённые вычисления 82
Участие в проектах распределенных вычислений 82
Облачные вычисления 86
Нейронные сети 91
Этапы решения задач 91
Классификация нейронных сетей 91
Возможные способы применения и реализации 92
Категории аппаратного обеспечения ИНС 93
Аутсорсинг 96
ИТ-аутсорсинг 96
ИТ-аутсорсинг и любая современная компания 96
Мировой рынок экспортного программирования 97
Прогноз развития мирового и российского рынка 97
Белорусскиекомпании 98
Типы аутсорсинга 98
САПР 100
Развитие CAD технологий 101
Исправление ошибок 102
Системы старшего класса 104
Большие сборки 106
Зачем нужны сборки 106
Стратегии упрощения 107
Моделирование 109
Параметризация 109
Гибридное моделирование 110
Практические результаты 111
Проектная база: технология моделирования 111
Переход к гибридному моделированию 111
Электронная сборка 112
Модель акторов 113
История 113
Фундаментальные концепции 113
Формальные системы 114
Применения 114
Семантика передачи сообщений 114
Локальность 115
Безопасность 115
Актуальность в настоящий момент 116
Социальный компьютинг 117
IdeaManagement 118
Сферы применения 119
С чего начать 120
Тестирование программного обеспечения 123
Уровни тестирования 123
Модульное тестирование 123
Интеграционное тестирование 124
Системное тестирование программного обеспечения 125
Функциональное тестирование 126
Регрессионное тестирование 127
Нагрузочное тестирование 129
Тестирование «белого ящика» и «чёрного ящика» 130
Серый ящик. Комбинация предыдущих. 130
Информационная безопасность 132
Авторское право и его защита 132
Авторское право 132
Типы лицензий 137
Взлом информации и защита от взлома 141
Классы атак 141
Компьютерные вирусы 147
Антивирусные программы 149
Жизненный цикл вируса. 152
Стратегии развития крупнейших IT-компаний 153
Microsoft 153
Перспективы развития Microsoft 153
Секреты успеха 153
IBM 156
Крупнейшие производители современных операционных систем и их продукты 158
Apple/Mac OS X 159
Linux 163
FreeBSD 169
Преимущества FreeBSD 172
Мобильные ОС 175
Symbian OS 175
Windows Mobile 176
Android 178
Введение
Изменения, происходящие в деловом мире в последние десятилетия, характеризуются постоянным ужесточением конкуренции. Стремление компаний выжить и преуспеть в новых условиях приводит к целенаправленным попыткам получить конкурентное преимущество с помощью современных информационных технологий.
Согласно появившейся в 1980-м и развивающейся по настоящее время концепции стратегической роли информационных систем, ИС являются не просто инструментом, обеспечивающим обработку информации для конечных пользователей внутри фирмы. Они становятся “генератором” новых продуктов и услуг, которые должны обеспечить фирме конкурентную позицию на рынке, а также играют решающую роль в реализации стратегических планов организации.
Эффективное использование информации не означает, что необходимо механически повышать скорость и объемы ее переработки. На первый план выходят такие проблемы, как:
адекватность собираемой, хранимой, обрабатываемой и предоставляемой пользователям информации их реальным потребностям;
четкое представление об информационных потребностях участников процессов;
понимание соответствия процессов стратегическим целям организации;
видение перспектив развития организации и возможное влияние развития информационных технологий на них
Для динамичного развития бизнеса в целом информационная инфраструктура не менее важна, чем любая другая инфраструктура.Особую роль при повышении уровня информатизации производственных и управленческих процессов играют информационные системы.
Под информационной системой (ИС) понимается система, предназначенная для хранения, обработки, поиска, распространения, передачи и предоставления информации.
В этой книге описываются все основные этапы создания информационных систем.
Сначала читателю предлагается ознакомиться с основами проектирования информационных систем. В первых главах подробно описывается алгоритм построения плана работ по созданию проекта. Далее ведётся описание основных моделей и паттернов проектирования, которые применяются при реализации поставленных задач. В заключение приводятся примеры стратегий развития крупнейших на данный момент лидеров рынка IT.
Книга будет полезна и начинающему программисту, которому требуется сформировать представления о возможных методах реализации задач, и опытному разработчику, который хочет систематизировать свои знания о структуре проекта и отдельных его элементах.
Жизненный цикл it-проекта
Одним из ключевых понятий управления проектами, в том числе в приложении к индустрии программного обеспечения, является жизненный цикл проекта. Жизненный цикл проекта включает все фазы от момента инициации до момента завершения. Как влияет размер проекта на жизненный цикл? Логично, что чем больше проект – тем больше его жизненный цикл. Например, существует корпорация, которая хочет сделать некий проект базы данных всей материальной базы организации. Проект глобальный, а цикл не завершится пока данный проект не перестанет функционировать.
Переходы от одного этапа к другому редко четко определены, за исключением тех случаев, когда они формально разделяются принятием предложения или получением разрешения на продолжение работы.
Принято разделять жизненный цикл проекта на 5 фаз:
Инициация
Планирование
Выполнение
Контроль и мониторинг
Завершение
При создании IT-проекта все эти фазы проходятся последовательно, за исключением контроля и мониторинга. Его элементы, такие как сбор отчетности о ходе работ по проекту, анализ текущего состояния проекта относительно базовых показателей (результаты, стоимость, время), прогнозирование достижения целей проекта, подготовку и анализ последствий корректирующих воздействий, принятие решений о воздействиях и изменениях используются на всех стадиях разработки ПО, поэтому у IT-проекта принято выделять следующие обобщенные фазы жизненного цикла (в скобках приведены используемые в различных источниках альтернативные термины):
Концепция (инициация, идентификация, отбор)
Определение (анализ, планирование)
Выполнение (практическая реализация или внедрение, производство и развертывание, проектирование или конструирование, сдача в эксплуатацию, инсталляция, тестирование и т.п.)
Закрытие (завершение, включая оценивание после завершения)