
- •Лекція 1. Тема: ядра знань swebok
- •1.1. Аналіз і характеристика областей знань swebok
- •1.1.1 Основи програмних вимог (Software Requirements)
- •1.1.2. Проектування пз (Software design)
- •1.1.3. Конструювання пз (Software Construction)
- •1.1.4 Тестування пз (Software Testing)
- •1.1.5 Супровід пз (Software maintenance)
- •1.1.6. Управління конфігурацією пз (Software Configuration Management– scm)
- •1.1.7. Управління інженерією пз (Software Engineering Management)
- •1.1.8. Процес інженерії пз (Software Engineering Process)
- •1.1.9. Методи і засоби інженерії пз (Software Engineering Tools and Methods)
- •Лекція 2. Тема: життєвий цикл і етапи розробки програмного забезпечення
- •Лекція 3. Тема: еволюція моделей життєвого циклу програмного забезпечення
- •1.6. Прискорення розробки пз.
- •Лекція 4. Тема: оцінка якості процесів створення програмного забезпечення
- •Лекція 5. Тема: визначення вихідних даних для проектування програмного забезпечення
- •5.1 Визначення вимог до пз
- •5.2 Формування і аналіз вимог
- •5.2.1 Опорні точки зору
- •5.2.2 Сценарії
- •5.2.3 Етнографічний метод
- •5.3 Специфікація вимог
- •5.4 Атестація вимог
- •5.5 Класифікація програмних продуктів за функціональною ознакою
- •5.6 Основні експлуатаційні вимоги до програмних продуктів
- •5.7 Передпроектні дослідження предметної області
- •Лекція 6. Тема: розробка технічного завдання
- •2. Підстави для розробки
- •3. Призначення
- •4. Вимоги до програми або програмного виробу
- •5. Вимоги до програмної документації
- •1. Вступ
- •2. Підстава для розробки
- •3. Призначення
- •4. Вимоги до програми або програмного виробу
- •4.1. Вимоги до функціональних характеристик
- •Лекція 7. Тема: принципові рішення початкових етапів проектування
- •Контрольні питання і завдання
- •Аналіз вимог і визначення специфікацій програмного забезпечення при структурному підході
- •Лекція 8. Тема: Специфікації програмного забезпечення при структурному підході
- •Flow-форми
- •Діаграми Насси-Шнейдермана
- •Контрольні питання та завдання:
- •Лекція 9. Тема: діаграми потоків даних
- •Словник даних
- •Вміст словника даних
- •Лекція 10. Тема: діаграми «сутність-зв’язок»
- •Лекція 11. Тема: приклади побудови діаграм та специфікації процесів
- •Лекція 12 Тема: діаграми переходів станів
- •13.1. Структурна схема майбутнього програмного забезпечення
- •13.2 Використання методу покрокової деталізації для проектування структури програмного забезпечення
- •13.3 Структурні карти Константайна
- •13.4.Структурні карти Джексона
- •13.5 Характеристики хорошої моделі реалізації
- •Зчеплення
- •Зв’язаність
- •13.6 Функціональна схема
- •Лекція 14. Тема: методології структурного аналізу і проектування
- •Контрольні питання та завдання
- •Лекція 15. Тема: синтаксис діаграм
- •Контрольні питання та завдання
- •Лекція 16. Тема: Синтаксис діаграм
- •Збір інформації
- •Контрольні питання та завдання:
- •Лекція 17. Тема: побудова sadt-діаграм
- •17.2. Побудова sadt-діаграми для процесу “Побудова таблиць/графіків функцій однієї змінної”
- •Типи зв'язків між функціями
- •Лекція 18. Тема: доповнення до діаграм і моделей
- •Критерії оцінки і вибору
- •Функціональні характеристики
- •3. Загальні функції:
1.1.7. Управління інженерією пз (Software Engineering Management)
Управління інженерією ПЗ (менеджмент) – керівництво роботами команди розробників ПЗ в процесі виконання плану проекту, визначення критеріїв і оцінка процесів і продуктів проекту з використанням загальних методів управління планування і контролю робіт [5].
1.1.8. Процес інженерії пз (Software Engineering Process)
Процес інженерії ПЗ включає концепції, інфраструктуру, методи визначення і вимірювання етапів ЖЦ, пошук помилок і внесення змін, а також аналіз і оцінку якості продукту.
1.1.9. Методи і засоби інженерії пз (Software Engineering Tools and Methods)
Методи і засоби включають середовище розробки, засоби і методи розробки, що використовуються на процесах ЖЦ. Засоби забезпечують специфікацію вимог, конструювання і супровід ПЗ. Методи забезпечують проектування, реалізацію і виконання ПЗ на процесах, а також досягнення якості процесів і продуктів.
1.1.10. Якість ПЗ (Software Quality)
Якість ПЗ – набір характеристик продукту або сервісу, які характеризують його здатність задовольнити встановленим або передбачуваним потребам замовника. Поняття якості має різні інтерпретації залежно від конкретної системи і вимог до програмного продукту [5].
Таким чином, дана область знань SWEBOK представляє методологію проведення заходів щодо досягнення високої якості ПЗ. Розглядаються характеристики і атрибути якості, згідно стандарту ISO 9126-98, і приведені способи їх досягнення на процесах ЖЦ ПЗ. Визначаються види і техніка аналізу ПЗ, прогони системи на тестах і методи оцінки показників якості.
Контрольні питання і завдання
Назвіть області знань SWEBOK інженерії розробки ПЗ.
Приведіть базові поняття SWEBOK.
Визначите цілі і завдання області знань – проектування ПЗ.
З якими стандартами узгоджуються ядра знань SWEBOK.
Який міжнародний стандарт визначає перелік і зміст процесів ЖЦ програмного продукту?
Які розділи ядра знань і стандарту найбільш необхідні при розробці програмних систем.
Лекція 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 представлені процеси життєвого циклу за вказаним стандартом. Кожен процес характеризується визначеними задачами і методами їх рішення, а також початковими даними і результатами.
Процес
розробки (development process) відповідно до
стандарту передбачає дії і завдання,
що виконуються розробником, і охоплює
роботи із створення програмного
забезпечення і його компонентів
відповідно до заданих вимог, включаючи
оформлення проектної і експлуатаційної
документації, а також підготовку
матеріалів, необхідних для перевірки
працездатності і відповідності якості
програмних продуктів, матеріалів,
необхідних для навчання персоналу, і
так далі.
За стандартом процес розробки включає наступні дії:
• підготовчу роботу - вибір моделі життєвого циклу (див. далі), стандартів, методів і засобів розробки, а також складання плану робіт;
• аналіз вимог до системи - визначення її функціональних можливостей, призначених для користувача вимог, вимог до надійності і безпеки, вимог до зовнішніх інтерфейсів і т. д.;
• проектування архітектури системи - визначення складу необхідного устаткування, програмного забезпечення і операцій, що виконуються обслуговуючим персоналом;
• аналіз вимог до програмного забезпечення - визначення функціональних можливостей, включаючи характеристики продуктивності, середовища функціонування компонентів, зовнішніх інтерфейсів, специфікацій надійності і безпеки, ергономічних вимог, вимог до використовуваних даних, установки, приймання, призначеної для користувача документації, експлуатації і супроводу;
• проектування архітектури програмного забезпечення - визначення структури програмного забезпечення, документування інтерфейсів його компонентів, розробку попередньої версії призначеної для користувача документації, а також вимог до тестів і плану інтеграції;
• детальне проектування програмного забезпечення – докладний опис компонентів програмного забезпечення і інтерфейсів між ними, оновлення призначеної для користувача документації, розробка і документування вимог до тестів і плану тестування компонентів програмного забезпечення, оновлення плану інтеграції компонентів;
• кодування і тестування програмного забезпечення – розробку і документування кожного компоненту, а також сукупності тестових процедур і даних для їх тестування, тестування компонентів, оновлення призначеної для користувача документації, оновлення плану інтеграції програмного забезпечення;
• інтеграцію програмного забезпечення - збір програмних компонентів відповідно до плану інтеграції і тестування програмного забезпечення на відповідність кваліфікаційним вимогам, що є набором критеріїв або умов, які необхідно виконати, щоб кваліфікувати програмний продукт, як відповідний своїм специфікаціям і готовий до використання в заданих умовах експлуатації;
• кваліфікаційне тестування програмного забезпечення - тестування програмного забезпечення у присутності замовника для демонстрації його відповідності вимогам і готовності до експлуатації; при цьому перевіряється також готовність і повнота технічної і призначеної для користувача документації
• інтеграцію системи - збірку всіх компонентів системи, включаючи програмне забезпечення і устаткування;
• кваліфікаційне тестування системи - тестування системи на відповідність вимогам до неї і перевірка оформлення і повноти документації;
• установку програмного забезпечення - установку програмного забезпечення на
устаткуванні замовника і перевірку його працездатності;
• приймання програмного забезпечення - оцінку результатів кваліфікаційного тестування програмного забезпечення і системи в цілому і документування результатів оцінки сумісне із замовником, остаточну передачу програмного забезпечення замовникові.
Вказані дії можна згрупувати, умовно виділивши наступні основні етапи розробки програмного забезпечення [29] (у дужках вказані відповідні стадії розробки по ГОСТ 19.102-77 «Стадій розробки»):
• постановка завдання (стадія «Технічне завдання»);
• аналіз вимог і розробка специфікацій (стадія «Ескізний проект»);
• проектування (стадія «Технічний проект»);
• реалізація (стадія «Робочий проект»).
Традиційно розробка також включала етап супроводу (початку цього етапу відповідає стадія «Впровадження» по ГОСТ). Проте за міжнародним стандартом відповідно до змін, подіях в індустрії розробки програмного забезпечення, цей процес тепер розглядається окремо.
Умовність виділення етапів пов'язана з тим, що на будь-якому етапі можливе ухвалення рішень, які зажадають перегляду рішень, прийнятих раніше.
Постановка завдання. В процесі постановки завдання чітко формулюють призначення програмного забезпечення і визначають основні вимоги до нього. Кожною вимогою є опис необхідної або бажаної властивості програмного забезпечення.
Розрізняють функціональні вимоги, що визначають функції, які повинні виконувати програмне забезпечення, що розробляється, і експлуатаційні вимоги, що визначають особливості його функціонування.
Вимоги до програмного забезпечення, що має прототипи, зазвичай визначають аналогічно, враховуючи структуру і характеристики вже існуючого програмного забезпечення. Для формулювання вимог до програмного забезпечення, що не має аналогів, іноді необхідно провести спеціальні дослідження, звані передпроектними. В процесі таких досліджень визначають вирішуване завдання, можливо, розробляють методи її рішення (якщо вони нові) і встановлюють найбільш істотні характеристики програмного забезпечення, що розробляється. Для виконання передпроектних досліджень, як правило, укладають договір на виконання науково-дослідних робіт. У будь-якому випадку етап постановки завдання закінчується розробкою технічного завдання, що фіксує принципові вимоги, і ухваленням основних проектних рішень.
Аналіз вимог і визначення специфікацій. Специфікаціями називають точний формалізований опис функцій і обмежень програмного забезпечення, яке розробляється. Відповідно розрізняють функціональні і експлуатаційні специфікації. Сукупність специфікацій є загальною логічною моделлю проектованого програмного забезпечення.
Для отримання специфікацій виконують аналіз вимог технічного завдання, формулюють змістовну постановку завдання, вибирають математичний апарат формалізації, будують модель наочної області, визначають підзадачі і вибирають або розробляють методи їх рішення. Частина специфікацій може бути визначена в процесі передпроектних досліджень і, відповідно, зафіксована в технічному завданні. На цьому етапі також доцільно сформувати тести для пошуку помилок в проектованому програмному забезпеченні, обов'язково вказавши очікувані результати.
Проектування. Основним завданням цього етапу є визначення докладних специфікацій програмного забезпечення, що розробляється. Процес проектування складного програмного забезпечення зазвичай включає:
• проектування загальної структури - визначення основних компонентів і їх взаємозв'язків;
• декомпозицію компонентів і побудову структурних ієрархій відповідно до рекомендаціями блоково-ієрархічного підходу;
• проектування компонентів.
Результатом проектування є детальна модель програмного забезпечення, що розробляється, разом із специфікаціями його компонентів всіх рівнів. Тип моделі залежить від вибраного підходу (структурний, об'єктний або компонентний) і конкретної технології проектування. Проте у будь-якому випадку процес проектування охоплює як проектування програм (підпрограм) і визначення взаємозв'язків між ними, так і проектування даних, з якими взаємодіють ці програми або підпрограми.
Прийнято розрізняти також два аспекти проектування:
• логічне проектування, яке включає ті проектні операції, які безпосередньо не залежать від наявних технічних і програмних засобів, складових середовища функціонування майбутнього програмного продукту;
• фізичне проектування - прив'язка до конкретних технічних і програмних засобів середовища функціонування, тобто облік обмежень, визначених в специфікаціях.
Реалізація. Реалізація є процесом поетапного написання коду програми на вибраній мові програмування (кодування), їх тестування і відладку.
Супровід. Супровід - це процес створення і впровадження нових версій програмного продукту. Причинами випуску нових версій можуть служити:
• необхідність виправлення помилок, виявлених в процесі експлуатації попередніх версій;
• необхідність вдосконалення попередніх версій, наприклад, поліпшення інтерфейсу, розширення складу виконуваних функцій або підвищення його продуктивності;
• зміна середовища функціонування, наприклад, поява нових технічних засобів і/або програмних продуктів, з якими взаємодіє супроводжуване програмне забезпечення.
На цьому етапі в програмний продукт вносять необхідні зміни, які так само, як в решті випадків, можуть зажадати перегляду проектних рішень, прийнятих на будь-якому попередньому етапі. Із зміною моделі життєвого циклу програмного забезпечення (див. далі) роль цього етапу істотно зросла, оскільки продукти тепер створюються ітераційно: спочатку випускається порівняно проста версія, потім наступна з великими можливостями, потім наступна і так далі. Саме це і послужило причиною виділення етапу супроводу в окремий процес життєвого циклу відповідно до стандарту 1SO/IEC 12207 [1].
Даний стандарт тільки називає і визначає процеси життєвого циклу програмного забезпечення, не конкретизуючи в деталях, як реалізовувати або виконувати дії і завдання, включені в ці процеси. Ці питання регламентуються відповідними методами, методиками і тому подібне. Перш, ніж перейти до докладного розгляду останніх, проаналізуємо еволюцію схем розробки програмного забезпечення від моменту їх появи до теперішнього часу.
Контрольні питання і завдання
Що називають життєвим циклом ПЗ?
Який міжнародний стандарт регламентує склад процесів життєвого циклу ПЗ?
Що таке процес життєвого циклу ПЗ і чим він характеризується?
Які дії включає процес розробки ПЗ?
Назвіть етапи та стадії розробки ПЗ?
Що таке специфікації?