ВСТУП ДО ІНЖЕНЕРІЇ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ - М. Сидоров
Шрифт:
Интервал:
Закладка:
Розглянемо ці методи докладніше.
Рівні абстракції (Е. Дейкстра, 1968). Ґрунтуючись на досвіді системи мультипрограмування Т.Н.Е., Дейкстра запропонував розробляти програмне забезпечення за рівнями. Перший низький рівень забезпечує балові сервіси для реалізації наступних, рівнів і ґрунтується на можливостях тієї машини, що реально існує. Кожен наступний рівень використовує сервіси поперед нього. Процес Створення рівнів продовжується до тих пір, доки по буде реалізований найвищий рівень абстракції. Наводиться приклад з управлінням пам'яті. На базовому рівні (машинна мова) відомі канальні команди для обміну даними між різними типами пам'яті. На першому рівні проектується механізм управління перериваннями - вплив на сигнали переривання, але без деталей маскування, відкриття, закривання, блокування, черговості. На наступному рівні проектується канальний супервізор - зберігається можливість управління каналами без зайвих деталей і, нарешті, на ще вищому рівні адміністратор пам'яті організовує обмін. Метод можна віднести як до методів розробки, так і управління.
Покрокове уточнення (Н. Вірт, 1971). Цей метод ґрунтується на таких принципах:
- розкладання простору рішень на підпростори;
- ітеративне вирішення завдання (повторення дій);
- аналіз ефективності розкладання (наступне поліпшення виконується лише у вигідному напрямі).
Мета покрокового уточнення полягає в зменшенні ризику, пов'язаного із застосуванням рішень під час програмування. Розділений процесу розробки програмного забезпечення на кроки дає змогу планувати його створення, відкладаючи реалізацію певних модулів, шляхом заміни їх заглушками, що імітують міжмодульні інтерфейси.
Наприклад, метод МЕТА (X. Ледгард, 1973) використовує низхідне уточнення.
Необхідна умова роботи методу - наявність точного і стабільного опису завдання, а результат S - програма.
Функціональна декомпозиція — це метод низхідного аналізу програмного забезпечення шляхом опису функцій, котрі йога утворюють і уявлення про їх реалізацію у вигляді функціональних зв'язаних модулів. Модуль називається функціонально зв'язаним, якщо містить компоненти, спрямовані на виконання однієї функції. Додаток, побудований з функціонально зв'язаних модулів, легко будувати і супроводжувати.
Модуляризація (Д. Парнас, 1972). Цей метод заснований на трьох фундаментальних принципах: з'єднання, скріплення, приховування інформації. Метод призначений для вирішення завдання розбиття програми на модулі, яка називається модуляризацією. Використовуються такі критерії модуляризації:
- з'єднання - поєднання частин модуля із зовнішнім оточенням повинне бути слабким;
- скріплення - скріплення частин, що входять до складу модуля має бути сильним;
- приховування - інформація, що міститься в модулі, повинна бути прихованою.
Модуль мас тіло, яке містить опис функції, що вирішується модулем, і інтерфейс, що забезпечує зв'язок модуля з його користувачами.
Структурне програмування (Е. Дейктра, 1972). Цей метод обмежує написання програм шляхом використання лише трьох типів операторів: послідовне з'єднання, вибір і повтор. Такий операторний базис достатній для написання будь-якої програми. Програми називаються структурними, а процес програмування - структурним. Метод передбачає також способи переходу від неструктурних програм до структурних.
Абстрактні типи даних (Б, Лісков, С. Зайліс, 1975). Суть методу полягає в розширенні концепції структур даних визначуваними операціями над ними. Перші реалізації абстрактних типів даних могли здійснюватися вже в підпрограмних мовах програмування (Paskal, С) шляхом використання процедурного типу або вказівного тину на підпрограму. У подальшому в мовах програмування були введені спеціальні конструкції (модуль, клас), спрямовані на ефективну реалізацію абстрактних типів даних.
Структурний аналіз (Т. де Марко, 1978). Метод аналізу специфікацій вимог за допомогою діаграм (управління, дані, перехід станів) - PSL/PSA (Д. Тіхроєв, 1977) шляхом ієрархічної декомпозиції вирішення проблеми. Людино-машинна техніка реалізована у вигляді мов і призначена для структуризації документації і аналізу інформації. Мови PSL/PSA використовують графічні діаграми {System Analisys and Design Techik - SADT), які застосовують для опису даних, перетворення інформації і процесів, що відбуваються в системах (рис. 4.6).
Рис. 4.6. Діаграма SADT
ER-моделювання (С. Чен, 1976). Метод опису прикладного домена за допомогою спеціальних діаграм «суть-зв'язок» (Enitity -Relation - ER), Метод використовує три типи нотацій: сутність, зв'язок (відношення), з'єднання.
Наприклад, діаграма на рис. 4.7 описує домен «комп'ютер — програма».
ER-модель використовується для опису логічних схем баз даних.
Рис. 4.7. ER-Діаграма:
□-сутність; ◊-(зв'язок,відношення) − − - з’єднання
Позначення 1 і т біля з'єднань показують їх тип (у цьому прикладі і «один - до багатьох»).
Системне програмування Джексона (К. Джексон, 1977). Метод використовує структурні оператори (проходження, вибір, повторения) для представлення логічних структур програмного забезпечення.
Віденський метод (IBM, 1970). Метод ґрунтується па операційному підході до опису семантики мов програмування. Суть методу полягає в тому, що завдання семантики здійснюється шляхом опису певних системних пристроїв - автоматів, що володіють па м'ятно і структурними станами.
Метод був розроблений для представлення семантики мови програмування PL/1, а потім використовувався для опису програмного забезпечення.
Simula 67 (У. Дал, Л. Keй, 1976), Мова програмування, до якої вперше введено поняття класу. Основним поняттям у мові був об'єкт - екземпляр блоку. Безліч об'єктів утворюють клас. Класи можуть складатися з підкласів (ієрархія, контейнер) у сучасному розумінні Згодом мова Simula 67 стала основою побудови мов об'єктно-орієнтованого програмування.
Об'єктно-орієнтоване проектування (Г. Буч, 1980). Суть методу полягає у використанні поняття об'єкта при аналізі наочної об ласті і проектуванні програмного забезпечення,
Доменний аналіз (Р. Прісто-Діаз, 1991). Метод спрямований на аналіз наочних областей з метою визначення повторно використовуваних рішень.
Об'єктнно-орієнтований аналіз (Е. Йодон, П. Коад. і 978). Є розширенням методу структурного аналізу шляхом використання об'єктів.
Усі перелічені методи можна розташувати в матриці (рис. 4.8),
Тип моделі Зорієнтованість методів, проблемно-орієнтовані продукто-орієнтовані Концептуальний І Структурний аналіз ER-модель Об'єктно-орієнтований аналіз ІІ Структурно проектування О'бєктно-оріентоване проектування Формальні моделі ІІІ JSD VDM IV Рівні абстракцій; Покрокова розробка Доведення правильності JSD ОО - програмуванняРис. 4.8. Відповідність типів моделей і методів
4.3.3. ПерсоналПрограмні процеси реалізують фахівці. Більшість програмних Процесів є настільки складними, що не можуть бути виконані одним або двома особами, тому шин зазвичай, утворюють певну структуру (організацію), характер якої, як і властивості окремих осіб, відіграють дуже важливу роль у розробці програмних продуктів.
Отже, розглянемо дві складових персоналу:
- кваліфіковані фахівці, здатні викопувати роботи зі створення програмного забезпечення;
- організації - об'єднання людей, що ставлять за мету виконання робіт зі створення програмного продукту.
Фахівці. Нині відомий дуже широкий спектр фахівців, які можуть залучатися до розробки програмного забезпечення.
Фахівцями комісії SEEPP розроблений етичний кодекс інженера з програмного забезпечення. Він включає такі аспекти:
- суспільні інтереси - дії програмістів повинні відповідати суспільним інтересам;
- клієнт і працедавець - програмісти повинні вчиняти так, щоб якнайкраще задовольнити вимоги клієнта і працедавця, але при цьому дотримуватись суспільних інтересів;
- продукт — програмісти повинні бути впевнені в тому, що створюванні ними програмні продукти і пов'язані з продуктами модифікації відповідають професійним найвищим стандартам;
- критицизм - інженери-програмісти повинні дотримуватися цілісності і незалежності своїх думок, формуючи здоровий професійний критицизм мислення;
- Менеджмент - менеджери і лідери, керівники груп з розробки ПО, зобов'язані дотримуватися стичних норм у процесі розробки і супроводу програм;