- •Лекція 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. Тестування продуктивності
Лекція 3. Організація технологічного процесу розробки ПЗ
Мал. 1.4. Інкрементна модель
Забігаючи вперед, відзначимо, що сучасна реалізація інкрементного підходу — екстремальне програмування ХР (Кент Бек, 1999) [10]. Воно орієнтоване на дуже малі прирости функціональності.
2.4.Модель Швидкої Розробки (RAD)
Модель швидкої розробки ПП (Rapid Application Development) — другий приклад застосування інкрементної стратегії конструювання (мал. 1.5).
RAD-модель забезпечує екстремально короткий цикл розробки. RAD — високошвидкісна адаптація лінійної послідовної моделі, в якій швидка розробка досягається за рахунок використання компонентно-орієнтованого конструювання. Якщо вимоги повністю визначені, а проектна область обмежена, RAD-процесс дозволяє групі створити повністю функціональну систему за дуже короткий час (60-90 днів).
RAD-підхід орієнтований на розробку інформаційних систем і виділяє наступні етапи:
бізнес-моделювання. Моделюється інформаційний потік між бизнес-функциями. Шукається відповідь на наступні питання: Яка інформація керує бизнес-процессом? Яка генерується інформація? Хто генерує її? Де інформація застосовується? Хто обробляє її?
моделювання даних. Інформаційний потік, визначений на етапі бизнес-моделирования, відображається в набір об'єктів даних, які потрібні для підтримки бізнесу. Ідентифікуються характеристики (властивості, атрибути) кожного об'єкту, визначаються відносини між об'єктами;
моделювання обробки. Визначаються перетворення об'єктів даних, що забезпечують реалізацію бизнес-функций. Створюються описи обробки для додавання, модифікації, видалення або знаходження (виправлення) об'єктів даних;
генерація застосування. Передбачається використання методів, орієнтованих на мови програмування 4-го покоління. Замість створення ПО за допомогою мов програмування 3-го покоління, RAD-процесс працює з повторно використовуваними програмними компонентами або створює повторно використовувані компоненти. Для забезпечення конструювання використовуються утиліти автоматизації;
тестування і об'єднання. Оскільки застосовуються повторно використовувані компоненти, багато програмних елементів вже протестовано. Це зменшує час тестування (хоча все нові елементи повинні бути протестовані).
26
Лекція 3. Організація технологічного процесу розробки ПЗ
Мал. 1.5. Модель швидкої розробки ПЗ
Застосування RAD можливо у тому випадку, коли кожна головна функція може бути завершена за 3 місяці. Кожна головна функція адресується окремій групі розробників, а потім інтегрується в цілу систему.
Застосування RAD має свої недоліки і обмеження:
Для великих проектів в RAD потрібні істотні людські ресурси (необхідно створити достатню кількість груп).
RAD застосовна тільки для таких застосувань, які можуть декомпозироваться на окремі модулі і в яких продуктивність не є критичною величиною.
RAD не застосовна в умовах високих технічних рисок (тобто при використанні нової технології).
2.5.Спіральна модель
Спіральна модель — класичний приклад застосування еволюційної стратегії конструювання.
Спіральна модель (автор Баррі Боем, 1988) базується на кращих властивостях класичного життєвого циклу і макетування, до яких додається новий елемент, — аналіз ризиків, відсутній в цих парадигмах [19].
Як показано на мал. 1.6, модель визначає чотири дії, що представляються чотирма квадрантами спіралі.
1.Планування — визначення цілей, варіантів і обмежень.
2.Аналіз риски — аналіз варіантів і розпізнавання/вибір риски.
3.Конструювання — розробка продукту наступного рівня.
4.Оцінювання — оцінка замовником поточних результатів конструювання.
Інтегруючий аспект спіральної моделі очевидний при обліку радіального вимірювання спіралі. З кожною ітерацією по спіралі (просуванням від центру до периферії) будуються все більш повні версії ПО.
27
Лекція 3. Організація технологічного процесу розробки ПЗ
Мал. 1.6. Спіральна модель:
1 — початковий збір вимог і планування проекту; 2 — та ж робота, але на основі рекомендацій замовника; 3 — аналіз риски на основі початкових вимог; 4 — аналіз риски на основі реакції замовника; 5 — перехід до комплексної системи; 6 — початковий макет системи; 7 — наступний рівень макету; 8 — сконструйована система; 9 — оцінювання замовником
У першому витку спіралі визначаються початкові цілі, варіанти і обмеження, розпізнається і аналізується ризик. Якщо аналіз риски показує невизначеність вимог, на допомогу розробникові і замовникові приходить макетування (використовуване в квадранті конструювання). Для подальшого визначення проблемних і уточнених вимог може бути використане моделювання. Замовник оцінює інженерну (конструкторську) роботу і вносить пропозиції по модифікації (квадрант оцінки замовником). Наступна фаза планування і аналізу риски базується на пропозиціях замовника. У кожному циклі по спіралі результати аналізу риски формуються у вигляді «продовжувати, не продовжувати». Якщо ризик дуже великий, проект може бути зупинений.
В більшості випадків рух по спіралі продовжується, з кожним кроком просуваючи розробників до більш загальної моделі системи. У кожному циклі по спіралі потрібне конструювання (нижній правий квадрант), яке може бути реалізоване класичним життєвим циклом або макетуванням. Відмітимо, що кількість дій з розробки (що відбуваються в правому нижньому квадранті) зростає у міру просування від центру спіралі.
Переваги спіральної моделі:
1)найреальніше (у вигляді еволюції) відображає розробку програмного забезпечення;
2)дозволяє явно враховувати ризик на кожному витку еволюції розробки;
3)включає крок системного підходу в ітераційну структуру розробки;
4)використовує моделювання для зменшення риски і вдосконалення програмного виробу.
Недоліки спіральної моделі:
1)новизна (відсутня достатня статистика ефективності моделі);
2)підвищені вимоги до замовника;
3)труднощі контролю і управління часом розробки.
2.6.Компонентно-орієнтована модель
Компонентно-орієнтована модель є розвитком спіральної моделі і теж грунтується на еволюційній стратегії конструювання. У цій моделі конкретизується зміст квадранта конструювання
— воно відображає той факт, що в сучасних умовах нова розробка повинна грунтуватися на повторному використанні існуючих програмних компонентів (мал. 1.7).
Програмні компоненти, створені в реалізованих програмних проектах, зберігаються в бібліотеці. У новому програмному проекті, виходячи з вимог замовника, виявляються кандидати в компоненти. Далі перевіряється наявність цих кандидатів в бібліотеці. Якщо вони знайдені, то компоненти витягуються з бібліотеки і використовуються повторно. Інакше створюються нові
28
