З курсу
С.О. КАРПОВА
КОНСПЕКТ ЛЕКЦІЙ
З курсу
“Основи програмної інженерії”
Херсон 2014
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ КОРАБЛЕБУДУВАННЯ
імені адмірала Макарова
ХЕРСОНСЬКА ФІЛІЯ
Кафедра інформаційних технологій
С.О. КАРПОВА
КОНСПЕКТ ЛЕКЦІЙ
з курсу
“Основи програмної інженерії”
Рекомендовано Методичною радою ХФ НУК
ББК 32.973
Х 82
УДК 681.3
Карпова С.О. Конспект лекцій з курсу “Основи програмної інженерії”. Херсон: ХФ НУК, 2014.- 285 с
Кафедра інформаційних технологій
Конспект лекцій призначений для студентів І курсу напряму підготовки 6.050103 “Програмна інженерія”, спеціальності 05010301 “Програмне забезпечення систем” Херсонської філії НУК, а також може бути корисний для студентів усіх інших спеціальностей, що вивчають основи програмування та базові концепції програмної інженерії. Конспект може бути використаний як посібник при самостійному вивченні програмної інженерії.
Рецензенти: к.т.н., доцент В.Ф.Тимошенко
С С.О.Карпова
С Національний університет кораблебудування
Херсонська філія, 2014
Содержание
Предисловие. 9
Часть I. Инженерные основы программного обеспечения. 10
1. Введение в программную инженерию.. 10
1.1. Вопросы и ответы об инженерии программного обеспечения. 11
1.2. Профессиональные и этические требования к специалистам по программному обеспечению.. 13
2. Системотехника вычислительных систем. 14
2.1. Интеграционные свойства систем. 15
2.2. Система и ее окружение. 17
2.3. Моделирование систем. 19
2.4. Процесс создания систем. 20
2.5. Приобретение систем. 21
3. Процесс создания программного обеспечения. 23
3.1. Модели процесса создания программного обеспечения. 24
3.2. Итерационные модели разработки программного обеспечения. 25
3.3. Спецификация программного обеспечения. 25
3.4. Проектирование и реализация программного обеспечения. 27
3.5. Эволюция программных систем. 28
3.6. Автоматизированные средства разработки программного обеспечения. 29
4. Технологии производства программного обеспечения. 31
Часть II. Требования к программному обеспечению.. 33
5. Требования к программному обеспечению.. 33
5.1. Функциональные и нефункциональные требования. 34
5.2. Пользовательские требования. 34
5.3. Системные требования. 35
5.4. Документирование системных требований. 36
6. Разработка требований. 39
6.1. Анализ осуществимости. 40
6.2. Формирование и анализ требований. 41
6.3. Аттестация требований. 43
6.4. Управление требованиям. 44
7. Матрица требований. Разработка матрицы требований. 46
Часть III. Моделирование программного обеспечения. 52
8. Архитектурное проектирование. 52
8.1. Структурирование системы.. 54
8.2. Модели управления. 55
8.3. Модульная декомпозиция. 55
8.4. Проблемно-зависимые архитектуры.. 56
9. Архитектура распределенных систем. 57
9.1. Многопроцессорная архитектура. 60
9.2. Архитектура клиент/сервер. 61
9.3. Архитектура распределенных объектов. 66
9.4. CORBA.. 69
10. Объектно-ориентированное проектирование. 74
10.1. Объекты и классы объектов. 75
10.2. Процесс объектно-ориентированного проектирования. 76
10.3. Модификация системной архитектуры.. 77
11. Проектирование систем реального времени. 79
11.1. Проектирование систем реального времени. 81
11.2. Управляющие программы.. 82
11.3. Системы наблюдения и управления. 84
11.4. Системы сбора данных. 88
12. Проектирование с повторным использованием компонентов. 90
12.1. Покомпонентная разработка. 94
12.2. Семейства приложений. 97
12.3. Проектные паттерны.. 100
13. Проектирование интерфейса пользователя. 102
13.1. Принципы проектирования интерфейсов пользователя. 103
13.2. Взаимодействие с пользователем. 106
13.3. Представление информации. 108
13.4. Средства поддержки пользователя. 112
13.5. Оценивание интерфейса. 114
Часть IV. Технологии разработки программного обеспечения. 116
14. Жизненный цикл программного обеспечения: модели и их особенности. 116
14.1. Каскадная модель жизненного цикла. 118
14.2. Эволюционная модель жизненного цикла. 119
14.2.1. Формальная разработка систем. 121
14.2.2. Разработка программного обеспечения на основе. 122
ранее созданных компонентов. 122
14.3. Итерационные модели жизненного цикла. 123
14.3.1 Модель пошаговой разработки. 124
14.3.2 Спиральная модель разработки. 126
15. Методологические основы технологий разработки. 128
программного обеспечения. 128
16. Методы структурного анализа и проектирования. 129
программного обеспечения. 129
17. Методы объектно-ориентированного анализа и. 131
проектирования программного обеспечения. Язык моделирования UML. 131
Часть V. Письменная коммуникация. Документирование проекта Программного обеспечения. 137
18. Документирование этапов разработки. 137
программного обеспечения. 137
19. Планирование проекта. 145
19.1 Уточнение содержания и состава работ. 145
19.2 Планирование управления содержанием. 147
19.3 Планирование организационной структуры.. 148
19.4 Планирование управления конфигурациями. 148
19.5 Планирование управления качеством. 149
19.6 Базовое расписание проекта. 149
20. Верификация и аттестация программного обеспечения. 155
20.1. Планирование верификации и аттестации. 159
20.2. Инспектирование программных систем. 160
20.3. Автоматический статический анализ программ. 161
20.4. Метод "чистая комната". 163
21. Тестирование программного обеспечения. 165
21.1. Тестирование дефектов. 166
21.1.1. Тестирование методом черного ящика. 167
21.1.2. Области эквивалентности. 168
21.1.3. Структурное тестирование. 170
21.1.4. Тестирование ветвей. 170
21.2. Тестирование сборки. 172
21.2.1. Нисходящее и восходящее тестирование. 173
21.2.2. Тестирование интерфейсов. 175
21.2.3. Тестирование с нагрузкой. 178
21.3. Тестирование объектно-ориентированных систем. 179
21.3.1. Тестирование классов объектов. 179
21.3.2. Интеграция объектов. 180
21.4. Инструментальные средства тестирования. 181
Часть VI. Управление проектом программного обеспечения. 183
22. Управление проектами. 183
22.1. Процессы управления. 184
22.2. Планирование проекта. 186
22.3. График работ. 187
22.4. Управление рисками. 188
23. Управление персоналом. 190
23.1. Пределы мышления. 190
23.1.1. Организация человеческой памяти. 190
23.1.2. Решение задач. 194
23.1.3. Мотивация. 196
23.2. Групповая работа. 198
23.2.1. Создание команды.. 198
23.2.2. Сплоченность команды.. 200
23.2.3. Общение в группе. 201
23.2.4. Организация группы.. 202
23.3. Подбор и сохранение персонала. 205
23.3.1. Рабочая среда. 207
23.4. Модель оценки уровня развития персонала. 209
24. Оценка стоимости программного продукта. 211
24.1. Производительность. 213
24.2. Методы оценивания. 218
24.3. Алгоритмическое моделирование стоимости. 220
24.3.1. Модель СОСОМО.. 222
24.3.2. Алгоритмические модели стоимости в планировании проекта. 230
24.4. Продолжительность проекта и наем персонала. 232
25. Управление качеством. 235
25.1. Обеспечение качества и стандарты.. 238
25.1.1. Стандарты на техническую документацию.. 241
25.1.2. Качество процесса создания программного обеспечения. 243
и качество программного продукта. 243
25.2. Планирование качества. 245
25.3. Контроль качества. 246
25.3.1. Проверки качества. 247
25.4. Измерение показателей программного обеспечения. 248
25.4.1. Процесс измерения. 250
25.4.2. Показатели программного продукта. 251
26. Надежность программного обеспечения. 254
26.1. Обеспечение надежности программного обеспечения. 256
26.1.1 Критические системы.. 256
26.1.2. Работоспособность и безотказность. 257
26.1.3. Безопасность. 261
26.1.4. Защищенность. 264
26.2. Аттестация безотказности. 266
26.3. Гарантии безопасности. 268
26.4. Оценивание защищенности программного обеспечения. 268
27. Совершенствование производства программного обеспечения. 269
27.1. Качество продукта и производства. 271
27.2. Анализ и моделирование производства. 273
27.2.1. Исключения в процессе создания ПО.. 276
27.3. Измерение производственного процесса. 277
27.4. Модель оценки уровня развития. 278
27.4.1. Оценивание уровня развития. 281
27.5. Классификация процессов совершенствования. 283
Предисловие
Программные системы ныне присутствуют повсеместно: практически любые электронные устройства содержат программное обеспечение (ПО) того или иного вида. Без соответствующего программного обеспечения в современном мире невозможно представить индустриальное производство, школы и университеты, систему здравоохранения, финансовые и правительственные учреждения. Многие используют ПО для самообразования или различного рода развлечений. Создание спецификации требований, разработка, модификация и сопровождение таких систем ПО составляет суть технической дисциплины инженерия программного обеспечения (software engineering).
Даже простые системы ПО обладают высокой степенью сложности, поэтому при их разработке приходится использовать весь арсенал технических и инженерных методов. Таким образом, инженерия программного обеспечения – это инженерная дисциплина, где разработчики ПО используют теорию и методы компьютерных наук для успешного решения различных нетривиальных задач (но, конечно, не каждый проект ПО в силу различных причин успешно завершается). Большинство современных программ предлагают пользователям большие сервисные возможности для работы с ними – нельзя не заметить реального прогресса в развитии технологии создания ПО за последние 30 лет.
Инженерия программного обеспечения развивается в основном в соответствии с постановкой новых задач построения больших пользовательских систем ПО для промышленности, правительства и оборонного ведомства. С другой стороны, в настоящее время сфера программного обеспечения чрезвычайно широка: от игр на специализированных игровых консолях, а также программных продуктов для персональных компьютеров и Web-ориентированных программных систем до очень больших масштабируемых распределенных систем. Хотя некоторые технологии, применяемые для построения пользовательских программных систем, универсальны (например, объектно-ориентированные методы), новые технологии создания программного обеспечения развиваются с учетом различных типов ПО. Невозможно охватить в одном конспекте все технологии создания ПО, поэтому сконцентрируем основное внимание не на методах разработки отдельных программных продуктов, а на универсальных технологиях и методах проектирования и построения больших масштабируемых программных систем.
Не существует простых решений задач создания ПО; для этого необходим широкий спектр средств, методов и технологий.
Дата добавления: 2015-08-14; просмотров: 1534;