К. М. Лавріщева програмна інженерія підручник Київ, 2008
Скачать 5.23 Mb.
|
1 К.М. Лавріщева ПРОГРАМНА ІНЖЕНЕРІЯ Підручник Київ, 2008 УДК 681.3.06 Зміст 3 Лавріщева К.М. ПРОГРАМНА ІНЖЕНЕРІЯ.–К.– 2008.–319 с. ISBN 978–966–02–5052–9 У підручнику наведено визначення програмної інженерії, її дисциплін та областей ядра знань – SWEBOK, створеного Міжнародним комітетом фахівців у галузі інформатики. Обгрунтовано їхній зміст, базові поняття та складові елементи. З урахуванням Міжнародної програми Computing Curricula – 2004 викладено основні теми навчання: аналіз предметної області, формулювання вимог, проектування, верифікація і тестування, оцінювання якості та керування проектом. Визначено основні положення життєвого циклу, якості та керування згідно з головними стандартами програмної інженерії. Викладено методи інтеграції різномовних програм та підходів до їхніх змін для нових середовищ. Подано інженерію виробництва прикладних систем та їх сімейств з готових компонентів. Наведено інструментально-технологічні засоби колективного виробництва програмних продуктів у сучасних середовищах та основи їхнього менеджменту і якості. Для викладачів, аспірантів та студентів, що вивчають дисципліни програмної інженерії у вищих навчальних закладах, а також тих, хто бере участь у виготовленні програмних продуктів на індустріальній основі. Відповідальний редактор академік НАН України П.І.Андон Рецензенти: О.Л.Перевозчикова, доктор фізико-математичних наук, професор, член-кореспондент НАН України, завідувачка відділу Інституту кібернетики імені В.М.Глушкова НАН України. М.С.Нікітченко, доктор фізико-математичних наук, професор завідувач кафедри «Теорія і технологія програмування» Київського Національного університету імені Тараса Шевченка. С.Ф.Теленик, доктор технічних наук, професор, завідувач кафедри автоматики та управління в технічних системах Національного технічного університету України «Київський політехнічний інститут». Рекомендовано Міністерством освіти і науки України як підручник для вищих навчальних закладів (лист №1.4/18–Г–1080 від 14.05.08) Затверджено до друку вченою радою Інституту програмних систем НАН України ISBN 978–966–02–5052–9 © К.М.Лавріщева, 2008 4 ЗМІСТ ПЕРЕДМОВА ..................................................................................................... 8 ВСТУП .............................................................................................................. 11 Розділ 1. ДИСЦИПІНИ ПРОГРАМНОЇ ІНЖЕНЕРІЇ І ОБЛАСТІ ЯДРА ЗНАНЬ – SWEBOK .................................................................................................... 14 1.1. Загальне визначення дисциплін програмної інженерії .................................................... 14 1.1.1. Програмна інженерія як наукова дисципліна ............................................................ 17 1.1.2. Програмна інженерія як інженерна дисципліна ........................................................ 19 1.1.3. Програмна інженерія як виробнича дисципліна........................................................ 24 1.1.4. Дисципліна керування................................................................................................ 25 1.1.5. Економічна дисципліна .............................................................................................. 26 1.2. Характеристика областей знань з інженерії програмного забезпечення – SWEBOK .... 27 1.2.1. Інженерія вимог.......................................................................................................... 28 1.2.2. Проектування програмного забезпечення ................................................................. 30 1.2.3. Конструювання програмного забезпечення............................................................... 32 1.2.4. Тестування програмного забезпечення...................................................................... 34 1.2.5. Супровід програмного забезпечення ......................................................................... 36 1.2.6. Керування конфігурацією .......................................................................................... 37 1.2.7. Керування інженерією програмного забезпечення.................................................... 39 1.2.8. Базовий процес программної інженерії ..................................................................... 41 1.2.9. Методи і інструменти програмної інженерії ............................................................. 42 1.2.10. Якість програмного забезпечення ............................................................................ 45 Контрольні питання і завдання ............................................................................................... 48 Список літератури до розділу 1.............................................................................................. 49 Розділ 2. СТАНДАРТ І МОДЕЛІ ЖИТТЄВОГО ЦИКЛУ............................. 50 2.1 Характеристика життєвого циклу стандарта ISO/IEC 12207 ............................................ 50 2.2. Формування прикладних моделей життєвого циклу........................................................ 53 2.3. Типи моделей життєвого циклу........................................................................................ 58 2.3.1. Каскадна модель......................................................................................................... 58 2.3.2. Інкрементна модель.................................................................................................... 59 2.3.3. Спіральна модель ....................................................................................................... 60 2.3.4. Еволюційна модель .................................................................................................... 62 Контрольні питання і завдання ............................................................................................... 63 Список літератури до розділу 2............................................................................................... 64 Розділ 3. ВИЗНАЧЕННЯ ВИМОГ ДО ПРОГРАМНИХ СИСТЕМ................. 65 3.1. Загальні підходи до визначення вимог............................................................................. 65 3.1.1. Класифікація вимог .................................................................................................... 66 3.1.2. Аналіз і збирання вимог ............................................................................................. 68 3.1.3 Інженерія вимог........................................................................................................... 70 3.1.4. Фіксація вимог............................................................................................................ 71 3.1.5. Трасування вимог ....................................................................................................... 73 3.2. Об’єктно-орієнтована інженерія вимог ............................................................................ 74 3.2.1. Візуальний підхід ....................................................................................................... 74 3.2.2. Текстовий підхід......................................................................................................... 78 Контрольні питання і завдання ............................................................................................... 79 Список літератури до розділу 3............................................................................................... 79 Розділ 4. МЕТОДИ ОБ'ЄКТНОГО АНАЛІЗУ І МОДЕЛЮВАННЯ ............... 80 4.1. Огляд об’єктно-орієнтованих методів аналізу і побудови моделей ................................ 80 4.1.1. Основні поняття об’єктно-орієнтованих методів аналізу......................................... 80 Зміст 5 4.1.2. Метод побудови об’єктної моделі предметної області.............................................. 82 4.2. Проектування архітектури програмних систем................................................................ 90 4.2.1. Загальні підходи до проектування програмних систем ............................................. 90 4.2.2. Проектування різних видів архітектур програмних систем .................................... 92 Контрольні питання і завдання ............................................................................................... 96 Список літератури до розділу 4............................................................................................... 96 Розділ 5. ПРИКЛАДНІ Й ТЕОРЕТИЧНІ МЕТОДИ ПРОГРАМУВАННЯ ..... 98 5.1. Прикладне (систематичне) програмування ...................................................................... 98 5.1.1 Структурне програмування......................................................................................... 99 5.1.2. Об’єктно-орієнтоване програмування ..................................................................... 105 5.1.3. UML-метод моделювання ........................................................................................ 107 5.1.4. Компонентне програмування ................................................................................... 111 5.1.5. Аспектно–орієнтоване програмування .................................................................... 116 5.1.6. Генерувальне (порождувальне) програмування ...................................................... 121 5.1.7. Сервісно-орієнтоване програмування...................................................................... 127 5.1.8. Агентне програмування ........................................................................................... 130 5.2. Теоретичне програмування............................................................................................. 133 5.2.1 Алгебраїчне та інсерційне програмування ............................................................... 133 5.2.2. Експлікативне, номінативне програмування ........................................................... 136 5.2.3. Алгоритмічні алгебри............................................................................................... 138 Контрольні питання і завдання ............................................................................................. 142 Список літератури до розділу 5............................................................................................. 142 Розділ 6. МЕТОДИ ДОВЕДЕННЯ, ВЕРИФІКАЦІЇ І ТЕСТУВАННЯ ПРОГРАМ................................................................................................................. 145 6.1. Мови специфікації програм і їхня класифікація ............................................................ 146 6.1.1. Мова формальної специфікацій – VDM................................................................... 148 6.1.2. Мова формальної специфікації – RAISE ................................................................. 150 6.1.3. Концепторна мова специфікації............................................................................... 152 6.1.4. Звичайна мова специфікації Spec#........................................................................... 153 6.2. Методи доведення правильності програм ...................................................................... 155 6.2.1. Базові методи доведення .......................................................................................... 155 6.2.2. Модель доведення програми за твердженнями ....................................................... 156 6.3. Верифікація і валідація програм..................................................................................... 159 6.3.1. Підхід до валідації сценарію вимог ......................................................................... 161 6.3.2. Верифікація об’єктних моделей............................................................................... 162 6.3.3. Підхід до верифікації композиції компонентів........................................................ 163 6.3.4. Загальні перспективи верифікації програм.............................................................. 164 6.4. Тестування програмних систем ...................................................................................... 165 6.4.1. Статичні методи тестування .................................................................................... 165 6.4.2. Динамічні методи тестування .................................................................................. 166 6.4.3. Функціональне тестування....................................................................................... 168 6.5. Інфраструктура перевірки правильності програмних систем ........................................ 169 6.5.1. Класифікація помилок і методи їхнього пошуку..................................................... 170 6.5.2. Процес тестування за життєвим циклом.................................................................. 173 6.5.3. Інженерія керування тестуванням............................................................................ 178 Контрольні питання і завдання ............................................................................................. 181 Список літератури до розділу 6............................................................................................. 181 Розділ 7. ІНТЕРФЕЙСИ, ВЗАЄМОДІЯ, ЕВОЛЮЦІЯ ПРОГРАМ І ДАНИХ ................................................................................................................................... 184 7.1. Визначення інтерфейсу у програмуванні ...................................................................... 184 7.1.1. Інтерфейси в сучасних середовищах ....................................................................... 185 7.1.2. Інтерфейс між клієнтом і сервером.......................................................................... 187 Зміст 6 7.2. Інтерфейс мов програмування ........................................................................................ 189 7.2.1. Інтерфейс і взаємозв'язок мов програмування........................................................ 189 7.2.2. Взаємодія різномовних програм .............................................................................. 191 7.2.3. Стандарт ISO/IEC 11404–96 з незалежних від мов типів даних.............................. 194 7.3. Перетворення даних за інтерфейсом ............................................................................. 196 7.3.1. Перетворення форматів даних ................................................................................. 196 7.3.2. Перетворення даних з баз даних .............................................................................. 198 7.4. Методи еволюційного змінювання компонентів і систем............................................ 201 7.4.1. Реінженерія програмних систем .............................................................................. 203 7.4.2. Рефакторінг компонентів ......................................................................................... 204 7.4.3. Реверсна інженерія ................................................................................................... 205 Контрольні питання і завдання ............................................................................................. 206 Список літератури до глави 7................................................................................................ 206 Розділ 8. ІНЖЕНЕРІЯ ВИРОБНИЦТВА ПРОГРАМНИХ ПРОДУКТІВ...... 209 8.1. Інженерія компонентів повторного використання ......................................................... 210 8.1.1. Специфікація КПВ ................................................................................................... 213 8.1.2. Репозітарій компонентів .......................................................................................... 216 8.1.3. Мова опису інтерфейсу компонентів....................................................................... 219 8.2. Прикладна інженерія та інженерія предметної області ................................................. 220 8.2.1. Прикладна інженерія................................................................................................ 221 8.2.2. Інженерія сімейства систем домена ......................................................................... 222 8.2.3. Стандартизація процесів інженерії домену ............................................................. 228 8.3. Інженерія індустріального виробництва програмних продуктів ................................... 229 8.3.1. Структура лінії виробництва програмних продуктів ............................................. 230 8.3.2. Технологічне виготовлення систем у середовищі Microsoft ................................ 231 8.3.3. Загальна характеристика інструментів Rational Rose .............................................. 235 8.3.4. Засоби підтримки процесу RUP ............................................................................. 238 8.3.5. Середовище розроблення систем – CORBA ............................................................ 241 8.3.6. JAVA-технологія ..................................................................................................... 246 8.4. Оцінювання вартості системи з компонентів ................................................................. 248 Контрольні питання і завдання ............................................................................................. 250 Список літератури до розділу 8............................................................................................. 250 Розділ 9. МОДЕЛІ ЯКОСТІ ТА НАДІЙНОСТІ ПРОГРАМНИХ СИСТЕМ252 9.1. Модель якості програмних систем ................................................................................. 252 9.1.1. Стандартні показники якості.................................................................................... 255 9.1.2. Метрики якості ......................................................................................................... 258 9.1.3. Стандартна оцінка показників якості...................................................................... 260 9.1.4. Керування якістю програмних систем ..................................................................... 262 9.2. Моделі оцінки надійності програмних систем ............................................................... 265 9.2.1. Ґрунтовні поняття проблематики надійності........................................................... 266 9.2.2. Класифікація моделей надійності ............................................................................ 269 9.2.3. Марковські та пуассонівські моделі надійності ...................................................... 271 9.2.4. Процеси оцінки надійності...................................................................................... 275 9.3. Сертифікація програмного продукту.............................................................................. 279 Контрольні питання й завдання ............................................................................................ 280 Список літератури до розділу 9............................................................................................. 280 Розділ 10. МЕТОДИ КЕРУВАННЯ ПРОГРАМНИМ ПРОЕКТОМ.............. 282 10.1. Менеджмент проекту .................................................................................................... 282 10.1.1. Основні поняття та задачі....................................................................................... 282 10.1.2. Головні цілі менеджменту проекту ....................................................................... 283 10.1.3. Процес менеджменту проекту................................................................................ 284 10.1.4. Модель процесу керування проектом .................................................................... 285 Зміст 7 10.1.5. Інфраструктура програмного проекту ................................................................... 287 10.2. Методи керування і планування проектом ................................................................... 289 10.2.1. Метод критичного шляху – СРМ ........................................................................... 291 10.2.2. Метод аналізу й оцінки проекту – PERT................................................................ 292 10.2.3. Планування і контроль проекту ............................................................................. 294 10.2.4. Оцінювання вартості проекту ................................................................................ 297 10.3. Методи керування ризиками у проекті......................................................................... 298 10.4. Керування конфігурацією системи.............................................................................. 301 10.4.1. Формування версій й контроль конфігурації ........................................................ 304 10.4.2. Облік статусу й аудит конфігурації ....................................................................... 306 Контрольні запитання і завдання .......................................................................................... 307 Список літератури до розділу 10........................................................................................... 308 ПІСЛЯМОВА.................................................................................................. 309 СПИСОК ПОЗНАЧЕНЬ І СКОРОЧЕНЬ....................................................... 311 ДОДАТОК 1. Термінологічний словник........................................................ 313 ДОДАТОК 2. Перелік стандартів програмної інженерії ............................... 319 8 |