Вибір архітектури програмного забезпечення.
Тема: ПРИНЦИПОВІ РІШЕННЯ ПОЧАТКОВИХ ЕТАПІВ ПРОЕКТУВАННЯ
Лекція 7.
Контрольні питання та завдання
ВИМОГИ ДО ПРОГРАМНОЇ ДОКУМЕНТАЦІЇ
Вимоги до інформаційної та програмної сумісності
Вимоги до складу і параметрів технічних засобів
Вимоги до надійності
4.2.1.Передбачити контроль інформації, що вводиться.
4.2.2.Передбачити блокування некоректних дій користувача при роботі з системою.
4.2.3.Забезпечити цілісність інформації, що зберігається.
4.3.1.Система повинна працювати на IBM сумісних персональних комп'ютерах.
4.3.2.Мінімальна конфігурація:
• тип процесора ................ Pentium і вище;
• об'єм оперативного пристрою, що запам'ятовує …..32 Мб і більш.
Система повинна працювати під управлінням сімейства операційних систем Win 32 (Windows 95, Windows 98, Windows 2000, Windows NT і т. п.).
5.1.Програмні модулі, що розробляються, повинні бути самодокументовані, тобто тексти програм повинні містити всі необхідні коментарі.
5.2.Програмна система повинна включати довідкову інформацію про роботу і підказки користувачеві.
5.3.До складу супроводжуючої документації повинні входити:
5.3.1.Пояснювальна записка на 25-30 листах, що містить опис розробки.
5.3.2. Настанова системного програміста.
5.3.3. Настанова користувача.
5.3.4.Графічна частина на трьох листах формату А1:
5.3.4.1.Схема структурна програмної системи.
5.3.4.2.Діаграма компонентів даних.
5.3.4.3.Форми інтерфейсу користувача.
1. Що таке технічне завдання? Які розділи входять в технічне завдання згідно стандарту?
2. Розробіть технічне завдання для програми повірки побутових лічильників газу.
На початкових етапах процесу проектування повинні бути прийняті принципові рішення, що багато в чому визначають цей процес, а також якість і трудомісткість розробки. До таких рішень відносять:
• вибір архітектури програмного забезпечення;
• вибір типу призначеного для користувача інтерфейсу і технології роботи з документами;
• вибір підходу до розробки (структурного або об'єктного);
• вибір мови і середовища програмування.
Іншими словами, ці рішення визначають, що проектується, з якими потребами та характеристиками, як і якими засобами.
Частина рішень може бути визначена в технічному завданні, утворивши групу технологічних вимог. Останні повинні бути прийняті якомога раніше, оскільки є початковими даними для процесу проектування.
Архітектурою програмного забезпечення називають сукупність базових концепцій (принципів) його побудови [11]. Архітектура програмного забезпечення визначається складністю вирішуваних завдань, ступенем універсальності програмного забезпечення, що розробляється, і числом користувачів, що одночасно працюють з однією його копією. Розрізняють:
• однокористувацьку архітектуру, при якій програмне забезпечення розраховане на одного користувача, що працює за персональним комп'ютером;
• багатокористувацьку архітектуру, яка розрахована на роботу в локальній або глобальній мережі.
Крім того, в рамках однокористувацької архітектури розрізняють:
• програми;
• пакети програм;
• програмні комплекси;
• програмні системи.
Багатокористувацьку архітектуру реалізують системи, побудовані за принципом «клієнт-сервер».
Програмою називають адресований комп'ютеру набір інструкцій, що точно описує послідовність дій, які необхідно виконати для вирішення конкретного завдання. При структурному підході програми є ієрархією підпрограм, що викликають один одного в процесі рішення поставленої задачі, при об'єктному підході – сукупність об'єктів, що обмінюються повідомленнями, для реалізації яких розроблені спеціальні класи. Програма в цьому випадку є окремо компільованою програмною одиницю, яка може використовувати стандартні бібліотеки підпрограм, але, як правило, не організовує свої. Це найпростіший вид архітектури, який зазвичай використовується при рішенні невеликих завдань.
Пакети програм є сукупністю програм, що вирішують завдання деякої прикладної області. Наприклад, пакет графічних програм, пакет математичних програм. Програми такого пакету зв'язані між собою тільки приналежністю до визначеної прикладної області. Пакет програм реалізують як набір окремих програм, кожна з яких сама вводить необхідні дані і виводить результати. По суті справи пакет програм - це деяка бібліотека програм.
Програмні комплекси є сукупністю програм, що спільно забезпечують вирішення невеликого класу складних завдань однієї прикладної області. Для рішення такої задачі можливо потрібно буде вирішити декілька підзадач, послідовно викликаючи програми комплексу. Виклик програм в програмному комплексі здійснюється спеціальною програмою - диспетчером, який забезпечує нескладний інтерфейс з користувачем і можливо, видачу деякої довідкової інформації. Від пакету програм програмний комплекс відрізняється ще і тим, що декілька програм можуть послідовно або циклічно викликатися для вирішення одного завдання, і, отже, бажано зберігати початкові дані і результати викликів в межах одного призначеного для користувача проекту. Програми в цьому випадку можуть реалізовуватися як окремо, так і як спільно компільовані програмні одиниці, а початкові дані зберігатися в оперативній пам'яті або у файлах.
Програмні системи є організованою сукупністю програм (підсистем), що дозволяє вирішувати широкий клас завдань з деякої прикладної області. На відміну від програмних комплексів програми, що входять в програмну систему взаємодіють через загальні дані. Програмні системи зазвичай мають розвинені користувацький і внутрішні інтерфейси, що вимагає їх ретельного проектування.
Багатокористувацькі програмні системи на відміну від звичайних програмних систем повинні організовувати мережеву взаємодію окремих компонентів програмного забезпечення, що ще ускладнює процес його розробки. Для розробки подібного програмного забезпечення використовують спеціальні технології або платформи, наприклад, технології CORBA, COM, Java і тому подібне/
Вибір типу призначеного для користувача інтерфейсу.Розрізняють чотири типи призначених для користувача інтерфейсів:
• примітивні - реалізують єдиний сценарій роботи, наприклад, введення даних - обробка - виведення результатів;
• меню - реалізують безліч сценаріїв роботи, операції яких організовані в ієрархічні структури, наприклад, «вставка»: «вставка файлу», «вставка символу» і т. д.;
• з вільною навігацією - реалізують безліч сценаріїв, операції яких не прив'язані до рівнів ієрархії, і припускають визначення безлічі можливих операцій на конкретному кроці роботи; інтерфейси даної форми в основному використовують Windows-додатки;
• прямого маніпулювання - реалізують безліч сценаріїв, представлених в операціях над об'єктами, основні операції ініціюються переміщенням піктограм об'єктів мишею, дана форма реалізована в інтерфейсі самої операційної системи Windows альтернативно інтерфейсу з вільною навігацією.
Тип призначеного для користувача інтерфейсу багато в чому визначає складність і трудомісткість розробки, які істотно зростають в порядку перерахування типів. До 80% програмного коду може реалізовувати саме призначений для користувача інтерфейс [37]. Тому зрозуміло, що на ранніх стадіях навчання програмуванню реалізують в основному примітивні інтерфейси і меню, хоча вони і не зручні для користувачів.
Поява об'єктно-орієнтованих візуальних середовищ розробки програмного забезпечення, що використовують подієвий підхід до програмування і в основному розрахованих на створення інтерфейсів з вільною навігацією, істотно понизило трудомісткість розробки подібних інтерфейсів і спростило реалізацію інтерфейсів прямого
маніпулювання. Таким чином, вибір двох останніх типів інтерфейсів припускає використання одного з візуальних середовищ розробки програмного забезпечення. Якщо відповідні середовища розробникові не доступні, то слід враховувати велику трудомісткість створення подібних інтерфейсів.
Крім того, вибір типу інтерфейсу включає вибір технології роботи з документами.
Розрізняють дві технології:
• однодокументна, яка припускає однодокументний інтерфейс (SDI – Single Document Interface);
• багатодокументна, яка припускає багатодокументний інтерфейс (MDI – Multiple Document Interface).
Багатодокументну технологію використовують, якщо програмне забезпечення повинне працювати з декількома документами одночасно, наприклад, з декількома текстами або декількома зображеннями. Однодокументну - якщо одночасна робота з декількома документами не обов'язкова.
Трудомісткість реалізації багатодокументних інтерфейсів з використанням сучасних бібліотек приблизно на 3...5 % вище, ніж першого. Вибір типу впливає на трудомісткість більш істотно.
Вибір підходу до розробки.Якщо вибраний інтерфейс з вільною навігацією або прямого маніпулювання, то, як указувалося вище, це практично однозначно припускає використання подієвого програмування і об'єктного підходу, оскільки сучасні середовища візуального програмування, такі як Visual C++, Delphi, Builder C++ і подібні до них надають інтерфейсні компоненти саме у вигляді об'єктів бібліотечних класів. При цьому залежно від складності наочної області програмне забезпечення може реалізовуватися як з використанням об'єктів і, відповідно, класів, так і чисто процедурно. Виняток становлять випадки використання спеціалізованих мов розробки Інтернет-додатків, таких як Perl, побудованих по абсолютно іншому принципу.
Примітивний інтерфейс і інтерфейс типу меню сумісні як із структурним, так і з об'єктним підходами до розробки. Тому вибір підходу здійснюють з використанням додаткової інформації.
Практика показує, що об'єктний підхід ефективний для розробки дуже великих програмних систем (більше 100000 операторів універсальної мови програмування) і в тих випадках, коли об'єктна структура наочної області яскраво виражена.
Слід також враховувати, що необхідно обережно використовувати об'єктний підхід при жорстких обмеженнях на ефективність програмного забезпечення, що розробляється, наприклад при розробці систем реального часу. У всіх інших випадках вибір підходу залишається за розробником.
Вибір мови програмування.В більшості випадків жодної проблеми вибору мови програмування реально не існує. Мова може бути визначена:
• організацією, що веде розробку; наприклад, якщо фірма володіє ліцензійним варіантом C++ Builder, то вона вестиме розробки переважно в даному середовищі;
• програмістом, який по можливості завжди використовуватиме добре знайому мову;
• усталеною думкою («всі розробки подібного роду повинні виконуватися на C++ або на Java або на ...») і т. п
Якщо ж все-таки вибір мови реально можливий, то потрібно мати на увазі, що всі існуючі мови програмування можна розділити на наступні групи:
• універсальні мови високого рівня;
• спеціалізовані мови розробника програмного забезпечення;
• спеціалізовані мови користувача;