НОУ ІНТУІТ, Лекція, Сучасні технології об’єктно-орієнтованого аналізу та проектування

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

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

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

Модель (model) - абстракція фізичної системи, що розглядається з певної точки зору і представлена ​​деякою мовою або в графічній формі.

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

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

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

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

Об'єктно-орієнтоване програмування (ООП, Object-Oriented Programming) - сукупністьпринципів, технологій, а також інструментальних засобів для створення програмних систем на основі архітектури взаємодії об'єктів.

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

Основні принципи ООП: абстракція, успадкування, інкапсуляція та поліморфізм.

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

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

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

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

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

У свою чергу клас "Персональний комп'ютер" може бути класом-предком для інших класів, зокрема "Робоча станція", "Сервер" та "Ноутбук". З цієї точки зору всі зазначені класи успадковують властивості батьківського класу "Персональний комп'ютер", а можливо, і перевизначають деякі з них. Описана вище текстова інформація про співвідношення класів у даному прикладі має один серйозний недолік, а саме, відсутність наочності. У зв'язку з цим виникає питання: а можливоЧи можна представити ієрархію спадкування класів у візуальній формі? У понятійної логіці зображення понять використовуються кола чи прямокутники. За допомогою цієї графічної нотації ієрархію класів для розглянутого прикладу можна подати у вигляді вкладених прямокутників або кіл, кожен з яких відповідає окремому класу (рис. 1.1).

сучасні

Подібне зображення має серйозний недолік. З представленого малюнка незрозуміло, зображено у ньому ієрархія понять чи декомпозиція класу " Комп'ютер " з його складові. Як буде показано далі, використання нотації UML дозволяє усунути цю невизначеність за допомогою введення на розгляд двох різних відносин: узагальнення та агрегації (Лекція 6).

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

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

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

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

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

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