- •Лекція 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. Тестування продуктивності
Лекція 2. Елементи програмної інженерії.
Лекція 2. Елементи програмної інженерії
Приведено основні поняття програмної інженерії, показана роль програмної інженерії в сучасній системі розробки ПЗ. Розкриті цілі роботи програмних інженерів. Вводиться загальне поняття процесу створення програмного продукту, поняття моделей процесу створення програмного продукту
1.Програмна інженерія, основні поняття
1.1.Інженери і програмні інженери
Кажучи про програмну інженерію, необхідно з'ясувати, хто такі інженери.
За відповіддю звернемося до Великої Радянської Енциклопедії: Інженер (франц. ingenieur, від латів. ingenium - здатність, винахідливість), фахівець з вищою технічною освітою. Спочатку - назва осіб, що управляли військовими машинами.
Поняття цивільний інженер з'явилося в 16 в. у Голландії стосовно будівельників мостів і доріг, потім в Англії і ін. країнах. З ІХХ ст. за кордоном почали розрізняти інженерів-практиків, або професійних інженерів (по суті фахівців, що мали кваліфікацію техніка), і дипломованих інженерів, що здобули вищу технічну освіту (Civil Engineer) .
Отже, інженер - дипломований фахівець, що має вищу технічну освіту. А програмний інженер
– це інженер в області розробки програмного забезпечення.
1.2.Програмна інженерія як інженерна дисципліна
Програмна інженерія (інженерія програмного забезпечення, software engineering) - інженерна дисципліна, пов'язана з теорією, методами і засобами професійної розробки ПЗ.
Як було з'ясовано раніше, програмне забезпечення є власне програмами плюс вся супутня документація. Впродовж останніх десятиліть вартість розробки ПЗ неухильно ростає і стає дуже високою. Програмна інженерія сприяє вирішенню цієї проблеми.
1.3.Область дії програмної інженерії
Програмна інженерія має справу зі всіма аспектами створення ПЗ. У західній літературі часто використовуються терміни: software engineering, system engineering і computer science. У чому різниця?
Computer science має справу з теорією і основами розробки ПЗ.
System engineering пов'язане з питаннями розробки систем за участю комп'ютерів (архітектура, дизайн, інтеграція, ПЗ...).
Software engineering - частина System engineering, що має справу з розробкою ПЗ.
Отже, computer science надає собою безумовно важливий, але переважно теоретичний базис. На практиці його недостатньо. До відкритих можна віднести наступні проблеми:
1.Пошук фінансування.
2.Робота із замовником.
3.Підбір персоналу.
4.Етичні питання. Мікроклімат в колективі. Команда.
5.Забезпечення якості програмного продукту.
6. ...
Всім цим займається програмна інженерія і програмні інженери.
2. Цілі програмних інженерів
Цілями програмних інженерів є: 1. Створити якісний продукт.
14
Лекція 2. Елементи програмної інженерії.
2.Вкластися до бюджету.
3.Вкластися в терміни.
Розберемо по черзі ці питання.
2.1.Поняття “якості” програмного продукту
Кожний ПЗ повинен виконувати певні функції, тобто робити те, що задумано. Хороший ПЗ повинен володіти ще цілим рядом властивостей, що дозволяють успішно його використовувати протягом тривалого періоду – тобто володіти певною якістю.
Якість ПЗ - це сукупність його рис і характеристик, які впливають на його здатність задовольняти задані потреби користувачів.
Це не означає, що різні ПЗ повинні володіти однією і тією ж сукупністю таких властивостей в їх вищому можливому ступені. Цьому перешкоджає той факт, що підвищення якості ПЗ по одному з таких властивостей часто може бути досягнуто лише ціною зміни вартості, термінів завершення розробки і зниження якості цього ПЗ по інших його властивостях.
Якість ПЗ є задовільною, коли воно володіє вказаними властивостями в такому ступені, щоб гарантувати успішне його використання.
Сукупність властивостей ПЗ, яка утворює задовільну для користувача якість ПЗ, залежить від умов і характеру експлуатації цього ПЗ, тобто від позиції, з якою повинна розглядатися якість цього ПЗ. Тому, при описі якості ПЗ повинні бути перш за все фіксовані кри терії відбору необхідних властивостей ПЗ. В даний час критеріями якості ПЗ прийнято вважати:
1.функціональність
2.надійність
3.легкість застосування
4.ефективність
5.легкість супроводу
6.мобільність.
• ПП повинен надавати необхідну функціональність.
Якщо ви створили продукт, який не потрібний кінцевим користувачам, ви не зможете його продати і не тільки не отримаєте прибуток, але і не окупите витрати на його створення.
• ПП повинен бути надійним.
Можливі неполадки в роботі не повинні нанести істотний, тим більше непоправний, збиток. Якщо ваша програма розраховує орбіту польоту супутника, вам доведеться витратити силу-силенну часу на те, щоб переконатися, що вона працює правильно.
• ПП повинен бути зручним у використанні.
ПО повинно прийматися користувачами "на ура", робота повинна бути зручною і природною. Пам'ятаєте, що персонал, якому належить працювати з програмою, швидше за все не прийде в захват від її появи. Постарайтеся зробити процес навчання якомога простішим.
• ПП повинен бути ефективним.
ПО повинно ефективно використовувати наявні ресурси. Навряд чи клієнт погодиться повністю поміняти свою апаратну базу без належного обгрунтування. Ось у цей момент і доведеться задуматися про алгоритмічну оптимізацію, оптимізацію коди.
• ПП повинен бути зручним в супроводі.
ПО повинен допускати розвиток у зв'язку із зміною потреб користувачів. Якщо Ви починаєте розробляти програмний продукт, обов'язково враховуйте, що мир не коштує на місці. Допустимо, ви автоматизуєте крупне підприємство, орієнтуючись на його конкретну структуру. Подумайте над таким питанням: які зміни і як ви вноситимете до програмної системи в тому випадку, якщо на підприємстві додасться пара нових підрозділів? Ваш проект повинен бути достатньо гнучким, щоб підтримувати його розширення без збитку для реалізованої раніше частини. Зрозумійте, що клієнт буде готовий сплатити модифікацію, але не створення програми з нуля.
• ПП повинен бути мобільним.
Мобільність - це здатність ПЗ бути перенесеним з одного середовища (оточення) в інше, зокрема, з однієї ЕОМ на іншу.
15
