Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи в програмної інженерії.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.26 Mб
Скачать

Лекція 10. Об’єктно-орієнтований аналіз і проектування програмних систем

Концептуальною основою объєктно-орієнтованого аналізу і проектування ПО (ООАП) є об’ектна модель. ЇЇ основні прінципи – абстрагування, інкапсуляція, модульність і іерархія, поняття – об’єкт, клас, атрібут, операція, інтерфейс.

Більшість сучасних методів ООАП засновані на використанні мови UML. Уніфікованою мовою моделювання UML (Unified Modeling Language) є мова для визначення, уявлення, проектування і документування програмних систем, організаційно-економічних систем, технічних систем і інших систем різної природи. UML містить стандартний набір діаграм і нотацій найрізноманітніших видів.

UML – це наступник того покоління методів ООАП, які з'явилися в кінці 1980-х і початку 1990-х років. UML є прямим об'єднанням і уніфікацією методів Золить, Рамбо і Якобсона, проте доповнює їх новими можливостями. Головними в розробці UML були наступні цілі:

  • надати користувачам готову до використання виразну мову візуального моделювання, що дозволяє їм розробляти осмислені моделі і обмінюватися ними;

  • передбачити механізми розширюваності і спеціалізації для розширення базових концепцій;

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

  • забезпечити формальну основу для розуміння цієї мови моделювання (мова повинна бути одночасно точним і доступним для розуміння, без зайвого формалізму);

  • стимулювати зростання ринку об'єктно-орієнтованих інструментальних засобів;

  • інтегрувати кращий практичний досвід.

UML знаходиться в процесі стандартизації, OMG (Object Management Group), що проводиться, – організацією по стандартизації в області об'єктно-орієнтованих методів і технологій, в даний час прийнятий як стандартна мова моделювання і отримав широку підтримку в індустрії ПО. Повний опис UML можна знайти на сайтах http://www.omg.org і http://www.rational.com.

Стандарт UML містить наступний набір діаграм:

Структурні (structural) моделі:

  • діаграми класів (class diagrams);

  • діаграми компонентів (component diagrams);

  • діаграми розміщення (deployment diagrams).

Моделі поведінки (behavioral):

  • діаграми варіантів використання (use case diagrams);

  • діаграми взаємодії (interaction diagrams);

  • діаграми послідовності (sequence diagrams) і кооперативні діаграми (collaboration diagrams);

  • діаграми станів (statechart diagrams);

  • діаграми діяльності (activity diagrams).

Диаграммы вариантов использования показывают взаимодействия между вариантами использования и действующими лицами, отражая функциональные требования к системе с точки зрения пользователя. Цель построения диаграмм вариантов использования – это документирование функциональных требований в самом общем виде, поэтому они должны быть предельно простыми.

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

Достоїнства моделі варіантів використання полягають в тому, що вона:

  • визначає користувачів і межі системи;

  • визначає системний інтерфейс;

  • зручна для спілкування користувачів з розробниками;

  • використовується для написання тестів;

  • є основою для написання призначеній для користувача документації;

  • добре вписується в будь-які методи проектування.

Варіант використання

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

Актори

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

Відносини 

Між елементами діаграми варіантів використання можуть існувати різні відносини, які описують взаємодію екземплярів акторів і варіантів використання.

У мові UML існує декілька стандартних видів відносин між акторами і варіантами використання:

  • асоціації (association relationship);

  • розширення (extend relationship);

  • узагальнення (generalization relationship);

  • включення (include relationship).

Відношення асоціації

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

Відношення розширення

Отношение расширения определяет взаимосвязь экземпляров отдельного варианта использования с более общим вариантом, свойства которого определяются на основе способа совместного объединения данных экземпляров.

Відношення розширення між варіантами використання позначається пунктирною лінією із стрілкою (варіант відношення залежності), направленою від того варіанту використання, який є розширенням для початкового варіанту використання. Дана лінія із стрілкою позначається ключовим словом «extend» (розширює).

Відношення узагальнення

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

Відношення включення

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

Відношення включення, направлене від варіанту використання А до варіанту використання В, указує, що кожен екземпляр варіанту А включає функціональні властивості, задані для варіанту В. Графічеськи дане відношення позначається пунктирною лінією із стрілкою, яка позначається ключовим словом «include» (включає).

П риклад діаграми варіантів використання

Діаграма класів

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

Діаграма класів служить для представлення статичної структури моделі системи в термінології класів об'єктно-орієнтованого програмування. Вона є граф, вершинами якого є елементи типу «класифікатор», зв'язані різними типами структурних відносин.

Класи

Клас (class) в мові UML служить для позначення безлічі об'єктів, які володіють однаковою структурою, поведінкою і відносинами з об'єктами інших класів. Графічно клас зображається у вигляді прямокутника, який додатково може бути роздільний горизонтальними лініями на розділи або секції. У цих розділах можуть указуватися ім'я класу, атрибути (змінні) і операції (методи).

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

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

<квантор видимости><имя атрибуту>[кратність]: <тип атрибуту> = <початкове значення> { рядок-властивість}

Квантор видимості може приймати одне з трьох можливих значень і відображається за допомогою відповідних спеціальних символів:

  • « позначає атрибут із зоною видимості типу загальнодоступний (public);

  • « позначає атрибут із зоною видимості типу захищений (protected);

  • « позначає атрибут із зоною видимості типу закритий (private).

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

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

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

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

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

<квантор видимости><имя методу>(список параметрів): <вираз типу значення>{ рядок-властивість}, що повертається

Ім'я методу є рядком тексту, який використовується як ідентифікатор відповідного методу.

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

<вид параметра><имя параметра>:<выражение типа>=<значение параметра за умовчанням>.

Вираз типу значення, що повертається, є залежною від мови реалізації специфікацією типу або типів значень параметрів, які повертаються об'єктом після виконання відповідної операції..

Рядок-властивість служить для вказівки значень властивостей, які можуть бути застосовані до даного елементу. Рядок-властивість не є обов'язковим, вона може бути відсутньою, якщо ніякі властивості не специфіковані.

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

Відносини між класами

Окрім внутрішнього устрою або структури класів на відповідній діаграмі указуються відносини між класами. При цьому сукупність типів таких відносин фіксована в мові UML і зумовлена семантикою цих типів відносин. Базовими відносинами в мові UML є:

  • залежності (dependency relationship);

  • асоціації (association relationship);

  • узагальнення (generalization relationship)

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

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

Отношение обобщения является обычным таксономическим отношением между более общим элементом (предком) и более частным или специальным элементом (потомком). Применительно к диаграмме классов данное отношение описывает иерархическое строение классов и наследование их свойств и поведения. При этом предполагается, что класс-потомок обладает всеми свойствами и поведением класса-предка, а также имеет свои собственные свойства и поведение, которые отсутствуют у класса-предка. На диаграммах отношение обобщения обозначается сплошной линией с треугольной стрелкой на одном из концов. Стрелка указывает на общий класс (класс-предок или суперкласс), а ее отсутствие - на специальный класс (класс-потомок или подкласс).

Об'єкти. Діаграма об'єктів.

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