- •Лекція 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. Організація технологічного процесу розробки ПЗ
Не дивлячись на природні відмінності в описах процесів, як правило, в усіх присутні розглянуті стадії. Вони можуть інакше називатися, можуть деталізуватися, але від них нікуди не піти.
Існують відомі процеси, що досить добре себе зарекомендували, напр. Microsoft Solutions
Framework (MSF), Rational Unified Process (RUP) та інші. Ці процеси (часто до них застосовують термін методологія) мають свої різновиди і можуть застосовуватися як для малих і середніх компаній й проектів, так і для великих. Однак, всі ці процеси базуються на одному (основному), або об’єднанні декількох моделей.
Розглянемо основні моделі процесу розробки Програмних Продуктів.
2. Життєвий цикл та моделі процесу розробки ПЗ
Отже, якийсь "каркас" процесу зазвичай виглядає так:
Специфікація. -> Розробка. -> Атестація. -> Модернізація.
Сам цей "каркас" можна приводити в життя по-різному. Існують загальні моделі процесу, які визначають, як організувати роботу по "каркасу" на практиці. Фактично, модель процесу - якесь абстрактне представлення процесу на верхньому рівні. Так, модель не розглядає детально вміст кожного з етапів. Модель розглядає склад етапів і способи їх запровадження
Розглянемо деякі сталі моделі процесу розробки програмного забезпечення.
2.1.Каскадна модель (Waterfall model)
Дуже часто класичний життєвий цикл називають каскадною або водопадом моделлю, підкреслюючи, що розробка розглядається як послідовність етапів, причому перехід на наступний, ієрархічно нижній етап відбувається тільки після повного завершення робіт на поточному етапі (мал.
1.1).
Мал. 1.1. Класична каскадна модель розробки ПЗ
Суть каскадної моделі полягає в наступному:
Вимоги до системи визначаються на початковому етапі і далі не міняються.
Процес створення ПЗ розбивається на наступні стандартні етапи: визначення вимог, проектування, кодування і тестування модулів, інтеграція і тестування продукту, експлуатація і супровід.
Всі етапи послідовні: кожен етап може початися лише тоді, коли закінчився попередній.
Зміст основних етапів.
Розробка починається на системному рівні і проходить через аналіз, проектування, кодування,
22
Лекція 3. Організація технологічного процесу розробки ПЗ
тестування і супровід. При цьому моделюються дії стандартного інженерного циклу.
Системний аналіз задає роль кожного елементу в комп'ютерній системі, взаємодія елементів один з одним. Оскільки ПЗ є лише частиною великої системи, то аналіз починається з визначення вимог до всіх системних елементів і призначення підмножини цих вимог програмному «елементу». Необхідність системного підходу явно виявляється, коли формується інтерфейс ПЗ з іншими елементами (апаратурою, людьми, базами даних). На цьому ж етапі починається рішення задачі планування проекту ПЗ. В ході планування проекту визначаються об'єм проектних робіт і їх ризик, необхідні трудовитрати, формуються робочі завдання і план-графік робіт.
Аналіз вимог відноситься до програмного елементу — програмного забезпечення. Уточнюються і деталізують його функції, характеристики і інтерфейс.
Всі визначення документуються в специфікації аналізу. Тут же завершується рішення задачі планування проекту.
Проектування полягає в створенні описів:
1.архітектура ПЗ;
2.модульної структури ПЗ;
3.алгоритмічної структури ПЗ;
4.структури даних;
5.вхідного і вихідного інтерфейсу (вхідних і вихідних форм даних).
Початкові дані для проектування містяться в специфікації аналізу, тобто в ході проектування виконується трансляція вимог до ПЗ в безліч проектних уявлень. При вирішенні завдань проектування основна увага приділяється якості майбутнього програмного продукту.
Кодування полягає в перекладі результатів проектування в текст на мові програмування.
Тестування — виконання програми для виявлення дефектів у функціях, логіці і формі реалізації програмного продукту.
Супровід — це внесення змін до експлуатованого ПЗ. Цілі змін:
•виправлення помилок;
•адаптація до змін зовнішньою для ПЗ середовища;
•удосконалення ПЗ по вимогах замовника.
Супровід ПЗ полягає в повторному застосуванні кожного з попередніх кроків (етапів) життєвого циклу до існуючої програми але не в розробці нової програми.
Як і будь-яка інженерна схема, класичний життєвий цикл має Переваги і недоліки.
Переваги класичної каскадної моделі в простоті і хорошій структурованості: дає план і часовий графік по всіх етапах проекту, упорядковує хід конструювання.
Недоліки класичної каскадної моделі пов'язані з прямолінійністю і відсутністю гнучкості
1)реальні проекти часто вимагають відхилення від стандартної послідовності кроків;
2)цикл заснований на точному формулюванні початкових вимог до ПО (реально на початку проекту вимоги замовника визначені лише частково);
3)результати проекту доступні замовникові тільки в кінці роботи.
Основна проблема цієї моделі полягає в тому, що незмінність вимог є міфом! Вимоги мінялися, міняються і мінятимуться завжди в ході розробки. Каскадна модель не враховує цей факт. У результаті, якщо нічого не робити, кінцевий продукт відрізнятиметься від поточних потреб замовника (користувачів). Більш того, швидше за все і документація в кінці не відображатиме реальної ситуації (наприклад, ТЗ, складене на початку не співпадатиме з тим, що вийде в кінці). Тому каскадна модель в чистому вигляді перспективна лише для дуже великих проектів, де хороша структурованість виходить на перший план, а також в тих випадках, коли вимоги добре усвідомлені і зафіксовані на самому початку.
23
Лекція 3. Організація технологічного процесу розробки ПЗ
2.2.Макетування (прототипіювання)
Достатньо часто замовник не може сформулювати докладні вимоги по введенню, обробці або виведенню даних для майбутнього програмного продукту. З іншого боку, розробник може сумніватися в приспосабливаемое™ продукту під операційну систему, формі діалогу з користувачем або в ефективності алгоритму, що реалізовується. У цих випадках доцільно використовувати макетування.
Основна мета макетування — зняти невизначеності у вимогах замовника.
Макетування (прототипіювання) — це процес створення моделі необхідного програмного продукту.
Модель може приймати одну з 3-х форм:
паперовий макет або макет на основі ПК (зображає або малює людино-машинний діалог); працюючий макет (виконує деяку частину необхідних функцій); існуюча програма (характеристики якої потім повинні бути покращувані).
Як показано на рис. 1.2, макетування грунтується на багатократному повторенні ітерацій, в яких беруть участь замовник і розробник.
Рис. 1.2. Процес макетування (прототипіювання)
Послідовність дій при макетуванні представлена на рис. 1.3. Макетування починається із збору і уточнення вимог до створюваного ПП.
Розробник і замовник зустрічаються і визначають всі цілі ПП, встановлюють, які вимоги відомі, а які належить довизначити.
Потім виконується швидке проектування. Тут увага зосереджується на таких характеристиках ПП, які повинні бути видимі користувачеві. Швидке проектування приводить до побудови макету. Макет оцінюється замовником і використовується для уточнення вимог до реального ПП.
Ітерації повторюються до тих пір, поки макет не виявить всі вимоги замовника і, тим самим, не дасть можливість розробникові зрозуміти, що повинне бути зроблене.
Переваги макетування:
1.забезпечує визначення повних вимог до ПО.
Недоліки макетування:
2.замовник може прийняти макет за продукт;
3.розробник може прийняти макет за продукт.
Пояснимо суть недоліків. Коли замовник бачить працюючу версію ПО, він перестає усвідомлювати, що деталі макету скріпляють «жувальною гумкою і дротом»; він забуває, що в гонитві за працюючим варіантом залишені невирішеними питання якості і зручності супроводу ПО. Коли замовникові говорять, що продукт повинен бути перебудований, він починає обурюватися і вимагати, щоб макет «в три прийоми» був перетворений на робочий продукт. Дуже часто це негативно позначається на управлінні розробкою ПО.
24
Лекція 3. Організація технологічного процесу розробки ПЗ
Рис. 1.3. Послідовність дій при макетуванні
З іншого боку, для швидкого отримання працюючого макету розробник часто йде на певні компроміси. Можуть використовуватися не самі відповідні мова програмування або операційна система. Для простої демонстрації можливостей може застосовуватися неефективні алгоритми. Через деякий час розробник забуває про причини, по яких ці засоби не підходять. В результаті далеко не ідеальний первинний варіант інтегрується в систему.
Очевидно, що подолання цих недоліків вимагає боротьби з зі спокусою прийняти бажане за
дійсне.
2.3.Інкрементна модель
Інкрементна модель є класичним прикладом інкрементної стратегії конструювання (мал. 1.4). Вона об'єднує елементи послідовної моделі водопаду з ітераційною філософією макетування.
Кожна лінійна послідовність тут виробляє інкремент, що поставляється, ПО. Наприклад, ПО для обробки слів в 1-му інкременті реалізує функції базової обробки файлів, функції редагування і документування; у 2-му інкременті — складніші можливості редагування і документування; у 3-му інкременті — перевірку орфографії і граматики; у 4-му інкременті — можливості компоновки сторінки.
Перший інкремент приводить до отримання базового продукту, що реалізовує базові вимоги (правда, багато допоміжних вимог залишаються нереалізованими).
План наступного інкремента передбачає модифікацію базового продукту, що забезпечує додаткові характеристики і функціональність.
За своєю природою інкрементний процес є ітеративним, але, на відміну від макетування, інкрементна модель забезпечує на кожному інкременті працюючий продукт.
25
