Лекція №1 Тема: Життєвий цикл програм. Алгоритмізація програми План заняття Життєвого цикл програми. Алгоритмізація обчислювальних процесів. Класичний життєвий цикл Найстарішою парадигмою процесу розробки ПЗ є класичний життєвий цикл (автор Уїнстон Ройс, 1970) Дуже часто класичний життєвий цикл називають каскадною або водоспадною моделлю, підкреслюючи, що розробка розглядається як послідовність етапів, причому перехід на наступний, ієрархічно нижній етап відбувається тільки після повного завершення робіт на поточному етапі (мал. 1.1). Охарактеризуємо зміст основних етапів. Мається на увазі, що розробка починається на системному рівні і проходить через аналіз, проектування, кодування, тестування і супровід. При цьому моделюються дії стандартного інженерного циклу. Мал. 1.1. Класичний життєвий цикл розробки ПЗ
Системний аналіз задає роль кожного елемента в комп'ютерній системі, взаємодія елементів один з одним. Оскільки ПЗ є лише частиною великої системи, то аналіз починається з визначення вимог до всіх системних елементів і призначення підмножини цих вимог програмному «елементу». Необхідність системного підходу явно виявляється, коли формується інтерфейс ПЗ з іншими елементами (апаратурою, людьми, базами даних). На цьому ж етапі починається рішення задачі планування проекту ПЗ. В ході планування проекту визначаються об'єм проектних робіт і їх ризик, необхідні трудовитрати, формуються робочі задачі і план-графік робіт. Аналіз вимог відноситься до програмного елемента — програмному забезпечення. Уточнюються і деталізуються його функції, характеристики і інтерфейс. Всі визначення документуються в специфікації аналізу. Тут же завершується рішення задачі планування проекту. Основні терміни життєвого циклу Проектування полягає в створенні уявлень: 1. Архітектуру ПЗ; 2. Модульної структури ПЗ; 3. Алгоритмічної структури ПЗ; 4. Структури даних; 5. Вхідного і вихідного інтерфейсу (вхідних і вихідних форм даних). Початкові дані для проектування містяться в специфікації аналізу, тобто в ході проектування виконується трансляція вимог до ПЗ в безліч проектних уявлень. При рішенні задач проектування основну увагу приділяють якості майбутнього програмного продукту. Кодування полягає в перекладі результатів проектування в текст на мові програмування. Тестування — виконання програми для виявлення дефектів у функціях, логіці і формі реалізації програмного продукту. Супровід — це внесення змін в експлуатоване ПЗ. Мета змін: 1.Виправлення помилок; 2.Адаптація до змін зовнішнього для ПЗ середовища; 3.Удосконалення ПЗ по вимогах замовника. Супровід ПЗ полягає в повторному застосуванні кожного з попередніх кроків (етапів) життєвого циклу до існуючої програми, але не в розробці нової програми. Переваги класичного життєвого циклу: дає план і часовий графік по всіх етапах проекту, упорядковує хід конструювання. Недоліки класичного життєвого циклу: 1) реальні проекти часто вимагають відхилення від стандартної послідовності кроків; 2) цикл заснований на точному формулюванні початкових вимог до ПО (реально на початку проекту вимоги замовника визначені лише частково); 3) результати проекту доступні замовнику тільки в кінці роботи. Алгоритмізація обчислювальних процесів Існують різноманітні способи зображення алгоритмів, наприклад словесно формульний, зображення у вигляді блок схеми, запис навчально-алгоритмічною мовою та ін. Головні переваги зображення алгоритму блок-схемою полягають в наочності та простоті. До основних символів, за допомогою яких зображується блок схема алгоритму, можна віднести наступні:
Термінатор (рис.1 а) – визначає початок, або кінець алгоритму. В середині символу може розміщуватися слово ”Початок” або ”Кінець”. Крім того, разом зі словом “Початок” може бути вказане ім’я алгоритму або дія, яку він виконує. Дані (рис. 1 б) – символ відображає дані, носія даних не визначено. Може використовуватися для позначення введення і виведення. У цьому випадку слід записувати слово “Введення” (або ”Виведення”) і значення, що вводяться (виводяться). Процес (рис. 1 в) – символ відображає функцію обробки даних будь якого виду (виконання певної операції, або групи операцій). У цей символ може входити одна або декілька ліній, а виходити одна. Вирішення (рис. 1 г) – символ відображає рішення або функцію перемикаючого типу. Символ ”Вирішення” використовується для перевірки виконання деякої умови і розгалуження обчислювального процесу залежно від результату перевірки. В середині символу записується умова, яка перевіряється. Якщо вона є істиною, то надалі обчислювальний процес здійснюється по гілці ”так”, у про протилежному випадку по гілці ”ні”. У символ ”Вирішення” може входити одна або декілька ліній, а виходити – також декілька. Цикл (рис. 1 д) – Символ відображає циклічну операцію, яка закінчується коли не задовольняється поставлена умова. Умова для ініціалізації, завершення розміщується на початку циклу, а прирощення циклу розміщується в тілі циклу (на початку або в кінці), залежно від розміщення операції, яка перетворює умову. Всі символи блок – схеми алгоритму з’єднуються лініями які вказують на зв’язок блоків і визначають, до якого блоку здійснюється перехід після виконання дій даного блоку. За основний напрямок ліній прийнято напрям зверху вниз і зліва направо. У цьому випадку стрілки на кінці ліній не ставляться. В інших випадках напрямок ліній вказується стрілкою. Якщо декілька ліній спрямовано до одного символу, то можливе їх злиття в одній точці (рис. 2). Символами блок – схеми алгоритму можуть бути присвоєні номери, Які записуються ліворуч в горі над символом. Для показу зв’язків між символами блок – схеми алгоритму, що розміщені на різних сторінках, використовуються між сторінкові сполучники. Верхня цифра означає номер сторінки, на якій розміщений символ, що з’єднується, а нижня номер символу. Алгоритм будь якої складності поділяється на три типові структури: лінійну, розгалужену, та циклічну. Алгоритм з лінійною структурою – це такий алгоритм, у якому вказівки виконуються послідовно одна за одною у порядку їх розміщення. Алгоритм з розгалуженою структурою – це такий алгоритм у якому виконуються одні вказівки або інші, залежно від результатів перевірки деякої умови (сукупності умов).