
- •Лекція 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. Тестування продуктивності

Лекція 1. Введення у технологію програмування.
2. Бізнес і IT-проекти. Ринок ПЗ.
Для того, щоб бізнес був успішним, необхідне (але не достатньо) виконання багатьох умов:
•Продукт повинен виходити на ринок o належної якості;
o вчасно;
o цікавим потенційним користувачам.
•Витрати повинні відповідати початковому бюджету.
Рис. 1.1. Статистика успішності IT-проектів. За даними The Standish Group International, Extreme Chaos
На жаль, ситуація така, що багато проектів не задовольняють цим, здавалося б природним, умовам. Розглянемо деяку статистику.
Приведемо розшифровку ступеня успішності проектів:
•Провалені: закінчилися невдачею - мета взагалі не була досягнута.
•Проблемні: закінчилися створенням продукту, але перевищили бюджет або (и) не уклалися в час або (и) мають лише часткову функціональність.
•Успішні: закінчилися створенням продукту, уклалися до бюджету і час. Вся планована функціональність реалізована.
З рис. слідує, що частка успішних проектів неухильно зростає, залишаючись як і раніше сенсаційно малою. І це притому, що в 2004 році на розробку програмних засобів пішло близько
3 700 000 000$.
Дана діаграма говорить про те, що із зростанням розміру проекту (бюджет характеризує в даному випадку розмір і складність завдання) шанси на його успіх катастрофічно падають.
В90-х роках основними проблемами програмної індустрії були якісні характеристики:
•Кваліфіковані програмісти.
•Грамотні аналітики.
•Недостатня кількість хороших управлінців.
•Проблеми з документуванням і локалізацією.
•Проблеми з рекламою і просуванням.
Пройшло 10 років, і ситуація істотно змінилася до кращого. За даними статистики в Росії об'єм експорту програмного забезпечення в 2005 р. перевищив 1 млрд.$ (для порівняння експорт в
6

Лекція 1. Введення у технологію програмування.
автомобільній галузі склав 380 млн.$, у атомній енергетиці - 850 млн.$). Об'єм IT-ринку в 2004 р. склав 9,2 млрд.$, у 2005 р. зростання склало 22,1% (тоді як мирі всього порядка 6%)! Звичайно, частка нашого ринку в об'ємах світового IT-ринку як і раніше невелика (об'єм IT-ринку в світі в 2005 р. склав 900млрд.$), але тенденція виглядає обнадійливо. При цьому об'єм ринку розробки програмного забезпечення в Росії в 2005г. склав 1,4млрд.$ ( від всього IT-ринку). В середньому цей показник в Росії росте на 40-50% в рік.
В процентному відношенні Україна має аналогічні показники. Розглянемо ще один цікавий
графік:
Рис. 1.2. Частка успішних проектів залежно від їх бюджету.
Таким чином, основні тенденції на сьогоднішній день представляються наступними:
•Швидке зростання об'ємів IT-ринку та ринку ПЗ.
•Зміцнення позицій вітчизняних компаній.
•Як і раніше мала частка в світових об'ємах.
Для того, щоб підвищити об'єми ринку, необхідно підвищити показник успішності проектів, для чого галузь потребує не тільки нових технологій, але і в грамотних фахівцях, здатних ці технології застосовувати.
3. Про предмет
Завдання даного предмету:
•Вивчити причини невдач IT-проектов.
•Виявити способи усунення цих причин.
•Навчитися застосовувати ці способи на практиці.
4.Причини невдач IT-проектів
•Чому IT-проекти терплять невдачі?
•Чому, здавалося б, добре спланований проект не укладається в часові рамки?
•Чому після деякого часу з'ясовується, що наявного бюджету недостатньо?
•Чому отриманий у результаті продукт не має попиту?
Проблема складна і багатогранна. Важко перерахувати всі можливі причини невдачі. Зупинимося стисло на деяких з них, що представляються нам найбільш істотними.
7