
- •4. Інженерія систем і програмного забезпечення
- •4.1. Складні та великі системи
- •4.1.1. Властивості систем: емерджентність, адитивність, еквіфінальність
- •4.1.2. Відкриті та закриті системи; класифікація за призначенням, походженням, видом елементів, способом організації
- •4.1.3. Спільне та відмінності складних і великих систем
- •4.2. Моделі систем
- •4.2.1. Склад і структура системи; моделі типу чорної та білої скриньки.
- •4.2.2. Концептуальні, математичні і комп’ютерні моделі
- •4.2.3. Зв’язок між системою та моделлю. Ізо- та гомоморфізм
- •Гомоморфізм
- •Гомоморфізм Гомоморфізм Ізоморфізм
- •4.3. Інформаційні системи
- •4.3.1. Поняття, цілі, значення, класифікація за функціональністю, масштабом, сферою застосування
- •4.3.2. Забезпечення інформаційних систем: організаційне, інформаційне, математичне, програмне, технічне, лінгвістичне, методичне, правове.
- •4.4. Аналіз вимог
- •4.4.1. Класифікація вимог до програмного забезпечення. Джерела та методи збирання вимог
- •4.4.2. Вимоги користувача (варіанти використання та історії користувачів).
- •4.4.3. Функціональні та нефункціональні вимоги, обмеження, структуризація функціональних вимог.
- •4.5. Проєктування програмного забезпечення
- •4.5.1. Види проєктування: структурне, обєктно-орієнтоване, архітектурне, інтерфейсне
- •4.5.2. Парадигми проєктування: функціональна декомпозиція згори вниз, архітектура, орієнтована на дані, об'єктно-орієнтований аналіз та проєктування, подієво-керована архітектура
- •4.5.3. Ідентифікація класів предметної області. Uml-діаграми ієрархії класів: моделювання підсистем, класів та зв’язків між ними
- •4.5.4. Проєктування сценаріїв реалізації варіантів використання на основі uml-діаграм послідовностей та комунікації
- •4.5.5. Основні патерни проєктування mvc, Abstract Factory, Facade, Decorator, Flyweight, Visitor, Observer, Proxy, Strategy, Chain of Responsibility
- •4.6. Реалізація програмного забезпечення
- •4.6.1. Вимоги до оформлення коду: стиль, розбиття на структуровані одиниці, найменування змінних, класів, об’єктів.
- •4.6.2. Засоби автоматичної ґенерації програмного коду
- •4.6.3. Налагодження: Точки зупинки (Breakpoints), Спостереження за змінними (Variable Watch), Виведення на консоль (Console Output), Налагоджувач (Debugger), Аналізатори коду (Code Analyzers)
- •4.6.4. Керування конфігурацією програмного забезпечення та контроль версій
- •4.6.5. Постійна інтеграція/постійне впровадження (Continuous Integration/Continuous Delivery)
- •4.7. Забезпечення якості: спільне та відмінності процесів тестування, верифікації, валідації
- •4.7.1. Тестування методами білої та чорної скрині
- •4.7.2. Рівні тестування: модульний, інтеграційний, системний, валідаційний.
- •4.7.3. Розробка через тестування (Test-driven development)
- •2. Види тестування зручности використання:
- •3. Проведення ефективного тестування зручности використання
- •4. Вирішення крайніх випадків в тестуванні зручности використання
- •4.8. Командна робота, підходи до розробки програмного забезпечення (пз)
- •4.8.1. Класичні моделі розробки пз: каскадна (водопадна), ітераційна, інкрементна
- •4.8.2. Промислові технології розробки. Rup, msf, Agile, Scrum, Extreme Programming (xp), Kamban.
- •4.8.3. Ролі та обов'язки у команді проекту, переваги командної роботи, ризики та складність такої співпраці
- •3. Ролі членів групи в моделі процесу розробки
- •4.8.4. Основні етапи планування і виконання іт проекту. Життєвий цикл іт проекту.
4.2.3. Зв’язок між системою та моделлю. Ізо- та гомоморфізм
Основними відмінностями між моделлю та дійсністю є скінченість, спрощеність та наближеність моделі.
Світ, в якому ми живемо, є нескінченим так само, як і будь-який об'єкт є нескінченним не лише в просторі та часі, але й у своїх зв'язках з іншими об'єктами. Однак наші людські ресурси є обмеженими, а також зовнішні ресурси, які ми можемо залучати до певного процесу теоретичної чи практичної діяльності. Виникає суперечність: необхідно пізнавати нескінченний світ за допомогою скінченних засобів.
І якщо щодо абстрактних моделей, які наділяються скінченною кількістю властивостей, цієї проблеми не виникає, то реальні моделі — це деякі матеріальні об'єкти, які є безмежними так само, як і всі інші реальні об'єкти. І в цьому виявляється різниця між самим об'єктом, та таким самим об'єктом, що використовується в якості моделі іншого об'єкта, тому що з безмежної множини властивостей об'єкта-моделі обираються та використовуються лише деякі властивості, що подібні на ті властивості об'єкта-оригінала, які цікавлять дослідника. Модель подібна до об'єкта-оригіналу скінченою кількістю відношень — що й є аспектом скінченості реальних моделей.
Не кожне поняття відображає дещо безпосередньо існуюче — абстракція може бути ієрархічною, тобто існують не лише моделі реальних об'єктів, але й «моделі моделей», і кількість таких рівнів обмежується лише практичною потребою.
Скінченість моделей з необхідністю приводить до спрощеності моделей порівняно з оригіналом, тому що включення чи невключення певних властивостей та відношень в модель залежить насамперед від мети моделювання. Спрощення є сильним засобом виявлення головних ефектів у явищі, що досліджується.
Окрім того, спрощення моделі пов'язане з необхідністю оперування з нею. Якщо не вистачає обчислювальної потужності, щоб визначити оптимальний випуск продукції в багатогалузевій економіці за допомогою моделі міжгалузевого балансу, ми зменшуємо розмірність задачі, об'єднуючи в моделі декілька галузей в одну; нелінійні залежності лінеаризуємо, представляючи їх кусочно-ліній-ними; випадкові змінні — детермінованими (наприклад, значеннями математичних сподівань) і т. ін.
Окрім того, в моделюванні, як і взагалі в науці, діє принцип леза Оккама — з двох моделей, що однаково добре описують явище, зазвичай простіша виявляється ближчою до дійсної природи явища, що вивчається. Простота є глибинною властивістю світу, що нас оточує, яку дуже точно висловив український філософ Григорій Савич Сковорода (1722—1792): «Слава тобі, Господи, що Ти створив все потрібне нетрудним, а все трудне — непотрібним». Древні схоласти теж відзначали, що простота — це печать істини.
Інший фактор, що дозволяє долати безмежність світу в скінченному пізнанні — це приблизність відображення світу за допомогою моделей. Скінченність та спрощеність моделей теж можна інтерпретувати, як приблизність, але приблизність, на відміну від спрощеності та скінченності, що відображають якісні відмінності між оригіналом та моделлю, відображає такі відмінності, що дозволяють кількісне (більше-менше), чи хоча б якісне (краще-гірше) порівняння. Близькість моделі може бути значною порівняно з оригіналом (наприклад, підроблення мистецьких творів відомих майстрів пензля), або ж незначною, але модель — це, беззаперечно, завжди інший об'єкт, а тому різниця між ними завжди існує.
Якщо за допомогою моделі досягається попередньо визначена ціль, то вона є адекватною до об'єкта, що моделюється. Поняття адекватності (відповідності) не співпадає повністю з вимогами повноти, точності та істинності — адекватність означає, що ці вимоги виконані не взагалі чи у відповідності до певної абсолютної міри, а лише в тій мірі, яка достатня для досягнення мети моделювання. Якщо вдається ввести та обгрунтувати деяку міру адекватності моделі, то це суттєво сприяє покращенню моделі, і може бути сформульована задача знаходження «найадекватнішої» моделі, або ж найпростішої, що забезпечить заданий рівень адекватності.
Моделі є заміщувачами оригіналу завдяки подібності до нього. Існує 3 види подібності:
пряма, що встановлюється шляхом фізичної взаємодії; непряма, що встановлюється через аналогію, тобто через спільну абстрактну модель; умовна, що встановлюється шляхом певних домовленостей.
Моделі прямої подібності — здебільшого це масштабовані або в оригінальний розмір виконані копії оригіналів.
Непряма подібність між моделлю та оригіналом встановлюється не в результаті їх фізичної взаємодії, а об'єктивно існує в природі і виявляється в співпадінні чи достатній близькості їх абстрактних моделей, і після цього використовується в практиці моделювання. Значення цих моделей є великим для практики моделювання.
Моделі умовної подібності зустрічаються на кожному кроці, оскільки вони є способом матеріального втілення абстрактних моделей, формою у вигляді речей, в якій абстрактні моделі можуть передаватися від однієї особи до іншої, зберігатися до певного моменту їх використання, і зберігати можливість повернення до абстрактної форми. Ця властивість реалізується угодою про те, які стани реального об'єкта ставляться у відповідність певному елементу абстрактної моделі, і угода існує у вигляді сукупності правил побудови моделі умовної подібності і правил їх використання.
Кожна модель в чомусь правильно відображає оригінал, а ступінь істинності перевіряється шляхом безпосереднього співставлення моделі та оригіналу. Окрім безумовно істинного, в моделі є ще й те, що правильне за певних умов, а також те, що не стосується оригіналу.
Зв'язок між системою, що моделюється, і нашими знаннями про неї та моделлю ілюструється нижче. З цієї метою спочатку дамо визначення ізо- та гомоморфізму стосовно процесу моделювання.
Ізоморфізм — це співвідношення між системами тотожної структури. Між: елементами та відношеннями ізоморфних систем існує взаємно однозначне відображення — кожному елементу та відношенню однієї системи відповідає один і тільки один елемент (та відношення) іншої та навпаки.
Система Sa відображається гомоморфно в систему Sb, якщо кожному елементу та кожному відношенню (зв'язку) між елементами Sa відповідає один і лише один елемент та відношення (зв'язок) системи Sb, але обернене твердження неправильне. Отже, Sb є гомоморфним образом системи Sa, яка називається прообразом.
Для опису взаємозв'язків між системою та моделлю використаємо властивість відносності та конкретності стосовно системи. Система S1 — це первісна система, модель якої необхідно створити. На ґрунті процесу пізнання системи S1 шляхом спостережень та (або) проведення обмежених експериментів над нею та попереднього досвіду в свідомості формується образ системи S1— система S2, тобто сукупність знань про систему. Відображення системи S2 в систему S2 неповне і має характер гомоморфізму.