- •Поняття технології конструювання програмного забезпечення.
- •Класичний життєвий цикл.
- •Макетування.
- •Характеристика стратегій конструювання пз.
- •Інкрементна модель.
- •Спіральна модель.
- •Важковагові та полегшені процеси. Xp – процес.
- •Швидка розробка додатків, rad.
- •Компонентно-орієнтована модель. Моделі якості процесів конструювання.
- •Сторони зацікавлені в продукції.
- •Користувачі. Покупці. Інвестори.
- •Вимоги до пз кожної з сторін.
- •Атрибути якості пз: практичність, відмовостійкість, надійність, ремонтопридатність.
- •Визначення архітектури пз.
- •Опис архітектури пз.
- •Універсальна мова моделювання (uml).
- •Інші базові засоби для створення архітектури.
- •Основні компоненти мови. Призначення мови. Термінологія uml.
- •Процес керування проектом. Планування.
- •Планування проектних задач.
- •Розмірно-орієнтовані метрики.
- •Функціонально-орієнтовані метрики.
- •Виконання оцінки проекту на основі loc- та fp-метрик.
- •Дослідження під моделей моделі cocomo, cocomo II.
- •Конструктивна модель вартості.
- •Модель композиції додатку.
- •Модель раннього етапу проектування.
- •Модель етапу пост архітектури.
- •Структурний аналіз.
- •Основи проектування програмних систем.
- •Класичні методи проектування.
- •Основні поняття та принципи тестування пз.
- •Особливості тестування «білого ящику».
- •Способи тестування базового шляху.
- •Способи тестування умов.
- •Спосіб тестування потоків даних.
- •Тестування циклів.
- •Особливості тестування «чорного ящику».
- •Спосіб розбиття по еквівалентності.
- •Спосіб аналізу граничних значень.
- •Спосіб діаграм причин-наслідків.
- •Дослідження способів структурного та функціонального тестування на прикладах.
- •Методика тестування програмних систем.
- •Тестування правильності.
- •Системне тестування .
- •Мистецтво налагоджування.
- •Основні принципи об’єктна-орієнтованої методології розробки програмної системи (оом пс).
- •Оо Аналіз.
- •Об’єкти та класи.
- •Діаграми в uml.
- •Механізми розширення в uml.
- •Діаграма варіантів використання.
- •Дослідження діаграми варіантів використання.
- •Діаграма класів.
- •2. Асоціації:
- •Дослідження діаграми класів.
- •Діаграма станів.
- •Дослідження діаграми станів.
- •Діаграма діяльності.
- •Дослідження діаграми діяльності.
- •Діаграма послідовності.
- •Дослідження діаграми послідовності.
- •Діаграма кооперації.
- •Дослідження діаграми кооперації.
- •Діаграма компонентів.
- •Дослідження діаграми компонентів.
- •Діаграма розгортування.
- •Дослідження діаграми розгортування.
- •Загальні відомості case-засобів.
- •Case-засоби. Класифікація case-засобів.
- •Порівняння життєвого циклу програмного забезпечення при традиційній розробці і розробці з використанням case-засобів.
- •Концептуальні основи case-технології.
- •Технологія впровадження –засобів.
- •Оцінка і вибір –засобів.
- •Засоби функціонального моделювання.
- •Характеристики case–засобів Silverrun.
- •Характеристики case–засобів jam.
- •Загальна характеристика case-системи Rational Rose.
- •Розробка діаграм у середовищі Rational Rose.
- •Початок роботи над проектом у середовищі Rational Rose.
Основні принципи об’єктна-орієнтованої методології розробки програмної системи (оом пс).
Об'єктно-орієнтований підхід був пов'язаний з наступними подіями:
прогрес в області архітектури ЕОМ (створення комп'ютерів з descriptor-based і capability-based архітектурою);
розвиток об'єктно-орієнтованих мов програмування, таких як Simula, Smalltalk, CLU, Ada;
розвиток методології програмування, включаючи принципи модульності і приховування даних.
Базовими принципами об'єктно-орієнтованої технологія є:
абстрагування;
інкапсуляція;
модульність;
ієрархічність.
принципи є базовими в тому сенсі, що без будь-якого з них модель не буде об'єктної. Крім головних, є ще три додаткових принципу (вони корисні в об'єктної моделі, але не обов'язкові):
типізація;
паралелізм;
збереженість.
Кожен з цих принципів сам по собі не новий, але в об'єктній моделі вони вперше застосовані в сукупності, таким чином, об'єктний підхід до створення ПС відображають еволюційний, а не революційний розвиток проектування; нова методологія не розриває з колишніми методами, а будується з урахуванням попереднього досвіду.
Примітка: В той же час об'єктно-орієнтований аналіз та проектування принципово відрізняються від традиційних підходів структурного проектування: тут потрібно по-іншому уявляти собі процес декомпозиції (об'єктний), а архітектура виходить програмного продукту в значній мірі виходить за рамки уявлень, традиційних для структурного програмування.
Вибір правильного набору абстракцій для заданої предметної області являє собою головну (і найскладнішу) завдання об'єктно-орієнтованого підходу. Абстракція і інкапсуляція доповнюють один одного: абстрагування направлено на спостерігається поведінка об'єкта, а інкапсуляція займається внутрішнім пристроєм об'єкта. Інкапсуляція виконується за допомогою приховування інформації (і внутрішньої структури об'єкта і реалізації його методів), таким чином, вона визначає чіткі межі між різними абстракціями.
У ООП виділяють кілька видів абстракцій:
абстракція суті |
Об'єкт являє собою корисну модель якоїсь сутності в предметної області |
абстракція поведінки |
Об'єкт складається з узагальненого безлічі операцій |
Абстракція віртуальної машини |
Об'єкт групує операції, які можуть бути надіслані разом використовуються більш високим рівнем управління, або самі використовують деякий набір операцій більш низького рівня |
довільна абстракція |
Об'єкт включає в себе набір операцій, які не мають між собою нічого спільного |
Модулі утворюють фізичну структуру системи, це властивість стає особливо корисним, коли система складається з багатьох сотень класів. У більшості мов, що підтримують принцип модульності як самостійну концепцію, інтерфейс модуля відділений від його реалізації (C ++, Ada), що повністю узгоджується з принципом інкапсуляції. Правильне поділ програми на модулі є майже такою ж складним завданням, як вибір правильного набору абстракцій.
Модулі виконують роль фізичних контейнерів, в які поміщаються визначення класів і об'єктів при логічному проектуванні системи.
Примітка: Для невеликих завдань допустимо опис всіх класів і об'єктів в одному модулі. Однак для більшості програм найкращим рішенням буде згрупувати в окремий модуль логічно пов'язані класи і об'єкти, залишивши відкритими ті елементи, які абсолютно необхідно бачити інших модулів.
Перерахуємо прийоми і правила, які дозволяють складати модулі з класів і об'єктів найбільш ефективним чином:
1. Особливості системи, схильні до змін, слід приховувати в окремих модулях; як міжмодульних можна використовувати тільки ті елементи, ймовірність зміни яких мала.
2. Всі структури даних повинні бути відокремлені в модулі; доступ до них буде можливий для всіх процедур цього модуля і закритий для всіх інших. Доступ до даних з модуля повинен здійснюватися тільки через процедури даного модуля [31].
Примітка: Багато компілятори створюють окремий сегмент коду для кожного модуля. Тому можуть з'явитися обмеження на розмір модуля. Динаміка викликів підпрограм і розташування описів всередині модулів можуть сильно вплинути на локальність посилань і на управління сторінками віртуальної пам'яті. При поганому розбитті процедур по модулях частішають взаємні виклики між сегментами, що призводить до втрати ефективності кеш-пам'яті і частій зміні сторінок.
Таким чином, принципи абстрагування, інкапсуляції та модульності є взаємодоповнюючими.
поняття типу взято з теорії абстрактних типів даних. Типізація дозволяє захиститися від використання об'єктів одного класу замість іншого. У різних мовах програмування реалізовані різні механізми типізації, від слабкої (С ++) до сильної (Object Pascal), а в деяких такий механізм відсутній (Smalltalk).
Мови, в яких типізація відсутня, мають більшу гнучкість. Але на практиці, особливо при програмуванні «у великому», надійність мов зі строгою типізацією з лишком компенсує деяку втрату в гнучкості.
Примітка: Теслер зазначив наступні важливі переваги строго типізованих мов:
· «Відсутність контролю типів може призводити до загадкових збоїв в програмах під час їх виконання.
· У більшості систем процес редагування-компіляція-налагодження стомлює, і раннє виявлення помилок просто незамінне.
· Оголошення типів покращує документування програм.
· Багато компілятори генерують більш ефективний об'єктний код, якщо їм явно відомі типи »[37].
В об'єктно-орієнтованих мовах паралелізм досягається за рахунок механізму багатопоточності (процесів управління) і наявності переривань, при цьому головна увага приділяється абстрагування і синхронізації процесів. В даний час існує цілий клас мов, орієнтованих на паралельні обчислення (Ada, Modula-2, Occam).
І, нарешті, кілька слів про зберігання. Вона передбачає, що під час обчислень необхідно зберігати проміжні дані і / або об'єкти в часі. Більшість мов програмування не має вбудованих засобів для цього (хорошим винятком є ??лише мову Smalltalk), тому, як правило, збереженість досягається за рахунок застосування СУБД, багато з яких вбудовані в оболонку інтегрованих засобів розробки ПС.
На закінчення хотілося б відзначити, що об'єктна модель принципово відрізняється від моделей, які пов'язані з більш традиційними методами структурного аналізу, проектування і програмування. Це не означає, що об'єктна модель вимагає відмови від усіх раніше знайдених і випробуваних часом методів і прийомів. Швидше, вона вносить деякі нові елементи, які додаються до попереднього досвіду. Найбільш важливо, що об'єктний підхід дозволяє створювати системи, які задовольняють п'яти ознаками добре структурованих складних систем.
