
- •Лекція 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. Загальні функції:
Зміст
ВСТУП |
……..…………………………………………….. |
4 |
ЛЕКЦІЯ 1 |
ЯДРА ЗНАНЬ SWEBOK……………………….. |
6 |
ЛЕКЦІЯ 2. |
ЖИТТЄВИЙ ЦИКЛ І ЕТАПИ РОЗРОБКИ ПЗ.. |
17 |
ЛЕКЦІЯ 3. |
ЕВОЛЮЦІЯ МОДЕЛЕЙ ЖИТТЄВОГО ЦИКЛУ ПЗ…………………………………………………. |
25 |
ЛЕКЦІЯ 4. |
ОЦІНКА ЯКОСТІ ПРОЦЕСІВ СТВОРЕННЯ ПЗ |
37 |
ЛЕКЦІЯ 5. |
ВИЗНАЧЕННЯ ВИХІДНИХ ДАНИХ ДЛЯ ПРОЕКТУВАННЯ ПЗ………………………….. |
43 |
ЛЕКЦІЯ 6. |
РОЗРОБКА ТЕХНІЧНОГО ЗАВДАННЯ……… |
67 |
ЛЕКЦІЯ 7. |
ПРИНЦИПОВІ РІШЕННЯ ПОЧАТКОВИХ ЕТАПІВ ПРОЕКТУВАННЯ……………………. |
78 |
ЛЕКЦІЯ 8. |
АНАЛІЗ ВИМОГ І ВИЗНАЧЕННЯ СПЕЦИФІКАЦІЙ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ПРИ СТРУКТУРНОМУ ПІДХОДІ………………………………………….. |
89 |
ЛЕКЦІЯ 9. |
ДІАГРАМИ ПОТОКІВ ДАНИХ………………… |
107 |
ЛЕКЦІЯ 10. |
ДІАГРАМИ «СУТНІСТЬ-ЗВ’ЯЗОК»…………… |
127 |
ЛЕКЦІЯ 11. |
ПРИКЛАДИ ПОБУДОВИ ДІАГРАМ ТА СПЕЦИФІКАЦІЇ ПРОЦЕСІВ……………………. |
138 |
ЛЕКЦІЯ 12. |
ДІАГРАМИ ПЕРЕХОДІВ СТАНІВ……………….. |
147 |
ЛЕКЦІЯ 13. |
ПРОЕКТУВАННЯ ПЗ ПРИ СТРУКТУРНОМУ ПІДХОДІ…………….. |
152 |
ЛЕКЦІЯ 14. |
МЕТОДОЛОГІЇ СТРУКТУРНОГО АНАЛІЗУ І ПРОЕКТУВАННЯ………………………………. |
180 |
ЛЕКЦІЯ 15-16. |
СИНТАКСИС ДІАГРАМ………………………. |
192 |
ЛЕКЦІЯ 17. |
ПОБУДОВА SADT-ДІАГРАМ………………… |
211 |
ЛЕКЦІЯ 18. |
ДОПОВНЕННЯ ДО ДІАГРАМ І МОДЕЛЕЙ… |
221 |
|
Перелік використаних джерел ………………… |
237 |
ВСТУП
Метою дисципліни «Архітектура та проектування програмного забезпечення» є навчити студента володіти сучасними методами і засобами проектування програмного забезпечення, які базуються на міжнародних стандартах і використанні CASE-технології, а також формування навичок їх самостійного практичного застосування. Для цього необхідно:
дати студентам уявлення про кожен етап життєвого циклу програми від проектування, до впровадження та супроводу;
врахувати офіційно затверджені і визнані де-факто міжнародні та вітчизняні стандарти в галузі програмної інженерії і перш за все стандарт ISO 12207, на якому базуються майже всі сучасні промислові технології створення ПЗ;
розглянути особливості проектування програмного забезпечення при структурному підході;
розглянути методології структурного аналізу та проектування;
розглянути сучасний стан розвитку CASE-засобів і промислових технологій проектування ПЗ.
Дана дисципліна сприяє фундаменталізації освіти, формуванню наукового світогляду і розвитку системного мислення. Знання та практичні навички, отримані в курсі, використовуються для подальшої дипломної роботи бакалавра.
В результаті вивчення дисципліни студенти повинні знати:
технології розробки ПЗ;
структуру та архітектуру ПЗ;
стратегії та методи проектування ПЗ;
нотації та засоби підтримки проектування.
вміти:
вибирати потрібну для розробки модель життєвого циклу;
вибирати потрібну технологію для проектування програмного забезпечення;
проектувати архітектуру ПЗ з використанням методології структурного аналізу та проектування;
використовувати потрібні знання при виконанні проектів і випускних кваліфікаційних робіт, а також в ході наукових досліджень.
мати:
навички проектування, оцінки якості і аналізу ефективності програмного забезпечення;
навички роботи з CASE-засобом Bpwim4.1.
Для освоєння дисципліни будуть задіяні такі види навчальних занять: лекції, лабораторні заняття, самостійна та індивідуальна робота. Контроль і оцінювання знань буде здійснюватись як протягом семестру – шляхом поточного тестування, приймання лабораторних робіт, так і за його підсумками у вигляді екзамену.
Лекція 1. Тема: ядра знань swebok
Протягом всього часу навчання на кафедрі ми вивчаємо програмування. Програмування (Computer science) – молода область, що активно розвивається.
Довгий час людство хвилює питання про те, до якого роду діяльності відноситься програмування. У 60-х – 70-х роках XX століття дане питання активно обговорювалося на наукових конференціях. Існувало дві популярні точки зору: «програмування це мистецтво» і «програмування це наука». До єдиної думки прийти так і не вдалося. Зараз ми можемо додати до цих популярних трактувань ще одне: «програмування це бізнес». Щоб це зрозуміти, достатньо подивитися на дохід сучасних IT-компаній.
IT-проекти – проекти в області інформаційних технологій. Далі розглядатимемо лише ті IT-проекти, метою яких є розробка програмного забезпечення.
Задамося наступними питаннями:
• Що таке програмне забезпечення (ПЗ)?
•Чим ПЗ відрізняється від звичайної програми?
•«Калькулятор» – це програма. Чи є вона ПЗ?
Програмне забезпечення (Software) – набір комп'ютерних програм, процедур і пов'язаної з ними документації та даних (ISO/IEC 12207) [1].
Таким чином, програмне забезпечення – це не просто програма. Це ще і документація і настанова користувача [2].
Замість словосполучення «програмне забезпечення» часто використовують інше – «програмний продукт». Далі вважатимемо, що це одне і те ж. Одна з головних властивостей програмного продукту – його можна продати. Можливість продажу програмного продукту – запорука успіху бізнесу з розробки програмного забезпечення. Якщо ви збираєтеся щось розробити, це повинно мати потребу на ринку. Інакше ви витратите гроші на розробку (зарплату співробітників, накладні витрати, податки, оренду приміщення...) і нічого не отримаєте взамін. Ви можете написати чудову програму. Реалізувати там новий швидкий алгоритм. Вона може прекрасно працювати, але якщо вона нікому не потрібна, то ви (як компанія) на шляху банкрутства. Нехай, в таких програмах, як ваша, дійсно є потреба. Нехай, ви рік наполегливо працювали, і ось, здавалося б, настала ваша зоряна година: все готово, всі модулі написані, відлагоджені, зібрані разом і, як вам здається, працюють. Один «маленький» момент псує всю картину – якщо у вас немає хорошої (!) настанови користувача (інструкції), бажано, в російськомовному і англомовному варіантах, то вашу програму ніхто не купить, особливо за кордоном. Якщо у вас все є, але немає фахівців з реклами, то про вашу програму ніхто не дізнається. Якщо ..., і таких якщо дуже багато.
Підсумуємо: програмний продукт – це програма зі всією супутньою документацією, програма, яку можна продати, або витягувати з нею фінансову вигоду іншим чином.
Для того, щоб бізнес був успішним, необхідне (але не достатньо) виконання багатьох умов:
•Продукт повинен виходити на ринок:
- належної якості;
- вчасно;
- цікавим потенційним користувачам.
•Витрати повинні відповідати початковому бюджету.
На жаль, ситуація така, що багато проектів не задовольняють цим, здавалося б природнім умовам. Більшість проектів закінчилися невдачею – мета взагалі не була досягнута, інші закінчилися створенням продукту, але перевищили бюджет або (і) не уклалися в час або (і) мають лише часткову функціональність, і лише частина – це успішні: закінчилися створенням продукту, вклалися до бюджету і в час. Вся планована функціональність реалізована.
Для того, щоб підвищити об'єми ринку, необхідно підвищити показник успішності проектів, для чого галузь потребує не тільки нових технологій, але і в грамотних фахівцях, здатних ці технології застосовувати.
У зв'язку з цим світова комп'ютерна спільнота прийшла до необхідності систематизації накопичених знань і загальні з них зафіксувати у вигляді ядер знань (Body of Knowledge – BOK) для різних областей інформатики [4]. Для створення ядра знань ПЗ був створений міжнародний комітет при американському об'єднанні комп'ютерних фахівців ACM (Association for Computing Machinery) і інституті інженерів по електроніці і електротехніці IEEE Computer Society. До комітету увійшли фахівці світового рівня в області інформатики і розробки ПЗ, які внесли свій досвід і знання, а також систематизували накопичені різнорідні знання і визначили (1999г., 2001г., 2004г.) ядро професійних знань SWEBOK (Software Engineering Body Knowledge) програмної інженерії [5], як основи проектування ПЗ. Ядро включає суму знань, розподілену по 10 спеціалізованим областям, які відображають окремі процеси проектування ЖЦ ПЗ і методи їх підтримки.