Структурні карти Константайна

Базовими будівельними блоками програмної системи є модулі [12]. І на структурній карті відношення між модулями показують у вигляді графа, вершинам якого відповідають модулі і загальні області даних, а дугам – міжмодульні виклики і звертання до загальних областей даних. Розрізняють чотири типи вершин (рис. 13.4):

• модуль

• підсистема - програма

• бібліотека - сукупність підпрограм, розміщених в окремому модулі

 
 

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

 

Рисунок 13.4 – Позначення вершин (типи модулів) згідно стандартів IBM, ISO і ANSI.

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

1) модуль складається з безлічі операторів мови програмування, записаних послідовно;

2) модуль має ім'я, по якому до нього можна посилатися як до єдиного фрагмента;

3) модуль може приймати і/або передавати дані як параметри в викликаючій послідовності або зв'язувати дані через фіксовані комірки або загальні області.

Структурні карти Константайна є моделлю відносин ієрархії між програмними модулями.

 
 

Основні елементи структурних карт.

Окремі частини програмної системи (програми, підпрограми) можуть викликатися послідовно, паралельно або як співрограми (рис.13.5). При послідовному виклику модулі викликаються в порядку їх слідування. При паралельному виклику модулі можуть викликатися у будь-якому порядку або одночасно (паралельно).

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

 

Рисунок 13.5 – Типи викликів модулів

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

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

Якщо стрілка, що зображає виклик, стосується блоку, то звернення відбувається до модуля цілком, а якщо входить в блок, то - до елементу усередині модуля.

Для моделювання умовних і циклічних викликів застосовуються наступні вузли (рис. 13.6):

Умовний вузолвикористовується для умовного виклику модуля-нащадка. Він зображається за допомогою ромба, потоки - альтернативні виклики зображаються такими, що виходять з нього. Таким чином, якщо з ромба виходять два потоки, це відповідає конструкції IF-THEN-ELSE, якщо один потік - конструкції IF-THEN.

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

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

 

Рисунок 13.6 - Умовні і циклічні виклики модулів

а - циклічний; б - умовний; в - одноразовий

Зв'язки по даним і керуванню позначають стрілками, паралельними дузі виклику, напрям стрілки указує напрям зв'язку (рис. 13.7).

Рисунок 13.7 – Позначення типу зв’язку

 

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

Приклад 5.1.Розглянемо структурну карту Константайна на прикладі процесу "Скласти розклад".

 

 


 

 

Рисунок 13.8 – Приклад структурної карти Константайна

 

Приклад 5.2. Представимо у вигляді структурної карти Константайна повну структурну схему для програми побудови графіків/таблиць функції (див. рис. 13.9).

Підпрограми Очищення вікна, Виведення прямокутника, Виведення рядка тексту, Виведення відрізання прямій, Завдання кольору малювання і Завдання кольору фону є частиною бібліотеки графічних примітивів практично в будь-якому середовищі програмування універсальної мови, тому їх включати в структурну карту не будемо. Для решти підпрограм покажемо особливі умови виклику і типи зв'язків (рис. 13.9).

Модулі Розрахунок значень функції, Виведення таблиці і Побудова графіка пов'язані з основною програмою за зразком, оскільки параметри X і Y структурні (масиви), отже програма вважається зчепленою за зразком.

Аналіз показує, що кількість зчеплень за зразком в програмі можна зменшити якщо підпрограму Розрахунок значень функції перенести на наступний рівень (рис. 13.10). Але в цьому випадку при зміні виду результату таблиця значень розраховуватиметься наново.

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

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

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

• Основна програма

• Виведення вікна з текстом

• Виведення заголовка і меню

• Розбір функції

• Обчислення значень функції

• Виведення таблиці

• Розрахунок значень функції

• Побудова графіка.

 

 



Рисунок 13.9 – Структурна карта Константайна

 
 

Рисунок 13.10 – Структурна карта Константайна (2 варіант)