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

Вид материалаДокументы

Содержание


Контрольні питання і завдання
5.1. Прикладне (систематичне) програмування
5.1.1 Структурне програмування
Метод функціонального моделювання
Модель потоків даних
Подобный материал:
1   2   3   4   5   6   7   8   9   10   ...   15

Контрольні питання і завдання



1.Наведіть класифікацію вимог.

2. Визначте призначення функціональних і не функціональних вимог.

3. Назвіть джерела для завдання вимог.

4. Наведіть задачі обстеження, аналізу і збирання вимог.

5. Визначте інженерію вимог і задачі трасування вимог.

6. Визначте суть об'єктно-орієнтованої інженерії вимог.

7. Назвіть ролі діючих осіб у формуванні вимог.

8. Назвіть види відношень об'єктів у моделі.

9. Охарактеризуйте сценарний підхід і підхід за прецедентами.


5. Методи програмування.


Ядро SWЕВОК містить у собі два близьких за змістом розділи, які пов'язані з побудовою ПЗ: проектування ПЗ і конструювання ПЗ. Розділ, що стосується програмування, в цьому ядрі відсутній, проте те він є необхідний, оскільки в сучас­ній практиці проектування і розроблення програмних продуктів (ПП) широко вико­ристовуються багато різних парадигм програмування (модульне, об'єктно-орієнтоване, компонентне, аспектне тощо), які мають бути певним чином система­тизовані.

Кожна парадигма програмування характеризується наявністю в ній метода і зв'язком з моделлю ЖЦ. Головне, що об'єднує різні парадигми програмування, - це загальні положення у проектуванні ПП. Користувач може вибирати ту або іншу парадигму програмування з позицій зручності застосування для задач у ПО і виготовлення конкретного ПП.

Розрізняють прикладні і теоретичні методи, які з'явилися у різний час від моменту появи програмної інженерії і мають свою специфіку й сферу застосування. Наприклад, структурний метод виник багато років тому, він добре відпрацьований і вдосконалений для індустріального виготовлення ПП і навіть став Держстандартом у Великобританії. Широкого застосування набули методи модульного і компонент­ного програмування. Вони базуються на концепції повторного використання компонентів. Саме ці види програмування започаткували індустрію виготовлення ПП з готових компонентів, аналогічно до того, як в промисловості здійснювалося виготовлення виробів з готових деталей.

Поява нових методів стимулюється досягненнями загальнонаукових дисцип­лін (математики, логіки, теорії алгоритмів тощо) і практичними задачами. Теоретичні методи програмування дозволяють створювати програмні системи в абстрактному вигляді, включаючи концептуальні, інформаційні, структурні моделі без урахування особливостей середовищ, в яких вони реалізуються. Ці моделі доводяться до стану кінцевого продукту шляхом використання відповідних мов програмування.

Знаходять застосування формальні й теоретичні методи програмування (ал­гебраїчний, алгебро-алгоритмічний, композиційний й ін.), які ґрунтуються на мате­матичних і логіко-алгоритмічних підходах до абстрактного створення ПП.

У цьому розділі описані базові поняття й особливості методів прикладного, або систематичного програмування, а також окремих методів теоретичного програмування з метою ознайомлення студентів із сучасною теорією і практикою розробки програм.


5.1. Прикладне (систематичне) програмування



До методів систематичного програмування відносять такі методи:

- структурний;

- об'єктно-орієнтований;

- UML - метод;

- компонентний;

- аспектно-орієнтований;

- генерувальний;

- сервісний;

- агентний й ін.

Кожен з цих методів має свою множину понять й операцій для проведення процесу розроблення окремих компонентів, сервісів або ПС. Метод генеруючого програмування використовує можливості об'єктно-орієнтованого, компонентного, аспектно-орієнтованого методів й ін.

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 й ін.), що активно використовується на практиці.