З курсу

С.О. КАРПОВА

 

КОНСПЕКТ ЛЕКЦІЙ

 

З курсу

“Основи програмної інженерії”

 

 

Херсон 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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.025 сек.