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



Одна з основних проблем при створенні великих і складних систем, в тому числі ПО, - це проблема складності. Підхід до вирішення цієї проблеми заснований на принципі «розділяй і володарюй» (divide et impera). Складна програмна система повинна бути розділена на невеликі підсистеми, кожну з яких можна розробляти незалежно (в якійсь мірі) від інших. Декомпозиція є головним способом подолання складності розробки ПО. Принципи декомпозиції:

· слабка зв'язаність - low coupling (кількість зв'язків між окремими підсистемами має бути мінімальним);

· сильне зчеплення - high cohesion (зв'язність окремих частин всередині кожної підсистеми повинна бути максимальною).

Структура ПО повинна відповідати таким вимогам:

· кожна підсистема повинна инкапсулировать свій вміст (приховувати його від інших підсистем);

· кожна підсистема повинна мати чітко визначений інтерфейс з іншими підсистемами.

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

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

Візуальне моделювання - це спосіб сприйняття проблем за допомогою зримих абстракцій, що відтворюють поняття і об'єкти реального світу. Моделювання здійснюється за допомогою мови моделювання, який включає в себе: елементи моделі; нотацію (систему позначень); посібник з використання.

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

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

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

3. Графічні моделі полегшують вивчення методів проектування, зокрема об'єктно-орієнтованих методів.

У процесі створення ПЗ використовуються наступні види моделей:

· моделі діяльності організації (або моделі бізнес-процесів):

o моделі "AS-IS" ( "як є"), що відображають існуючий стан;

o моделі "AS-TO-BE" ( "як повинно бути"), що відображають уявлення про нові процесах і технологіях роботи організації;

· моделі проектованого ПО, які будуються на основі моделі "AS-TO-BE", уточнюються і деталізуються до необхідного рівня.

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

Для полегшення праці розробників і автоматизованого виконання деяких рутинних дій використовуються CASE-засобу (Computer Aided Software Engineering). В даний час CASE-засоби забезпечують підтримку більшості процесів життєвого циклу ПЗ, що дозволяє говорити про CASE-технологіях розробки ПО. CASE-технологія - це сукупність методів проектування та інструментальних засобів для моделювання предметної області, аналізу моделей на всіх стадіях ЖЦ ПО і розробки ПЗ.

Поняття архітектури програмного забезпечення. архітектурні уявлення

архітектура ПО - набір ключових правил, що визначають організацію системи:

· сукупність структурних елементів системи і зв'язків між ними;

· поведінку елементів системи в процесі їх взаємодії;

· ієрархію підсистем, які об'єднують структурні елементи.

Архітектура ПО багатовимірна, оскільки різні фахівці працюють з її різними аспектами. Різні уявлення архітектури служать різним цілям:

· уявлення функціональних можливостей ПО;

· уявлення логічної організації ПО;

· уявлення фізичної структури програмних компонент, що входять до складу ПО;

· представлення структури потоків управління і аспектів паралельної роботи ПО;

· опис фізичного розміщення компонентів ПО по вузлах обчислювальної системи.

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

Існують стандартні архітектурні моделі, такі як OSI / ISO. Для зручності повторного використання і передачі знань між розробниками деякі архітектурні рішення оформляються у вигляді зразків або патернів проектування. Патерн - це опис проблеми, що виникає при проектуванні архітектури ПО, і способи вирішення цієї проблеми. Кожен патерн містить: ім'я патерну; опис проблемної області та ситуацій, в яких можна використовувати патерн; шаблон проектного рішення; опис наслідків застосування патерну.

Об'ектная модель      

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

Об'єктна модель є природним способом представлення реального світу. Вона є концептуальною основою ООП. Основними принципами її побудови є:

· абстрагування;

· інкапсуляція;

· модульність;

· ієрархія.

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

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

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

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

До основних понять об'єктно-орієнтованого підходу (елементам об'єктної моделі) відносяться: об'єкт; клас; атрибут; операція; поліморфізм; спадкування; компонент; зв'язок.

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

Структура і поведінку подібних об'єктів визначають загальний для них клас. Клас - це безліч об'єктів, пов'язаних спільністю властивостей, поведінки, зв'язків та семантики. Будь-який об'єкт є екземпляром класу. Визначення класів і об'єктів - одна з найскладніших завдань об'єктно-орієнтованого проектування.

Атрибут- пойменоване властивість класу, що визначає інтервал допустимих значень, які можуть приймати екземпляри даного властивості. Атрибути можуть бути приховані від інших класів, це визначає видимість атрибута: рublic (загальний, відкритий); private (закритий, секретний); protected (захищений).

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

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

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

компонент- це відносно незалежна і замісна частина системи, що виконує чітко визначену функцію в контексті заданої архітектури. Види компонентів: компонент вихідного коду; компонент часу виконання; виконуваний компонент.

Між елементами об'єктної моделі існують різні види зв'язків:

· асоціація - це семантична зв'язок між класами;

· агрегація - сильніший тип зв'язку між цілим і його частинами;

· залежність - зв'язок між двома елементами моделі, при якій зміни в специфікації одного елемента можуть спричинити за собою зміни в іншому елементі;

· узагальнення - зв'язок «тип - підтип».

Зв'язки характеризуються: напрямком; ім'ям і рольовими іменами учасників зв'язку; потужністю.

Мова UML.


Дата добавления: 2018-08-06; просмотров: 231; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!