
- •Лекція 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.2.Створення ПЗ повинно вкладатися до бюджету
Якщо ви не укладаєтеся до бюджету, вам доведеться просити додаткові гроші на розробку. Іноді вам підуть на зустріч, іноді ні. У будь-якому випадку, ваша репутація постраждає. Подивимося,
зчого найчастіше складаються витрати на створення ПЗ:
•60% - розробка;
•40% - тестування.
Думаючи про те, скільки грошей витратити розробку, не забувайте, що подальші етапи віднімуть не менше засобів.
Витрати на розвиток іноді можуть перевищити витрати на створення, втім, багато що тут залежить від того, як ви виконали проектування. Деталі залежать від специфіки наочної області, вимог до ПЗ, використовуваних підходів до організації розробки.
2.3.Створення ПЗ повинно вкладатися в терміни
Запорука успіху - строге дотримання наступних принципів:
•Грамотне планування.
•Аналіз можливих рисок і способи реагування.
•Боротьба за чіткі межі проекту.
•Мотивування співробітників.
3. Забезпечення надійності розробки ПЗ
Розглянемо тепер загальні принципи забезпечення надійності ПЗ, що, як ми вже підкреслювали, є основним мотивом розробки ПЗ, задаючим специфічне забарвлення всім технологічним процесам розробки ПЗ. У техніці відомо чотири підходи забезпеченню надійності:
o попередження помилок; o автовизначення помилок; o автовиправлення помилок; o стійкість до помилок.
Метою підходу попередження помилок - не допустити помилок в готових продуктах, в нашому випадку - в ПЗ. Проведений розгляд природи помилок при розробці ПЗ дозволяє для досягнення цієї мети сконцентрувати увагу на наступних питаннях:
o боротьба зi складністю
o забезпеченняі точності інтерпретації
o подолання бар'єру між користувачем і розробником o забезпечення контролю ухвалюваних рішень.
Цей підхід пов'язаний з організацією процесів розробки ПЗ, тобто з технологією програмування. І хоча, як ми вже відзначали, гарантувати відсутність помилок в ПЗ неможливо, але в рамках цього підходу можна досягти прийнятного рівня надійності ПЗ.
Решта трьох підходу пов'язана з організацією самих продуктів технології, в нашому випадку - програм. Вони враховують можливість помилки в програмах. Самообнаруженіє помилки в програмі означає, що програма містить засоби виявлення відмови в процесі її виконання. Самоісправленіє помилки в програмі означає не тільки виявлення відмови в процесі її виконання, але і виправлення наслідків цієї відмови, для чого в програмі повинні бути відповідні засоби. Забезпечення стійкості програми до помилок означає, що в програмі містяться засоби, що дозволяють локалізувати область впливу відмови програми, або зменшити його неприємні наслідки, а іноді запобігти катастрофічним наслідкам відмови. Проте, ці підходи використовуються вельми рідко (можливо, відносно частіше використовується забезпечення стійкості до помилок). Зв'язано це, по-перше, з тим, що багато простих методів, використовуваних в техніці в рамках цих підходів, непридатні в програмуванні,
16
Лекція 2. Елементи програмної інженерії.
наприклад, дублювання окремих блоків і пристроїв (виконання двох копій однієї і тієї ж програми завжди приводитиме до однакового ефекту - правильному або неправильному). А, по-друге, додавання в програму додаткових засобів приводить до її ускладнення (іноді - значному), що в якійсь мірі заважає методам попередження помилок.
3.1.Забезпечення точності інтерпретації
Забезпечення точності перекладу направлене на досягнення однозначності інтерпретації документів різними розробниками, а також користувачами ПЗ. Це вимагає дотримуватися при перекладі певної дисципліни. Майерс пропонує використовувати загальну дисципліну вирішення завдань, розглядаючи переклад як рішення задачі. Відповідно до цього весь процес перекладу можна розбити на наступні етапи:
1.Зрозуміти завдання;
2.Скласти план (включаючи цілі і методи рішення);
3.Виконати план (перевіряючи правильність кожного кроку);
4.Проаналізувати отримане рішення.
3.2.Подолання бар'єру між користувачем і розробником
Як забезпечити, щоб ПЗ виконувала те, що користувачеві розумно чекати від неї? Для цього необхідно правильно зрозуміти, по-перше, чого хоче користувач, і, по-друге, його рівень підготовки і навколишнє його оточення. Тому слідує - привертати користувача в процеси ухвалення рішень при розробці ПЗ, - ретельно освоїти особливості його роботи (краще всього - побувати в його "шкурі").
3.3.Контроль ухвалюваних рішень
Обов'язковим кроком в кожному процесі (етапі) розробки ПЗ повинна бути перевірка правильності ухвалених рішень. Це дозволить виявляти і виправляти помилки на найранішій стадії після її виникнення, що, по-перше, істотно знижує вартість її виправлення і, по-друге, підвищує вірогідність правильного її усунення.
З урахуванням специфіки розробки ПЗ необхідно застосовувати скрізь, де це можливо o суміжний контроль
o поєднання як статичних, так і динамічних методів контролю.
Суміжний контроль означає, перевірку отриманого документа особами, що не беруть участь в його розробці, з двох сторін: по-перше, з боку автора початкового для контрольованого процесу документа, і, по-друге, особами, які використовуватимуть отриманий документ як початкового в подальших технологічних процесах. Такий контроль дозволяє забезпечувати однозначність інтерпретації отриманого документа.
Поєднання статичних і динамічних методів контролю означає, що потрібно не тільки контролювати документ як такий, але і перевіряти, який процес обробки даних він описує. Це відображає одну із специфічних особливість ПЗ (статична форма, динамічний зміст).
3.4.Програмні інженери і наукове середовище
Взаємодія з науковим середовищем - один із способів підвищення ефективності діяльності. Можлива вигода від співпраці з ученими:
o Нові технології.
o Нові методи, алгоритми.
o Аналіз нових перспективних розробок.
o Дослідницька робота в суміжних областях.
Допомога учених життєво необхідна в принаймні в двох ситуаціях: o • Там, де в принципі не вирішити задачу своїми силами.
o • Там, де є фахівці, але немає часу і ресурсів для досліджень.
Цей підхід широко застосовується сучасними IT-компаниями: Intel, Microsoft, IBM та ін.
17