Лекція 2
Тема: ЖИТТЄВИЙ ЦИКЛ І ЕТАПИ РОЗРОБКИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ Для розуміння ролі проектування програмного забезпечення важливо розуміти контекст (Context of Software Design), в якому здійснюється проектування і використовуються його результати. В якості такого контексту виступає життєвий цикл програмної інженерії. Життєвим циклом програмного забезпечення називають період від моменту появи ідеї створення деякого програмного забезпечення до моменту завершення його підтримки фірмою-розробником або фірмою, що виконувала супровід [11]. Склад процесів життєвого циклу регламентується міжнародним стандартом ISO/ІEC12207: 1995 «Information Technologe - Software Life Cycle Processes» («Інформаційні технології - Процеси життєвого циклу програмного забезпечення») [1]. Еквівалентом цього стандарту в Україні є ДСТУ 3918-1999 «Інформаційні технології. Процеси життєвого циклу програмного забезпечення». ISO - InternationalOrganization for Standardization - Міжнародна організація по стандартизації. ІЕС -International Electrotechnical Commission - Міжнародна комісія з електротехніки. Цей стандарт описує структуру життєвого циклу програмного забезпечення і його процеси. Процес життєвого циклу визначається як сукупність взаємозв'язаних дій, що перетворюють деякі вхідні дані у вихідні [1]. На рис. 2.1 представлені процеси життєвого циклу за вказаним стандартом. Кожен процес характеризується визначеними задачами і методами їх рішення, а також початковими даними і результатами.
За стандартом процес розробки включає наступні дії: • підготовчу роботу - вибір моделі життєвого циклу (див. далі), стандартів, методів і засобів розробки, а також складання плану робіт; • аналіз вимог до системи - визначення її функціональних можливостей, призначених для користувача вимог, вимог до надійності і безпеки, вимог до зовнішніх інтерфейсів і т. д.; • проектування архітектури системи - визначення складу необхідного устаткування, програмного забезпечення і операцій, що виконуються обслуговуючим персоналом; • аналіз вимог до програмного забезпечення - визначення функціональних можливостей, включаючи характеристики продуктивності, середовища функціонування компонентів, зовнішніх інтерфейсів, специфікацій надійності і безпеки, ергономічних вимог, вимог до використовуваних даних, установки, приймання, призначеної для користувача документації, експлуатації і супроводу; • проектування архітектури програмного забезпечення - визначення структури програмного забезпечення, документування інтерфейсів його компонентів, розробку попередньої версії призначеної для користувача документації, а також вимог до тестів і плану інтеграції; • детальне проектування програмного забезпечення – докладний опис компонентів програмного забезпечення і інтерфейсів між ними, оновлення призначеної для користувача документації, розробка і документування вимог до тестів і плану тестування компонентів програмного забезпечення, оновлення плану інтеграції компонентів; • кодування і тестування програмного забезпечення – розробку і документування кожного компоненту, а також сукупності тестових процедур і даних для їх тестування, тестування компонентів, оновлення призначеної для користувача документації, оновлення плану інтеграції програмного забезпечення; • інтеграцію програмного забезпечення - збір програмних компонентів відповідно до плану інтеграції і тестування програмного забезпечення на відповідність кваліфікаційним вимогам, що є набором критеріїв або умов, які необхідно виконати, щоб кваліфікувати програмний продукт, як відповідний своїм специфікаціям і готовий до використання в заданих умовах експлуатації; • кваліфікаційне тестування програмного забезпечення - тестування програмного забезпечення у присутності замовника для демонстрації його відповідності вимогам і готовності до експлуатації; при цьому перевіряється також готовність і повнота технічної і призначеної для користувача документації • інтеграцію системи - збірку всіх компонентів системи, включаючи програмне забезпечення і устаткування; • кваліфікаційне тестування системи - тестування системи на відповідність вимогам до неї і перевірка оформлення і повноти документації; • установку програмного забезпечення - установку програмного забезпечення на устаткуванні замовника і перевірку його працездатності; • приймання програмного забезпечення - оцінку результатів кваліфікаційного тестування програмного забезпечення і системи в цілому і документування результатів оцінки сумісне із замовником, остаточну передачу програмного забезпечення замовникові. Вказані дії можна згрупувати, умовно виділивши наступні основні етапи розробки програмного забезпечення [29] (у дужках вказані відповідні стадії розробки по ГОСТ 19.102-77 «Стадій розробки»): • постановка завдання (стадія «Технічне завдання»); • аналіз вимог і розробка специфікацій (стадія «Ескізний проект»); • проектування (стадія «Технічний проект»); • реалізація (стадія «Робочий проект»). Традиційно розробка також включала етап супроводу (початку цього етапу відповідає стадія «Впровадження» по ГОСТ). Проте за міжнародним стандартом відповідно до змін, подіях в індустрії розробки програмного забезпечення, цей процес тепер розглядається окремо. Умовність виділення етапів пов'язана з тим, що на будь-якому етапі можливе ухвалення рішень, які зажадають перегляду рішень, прийнятих раніше. Постановка завдання. В процесі постановки завдання чітко формулюють призначення програмного забезпечення і визначають основні вимоги до нього. Кожною вимогою є опис необхідної або бажаної властивості програмного забезпечення. Розрізняють функціональні вимоги, що визначають функції, які повинні виконувати програмне забезпечення, що розробляється, і експлуатаційні вимоги, що визначають особливості його функціонування. Вимоги до програмного забезпечення, що має прототипи, зазвичай визначають аналогічно, враховуючи структуру і характеристики вже існуючого програмного забезпечення. Для формулювання вимог до програмного забезпечення, що не має аналогів, іноді необхідно провести спеціальні дослідження, звані передпроектними. В процесі таких досліджень визначають вирішуване завдання, можливо, розробляють методи її рішення (якщо вони нові) і встановлюють найбільш істотні характеристики програмного забезпечення, що розробляється. Для виконання передпроектних досліджень, як правило, укладають договір на виконання науково-дослідних робіт. У будь-якому випадку етап постановки завдання закінчується розробкою технічного завдання, що фіксує принципові вимоги, і ухваленням основних проектних рішень. Аналіз вимог і визначення специфікацій. Специфікаціями називають точний формалізований опис функцій і обмежень програмного забезпечення, яке розробляється. Відповідно розрізняють функціональні і експлуатаційні специфікації. Сукупність специфікацій є загальною логічною моделлю проектованого програмного забезпечення. Для отримання специфікацій виконують аналіз вимог технічного завдання, формулюють змістовну постановку завдання, вибирають математичний апарат формалізації, будують модель наочної області, визначають підзадачі і вибирають або розробляють методи їх рішення. Частина специфікацій може бути визначена в процесі передпроектних досліджень і, відповідно, зафіксована в технічному завданні. На цьому етапі також доцільно сформувати тести для пошуку помилок в проектованому програмному забезпеченні, обов'язково вказавши очікувані результати. Проектування. Основним завданням цього етапу є визначення докладних специфікацій програмного забезпечення, що розробляється. Процес проектування складного програмного забезпечення зазвичай включає: • проектування загальної структури - визначення основних компонентів і їх взаємозв'язків; • декомпозицію компонентів і побудову структурних ієрархій відповідно до рекомендаціями блоково-ієрархічного підходу; • проектування компонентів. Результатом проектування є детальна модель програмного забезпечення, що розробляється, разом із специфікаціями його компонентів всіх рівнів. Тип моделі залежить від вибраного підходу (структурний, об'єктний або компонентний) і конкретної технології проектування. Проте у будь-якому випадку процес проектування охоплює як проектування програм (підпрограм) і визначення взаємозв'язків між ними, так і проектування даних, з якими взаємодіють ці програми або підпрограми. Прийнято розрізняти також два аспекти проектування: • логічне проектування, яке включає ті проектні операції, які безпосередньо не залежать від наявних технічних і програмних засобів, складових середовища функціонування майбутнього програмного продукту; • фізичне проектування - прив'язка до конкретних технічних і програмних засобів середовища функціонування, тобто облік обмежень, визначених в специфікаціях. Реалізація. Реалізація є процесом поетапного написання коду програми на вибраній мові програмування (кодування), їх тестування і відладку. Супровід. Супровід - це процес створення і впровадження нових версій програмного продукту. Причинами випуску нових версій можуть служити: • необхідність виправлення помилок, виявлених в процесі експлуатації попередніх версій; • необхідність вдосконалення попередніх версій, наприклад, поліпшення інтерфейсу, розширення складу виконуваних функцій або підвищення його продуктивності; • зміна середовища функціонування, наприклад, поява нових технічних засобів і/або програмних продуктів, з якими взаємодіє супроводжуване програмне забезпечення. На цьому етапі в програмний продукт вносять необхідні зміни, які так само, як в решті випадків, можуть зажадати перегляду проектних рішень, прийнятих на будь-якому попередньому етапі. Із зміною моделі життєвого циклу програмного забезпечення (див. далі) роль цього етапу істотно зросла, оскільки продукти тепер створюються ітераційно: спочатку випускається порівняно проста версія, потім наступна з великими можливостями, потім наступна і так далі. Саме це і послужило причиною виділення етапу супроводу в окремий процес життєвого циклу відповідно до стандарту 1SO/IEC 12207 [1]. Даний стандарт тільки називає і визначає процеси життєвого циклу програмного забезпечення, не конкретизуючи в деталях, як реалізовувати або виконувати дії і завдання, включені в ці процеси. Ці питання регламентуються відповідними методами, методиками і тому подібне. Перш, ніж перейти до докладного розгляду останніх, проаналізуємо еволюцію схем розробки програмного забезпечення від моменту їх появи до теперішнього часу. Контрольні питання і завдання 1. Що називають життєвим циклом ПЗ? 2. Який міжнародний стандарт регламентує склад процесів життєвого циклу ПЗ? 3. Що таке процес життєвого циклу ПЗ і чим він характеризується? 4. Які дії включає процес розробки ПЗ? 5. Назвіть етапи та стадії розробки ПЗ? 6. Що таке специфікації?
|