Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування інформаційних систем.doc
Скачиваний:
95
Добавлен:
21.09.2019
Размер:
28.77 Mб
Скачать

3. Види інформаційних систем.

4. Відмінності у поняттях «методологія» та «метод».

5. Вимоги, яким повиння задовольняти система у контексті проектування.

6. Види ієрархій.

7. Навести приклад декомпозиції.

8. Відмінності між логічною та фізичною моделями.

РОЗДІЛ 3. Розвиток методологій проектування інформаційних систем

  • Методологія процедурно-орієнтованого програмування

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

  • Методологія об'єктно-орієнтованого аналізу і проектування

  • Методологія системного аналізу і системного моделювання

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

3.1. Методологія процедурно-орієнтованого програмування

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

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

Примітка

Прийнято вважати, що сам термін алгоритм походить від імені середньовічного математика Аль-Хорезмі, який в 825 р. описав правила виконання арифметичних дій в десятковій системі числення.

З цієї точки зору вся історія математики тісно пов'язана з розробленням тих або інших алгоритмів вирішення актуальних для своєї епохи завдань. Більше того, саме поняття алгоритму стало предметом відповідної теорії – теорії алгоритмів, яка займається вивченням загальних властивостей алгоритмів. З часом зміст цієї теорії став настільки абстрактним, що відповідні результати розуміли тільки фахівці. Як данина цій традиції якийсь період часу мови програмування називалися алгоритмічними, а перший графічний засіб документування програм отримала назва блок-схеми алгоритму. Відповідна система графічних позначень була зафіксована в ГОСТ 19.701-90, який регламентував використання умовних позначень в схемах алгоритмів, програм, даних і систем.

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

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

Важливою властивістю таких програм є необхідність завершення всіх дій попередньої процедури для початку дій подальшої процедури. Зміна порядку виконання цих дій навіть в межах однієї процедури зажадала включення в мови програмування спеціальних умовних операторів типу if-then-else і Goto для реалізації розгалуження обчислювального процесу залежно від проміжних результатів розв’язування задачі.

Поява і інтенсивне використання умовних операторів і оператора безумовного переходу стала предметом гострих дискусій серед фахівців з програмування. Річ у тому, що безконтрольне застосування в програмі оператора безумовного переходу goto здатне серйозно ускладнити розуміння коду. Відповідні програми почали порівнювати із спагеті, називаючи їх bowl of spaghetti, маючи на увазі численні переходи від одного фрагмента програми до іншого, або, що ще гірше, повернення від кінцевих операторів програми до її початкових операторів. Ситуація здавалася настільки драматичною, що в літературі зазвучали заклики виключити оператор goto з мов програмування. Саме з того часу прийнято вважати хорошим стилем програмування – програмування без goto.

Рис. 3.1. Графічне представлення програми у вигляді послідовності процедур

Примітка

Розглянуті ідеї сприяли становленню деякої системи поглядів на процес розроблення програм і написання програмних кодів, яка отримала назву методології структурного програмування. Основою даної методології є процедурна декомпозиція програмної системи і організація окремих модулів у вигляді сукупності виконуваних процедур. У рамках даної методології отримало розвиток покрокове проектування програм або програмування "зверху-вниз". Період найбільшої популярності ідей структурного програмування припадає на кінець 70-х-початок 80-х років.

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

У цей період основним показником складності розроблення програм вважали її розмір. Цілком серйозно обговорювалися такі оцінки складності програм, як кількість рядків програмного коду. Правда, при цьому робилися деякі припущення щодо синтаксису самих рядків, які повинні були відповідати певним правилам. Загальна трудомісткість розроблення програм оцінювалася спеціальною одиницею вимірювання – "людино-місяць" або "людино-рік". А професіоналізм програміста безпосередньо зв'язувався з кількістю рядків програмного коду, яку він міг написати і відлагодити протягом, скажімо, місяця.

Примітка

Зараз спроби оцінити професіоналізм програміста кількістю рядків програмного коду можуть викликати лише усмішку співбесідника. Дійсно, використовуючи вбудовані засоби сучасних інструментаріїв розроблення (MS Visual C++ або Inprise/Borland Delphi), навіть новачок може за лічені секунди послідовним натисненням кнопок діалогових меню створити працездатну програму, що містить сотні рядків програмного коду і складається з десятка окремих файлів проекту.