
- •1. Основи програмної інженерії.
- •1.1. Програмна інженерія в історичному аспекті.
- •1.2. Програмна інженерія як дисципліна.
- •1.3. Swebok: Керівництво до зводу знань з програмної інженерії.
- •1.4. Структура і зміст swebok.
- •1.4.1. Інженерія вимог
- •1.4.2. Проектування програмного забезпечення
- •1.4.3. Конструювання програмного забезпечення
- •1.4.4. Тестування програмного забезпечення
- •1.4.5. Супровід програмного забезпечення
- •1.4.6. Керування конфігурацією
- •1.4.7. Керування інженерією програмного забезпечення
- •1.4.8. Процес інженерії
- •1.4.9. Методи і інструменти інженерії
- •1.4.10. Якість програмного забезпечення
- •Контрольні питання і завдання
- •2. Характеристика життєвого циклу стандарта iso/iec 12207.
- •Контрольні питання і завдання
- •3. Формування прикладних моделей життєвого циклу
- •Контрольні питання і завдання
- •4. Вимоги до програмних систем.
- •4.1. Загальні підходи до визначення вимог
- •Контрольні питання і завдання
- •5. Методи програмування.
- •5.1. Прикладне (систематичне) програмування
- •5.1.1 Структурне програмування
- •5.1.2. Об'єкт но-орієнтоване програмування
- •5.1.4. Компонентне програмування
- •5.1.5. Аспектно-орієнтоване програмування
- •5.1.6. Генерувальне (порождувальне) програмування
- •5.1.7. Сервісно-орієнтоване програмування
- •5.1.8. Агенте програмування
- •5.2. Теоретичне програмування
- •5.3. Контрольні питання і завдання
- •6. Оптимізація програм
- •6.1 Основні поняття.
- •6.2. Призначення і цілі оптимізації
- •6.3. Проміжна мова
- •6.4. Елементи топології програми
- •6.4.1. Блок (лінійна ділянка)
- •6.4.2. Сильно зв'язана область
- •6.5. Способи оптимізації
- •6.5.1. Розвантаження ділянок повторюваності
- •6.5.2. Скорочення глибини операції
- •6.5.3. Спрощення дій
- •6.5.3.1. Видалення індуктивних змінних і виразів
- •6.5.3.2. Заміна складних операцій на більш прості
- •6.5.3.3 Виключення надлишкових виразів
- •6.5.3.4 Інші перетворення
- •6.5.4. Реалізація дій
- •6.5.5. Підстановка (згортання)
- •6.5.6. Чищення програми
- •6.5.6.1. Усунення ідентичних операторів
- •6.5.6.2. Заміна змінних в операторах умовного переходу і усунення невикористовуваних визначень.
- •6.5.6.3. Усунення марних операторів і змінних
- •6.5.7. Економія пам'яті
- •6.5.8. Скорочення програми
- •6.5.9. Вставка псевдоблоку
- •7. Навчально-методичні рекомендації до вивчення дисцілини «Основи програмної інженерії.»
- •7.1. Анотація навчальної дісциплини. Галузь знань – 0501 «Інформатика та обчислювальна техника» Напрям підготовки - 6.050103 «Програмна інженерія»
- •7.2. Необхідність та задачі навчальної дісциплини. Ії місце в учбовому процесі.
- •7.3. Тематичний план курсу.
- •7.4. Тематичний план лекцій.
- •7.5. Тематичний план лабораторних робіт.
- •7.6. Тематичний план практичних робіт.
- •7.7. Тематичний план самостійної роботи студентів.
- •7.8. Питання для підсумкового контролю.
- •7.9. Структура залікового кредиту навчальної дисципліни
- •7.3. Структура модулів дисципліни
- •7.10. Система критеріїв оцінювання знань відповідно до кожного модуля дисципліни
- •Література
- •Список літератури до розділу 2
- •Додаток 1. Термінологічний словник
- •Додаток 2. Перелік стандартів програмної інженерії
5.1.1 Структурне програмування
Сутність структурного підходу до розробки ПС полягає в декомпозиції (розподілі) системи на функції, що підлягають автоматизації, які у свою чергу, діляться на під функції й задачі. Процес декомпозиції триває до визначення конкретних процедур. При цьому система, що автоматизується, зберігає цілісне подання, у якому всі складові компоненти взаємозалежні [1].
Основу структурного програмування становлять:
- розподіл системи на множину незалежних задач, доступних для розуміння і розв'язання;
- впорядкування й організація складових частин проблеми в ієрархічні деревоподібної структури з додаванням нових деталей на кожному рівні.
До головних принципів належать:
- абстрагування, тобто відокремлення істотних аспектів системи й нехтування несуттєвими;
- формалізація, тобто загальне методологічне вирішення проблеми;
- обґрунтування й узгодження елементів системи і перевірка їх на несупереч-
ність;
- утворення ієрархічної структури даних.
При структурному аналізі застосовуються три найпоширеніші моделі структурного проектування ПС:
• SADT (Structured Analysis and Design Technique) - метод структурного аналізу й техніка проектування моделі системи за допомогою функціональних діаграм [1];
• SSADM (Structured Systems Analysis and Design Methode) - метод структурного аналізу й проектування систем [2];
• IDEF (Integrated Definition Functions) - метод визначення функціональної моделі, IDEF1 - інформаційної моделі, IDEF2 - динамічної моделі й ін. [3].
Розглянемо ці методи детальніше.
Метод функціонального моделювання SADT. Цей метод запропоновано Д. Россом і покладено в основу методології IDEFO (Icam DEFinition), що є головною частиною програми ІСАМ (Інтеграція комп'ютерних і промислових технологій), проведеної з ініціативи ВПС США.
На стадії проектування моделі системи зображуються у вигляді діаграм або екранних форм і відображають структуру або архітектуру системи, а також схеми програм.
SADT - це сукупність правил і процедур, призначених для побудови функціональної моделі предметної області, яка відображає функціональну структуру, функції і дії, а також зв'язки між ними.
Метод SADT базується на наступних концепціях:
графічне зображення структури з поданням функцій блоками, а інтерфейсів дугами, що, відповідно, входять у блок і виходять з нього (рис.5.1);
Рис. 5.1. Структура моделі
- блоків може бути від 3 до 6 на кожному рівні декомпозиції;
- взаємодія блоків описується обмеженнями, які визначають умови керування й виконання функцій;
- унікальність позначок і найменувань;
- незалежність функціональної моделі від організаційної структури колективу розробників.
Метод SADT застосовується при моделюванні широкого кола систем, для яких визначаються вимоги й функції, а потім проводиться їхня реалізація. Засоби SADT можуть застосовуватися при аналізі функцій у діючій ПС, а також при визначенні способів їхньої реалізації.
Результат проектування в методі SADТ - модель, що складається з діаграм, фрагментів текстів і глосарію з посиланнями один на одного. Всі функції й інтерфейси зображуються діаграмами у вигляді блоків і дуг. Місце з'єднання дуги з блоком визначає тип інтерфейсу. Керуюча інформація позначається дугою, яка входить у блок зверху, у той час як інформація, що піддається обробці, вказується з лівої сторони блоку, а результати виходу - з правої сторони. Механізм, що здійснює операцію (людина або автоматизована система), задається дугою, що входить у блок знизу.
Одна з найбільш важливих переваг методу SADТ - поступова деталізація моделі системи в міру додавання функцій і діаграм, що уточнюють цю модель.
Метод SSADM базується на таких структурах: послідовність, вибір й ітерація. Об'єкт моделювання задається відповідними структурними діаграмами, які відображають послідовність операторів, вибір елементів із групи й циклічне виконання операторів за цими елементами.
Загальна діаграма системи згідно з цим методом має ієрархічну структуру і містить у собі: список компонентів модельованого об'єкта; ідентифіковані групи вибраних і повторюваних компонентів, а також послідовність використовуваних компонентів.
Таке програмування передбачає наявність моделі ЖЦ із послідовними процесами розроблення програмного проекту, починаючи з аналізу і формування вимог для ПрО (рис. 5.2).
До етапів ЖЦ належать:
- стратегічне проектування та вивчення можливості виконання проекту;
- детальне дослідження предметної області, що містить у собі аналіз і специфікацію вимог;
- логічне проектування та специфікація компонентів системи;
- фізичне проектування структур даних відповідно до вибраної структури БД (реляційної, об'єктно-орієнтованої й ін.) та конструювання окремих компонентів, їх тестування і тестування системи в цілому;
- виготовлення продукту і документації для замовника.
Детальне дослідження предметної області проводиться для того, щоб вивчити її особливості, розглянути потреби й пропозиції замовника, провести аналіз вимог з різних документів, специфікувати їх і погодити із замовником.
Мета стратегічного проектування - визначення сфери дії проекту, аналіз інформаційних потоків, формування загальної архітектури системи, визначення витрат на розробку і підтвердження можливості подальшої реалізації проекту. Результат - це специфікація вимог, що застосовується при розроблені логічної структури системи.
Рис.5.2. Життєвий цикл SSADM
Логічне проектування - це визначення функцій, діалогу, методу побудови і відновлення БД. У логічній моделі відображаються вхідні й вихідні дані, проходження запитів і встановлення взаємозв'язків між сутностями та подіями.
Фізичне проектування – це визначення типу СКБД і подання даних у ній з урахуванням специфікації логічної моделі даних, обмежень на пам'ять і час обробки, а також визначення механізмів доступу, розміру логічної БД, зв'язків між елементами системи.
Фізична специфікація містить у собі:
- специфікацію функцій і схеми реалізації компонентів функцій,
- опис процедурних і не процедурних компонентів й інтерфейсів,
- визначення логічних і фізичних груп даних з урахуванням обмежень устаткування на розробку й стандарти розробки,
- визначення груп подій, які обробляються як єдине ціле з видачею повідомлень про завершення обробки й ін.
Процеси, які виконуються у SSADM, пов'язані з роботами, що керують потоками інформації трьох типів: потік робіт; санкціоновані потоки за контролем або керуванням; звіти про хід розроблення.
Конструювання - це побудова конструкцій і елементів системи, їхнє тестування на наборах даних, які підбираються на ранніх етапах ЖЦ розробки системи.
Життєвий цикл містить у собі процес керування і контролю, який базується на сітковому графіку, що враховує роботи з розробки системи, витрати і строки. Спостереження і контроль виконання плану проводить організаційний відділ. У графіку містяться роботи й взаємозв'язки між ними і їхніми виконавцями, а також проектні документи, які розроблюються виконавцями. Результати кожного з етапів ЖЦ контролюються і передаються на наступний етап у вигляді, зручному для подальшої реалізації іншими виконавцями.
Згідно з методом SSADM створюється структурна модель системи і модель потоків даних. У діаграмах структурної моделі впорядкування процесів наведено зліва направо і віддзеркалює розвиток у часі, а не інтервали часу.
Модель потоків даних (Data Flow Model - DFM) використовується для опису процесів обробки даних у системі й містить у собі:
- ієрархічний набір діаграм потоків даних (Data Flow Diagram - DFD);
- опис елементарних процесів, потоків даних, сховищ даних і зовнішніх сутностей.
Кожна DFD відбиває проходження даних через систему залежно від рівня та призначення діаграми. DFD перетворює вхідні потоки даних (входи) у вихідні потоки даних (виходи). Як правило, процеси, що виконують такі перетворення, створюють і використовують дані зі сховища даних.
До об'єктів моделювання системи в SSADM належать:
1. Функції, які створюються на основі DFM і моделювання взаємозв'язків подій і сутностей для дослідження обробки даних у системі;
2. Події - деякі прикладні дії, які ініціюють процеси для занесення й відновлення даних системи. Подія приводить до виклику процесу і досліджується за допомогою моделювання її впливу на сутності;
3. Дані зображуються спочатку логічною моделлю, потім фізичною, яка відображається у реляційну або об'єктно-орієнтовану БД, залежно від вибраної для проекту СКБД.
Найпоширеніші засоби моделювання даних - діаграми «сутність-зв'язок» (ER - діаграми), запропоновані Баркером, як застосування класичної ER - моделі Чена. В ER - діаграмах визначаються сутності (множини однотипних об'єктів) ПрО, їхні властивості (атрибути) і залежності (зв'язки). Сутність (Entity) - реальний або уявлюваний об'єкт, що має істотне значення для області. Кожна сутність й її екземпляр мають унікальні імена. Сутність має такі властивості:
- один або кілька атрибутів, які або належать сутності, або успадковуються через зв'язок (Relationship);
- довільну кількість зв'язків з іншими сутностями моделі.
Зв'язок - це асоціація між двома сутностями ПрО. У загальному випадку кожен екземпляр сутності-батька асоційований з довільною кількістю екземплярів успадкованої сутності (нащадка), а кожен екземпляр сутності-нащадка асоційований з одним екземпляром сутності-батька. Таким чином, екземпляр сутності-нащадка може існувати тільки при наявності сутності-батька. Для зв'язків можуть встановлюватися обмеження на кількість екземплярів сутності, що беруть участь у зв'язку. Наприклад, одному екземпляру однієї сутності може відповідати не більше ніж один екземпляр іншої.
Метод IDEF1 базується на концепції ER - моделювання і призначений для побудови інформаційної моделі подібно до реляційної моделі. Даний метод постійно розвивається й удосконалюється (наприклад, методологія IDEF1X - проектування, орієнтована на автоматизацію - ERwin, Design/IDEF). Основна особливість полягає в тому, що кожен екземпляр сутності може бути однозначно ідентифікований без визначення відношення з іншими сутностями. Якщо Ідентифікація екземпляра сутності залежить від його відношення до іншої сутності, то сутність є залежною. Кожній сутності присвоюється унікальне ім'я і номер, які розділяють косою рискою «/» і розміщують над блоком, який позначає сутність. Обмеження на множинність зв'язку можуть означати, що для кожного екземпляра сутності-батька:
- існує нуль, один або більше пов'язаних з ним екземплярів сутності-нащадка;
- існує не менше ніж один або не більше ніж один пов'язаний з ним екземпляр сутності-нащадка;
- існує зв'язок з деяким фіксованим числом екземплярів сутності-нащадка. Якщо екземпляр сутності-нащадка однозначно визначається своїм зв'язком із
сутністю-батьком, то зв'язок є ідентифікований, інакше - не ідентифікований. Сутність-батько в ідентифікованому зв'язку може бути як незалежною, так і залежною від зв'язків з іншими сутностями. Сутність-нащадок у не ідентифікованому зв'язку буде незалежною, якщо вона не є також сутністю-нащадком у якому-небудь ідентифікованому зв'язку.
Атрибути зображуються у вигляді списку імен усередині блока сутності, первинний ключ розміщується нагорі списку і відокремлюється від інших атрибутів горизонтальною рискою. Сутності можуть мати також зовнішні ключі, як частина або ціле первинного ключа або не ключового атрибуту.
Засобами IDEF1 проводиться збирання і вивчення різних сфер діяльності підприємства, визначення потреб в інформаційному менеджменті, а також:
- інформації й структури потоків, що властиві діяльності підприємства;
- правил і законів руху інформаційних потоків і принципів керування ними;
- взаємозв'язків між існуючими інформаційними потоками на підприємстві;
- проблем, що виникають при неякісному інформаційному менеджменті і потребують усунення.
Одна з особливостей даної методології - забезпечення структурованого процесу аналізу інформаційних потоків підприємства і можливості зміни неповної й неточної структури інформації на етапі моделювання інформаційної структури підприємства.
Інструментальна підтримка SSADM. Головний інструмент структурного проектування відповідно до ЖЦ SSADM - комплекс програмних, методичних й організаційних засобів системи SSADM. Ця система прийнята державними органами Великобританії як основний системний засіб і використовується багатьма державними організаціями і в межах, і за межами країни. SSADM містить у собі п'ять головних модулів підтримки, або етапів ЖЦ проектування [2]:
1) вивчення можливості виконання проекту (Feasibility Study Module);
2) аналіз вимог (Requirements Analysis Module);
3) специфікація вимог (Requirements Specification Module);
4) логічна специфікація системи (Logical System Specification Module);
5) фізичне проектування (Physical Design Module). Проектування за допомогою системи SSADM передбачає сукупність заходів з
розробки набору проектних документів в умовах використання відповідних ресурсів при заданих обмеженнях на вартість розробки. Для керування ходом розробки проекту розглядаються проектні роботи і документи, організація і плани розробки, заходи щодо керування проектом та забезпечення якості. Розрізняються два типи проектних робіт:
- забезпечення вимог користувача до якості системи;
- керування розробкою проекту.
Структурна модель охоплює всі модулі й стадії технології SSADM, забезпечує одержання одних документів на підставі інших шляхом логічних перетворень. Іншими словами, одна сукупність документів перетворюється на іншу. Для встановлення послідовності робіт і заходів з забезпечення якості розробляється сітковий графік робіт.
Забезпечення якості реалізується групою якості, що відповідає за підтримку цілісності проекту. В ній працюють фахівці, відповідальні за функціонування організації (плановики, економісти), користувачі системи й розробники, які беруть участь у проекті від початку до кінця. Плановики й економісти слідкують за своєчасним виконанням і фінансуванням робіт, користувачі - висувають вимоги та пропозиції, а розробники виражають їхні потреби в рамках своєї компетенції.
Для керування проектом створюється служба підтримки проекту, що виконує ряд адміністративних функцій або спеціальних робіт. Вона здійснює експертизу при оцінюванні, плануванні і керуванні проектом, а також проводить заходи з керування конфігурацією, сутність яких полягає у відстеженні проектних документів і забезпеченні інформації про їхній стан у процесі розроблення.
Проблема якості стосується двох основних аспектів:
1) сукупності функцій, що повинні задовольняти задані вимоги до функцій, надійності й продуктивності;
2) способу реалізації системи.
Якість забезпечується шляхом перевірки зазначених у вимогах показників якості (економічність, гнучкість, здатність до зміни, модульність, правильність, надійність, переносність, ефективність).
Контроль якості продукту - це перевірка відповідності заданим стандартам і вимогам. Він містить у собі дії, які дозволяють перевірити і виміряти показники якості. Висока якість продукту означає, що система конструювалася відповідно до встановлених стандартів, які полегшують процес її розроблення, супроводження та модифікації при зміні вимог або внесенні виправлень у систему з мінімумом витрат.
Ідеологія структурного проектування втілена в ряді CASE- засобів (SilvcrRun, Oracle Disigner, ErWin й ін.), що активно використовується на практиці.