Структурне програмування. Об'єктно-орієнтоване проектування.

Структурне програмування це методологія й технологія розробки серйозних програмних комплексів, заснована на наступних принципах:

- програмування повинне здійснюватися зверху-униз;

- увесь проект повинен бути розбитий на модулі з одним входом і одним виходом (оптимальний розмір модуля — кількість рядків на екрані дисплея);

- логіка алгоритму й програми повинна допускати тільки три основні структури: послідовне виконання, розгалуження й повторення. Неприпустимий оператор передачі керування в будь-яку крапку програми;

- при розробці документація повинна створюватися одночасно із програмуванням, у вигляді коментарів до програми.

Ціль структурного програмування — підвищення надійності програм, забезпечення супроводу й модифікації, полегшення й прискорення розробки.

Метод об'єктно-орієнтованого проектування грунтується на:

- ·моделі побудови системи як сукупності об'єктів абстрактного типу даних;

- ·модульній структурі програм;

- ·спадному проектуванні , використовуваному при виділенні об'єктів.

Об'єктно-орієнтований підхід використовує наступні базові поняття:

- ·об'єкт;

- ·властивість об'єкта;

- ·метод обробки;

- ·подія ;

- ·клас об'єктів.

Об'єкт - сукупність властивостей (параметрів) визначених сутностей і методів їх обробки (програмних засобів).

Об'єкт містить інструкції (програмний код), що визначають дії, які може виконувати об'єкт, та оброблювані дані.

Властивість - характеристика об'єкта, його параметр. Всі об'єкти наділені певними властивостями, що у сукупності виділяють об'єкт із множини інших об'єктів.

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

Наприклад, об'єкт можна представити перерахуванням властивих йому властивостей:

ОБ'ЄКТ_ A (властивість-1, властивість-2,...., властивість-k).

Властивості об'єктів різних класів можуть "перетинатися", тобто можливі об'єкти, що мають однакові властивості:

ОБ'ЄКТ _B (...властивість-n, властивість-m,...властивість-r,...) ОБ'ЄКТ_ C (...властивість-n,.., властивість-r,...).

Одним із властивостей об'єкта є метод його обробки.

Метод - програма дій над об'єктом чи його властивостями.

Метод розглядається як програмний код, пов'язаний з певним об'єктом; здійснює перетворення властивостей, змінює поведінку об'єкта.

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

В міру розвитку систем обробки даних створюються стандартні бібліотеки методів, до складу яких включаються типізовані методи обробки об'єктів певного класу (аналог - стандартні підпрограми обробки даних при структурному підході), які можна запозичати для різних об'єктів.

Подія - зміна стану об'єкта.

Зовнішні події генеруються користувачем (наприклад, клавіатурне введення чи натискання кнопки миші, вибір пункту меню, запуск макроса ); внутрішні події генеруються системою.

Об'єкти можуть поєднуватися в класи (групи чи набори - у різних програмних системах можлива інша термінологія).

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

Один об'єкт може виступати об'єднанням вкладених у нього по ієрархії інших об'єктів.

Існує кілька підходів до проектування програмного забезпечення, але найпоширенішими сьогодні є структурний, або функціонально-модульний, та об’єктно-орієнтований. Вони відрізняються за способом декомпозиції складних програмних систем. У першому випадку структура системи описується як ієрархічна система інформаційно пов’язаних модулів, що реалізують її функції. У другому використовується об’єктна декомпозиція, коли статична структура системи описується в термінах об’єктів і зв’язків між ними, а її поведінка — в термінах обміну повідомленнями.

Практично всі поширені методи структурного підходу ґрунтуються на таких основних принципах:

• «поділяй і владарюй»;

• ієрархічне впорядкування (організація системи у вигляді деревоподібної структури з додаванням нових деталей на кожному рівні);

• абстрагування (виділення суттєвих аспектів системи і відкидання несуттєвих);

• несуперечливість (узгодженість елементів системи);

• структурованість даних.

Структурний підхід використовує дві групи засобів, що описують функціональну структуру системи та відношення між даними. Кожній з груп відповідають певні моделі, такі як:

· DFD — діаграма потоків даних;

· SADT (метод структурного аналізу та проектування) — моделі та функціональні діаграми;

· ERD — діаграми «сутність—зв’язок», найбільш популярні в CАSE-засобах.

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

На етапах аналізу вимог до ПЗ і відповідного визначення специфікацій використовуються SADT-моделі.

Моделі ERD використовуються для описання даних на концептуальному рівні, не залежному від засобів СКБД.

На етапі проектування використовуються моделі DFD і ERD для описання структури проектованої системи ПЗ, які можуть уточнюватись, доповнюватись новими конструкціями для представлення даних на логічному рівні.

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

Однак кожна підфункція може містити тільки ті елементи, які належать функції (підфункції) попереднього рівня — «батьківського», причому вона повинна мати всі елементи, що є на «батьківському» рівні, який разом з його інтерфейсами забезпечує контекст підфункції нижчого рівня. Нічого до неї не можна додати або з неї вилучити. В цьому полягає і головна вада структурного підходу: процеси (функції) і дані існують окремо в моделі програмної системи, проектування ведеться від процесів до даних, тобто структури даних знаходяться на другому плані. Крім того, він може використовуватись тільки у проектуванні «зверху вниз», тобто у низхідному проектуванні.