Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л04-5_Методи і мистецтво програмування. Особлив...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
185.86 Кб
Скачать

12

Лекція 3.

МЕТОДИ І МИСТЕЦТВО ПРОГРАМУВАННЯ. ОСОБЛИВОСТІ РОЗРОБКИ СКЛАДНИХ ПРОГРАМНИХ ЗАСОБІВ

План

  1. Етапи проектування програм

  2. Основні особливості і проблеми сучасних програмних проектів

  3. Сучасні тенденції в програмній інженерії

  4. Проблеми проектування складних програмних систем

  5. Основні проблеми при проектуванні програмних засобів

  6. Етапи проектування складних програмних засобів

  7. Стиль програмування

  8. Проектування програм

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

1. Етапи проектування програм

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

Розрізняють абстракцію через параметризацію і через специфікацію.

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

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

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

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

За сучасними поглядами проектування і розробку програм доцільно розбити на ряд послідовних етапів:

1) постановка завдання;

2) проектування програми;

3) побудова моделі;

4) розробка алгоритму;

5) реалізація алгоритму;

6) аналіз алгоритму і його складності;

7) тестування програми;

8) документування.

Стисло зупинимося на кожному з цих етапів.

При постановці завдання для крупних комп'ютерних програм необхідно провести наступні роботи:

• виробити вимоги (властивості, якості і можливості), необхідні для вирішення проблеми або досягнення мети (як правило, ця діяльність носить експертний характер);

• розробити специфікації, що включають:

• мету програми;

• граничні умови;

• опис функцій системи;

• специфікації вхідних і вихідних даних;

• вимоги верифікацій (встановлення тестових випадків);

• тип і кількість документів.

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

Щоб приступити до розв’язування задачі необхідно точно її сформулювати. В першу чергу, це означає визначення початкових і вихідних даних, тобто відповіді на питання: а) що дане; б) що потрібно знайти. Подальша деталізація постановки завдання є відповідями на серію питань такого роду:

• як знайти розв’язок;

• яких даних не вистачає і чи всі вони потрібні;

• які зроблені припущення і т.п.

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

• ім'я/мета - дається ім'я модулю і пропозиція про функцію модуля з формальними параметрами;

• неформальний опис - огляд дій модуля;

• посилання - які модулі посилаються на нього і на які модулі посилається даний модуль;

• вхід/вихід - формальні і фактичні параметри, глобальні, локальні і зв'язані (загальні для ряду модулів) змінні;

• примітки - корисні коментарі загального характеру ПЗ модулю.

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

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

Методи проектування архітектури діляться на дві групи:

1) орієнтовані на обробку;

2) орієнтовані на дані.

1) Методи, орієнтовані на обробку, включають наступні загальні ідеї.

а) Модульне програмування.

Основні концепції:

  • кожен модуль реалізує єдину незалежну функцію;

  • має єдину точку входу/виходу;

  • розмір модуля мінімізується;

  • кожен модуль розробляється незалежно від інших модулів;

  • система в цілому побудована з модулів.

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

б) Функціональна декомпозиція.

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

в) Проектування з використанням потоку даних.

Використовує потік даних як генеральну лінію проектування програми. Містить елементи структурного проектування зверху-вниз з покроковою деталізацією:

• експертиза потоків даних і відображення графа потоку даних;

• аналіз вхідних, центральних і вихідних даних елементів, що перетворюють потік;

• формування ієрархічної структури програми;

• деталізація і оптимізація структури програми.

г) Технологія структурного аналізу проекту.

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

2) Методи проектування, засновані на використанні структур даних, описані нижче.

а) Методологія Джексона.

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

У методі передбачається:

• розробка і зображення структури вхідних і вихідних даних;

• зображення структури програми шляхом з'єднання зображень цих структурних елементів;

• визначення дискретних операцій над структурами даних;

• побудова алгоритмів обробки структур даних.

б) Методологія Уорнера.

Подібна попередньою, але процедура проектування більш деталізована. Використовуються наступні види представлення проекту:

• діаграми організації даних (описують вхідні і вихідні дані);

• діаграми логічного проходження (логічний потік цих даних);

• список інструкцій (команди, використовувані в проекті);

• псевдокод (опис проекту);

• визначення вхідних даних системи;

• організація вхідних даних в ієрархічну структуру;

• детальне визначення формату елементів вхідного файлу;

• те ж саме для вихідних даних;

• специфікація програми: читання, галуження, обчислення, виходи, виклики підпрограм;

• складання діаграми (за типом блок-схем) вказуючі логічну послідовність інструкцій.

в) Метод ієрархічних діаграм.

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

Алгоритм проектування ПЗ цьому методу полягає в наступних кроках:

• почати з найвищого рівня абстракції, визначивши вхід, вихід, обробку;

• з'єднати кожен елемент входу і виходу з відповідною обробкою;

• документувати кожен елемент системи, використовуючи діаграми;

• деталізувати діаграми, використовуючи кроки 1 - 3.

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

Заснована на концепції ховання інформації і абстрактних типів даних. Розглядаються дані, модулі і системи як об'єкти. Кожен об'єкт містить деяку структуру даних з набором процедур, що знають як працювати з цими даними.

За цією методологією створюються абстракції ПЗ заданій проблемній області:

• визначення проблеми;

• розвиток неформальної стратегії, що задовольняє вимогам до системи;

• формалізація стратегії;

• створення об'єктів і їх атрибутів;

• визначення операцій над об'єктами;

• установка інтерфейсів;

• реалізація операцій.

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

При побудові моделей, як правило, використовують два принципи: дедуктивний (від загального до окремого) і індуктивний (від окремого до загального).

Мал. 1. Схема побудови моделі при дедуктивному способі

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

т а = mg – Foпору і як допустиме наближення прийняти модель рівноприскореного руху для малого проміжку часу.

Мал. 2. Схема побудови моделі при індуктивному способі

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

Технологія побудови моделі при індуктивному способі:

1) емпіричний етап

• висновок;

• інтуїція;

• припущення;

• гіпотеза.

2) постановка завдання для моделювання;

3) оцінки; кількісний і якісний опис;