- •Інженерні основи програмного забезпечення
- •Поняття програмна інженерія. Що вивчає дисципліна «Програмна інженерія»?
- •Поняття системотехніка, бізнес-реінжиніринг.
- •Історія виникнення програмної інженерії.
- •Еволюційна модель розробки програмного забезпечення. Переваги та недоліки.
- •Формальна модель розробки програмного забезпечення. Переваги та недоліки.
- •Модель розробки програмного забезпечення на основі раніше створених компонентів. Переваги та недоліки.
- •Ітераційні моделі розробки програмного забезпечення. Переваги та недоліки.
- •Модель покрокової розробки програмного забезпечення. Переваги та недоліки.
- •Инструменты тестирования:
- •Мови моделювання програмного забезпечення.
- •Методи структурного аналізу.
- •Інформаційне моделювання Мартіна.
- •Структура та архітектура програмного забезпечення
- •Архітектура програмного забезпечення. Проектування архітектури.
- •Архітектурна модель клієнт-сервер.
- •Архітектурна модель абстрактної машини.
- •Архітектурні моделі управління (виклик-повернення та централізоване).
- •Проблемно-залежні архітектури програмного забезпечення.
- •Архітектура розподілених систем.
- •Багатопроцесорна архітектура програмного забезпечення.
- •Архітектура corba.
- •Моделі об’єктно-орієнтованого проектування програмного забезпечення.
- •Проектування систем реального часу.
- •Проектування з повторним використанням компонентів.
- •Проектування інтерфейсу програмного забезпечення.
- •Документування програмних продуктів.
- •Поняття документація на програмне забезпечення, програмний документ. Типи документації.
- •Організації що публікують стандарти.
- •Типовий набір документації проекту.
- •Основні стандарти розробки програмних систем і програмного забезпечення.
- •Стандарти вимог, архітектури, якості і тестування програмного забезпечення.
- •Стандарти серії гост 34.Ххх та гост 19.Ххх.
- •Процеси за стандартом iso/іec 12207.
- •Процеси за стандартом iso/іec 15288.
- •Поняття вимоги. Етапи формування вимог. Рівні вимог.
- •Які розділи містить звіт про виконану роботу та заявку на розробку програмного забезпечення?
- •Склад і зміст робіт на стадії «Опис програмного забезпечення».
- •Поняття ескізний проект. Склад і зміст робіт на стадії «Ескізний проект».
- •Що описує Технічне завдання (тз). З яких етапів складається розробка тз та на основі якого стандарту?
- •З яких розділів складається технічне завдання?
- •Що описує Технічний проект (тп)? з яких етапів складається розробка технічного проекту?
- •Види забезпечень.
- •Статичні і динамічні методи тестування.
- •Тестування «білої скриньки»
- •Тестування «чорної скриньки».
- •Метод "сірої скриньки".
- •Види тестування.
- •Рівні тестування.
- •Помилки на етапах життєвого циклу програмного забезпечення.
- •Поняття помилки, дефекту та відмови.
- •Класи помилок в програмному забезпеченні.
- •Тест план (Test Plan). Тестовий сценарій (Test Cases). Процедури тестування (Test Procedures). Баг Репорт (Bug Report).
- •Моделі якості та надійності програмних систем
- •Якість програмного забезпечення. Модель якості за рівнями.
- •Показники якості.
- •Атрибути функціональності, надійності та зручності застосування.
- •Атрибути ефективності, супроводу та переносимості.
- •Метрики програмного продукту.
- •Метрики процесу створення продукту та використання.
- •Методи оцінки значень показників якості.
- •Методи управління програмним проектом
- •Поняття надійності програмного забезпечення.
- •Класифікації моделей надійності за Гоєлем.
- •Класифікації моделей надійності за Хетчем.
- •Інженерія надійності програмного забезпечення та її складові.
- •На яких процесах жц здійснюється перевірка надіності?
- •Поняття сертифікація програмного забезпечення. Види сертифікації продукту.
- •Евристична модель надійності.
- •Модель надійності Нельсона.
- •Модель надійності Джелінскі-Моранді.
- •Статистична модель надійності Міллса.
- •Поняття Проект (Project). Менеджмент проекту (Project Management). Масштаб проекту (Project Scope).
- •Головні цілі менеджменту проекту.
- •Процес менеджменту проекту.
- •Модель процесу керування проектом.
- •Учасники проекту з розробки програмного забезпечення.
- •Ролі в групі розробників проекту.
- •Мережні методи планування і керування проектом.
- •Метод критичного шляху – срм.
- •Метод аналізу й оцінки проекту – pert.
- •Види планів організації проекту.
- •Моніторинг проекту.
- •Модель оцінки вартості проекту cocomo.
- •Модель оцінки вартості проекту cocomo іі.
- •Поняття ризику у проекті. Причини ризику в проекті.
- •Види ризиків. Моніторинг і контроль ризиків.
- •Поняття конфігурації. Елементи конфігурації.
- •Поняття супроводу програмного забезпечення. Хто здійснює супровід.
- •Поняття підтримки програмного забезпечення. Структура іт-супроводу.
- •Поняття програмна археологія. Інструменти і методи програмної археології.
Оглавление
1. Інженерні основи програмного забезпечення 5
1.1. Поняття програмна інженерія. Що вивчає дисципліна «Програмна інженерія»? 5
1.2. Поняття системотехніка, бізнес-реінжиніринг. 5
1.3. Історія виникнення програмної інженерії. 6
1.4. Поняття програмного забезпечення. Типи програмного забезпечення зі сторони розробки. 8
1.5. Методи програмної інженерії 9
1.6. Що таке інженерія програмного забезпечення 9
1.7. Класифікація CASE-засобів 10
1.8. Процес створення програмного забезпечення 11
1.9. Модель технологічного процесу створення програмного забезпечення. 12
1.10. Каскадна модель розробки програмного забезпечення. Переваги та недоліки 13
1.11. Еволюційна модель розробки програмного забезпечення. Переваги та недоліки. 15
1.12. Формальна модель розробки програмного забезпечення. Переваги та недоліки. 17
1.13. Модель розробки програмного забезпечення на основі раніше створених компонентів. Переваги та недоліки. 19
1.14. Ітераційні моделі розробки програмного забезпечення. Переваги та недоліки. 21
1.15. Модель покрокової розробки програмного забезпечення. Переваги та недоліки. 22
1.16. Спіральна модель розробки програмного забезпечення. Переваги та недоліки. 25
1.17. Процес розробки вимог. 27
1.18. Методи інженерії програмного забезпечення. 29
1.19. Інструменти інженерії програмного забезпечення. 29
1.20. Процес та схема проектування програмного забезпечення. 32
1.21. Методи проектування програмного забезпечення. 34
2. Основи моделювання програмного забезпечення 36
2.1. Методи моделювання програмного забезпечення. 36
2.2. Мови моделювання програмного забезпечення. 37
2.3. Методи структурного аналізу. 37
2.4. Модель IDEF0. Принцип побудови. 41
2.5. Діаграми моделі ІDEF0. 43
2.6. Складові діаграми ІDEF0. 44
2.7. Діаграма потоків даних- DFD. Синтаксис. 44
2.8. Модель ІDEF3. Синтаксис. 46
2.9. Структурні карти Константайна. 46
2.10. Структурні карти Джексона. 47
2.11. Діаграма переходів станів STD. Синтаксис. 47
2.12. Інформаційне моделювання Мартіна. 48
3. Структура та архітектура програмного забезпечення 51
3.1. Архітектура програмного забезпечення. Проектування архітектури. 51
3.2. Модель процесу проектування програмного забезпечення. 52
3.3. Архітектурні моделі програмного забезпечення. 52
3.4. Структурні моделі архітектури програмного забезпечення. 53
3.5. Архітектурна модель репозиторія. 53
3.6. Архітектурна модель клієнт-сервер. 54
3.7. Архітектурна модель абстрактної машини. 54
3.8. Архітектурні моделі управління (виклик-повернення та централізоване). 54
3.9. Проблемно-залежні архітектури програмного забезпечення. 55
3.10. Архітектура розподілених систем. 55
3.11. Багатопроцесорна архітектура програмного забезпечення. 56
3.12. Архітектура CORBA. 56
3.13. Моделі об’єктно-орієнтованого проектування програмного забезпечення. 57
3.14. Проектування систем реального часу. 57
3.15. Проектування з повторним використанням компонентів. 57
3.16. Проектування інтерфейсу програмного забезпечення. 58
4. Документування програмних продуктів. 59
4.1. Поняття документація на програмне забезпечення, програмний документ. Типи документації. 59
4.2. Організації що публікують стандарти. 59
4.3. Типовий набір документації проекту. 59
4.4. Основні стандарти розробки програмних систем і програмного забезпечення. 60
4.5. Стандарти вимог, архітектури, якості і тестування програмного забезпечення. 61
4.6. Стандарти серії ГОСТ 34.ХХХ та ГОСТ 19.ХХХ. 61
4.7. Процеси за стандартом ISO/ІEC 12207. 62
4.8. Процеси за стандартом ISO/ІEC 15288. 62
4.9. Поняття вимоги. Етапи формування вимог. Рівні вимог. 62
4.10. Які розділи містить звіт про виконану роботу та заявку на розробку програмного забезпечення? 63
4.11. Склад і зміст робіт на стадії «Опис програмного забезпечення». 63
4.12. Поняття ескізний проект. Склад і зміст робіт на стадії «Ескізний проект». 64
4.13. Що описує Технічне завдання (ТЗ). З яких етапів складається розробка ТЗ та на основі якого стандарту? 64
4.14. З яких розділів складається технічне завдання? 65
4.15. Що описує Технічний проект (ТП)? З яких етапів складається розробка технічного проекту? 66
4.16. Види забезпечень. 66
5. Методи доведення, верифікації і тестування програмного забезпечення. 67
5.1. Формальні мови специфікації та їх класифікація. 67
5.2. Доведення. Базові методи доведення правильності програм. 68
5.3. Верифікація і валідація програм. Опис та мета процесів. 68
5.4. Поняття тестування. Мета та історична довідка. 70
5.5. Статичні і динамічні методи тестування. 73
5.6. Тестування «білої скриньки» 76
5.7. Тестування «чорної скриньки». 77
5.8. Метод "сірої скриньки". 78
5.9. Види тестування. 79
5.10. Рівні тестування. 82
5.11. Помилки на етапах життєвого циклу програмного забезпечення. 85
5.12. Поняття помилки, дефекту та відмови. 89
5.13. Класи помилок в програмному забезпеченні. 89
5.14. Тест план (Test Plan). Тестовий сценарій (Test Cases). Процедури тестування (Test Procedures). Баг Репорт (Bug Report). 90
6. Моделі якості та надійності програмних систем 91
6.1. Якість програмного забезпечення. Модель якості за рівнями. 91
6.2. Показники якості. 92
6.3. Атрибути функціональності, надійності та зручності застосування. 94
6.4. Атрибути ефективності, супроводу та переносимості. 96
6.5. Метрики програмного продукту. 97
6.6. Метрики процесу створення продукту та використання. 97
6.7. Методи оцінки значень показників якості. 98
7. Методи управління програмним проектом 99
7.1. Поняття надійності програмного забезпечення. 99
7.2. Класифікації моделей надійності за Гоєлем. 99
7.3. Класифікації моделей надійності за Хетчем. 100
7.4. Інженерія надійності програмного забезпечення та її складові. 102
7.5. На яких процесах ЖЦ здійснюється перевірка надіності? 103
7.6. Поняття сертифікація програмного забезпечення. Види сертифікації продукту. 106
7.7. Евристична модель надійності. 107
7.8. Модель надійності Нельсона. 108
7.9. Модель надійності Джелінскі-Моранді. 109
7.10. Статистична модель надійності Міллса. 109
7.11. Поняття Проект (Project). Менеджмент проекту (Project Management). Масштаб проекту (Project Scope). 111
7.12. Головні цілі менеджменту проекту. 112
7.13. Процес менеджменту проекту. 113
7.14. Модель процесу керування проектом. 114
7.15. Учасники проекту з розробки програмного забезпечення. 115
7.16. Ролі в групі розробників проекту. 118
7.17. Мережні методи планування і керування проектом. 119
7.18. Метод критичного шляху – СРМ. 120
7.19. Метод аналізу й оцінки проекту – PERT. 120
7.20. Види планів організації проекту. 120
7.21. Моніторинг проекту. 122
7.22. Модель оцінки вартості проекту COCOMO. 122
7.23. Модель оцінки вартості проекту COCOMO ІІ. 122
7.24. Поняття ризику у проекті. Причини ризику в проекті. 123
7.25. Види ризиків. Моніторинг і контроль ризиків. 123
7.26. Поняття конфігурації. Елементи конфігурації. 124
7.27. Поняття супроводу програмного забезпечення. Хто здійснює супровід. 124
7.28. Поняття підтримки програмного забезпечення. Структура ІТ-супроводу. 124
7.29. Поняття програмна археологія. Інструменти і методи програмної археології. 125
Інженерні основи програмного забезпечення
Поняття програмна інженерія. Що вивчає дисципліна «Програмна інженерія»?
Програмна інженерія — це застосування системного, вимірюваного підходу до розробки, використання та супроводу програмного забезпечення, та дослідження цих підходів, тобто застосування принципів інженерії до програмного забезпечення.
Програмна інженерія може бути розділена на такі дисципліни:
Вимоги: виявлення, аналіз, специфікація, перевірка вимог.
Проектування: процес визначення архітектури, складу компонентів, інтерфейсів та інших характеристик до системи.
Конструювання: кодування, модульне та інтеграційне тестування, відлагодження.
Тестування: перевірка поведінки системи на відповідність до специфікації, пошук дефектів.
Супровід програмного забезпечення: поліпшення, оптимізація системи та процесів роботи з нею після вводу до експлуатації.
Конфігураційне керування: систематизує зміни до системи, що роблять розробники в процесі розробки та супроводу. Попереджують небажані та непередбачені ефекти.
Менеджмент: застосування методів та практик менеджменту для керування учасниками процесу розробки ПЗ.
Цикл розробки ПЗ: визначення, реалізація, оцінювання, вимірювання, керування та покращення циклу розробки ПЗ як такого.
Інструменти комп'ютерних наук: різні комп'ютерні системи що допомагають та дозволяють проводити процес розробки.
Якість програмного забезпечення: відповідність програмного продукту вимогам.
Поняття системотехніка, бізнес-реінжиніринг.
Системоте́хніка — напрямок науки і техніки, який охоплює проектування, створення, випробування та експлуатацію складних систем технічного і соціально-технічного характеру. Є прикладним втіленням теорії систем.
Реінжені́ринг бі́знес-проце́сів або реінжиніринг корпорації на основі бізнес процесів' – це загальноприйнятий нині революційний спосіб організаційної перебудови.
Реінженіринг є фундаментальним переосмисленням і радикальним перепроектуванням бізнес-процесів для досягнення вагомих покращень у таких ключових для сучасного бізнесу показниках результативності, як витрати, якість, рівень обслуговування та оперативність. Вважається, що це визначення, запропоноване М.Хаммером та Дж.Чампі, досить точно відображає сутність цього явища.
Історія виникнення програмної інженерії.
В конце 60-х – начале 70-х годов прошлого века произошло событие, которое вошло в историю как первый кризис программирования. Событие состояло в том, что стоимость программного обеспечения стала приближаться к стоимости аппаратуры («железа»), а динамика роста этих стоимостей позволяла прогнозировать, что к середине 90-годов все человечество будет заниматься разработкой программ для компьютеров. Тогда и заговорили о программной инженерии (или технологии программирования, как это называлось в России) как о некоторой дисциплине, целью которой является сокращение стоимости программ.
Термин «инженерия программного обеспечения» появился впервые в 1968 году на Конференции НАТО «Инженерия программного обеспечения» и предназначался, чтобы спровоцировать размышления относительно текущего в то время «кризиса программного обеспечения». С тех пор, это продолжилось как профессия и область исследований, посвященных созданию программного обеспечения, которое имеет более высокое качество, более доступно, поддерживаемо, и быстрее строится.
Программная инженерия прошла несколько этапов развития, в процессе которых были сформулированы фундаментальные принципы и методы разработки программных продуктов. Основной принцип программной инженерии состоит в том, что программы создаются в результате выполнения нескольких взаимосвязанных этапов (анализ требований, проектирование, разработка, внедрение, сопровождение), составляющих жизненный цикл программного продукта. Фундаментальными методами проектирования и разработки являются модульное, структурное и объектно-ориентированное проектирование и программирование.
Несмотря на то, что программная инженерия достигла определенных успехов, перманентный кризис программирования продолжается. Связано это с тем, рубеж 80–90-х годов отмечается как начало информационно-технологической революции, вызванной взрывным ростом использования информационных средств: персональный компьютер, локальные и глобальные вычислительные сети, мобильная связь, электронная почту, Internet и т.д.
Поняття програмного забезпечення. Типи програмного забезпечення зі сторони розробки.
Методи програмної інженерії
Що таке інженерія програмного забезпечення
Включає систему методів, способів та дисциплін з планування, розробки, експлуатації і супроводу програмного забезпечення. Ця наука пов'язана з усіма аспектами виробництва програмного забезпечення: від початкових стадій створення специфікацій до підтримки життєвого циклу системи після передачі замовнику.
Класифікація CASE-засобів
Процес створення програмного забезпечення
Модель технологічного процесу створення програмного забезпечення.
Технологічний процес створ ПЗ - це сукупність процесів, що ведуть до створення або розвитку ПЗ
Модель тех проц створ ПЗ : формалізоване спрощене уявлення тех проц створ ПЗ
Каскадна модель розробки програмного забезпечення. Переваги та недоліки
Це перша модель процесу створення ПЗ, породжена моделями інших інженерних процесів [300]. Вона показана на рис. 3.1. Цю модель також іноді називають моделлю життєвого циклу програмного забезпечення *. Основні принципові етапи (стадії) цієї моделі відображають всі базові види діяльності, необхідні для створення ПЗ.
* Життєвого циклу програмного забезпечення - це сукупність процесів, що протікають в період від моменту прийняття рішення про створення ПЗ до його повного виведення з експлуатації. Таким чином, "життєвий цикл ПО" є більш широким поняттям, ніж модель процесу створення ПЗ. Разом з тим каскадну модель можна розглядати як одну з моделей життєвого циклу ПЗ. - Прим. ред.
1. Аналіз та формування вимог. Шляхом консультацій із замовником ПЗ визначаються функціональні можливості, обмеження і цілі створюваної програмної системи.
2. Проектування системи та програмного забезпечення. Процес проектування системи розбиває системні вимоги на вимоги, що пред'являються до апаратних засобів, і вимоги до програмного забезпечення системи. Розробляється загальна архітектура системи. Проектування ПЗ передбачає визначення та опис основних програмних компонентів і їх взаємозв'язків.
3. Кодування і тестування програмних модулів. На цій стадії архітектура ПЗ реалізується у вигляді безлічі програм або програмних модулів. Тестування кожного модуля включає перевірку його відповідності вимогам до даного модулю.
4. Збирання і тестування системи. Окремі програми і програмні модулі інтегруються і тестуються у вигляді цілісної системи. Перевіряється, чи відповідає система своєї специфікації.
5. Експлуатація та супровід системи. Зазвичай (хоча й не завжди) це найтриваліша фаза життєвого циклу ПЗ. Система інсталюється, і починається період її експлуатації. Супроводження системи включає виправлення помилок, які не були виявлені на більш ранніх етапах життєвого циклу, вдосконалення системних компонентів і "підгонку" функціональних можливостей системи до нових вимог.
В принципі результат кожного етапу повинен затверджуватися документально (це як би сигнал про закінчення етапу). Тоді наступний етап не може початися до завершення попереднього. Однак на практиці етапи можуть перекриватися з постійним перетіканням інформації від одного етапу до іншого. Наприклад, на етапі проектування може виникнути необхідність уточнити системні вимоги або на етапі кодування можуть виявитися проблеми, які можна вирішити лише на етапі проектування, і т.д. Процес створення ПЗ не можна описати простою лінійною моделлю, оскільки вона неминуче містить послідовність повторюваних процесів.
Оскільки на кожному етапі проводяться певні роботи і оформляється супутня документація, повторення етапів призводить до повторних роботам і значних витрат. Тому після невеликого числа повторень зазвичай "заморожується" частина етапів створення ПЗ, наприклад етап визначення вимог, але продовжується виконання наступних етапів. Виникаючі проблеми, вирішення яких вимагає повернення до "замороженим" етапам, ігноруються або робляться спроби вирішити їх програмно. "Заморожування" етапу визначення вимог може призвести до того, що розроблена система не буде відповідати всім вимогам замовника. Це також може призвести до появи погано структурованої системи, якщо упущення етапу проектування виправляються тільки за допомогою програмістських хитрощів.
Останній етап життєвого циклу ПЗ (експлуатація та супровід) - це "повноцінне" використання програмної системи. На цьому етапі можуть виявитися помилки, допущені, наприклад, на 1 етапі формування вимог. Можуть також виявитися помилки проектування та кодування, що може зажадати визначення нових функціональних можливостей системи. З іншого боку, система постійно повинна залишатися працездатною. Внесення необхідних змін в програмну систему може зажадати повторення деяких або навіть всіх етапів процесу створення ПЗ.
До недоліків каскадної моделі можна віднести негнучке розбивка процесу створення ПЗ на окремі фіксовані етапи. У цій моделі визначають систему рішення приймаються на ранніх етапах і потім їх важко скасувати або змінити, особливо це відноситься до формування системних вимог. Тому каскадна модель застосовується тоді, коли вимоги формалізовані досить чітко і коректно. Разом з тим каскадна модель добре відображає практику створення ПЗ. Технології створення ПЗ, засновані на даній моделі, використовуються повсюдно, зокрема для розробки систем, що входять до складу великих інженерних проектів.
