- •Лекція 0. Вступ. Цілі, завдання і місце курсу
- •1. Мета викладання курсу
- •2. Завдання вивчення курсу
- •3. Дисципліни, засвоєння яких необхідне при вивченні курсу
- •4. Характеристика курсу
- •5.1. Література
- •5.2. Інформаційні ресурси мережі Інтернет
- •Лекція 1. Введення у технологію програмування
- •1. Термінологія індустрії ПЗ
- •1.1. Програмування
- •1.2. IT-проекти
- •1.3. Програми і програмне забезпечення (програмні продукти)
- •2. Бізнес і IT-проекти. Ринок ПЗ.
- •3. Про предмет
- •5. Виникнення Технології розробки ПЗ
- •5.1. Коротка історія програмування
- •5.2. Терміни “Технологія”, “Методологія” і “Програмна інженерія”
- •5.3. Стратегії розробки ПЗ
- •6. Огляд технологій програмування
- •6.1. Структурне програмування
- •6.2. Модульне програмування
- •6.4. Компонентне програмування
- •6.5. Висновки з лекції
- •Лекція 2. Елементи програмної інженерії
- •1. Програмна інженерія, основні поняття
- •1.1. Інженери і програмні інженери
- •1.2. Програмна інженерія як інженерна дисципліна
- •1.3. Область дії програмної інженерії
- •2. Цілі програмних інженерів
- •2.1. Поняття “якості” програмного продукту
- •2.2. Створення ПЗ повинно вкладатися до бюджету
- •2.3. Створення ПЗ повинно вкладатися в терміни
- •3. Забезпечення надійності розробки ПЗ
- •3.1. Забезпечення точності інтерпретації
- •3.2. Подолання бар'єру між користувачем і розробником
- •3.3. Контроль ухвалюваних рішень
- •3.4. Програмні інженери і наукове середовище
- •4. Складність програмної системи
- •4.1. Методи боротьби зі складністю
- •5. Моделі якості процесів розроблення ПЗ
- •Лекція 3. Організація технологічного процесу розробки ПЗ
- •1. Процес створення програмного забезпечення
- •1.1. Основні стадії типового процесу створення ПП
- •2. Життєвий цикл та моделі процесу розробки ПЗ
- •2.1. Каскадна модель (Waterfall model)
- •2.2. Макетування (прототипіювання)
- •2.3. Інкрементна модель
- •2.4. Модель Швидкої Розробки (RAD)
- •2.5. Спіральна модель
- •3. “Важкі” і “полегшені” процеси
- •4. ХР-процесс
- •Лекція 4. Оцінка програмного проекту по СОСОМО
- •1. Процес управління проектом
- •1.1. Початок проекту
- •1.2. Оцінювання, заходи і метрики
- •1.3. Процес оцінки
- •1.4. Аналіз ризиків
- •1.5. Планування
- •1.6. Трасування і контроль
- •2. Планування проектних завдань
- •3. Розмірно-орієнтовані метрики
- •4. Функціонально-орієнтовані метрики
- •5. Оцінка проекту на основі LOC- і FP-метрик
- •Лекція 5. Проектування програмних систем
- •1. Особливості процесу синтезу програмних систем
- •2. Особливості етапу проектування
- •3. Структуризація системи
- •4. Моделювання управління
- •5. Декомпозиція підсистем на модулі
- •6. Модульність
- •7. Інформаційна закритість
- •8. Зв'язність модуля
- •8.1. Функціональна зв'язність
- •8.2. Інформаційна зв'язність
- •8.3. Комунікативна зв'язність
- •8.4. Процедурна зв'язність
- •8.5. Часова зв'язність
- •8.7. Випадкова Зв'язність
- •8.8. Визначення зв'язності модуля
- •9. Зчеплення модулів
- •10. Складність програмної системи
- •11. Характеристики ієрархічної структури програмної системи
- •Лекція 6. ПОБУДОВА АРХІТЕКТУРИ ПП
- •1. Поняття архітектури програмного засобу.
- •2. Основні принципи проектування архітектури
- •3. Основні питання архітектора ПП
- •4. Архітектурні стилі (шаблони) ПП
- •5. Поєднання архітектурних стилів
- •6. Основні класи архітектур ПП
- •6.1. Цілісна програма
- •6.2. Архітектура ППП
- •6.3. Архітектура, заснована на шині повідомлень
- •6.4. Архітектура клієнт/сервер
- •6.6. Багатошарова архітектура
- •6.8. Компонентна архітектура
- •6.10. Сервісно-орієнтована архітектура
- •7. 4. Контроль архітектури ПП
- •Лекція 7. Розробка Програм, Модульне Програмування
- •1. Поняття модульного програмування
- •1.1. Основні характеристики програмного модуля.
- •1.2. Методи розробки структури програми.
- •1.3. Контроль структури програми.
- •2. Розроблення програмних модулів
- •2.1. Порядок розробки програмного модуля
- •2.2. Структурне програмування модуля
- •2.3. Покрокова деталізація і поняття про псевдокод.
- •Лекція 8. Тестування і відлагодження ПЗ
- •1. Основні поняття тестування і відлагодження
- •2. Основні підходи і принципи відлагодження.
- •2.1. Заповіді відлагодження.
- •2.2. Автономна відладка модулів
- •2.3. Проміжна відладка програмного засобу
- •2.4. Комплексна відладка програмного засобу.
- •3. Організація процесу тестування ПЗ
- •3.1. Тестування елементів
- •3.2. Інтегральне Тестування ПП
- •3.3. Низхідне тестування інтеграції
- •3.4. Висхідне тестування інтеграції
- •3.5. Порівняння низхідного і висхідного тестування інтеграції
- •4. Види Тестування
- •4.1. Тестування правильності
- •4.2. Системне тестування
- •4.3. Тестування відновлення
- •4.4. Тестування безпеки
- •4.5. Стресове тестування
- •4.6. Тестування продуктивності
Лекція 5. Основи проектування програмних систем.
Лекція 5. Проектування програмних систем
1. Особливості процесу синтезу програмних систем
Відомо, що технологічний цикл конструювання програмної системи (ПС) включає три процеси — аналіз, синтез і супровід.
Вході аналізу шукається відповідь на питання: «Що повинна робити майбутня система?». Саме на цій стадії закладається фундамент успіху всього проекту. Відома безліч невдалих реалізацій із-за неповноти і неточностей у визначенні вимог до системи.
Впроцесі синтезу формується відповідь на питання: «Яким чином система реалізовуватиме вимоги, що пред'являються до неї?». Виділяють три етапи синтезу: проектування ПС, кодування ПС, тестування ПС (мал. 5.1).
Розглянемо інформаційні потоки процесу синтезу.
Етап проектування живлять вимоги до ПС, представлені інформаційною, функціональною і поведінковою моделями аналізу. Іншими словами, моделі аналізу поставляють етапу проектування початкові відомості для роботи. Інформаційна модель описує інформацію, яку, на думку замовника, повинна обробляти ПС. Функціональна модель визначає перелік функцій обробки. Поведінкова модель фіксує бажану динаміку системи (режими її роботи). На виході етапу проектування — розробка даних, розробка архітектури і процедурна розробка ПС.
Розробка даних — це результат перетворення інформаційної моделі аналізу в структури даних, які буде потрібно для реалізації програмної системи.
Мал. 5.1. Інформаційні потоки процесу синтезу ПС
Розробка архітектури виділяє основні структурні компоненти і фіксує зв'язки між ними. Процедурна розробка описує послідовність дій в структурних компонентах, тобто визначає їх
зміст.
Далі створюються тексти програмних модулів, проводиться тестування для об'єднання і перевірки ПС. На проектування, кодування і тестування доводиться більше 75% вартості конструювання ПС. Ухвалені тут рішення надають вирішальну дію на успіх реалізації ПС і легкість, з якою ПС супроводжуватиметься.
Слід зазначити, що рішення, що приймаються в ході проектування, роблять його стрижньовим етапом процесу синтезу. Важливість проектування можна визначити одним словом — якість. Проектування — етап, на якому «вирощується» якість розробки ПС. Справедлива наступна аксіома розробки: може бути погана ПС при хорошому проектуванні, але не може бути хорошою ПС при поганому проектуванні. Проектування забезпечує нас такими представленнями ПС, якість яких
43
Лекція 5. Основи проектування програмних систем.
можна оцінити. Проектування — єдиний шлях, що забезпечує правильну трансляцію вимог замовника в кінцевий програмний продукт.
2. Особливості етапу проектування
Проектування — ітераційний процес, за допомогою якої вимоги до ПС транслюються в інженерні представлення ПС. Спочатку ці уявлення дають тільки концептуальну інформацію (на високому рівні абстракції), подальші уточнення приводять до форм, які близькі до текстів на мовах програмування.
Зазвичай в проектуванні виділяють два ступені: попереднє проектування і детальне проектування. Попереднє проектування формує абстракції архітектурного рівня, детальне проектування уточнює ці абстракції, додає подробиці алгоритмічного рівня. Крім того, у багатьох випадках виділяють інтерфейсне проектування, мета якого — сформувати графічний інтерфейс користувача (GUI). Схема інформаційних зв'язків процесу проектування приведена на мал. 5.2.
Мал. 5.2. Інформаційні зв'язки процесу проектування
Попереднє проектування забезпечує: ідентифікацію підсистем;
визначення основних принципів управління підсистемами, взаємодії підсистем. Попереднє проектування включає три типи діяльності:
1.Структуризація системи. Система структурується на декілька підсистем, де під підсистемою розуміється незалежний програмний компонент. Визначаються взаємодії підсистем.
2.Моделювання управління. Визначається модель зв'язків управління між частинами системи.
3.Декомпозиція підсистем на модулі. Кожна підсистема розбивається на модулі. Визначаються типи модулів і міжмодульні з'єднання.
Розглянемо питання структуризації, моделювання і декомпозиції детальніше.
3. Структуризація системи
Відомо чотири моделі системної структуризації: модель сховища даних; модель клієнт-сервер; трирівнева модель; модель абстрактної машини.
У моделі сховища даних (мал. 5.3) підсистеми розділяють дані, що знаходяться в загальній пам'яті. Як правило, дані утворюють БД. Передбачається система управління цією базою.
44
Лекція 5. Основи проектування програмних систем.
Мал. 5.3. Модель сховища даних
Модель клієнт-сервер використовується для розподілених систем, де дані розподілені по серверах (мал. 5.4). Для передачі даних застосовують мережевий протокол, наприклад TCP/IP.
Мал. 5.4. Модель клієнт-сервер
Трирівнева модель є розвитком моделі клієнт-сервер (мал. 5.5).
Мал.5.5. Трирівнева модель
Рівень графічного інтерфейсу користувача запускається на машині клієнта. Бізнес-логіку утворюють модулі, що здійснюють функціональні обов'язки системи. Цей рівень запускається на сервері застосування. Реляційна СУБД зберігає дані, потрібні рівню бизнес-логики. Цей рівень запускається на другому сервері — сервері бази даних.
Переваги трирівневої моделі:
спрощується така модифікація рівня, яка не впливає на інші рівні; відділення прикладних функцій від функцій управління БД спрощує оптимізацію всієї системи. Модель абстрактної машини відображає багатошарову систему (мал. 5.6).
Кожен поточний шар реалізується з використанням засобів, що забезпечуються шаромфундаментом.
45
Лекція 5. Основи проектування програмних систем.
Мал. 5.6. Модель абстрактної машини
4. Моделювання управління
Відомо два типи моделей управління:
•модель централізованого управління;
•модель подієвого управління.
Умоделі централізованого управління одна підсистема виділяється як системний контроллер. Її обов'язки — керувати роботою інших підсистем. Розрізняють два різновиди моделей централізованого управління: модель виклик-повернення (мал. 4.7) і Модель менеджера (мал. 5.8),
яка використовується в системах паралельної обробки.
Мал. 4.5. Модель виклик-повернення
У моделі подієвого управління системою управляють зовнішні події. Використовуються два різновиди моделі подієвого управління: широкомовна модель і модель, керована перериваннями.
Мал. 5.8. Модель менеджера
У широкомовній моделі (мал. 5.9) кожна підсистема повідомляє обробника про свій інтерес до конкретних подій. Коли подія відбувається, обробник пересилає його підсистемі, яка може обробити цю подію. Функції управління в обробник не вбудовуються.
46
