К. М. Лавріщева програмна інженерія підручник Київ, 2008
Скачать 5.23 Mb.
|
Модель процесів базується на вимогах до поведінки майбутньої системи. Поведінка визначається діями процесів, які пов’язані зі змінами у моделі станів. Дія — це реакція на подію, що ініціює виконання певних функцій системи. Кожна дія входить до складу процесу і визначається в термінах цього процесу і архівних даних об’єктів. Тобто в даній моделі процес – це сукупність дій (операцій), а архів даних – це атрибути об’єктів інформаційної моделі. Для кожної дії, вказаної на моделі станів, утворюється діаграма процесу, на якій відображається виникнення подій при виконанні функцій системи. Як джерело даних процесів можуть бути: – атрибути об’єктів, що продовжують існувати після завершення роботи системи; – системний годинник; – таймер; – дані про події, що відбуваються; – повідомлення від зовнішніх об’єктів. Послідовність виконуваних процесів утворює потік керування, а кожен процес утворює потік даних. Потоки даних зображаються діаграмами дій за такими правилами: – кожній діаграмі переходу станів може відповідати тільки одна діаграма дій; – процес подається овалом із указівкою змісту або назви процесу; – потоки даних процесів зображуються стрілками, на яких вказуються імена даних, переданих процесу; – стрілка в напрямку до овалу процесу вказує на його вхідні дані, а від овалу – на вихідні дані; – джерела даних зображуються прямокутниками; – архівним даним відповідають потоки з назвами атрибутів об’єктів, що передаються цими потоками; – деякі потоки даних відмічаються таймером або системним годинником (година, хвилина); – подія, повідомлення про яку одержує процес, зображується стрілкою з назвами архівних даних. У даній моделі розрізняються процеси загального призначення, а саме: – доступ до архівів; – підготовка і верифікація об’єктів ПрО; – обробка потоків даних і генерація подій; – накопичення об’єктів і їхніх атрибутів в архіві системи; – організація визначення функцій системи тощо. Потоки позначаються штриховими стрілками. Якщо процес виконує перевірку деякої умови з метою передачі керування і вхідних даних іншому процесу, то потік зображується лінією з рисочкою. На рис. 4.6 наведено фрагмент діаграми, що відображає створення репозитарію для накопичення різних програмних компонентів та їхніх інтерфейсів. Розділ 4 89 До діаграм дій потоків даних додається неформальний опис функцій процесів, що входять у їхній склад. Для опису подробиць дій процесів нотація не регламентується. Рис. 4.6. Приклад діаграми процесу створення репозитарію Опис діаграми дій потоків даних для всіх об’єктів системи завершується загальною таблицею процесів із таких стовпчиків: – ідентифікатор процесу; – тип та назва процесу; – назва стану, для якого визначений процес; – назва дії процесу. Таблиця процесів дає можливість перевірити: – несуперечність назв і ідентифікаторів процесів; – повноту визначених подій і відповідних процесів; – генерацію події або її обробку відповідним процесом. Результат моделювання процесів – це модель доступу до даних, діаграма потоків даних дій, таблиця процесів і їхній опис з упорядкуванням по ID. Модель доступу відображає взаємодію об’єктів через зв’язок з моделлю станів під час виконання певних дій процесів системи. Цей вид взаємодії вважається синхронним. Якщо подія одержана після того, як дія процесу завершилася, ця взаємодія є асинхронною. Визначення архітектури ПрО в методі Шлеєра. Після побудови трьох моделей виконується проектування програмної системи шляхом поділу ПрО на частини, яким відповідають підсистеми з визначенням їхніх функцій і принципів їхнього виконання. У кожну підсистему включаються побудовані моделі або їхні фрагменти і, відповідно, виділені об’єкти з усіма характеристиками. Між підсистемами встановлюються сполучні зв’язки, на яких вказуються імена переданих даних або об’єктів, що беруть в них участь. Таким чином, створюється графічне зображення архітектури системи, елементи якої можуть описуватися конкретною мовою програмування. 90 Розділ 4 Даний об’єктний метод має багато спільного з методом Буча. Він реалізований у ряді інструментів (наприклад, EaseCASE Plus 4.0) і застосовується в різних областях (банківські операції, керування літальними апаратами, оформлення кредитних карток тощо) у США, Європі і Японії. 4.2. Проектування архітектури програмних систем Проектування архітектури ПЗ – це процес розроблення, що виконується після етапу аналізу і формування вимог. Задача такого проектування – перетворення вимог до системи у вимоги до ПЗ і побудова на їхній основі архітектури системи [13, 16]. Архітектура системи – це структурна схема компонентів системи, взаємодіючих між собою через інтерфейси. Компоненти можуть складатися з послідовності більш дрібних компонентів та інтерфейсів. Розроблення архітектури ґрунтується на загальних довідниках, класифікаторах та ін. У ній ідентифікуються загальні частини системи, у тому числі готові програмні продукти і заново розроблені компоненти, а також багаторазово використовувані в інших застосуваннях. Побудова архітектури системи здійснюється шляхом визначення цілей системи, її вхідних і вихідних даних, декомпозиції системи на підсистеми, компоненти або модулі та розроблення її загальної структури. Основні розв’язки щодо структури системи приймаються групою архітекторів і аналітиків. Вони передають окремі частини системи для реалізації невеликим групам розробників. Архітектуру системи визначають також як множину представлень, кожне з яких відбиває деякий аспект, що цікавить групу учасників проекту – аналітиків, проектувальників, кінцевих користувачів та ін. Представлення фіксують проектні рішення щодо структури і поділу ПС на окремі компоненти та визначення зв’язків між ними. На ці рішення впливають вимоги до функцій і середовища. Проектування архітектури системи може проводитися різними методами (стандартизованим, об’єктно-орієнтованим, компонентним і ін.), кожний з яких пропонує свій шлях побудови архітектури, а саме, визначення концептуальної, об’єктної й інших моделей за допомогою відповідних конструктивних елементів (блок-схем, графів, структурних діаграм тощо). При застосуванні об’єктно-орієнтованого підходу компонентами є окремі об’єкти, а процес конструювання об’єктної структури перетворюється в процес виявлення наявних у ПрО об’єктів і визначення сценарію їхнього виконання і взаємодії. Стандартизований і об’єктно-орієнтований підходи до проектування використовують відповідні сформовані технології проектування програмних систем. 4.2.1. Загальні підходи до проектування програмних систем Стандартизований підхід. Тривалий час в Україні та СРСР розроблення програмних систем (що називалися також автоматизованими системами — АС) виконувалась на основі стандарту ГОСТ 34.601–90, що регламентує стадії й етапи процесу розробки АС. Підставою для розроблення АС є договір між розробником системи та її замовником. Згідно з даним стандартом процес розроблення поділяється на такі етапи: формування вимог, розроблення концепції системи, ескізного, технічного і Розділ 4 91 робочого проекту. В ескізному і технічному проектах згідно з формульованими вимогами і концепціями визначаються конкретні задачі системи, будується її структура, а також визначаються алгоритми реалізації підсистем. Ці етапи завершуються створенням і затвердженням звіту про науково-дослідну роботу, у якому дається оцінка необхідних для реалізації АС ресурсів і методичних процедур досягнення якості системи. На процесі розроблення ескізного проекту використовуються проектні рішення щодо всієї системи або до її частин, визначається перелік задач, концепція інформаційної бази, функції і параметри компонентів системи, а також алгоритми обробки інформації. Етап технічного проектування передбачає розробку проектних рішень, що стосуються системи та її частин, документації, а також способів реалізації технічних вимог до системи, алгоритмів розв’язків задач, їхнього розподілу за суміжними частинами проекту й обміну даними між ними. Проектні рішення визначають організаційну структуру, функції користувачів АС, набір необхідних технічних засобів, мови і системи програмування, СКБД, систему класифікації і кодування підсистем, довідники, а також підходи до ведення інформаційної бази системи. Даний стандарт регламентує: – концептуальне проектування, тобто побудову концептуальної моделі, уточнення рішень і узгодження вимог; – архітектурне проектування – визначення головних структурних компонентів і особливостей системи; – технічне проектування – відображення вимог, визначення задач і принципів їхньої реалізації в заданому середовищі функціонування системи; – детальне робоче проектування – специфікація алгоритмів розв’язків задач МП, побудова БД і ПЗ системи. Розглянемо ці види проектування більш докладно. При концептуальному проектуванні визначаються: – джерела надходження даних від замовника, що несе відповідальність за їхню достовірність; – об’єкти системи та їхні атрибути; – способи подання зв’язків між об’єктами і види організації даних; – цілі і функції системи й інтерфейси з її користувачами; – методи взаємодії користувачів із системою. Організація інтерфейсів зв’язана з конкретними формами екранів і форматами обміну даними, а також з визначенням: 1) термінів і понять, що мають значення для користувача і самої системи; 2) моделі системи, що відбиває функції і ролі, подання даних і форми видачі результатів; 3) візуальних прийомів відображення на екрані результатів роботи у наочній і звичній для користувачів формах; 4) методів взаємодії підсистем. Технічне проектування складається з відображення архітектури системи окремими програмами для заданого середовища їхнього функціонування з прив’язкою елементів системи до особливостей платформи реалізації: СКБД, ОС, устаткування й ін. Перенесення виготовленої ПС на іншу платформу вимагає зміни 92 Розділ 4 параметрів, настроювання сервісів на нові умови середовища й адаптації використовуваних БД. Особливості об’єктного підходу. Проектування системи може здійснюватися на основі об‘єктно-орієнтованого моделювання ПрО методом UML, який дозволяє враховувати аспекти, властиві діючим особам (акторам) системи, створювати сценарії виконання системи тощо [17]. Об’єктний стиль проектування – це декомпозиція майбутньої системи на окремі підсистеми (пакети), визначення функціональних і нефункціональних вимог і об’єктної моделі предметної області. Носіями інтересів, можливостей і дій в системі (або пакеті) є діючі особи — актори. Пакет може складатися з об’єктної моделі, варіантів використання, що визначають сценарії поведінки системи, склад об’єктів і методів їхньої взаємодії. Поведінка об’єктів відображується діаграмами, що задають послідовність взаємодії об’єктів (діаграми послідовностей, взаємодії), правилами переходу від стану до стану (діаграми станів), а також діаграмами кооперації, в яких діючі особи зображуються графічно. Об’єкти і відповідні їм діаграми варіантів використання задають загальну архітектурну схему системи, у рамках якої здійснюється реалізація структури і специфіки поведінки компонентів. Загальна концепція об’єктного проектування — це побудова всіх сценаріїв, екранних діаграм для керування ними і їх випробування в різних варіантах використання. На вибір варіантів використання впливають нефункціональні вимоги (наприклад, забезпечення конфіденційності, швидкодії й ін.). На основі моделі опису вимог і понять проводиться уточнення складу і змісту функцій системи, методів їхньої реалізації у вигляді сценаріїв і діаграм потоків даних, у яких відображається взаємодія об’єктів як обмін повідомленнями між елементами системи для передачі даних і одержання відповіді після виконання операцій. Моделі вимог визначають призначення і місце вимог у таких системах. Цьому сприяють розроблені національні, корпоративні і відомчі стандарти. Вони фіксують правила формування нефункціональних вимог, у яких відображаються відомості про взаємодію і захист даних у системі. При цьому поведінка об’єктів представляється діаграмами UML, вони можуть уточнюватися при перегляді моделей вимог і складу об’єктів системи. Перегляд починається з вимог і пошуку місць локалізації для внесення необхідних змін у модель. Зміни можуть стосуватися функціональних і нефункціональних вимог у зв’язку з уточненням замовником обмежень на структуру системи, використовувані ресурси й умови середовища її функціонування. 4.2.2. Проектування різних видів архітектур програмних систем Один зі шляхів архітектурного проектування – традиційний неформальний підхід до визначення архітектури системи, її компонентів, способів їхнього подання й об’єднання в систему, який можна назвати загальносистемним. Фактично архітектура, що створюється згідно з таким підходом, є чотирирівневою і містить у собі: Перший рівень – системні компоненти. Вони здійснюють взаємодію з периферійними пристроями комп’ютерів (принтери, клавіатура, сканери, маніпулятори і т.п.), використовуються при побудові операційних систем. Розділ 4 93 Другий рівень – загальносистемні компоненти. Вони забезпечують взаємодію з універсальними сервісними системами середовища роботи прикладної системи, такими як операційні системи, СКБД, системи баз знань, системи керування мережами і т.п. Третій рівень – специфічні компоненти певної прикладної області, що входять до складу компонентів програмної системи і призначені для розв’язання задач в межах означеної області (наприклад, бізнес-задачі). Четвертий рівень – прикладніпрограмні системи, що призначені для виконання завдань з обробки інформації, які постають перед окремими групами споживачів інформації з різних предметних областей (офісні системи, системи бухгалтерського обліку й ін.) і можуть використовувати компоненти нижчих рівнів. Компоненти кожного з виділених рівнів використовуються, як правило, на своєму або вищому рівні. Кожен рівень відбиває відповідний набір знань, умінь і навичок фахівців, що створюють або використовують компоненти. Цей набір визначає відповідний розподіл фахівців програмної інженерії на аналітиків, системщиків, прикладників, програмістів й ін. При проектуванні архітектури програмна система розглядається як композиція компонентів третього рівня з доступом до компонентів першого і другого рівнів. Тобто архітектурне проектування – це розроблення компонентів третього рівня, визначення вхідних і вихідних даних рівнів ієрархії компонентів і їхніх зв’язків. Результат проектування – архітектура й інфраструктура, що містять у собі набір об’єктів, з яких можна формувати деякий конкретний вид архітектурної схеми для конкретного середовища виконання системи, а також набір елементів керування і контролю. Проектування архітектури системи завершується створенням опису, в якому відображені зафіксовані проектні рішення, логічна і фізична структура системи, а також способи взаємодії об’єктів. Архітектурна схема може бути: розподілена, клієнт-серверна і багаторівнева. Розподілена схема реалізує взаємодію компонентів системи, розташованих на різних комп’ютерах через стандартні протоколи виклику віддалених методів RPC (Remote Procedure Calls), RMI (Remote Method Invocation), що представлені в проміжних середовищах (COM/DCOM, CORBA) [15, 16]. Взаємодіючі компоненти можуть бути неоднорідними, створеними на різних мовах програмування (С, С++, Паскаль, Java, Basic, Smalltalk і ін.), що допускається в проміжному середовищі, наприклад, CORBA (рис. 4.7). L1 L2 Li L3 L4 Ln Інтерфейси L1, L3 Інтерфейси L1, L4 Інтерфейси L2, L4 Інтерфейси Li, Ln Рис. 4.7. Зв’язок між мовами L1, L2, …, Ln через інтерфейси CORBA 94 Розділ 4 Для кожної пари мов взаємодіючих компонентів створюються інтерфейси (L i, L n ) за кількістю пар мов програмування, що взаємодіють між собою. Інтерфейси між мовами L i , L n містять у собі опис: – зв'язків двох об’єктів у цих мовах, що здійснюються через stub (стаб, заглушку) і skeleton (каркас) у мові IDL; – атрибутів викликів в stub і skeleton, що відображаються в операції, а операції – в методи. Зв'язок мов програмування здійснюється через спільний кореневий об'єкт розподіленої системи, який надає механізм надсилання даних об'єктам для клієнтів і серверів. Клієнт передає stub серверу, що реалізує функції з заданими типами даних і передає відповідному об'єкту сервера результат, який після його обробки перетворюється в типи даних об'єкта клієнта. Клієнтські і серверні «заглушки» виступають у ролі класів, об’єкти яких використовуються реалізаціями методів клієнта і сервера. Спільний кореневий об’єкт виконує метод об'єкта-сервера (функцію, сервіс, операцію) за умови, якщо інший об’єкт, який виступає в ролі клієнта для нього, посилає йому виклик для виконання цього методу. Виконання однієї функції або сервісу може здійснюватися одним методом або декількома з різних класів. Дана специфіка виконання методів визначає типові правила взаємодії об’єктів у розподіленому середовищі, що відображені в ряді об’єктних моделей типу клієнт–сервер. Головне завдання схеми клієнт–сервер – забезпечення доступу до ресурсів (апаратури, ПЗ і даних) і їхнього розподілу. При реалізації архітектури клієнт- сервер компонент сервер керує ресурсами і доступом до них, а клієнт їх використовує. Ця архітектура заснована на концепції розподілених об’єктів, які інкапсулюють ресурс і надають послуги іншим об’єктам. Об’єкти, що надають послуги, можуть самі користуватися послугами інших об’єктів, і як результат створюється багаторівнева архітектура. Функцію взаємодії об’єктів виконує брокер об’єктних запитів (ORB) через інтерфейс клієнт–сервер, він також надає загальносистемний сервіс, послуги і різні ресурси. Процес розроблення розподілених об’єктів починається з формування вимог, проектування об’єктів серверів, що можуть надавати послуги об’єктам клієнта. Як метод проектування архітектури об’єктно-орієнтованих програмних систем застосовується UML [17, 18]. Зв’язки між об’єктами сервера і клієнта задаються діаграмами взаємодії або послідовності. Схема процесу розроблення в UML з використанням stub і skeleton, семантику яких розглянуто вище, наведена на рис. 4.8. Діаграми станів задають обмеження на операції об’єктів сервера, визначаючи способи виклику операцій і поведінку об’єктів. Сутність стилю проектування в рамках уніфікованого процесу RUP [19] полягає в описі усіх видів діяльності, виконуваних на моделях (аналізу, проектування, розробки і тестування) процесу ЖЦ. Моделі охоплюють всі аспекти побудови структури і відображення поведінки об’єктів системи. До складу архітектури входять статичні і динамічні об’єкти, їхні Розділ 4 95 зв’язки й інтерфейси між ними. У ній відображаються структура виділених підсистем, довідників, словників, а також результати всіх процесів. Рис. 4.8. Процес розроблення інтерфейсних об’єктів з UML Логічна структура проектованої системи – це композиція об’єктів і готових програмних продуктів, що виконують відповідні функції системи. Композиція ґрунтується на таких положеннях: 1) кожна підсистема повинна відображати вимоги і спосіб їхньої реалізації (сценарій або прецедент); 2) змінювані функції виділяються в підсистемі так, щоб для них прогнозувалися зміни вимог і окремі об’єкти, зв’язані з актором; 3) зв’язок об’єктів здійснюється через інтерфейс; 4) кожна підсистема повинна надавати мінімум послуг або функцій і мати набір параметрів інтерфейсу, які визначають типи даних. Результати архітектурного проектування – це нотації у вигляді діаграм (сутність–зв’язок, переходи станів, потоки даних і дій і т.п.). Об’єкти діаграм деталізують задані функціональні вимоги до самої системи і відображають процес розв’язання задач проекту. Виділені в моделі аналізу об’єкти поєднуються в систему шляхом: – логічного об’єднання і збирання об’єктів; – комунікативного об’єднання об’єктів через загальне джерело даних; – процедурного об’єднання за допомогою операторів виклику; – функціонального об’єднання об’єктів. Якщо в заново створеній системі використана успадкована система, то вона знімає проблему дублювання і скорочує обсяг робіт при проектуванні архітектури системи. У складних програмних системах кількість об’єктів може нараховувати сотні, їх композиції не будуть мати виразного вигляду, навіть з урахуванням того, що об’єкти різних сценаріїв можуть збігатися, тому в такому випадку потрібен додатковий аналіз для їхнього ототожнення. При реалізації системи визначаються об’єкти, що взаємодіють зі службами, які декларують переносність. Будь-який визначений у такий спосіб об’єкт 96 Розділ 4 замінюється об’єктом, що не взаємодіє безпосередньо зі службою, а з деяким абстрактним об’єктом-посередником, що здійснює трансформацію абстрактного інтерфейсу в інтерфейс конкретної служби системи. Для реалізації інтерфейсу між службою та системою кожного разу створюється новий об’єкт. Разом з тим перехід на нову платформу може вимагати побудови допоміжних інтерфейсних або керуючих об’єктів і коригування існуючих. Крім того, може виникнути необхідність у використанні готових підсистем, структура яких відрізняється від тих підсистем, що були визначені на основі аналізу вимог до системи. У цьому випадку вносяться відповідні зміни в модель вимог і в архітектуру системи. |