Transcript Document

Вступ до програмної інженерії
Модуль 1 Програмна інженерія: Призначення основні
принципи та поняття
Лекції 2-5 Загальний обсяг 8 год.
_____________________________________________________
Питання
 Передумови
виникнення та історія
 Програмна
інженерія: Основні поняття
 Професійні
та етичні вимоги до фахівців в ПІ
№ 2 из NN
Передумови виникнення та історія
 Перша
криза в програмуванні
 Дублювання програмного
– Модульне програмування
коду
 Зростання складності програм
– Структурне програмування
 Модифікація
програм
– Об’єктно-орієнтоване програмування
 Продовження
кризи в програмуванні
№ 3 из NN
Дублювання програмного коду
 Проблема
зростання вартості
– Використання однакових фрагментів коду в
різних програмах
 Модульне програмування
– Виділення фрагментів в модулі
– Повторне використання модулів
– Створення бібліотек модулів
№ 4 из NN
Зростання складності програм

Проблеми зростання вартості
– Необхідність розробки складних програмних комплексів:
великі об'єми коду; кількість зв'язків; кількість розробників;
кількість користувачів
– Поява життєвих циклів з високою вартістю впровадження
та супроводу.

Структурне програмування
– «Правильне» проектування та кодування за принципами:
• Функціональне програмування на основі декомпозиції
• Застосування спеціальних мов проектування
• Висока дисципліна проектування та розробки:
– Планування та документування проекту
– Забезпечення відповідності коду проектній документації, включаючи
процес внесення змін.
• Структурне кодування (лінійні блоки, If-then-else, цикли)
№ 5 из NN
Модифікація програм

Проблема зростання вартості
(проблема замовника, який не
знає чого він хоче)
– зміни в проекті і в програмі без
зміни попередньо
сформованого коду

Об’єктно-орієнтоване
програмування
– Клас – модуль зі своїми
властивостями, поведінкою,
обов'язками
– Парадигми ООП:
• Інкапсуляція
• Унаслідування
• Поліморфізм
Зарплата
Відділ 1
Відділ 2
Відділ 3
Зарплата
Зарплата 1
Відділ 1
Відділ 2
Відділ 3
№ 6 из NN
Продовження кризи в програмуванні
 Криза
програмування полягає в суттєвому
знижені ефекту від виконання проектів
Данні по проектах США
Невдалі
2000
1998
23%
28%
1995
1994
Успішні
49%
28%
46%
40%
31%
Проблемні
26%
33%
53%
27%
16%
№ 7 из NN
Підсумки
 Головна
мета програмної інженерії – зниження
вартості ПЗ
 Сформувалися
основні принципи та методи
проектування ПЗ:
– Життєвий цикл ПЗ
– Модульне програмування
– Структурне проектування та програмування
– Об’єктно-орієнтоване проектування та
програмування
№ 8 из NN
Питання
 Передумови
виникнення та історія
 Програмна
інженерія: Основні поняття
 Професійні
та етичні вимоги до фахівців в ПІ
№ 9 из NN
Визначення програмної інженерії

Вперше термін появився в жовтні 1968р. на конференції
підкомітету НАТО (Німеччина)

Програмна інженерія – це
– встановлення та використання обґрунтованих інженерних принципів та
методів для економного отримання надійного ПЗ, яке функціонує на
реальних машинах [Bauer 1972].
– форма інженерії, яка застосовує принципи комп'ютерних наук та
математики для рентабельного розв'язку проблем ПЗ. [CMU/SEI-90-TR003]
– застосування систематичного дисциплінованого, вимірного підходу до
розробки, використання та супроводу ПЗ [IEEE 1990].
– дисципліна, метою якої є створення високоякісного ПЗ, створення
якого закінчується вчасно без перевищення бюджетних коштів і
задовольняє висунутим вимогам [Schach, 99].
№ 10 из NN
Основні питання
 Що
таке програмне забезпечення (software)?
 Що
означає «програмна інженерія»?
 Чим
програмна інженерія відрізняється від
комп'ютерних наук?
 Чим
програмна інженерія відрізняється від
інших інженерій?
 Які
складові вартості ПЗ?
№ 11 из NN
Програмне забезпечення?

ПЗ - комп'ютерні програми і пов'язана із ними
документація та данні (ISO/IEC 12207)

Програмні продукти можуть розроблятися для
конкретного замовника та для узагальненого ринку
ПЗ

Програмні продукти можуть бути
– “Коробковими” (generic products, shrink-wrapped
software), тобто для продажу багатьом замовникам
– На замовлення (bespoke, custom), тобто розробленими
для одного покупця за його специфікаціями
№ 12 из NN
Програмна інженерія?

Інженерна дисципліна, яка пов'язана зі всіма аспектами
виробництва ПЗ від початкових стадій створення
специфікації до підтримки системи після введення в
експлуатацію (Соммервіл)

Інженерна дисципліна
– Орієнтується на практичний результат
– Застосування теорій, методів та способів для досягнення
результату
– Враховує найкращий практичний досвід (best practices)
– Враховує обмежений ресурс часу, бюджету, обладнання, людський
ресурс.

Усі аспекти виробництва ПЗ
– Управління програмними проектами
– Розробка засобів, методів та теорій.
№ 13 из NN
Чим програмна інженерія відрізняється від
комп'ютерних наук?
 Комп'ютерні
науки вивчають теорію та методи
обчислювальних та програмних систем
 Програмна
інженерія вивчає практичні
проблеми створення ПЗ
 Комп'ютерні
науки є теоретичним
фундаментом програмної інженерії
– Не завжди достатнім
– Не єдиним (фінанси, управління проектами,
робота із замовником, тощо)
№ 14 из NN
Чим програмна інженерія відрізняється від інших
інженерій?

Питання:
– Чому така велика доля невдалих проектів?
– Чи можна застосовувати досвід інших інженерій?

Етапи життєвого циклу продукту інженерії:
– Проектування, створення зразку, випробовування,
виробництво, експлуатація

Програма – не матеріальний об’єкт:
– Етапи виробництва та виготовлення зразка відсутні
– Вартість програми – це вартість проектування
– В «коробкових» продуктів вартість розподіляється по
копіях
– У замовних продуктів вартість залишається високою.
№ 15 из NN
Інші відмінності від інженерій
 Програма
– штучний об'єкт
– Відсутні об'єктивні закони контролю проекту
– Тестування – єдиний спосіб перевірки
 Програмна
інженерія – молода дисципліна
 Детально
– Коні Бюрер «Від ремесла до науки: пошук
основних принципів розробки ПЗ»
№ 16 из NN
Які складові вартості ПЗ?

Залежно від типу ПЗ, методології розробки та методу
оцінки

Типовий розподіл:
–
–
–
–

15% - специфікація
25% - проектування
20% - розробка
40% - інтеграція та тестування
«Коробкове» ПЗ
– Зростання частки тестування за рахунок специфікації

Замовне ПЗ
– Зростання частки тестування за рахунок проектування та
розробки
№ 17 из NN
Наступні питання
 Що
таке програмний процес?
 Що
таке модель програмного процесу?
 Що
таке методи програмної інженерії?
 Що
таке CASE (Computer-Aided Software
Engineering)?
 Які
властивості «хорошої» програми?
 Які
труднощі програмної інженерії?
№ 18 из NN
Програмний процес?

Життєвий цикл програмного процесу неперервний
процес з моменту прийняття рішення про створення
ПЗ до вилучення його з експлуатації.

Процес – сукупність дій та задач націлених на
досягнення значущого результату.

Основні процеси та етапи ЖЦ:
–
–
–
–
–
–
Специфікація вимог
Розробка проекту програми
Кодування
Тестування
Документування
Супровід
№ 19 из NN
Програмний процес?
 Додаткові
(не функціональні) процеси:
– Створення інфраструктури, керування
конфігурацією, керування якістю, навчання,
усунення протиріч, тощо.
 Встановлення
процесу:
– Опис процесу
– Навчання процесу
– Введення метрик
– Контроль виконання
– Удосконалення
№ 20 из NN
Модель програмного процесу?

Модель програмного процесу — це спрощений опис
програмного процесу, представлений з деякої точки
зору.

Моделі життєвого циклу:
–
–
–
–
–

Водоспадна (каскадна) модель
Спіральна (циклічна) модель
Компонентна модель
Формальна модель
Комбіновані моделі
Моделі організації робіт:
– Модель потоку робіт (workflow model)
– Модель потоків даних (data flow model)
– Рольова модель
№ 21 из NN
Методи програмної інженерії?
 Метод
програмної інженерії — це структурний
підхід до створення ПЗ:
– Як високоякісного продукту
– Економічно ефективним способом.
 Найбільш
відомі методи:
– Структурного аналізу та проектування Том Де
Марко (1978),
– Сутність - зв'язок проектування КІС Чен (1976)
– Об'єктно - орієнтованого аналізу та
проектування Буч (1994), Рамбо (1991).
№ 22 из NN
Методи програмної інженерії?

Мета - створення та поетапне перетворення моделей
ПЗ (приклади моделей)

Методи повинні включати такі компоненти:
–
–
–
–
–
Опис моделей системи та нотації
Правила та обмеження
Рекомендації
Керівництво для застосування методу
Не існує ідеальних методів, не існує абсолютних
методів
№ 23 из NN
Що таке CASE?
 Визначення

Классифікація засобів CASE:
– За рівнем застосування:
• Upper CASE –засоби аналізу вимог
• Middle CASE – засоби проектування
• Low CASE - засоби разробки доповнень
– Спеціалізовані
• Засоби проектування БД
• Засоби реінжинирінгу
– Допоміжні
• Планування та управління проектом
• Конфігураційного управління
• Тестування

Інтегровані CASE

Головне правило: спочатку метод – потім CASE
№ 28 из NN
Визначення CASE

Використання компютерів для підтримки процесу
створення програм. Може включати
інструментальні програмні засоби для
проектування ПЗ, формування вимог, кодування,
тестування, документування та інших дій по
створенню ПЗ.

Еволюція CASE
–
–
–
–
–
–
–
Ассемблери, компілятори, інтерпретатори
Трасувальники, символічні відлагожувачі
Текстові редактори, системи анализу вихідних текстів
Засоби для аналізу вимог та проектування
Засоби візуального програмування
Засоби генерування вихідних кодів
Засоби підтримки повного життєвого циклу ПЗ
№ 29 из NN
Властивості «хорошої» програми?

Задовільняє функціональним вимогам

Нефункціональні вимоги:
– Супровідність (maintainability)
• Можливість подальшого розвитку.
– Надійність (dependability)
• Відмовостійкість, безпека, захищеність.
– Ефективність (efficiency)
• Пам’ять, процесорний час, канали зв’язку.
– Зручність у користуванні (usability)
• Зрозумілість користувачу
№ 30 из NN
Основні труднощі?

Головна проблема: пошук універсального методу та
процесу придатних для створення ПЗ будь якого типу
та за змінних умов.

Головні труднощі:
– Унаслідковування раніше створеного ПЗ (legacy
systems).
• Супровід – підтримка та розвиток старого ПЗ.
– Різнорідність програмних систем.
• Разподілені мережі, різнорідне обладнання, різні середовища,
різні ОС
– Скорочення часу на розробку.
• Скоротити час розробки ПЗ без зниження його якості.

Труднощі часто взаємопов’язані між собою
№ 31 из NN
Питання
 Передумови
виникнення та історія
 Програмна
інженерія: Основні поняття
 Професійні
та етичні вимоги до фахівців в ПІ
№ 32 из NN
Професійні та етичні вимоги
 Розвиток
IT індустрії все більше впливає на
суспільство
– Internet, телекомунікації, IP телефонія, комп’ютерні
ігри …
 IT
специалісти працюють в правовому та
соціальному оточені, під дією міжнародних,
національних та місцевих законодавств.
№ 33 из NN
Професійні та етичні вимоги

Більш жорсткі професійні обов’язки:
– Конфіденційність
• Нерозголошення відомостей про своїх працедавців чи замовників
не залежно чи підписувалася ними відповідна угода.
– Компетентність
• не повинен завищувати свій рівень компетентності та братися за
роботу, яка не відповідає його рівню
– Захист інтелектуальної власності
• Дотримуватися законодавства при використанні чужої
інтелектуальної власності
• захищати інтеллектуальну власність працедавця та клієнта
– Зловживання комп’ютером
• від комп’ютерних ігр на робочому місці до розповсюдження вірусів і
т.п.
№ 34 из NN
Кодекс етики IEEE-CS/ACM

ACM, IEEE и British Computer Society
– IEEE-CS/ACM Software Engineering Code of Ethics and
Professional Practices – Кодекс етики і професійної
практики програмної інженерії.

Члени цих організацій приймают на себя цей кодекс

Кодекс включає вісім принципів, пов’язаних із
поведінкою та рішеннями, які приймають професійні
програмісти

Кодекс поширюється також на студентів, які вивчають
та здобувають дану професію

Кодекс має коротку та повну версії
№ 35 из NN
Кодекс етики - Преамбула

Коротка версія кодекса
– узагальнює напрямленість кодекса на високому рівні
абстракції.
– Повна версія показує як та напрямленість відбивається на
діяльності професійних програмістів.
– без вищих принципів деталі кодекса стануть
казуїстичними та нудними;
– без деталей наміри залишаться високими, але пустими;
– разом вони утворюють цілісний кодекс.

Програмні інженери повинні докладати зусиль, щоб
аналіз, специфікація, проектування, розробка, тестування
та супровід програмного забезпечення стали корисною та
поважною професією. Відповідно з їх переконаннями
щодо безпеки та благополуччя суспільства програмні
інженери будуть керуватися такими восьми принципами
№ 36 из NN
Кодекс етики: 8 принципів
1. СУСПІЛЬСТВО
– Програмні інженери
суспільних інтересів.
будуть
діяти
відповідно
до
2. КЛІЄНТ ТА ПРАЦЕДАВЕЦЬ
– Програмні інженери будут працювати задля інтересів
клієнтів та своїх працедавців, відповідно до суспільних
інтересів.
3. ПРОДУКТ
– Програмні інженери будут докладати зусиль, щоб
вироблені ними продукти та їхні модифікації
відповідали найвищим професійним стандартам.
№ 37 из NN
Кодекс этики: 8 принципов
4. СУДЖЕННЯ
– Програмні інженери будуть прагнути чесності та
незалежності в своїх професійних судженнях. уждениях
5. МЕНЕДЖМЕНТ
– Менеджери та лідери програмних інженерів будут
керуватися етичним підходом до керівництва, розробки
та супроводу ПЗ, а також будуть просувати та
розвивати цей підхід
6. ПРОФЕСІЯ
– Програмні інженери будут покращувати цілісність та
репутацію своєї професії відповідно до інтересів
суспільства
№ 38 из NN
Кодекс этики: 8 принципов
4. КОЛЕГИ
– Програмні інженери будут честними у відношеннях зі
своїми колегами та будуть всіляко їх підтримувати.
8. ОСОБИСТІСТЬ
– Програмні інженери протягом свого життя будуть
навчатися практиці своєї професії та будуть просувати
етичний підхід до практики своєї професії.
Повна версія кодексу: IEEE-CS/ACM Software
Engineering Ethics and Professional Practices.
http://www.computer.org/tab/seprof/code.htm#Public
№ 39 из NN
Питання

В чому відмінність між програмою та програмним продуктом?

За що відповідає фахівець з програмної інженерії?

Що означає best practices і яка їх роль в програмній інженерії?

У чому специфіка ПІ як інженерної діяльності?

Основні методи в ПІ та їх особливості.

Назвіть три основних групи процесів ЖЦ

Назвіть основні етапи розробки ПЗ?

Що таке ЖЦ розробки ПЗ?

Який вид мають продукти ПІ?

Основні властивості якісного програмного продукту.

Типові моделі в ПІ

Основні ресурси ПІ, які визначають ефективність розробок ПЗ.

Назвіть вісім принципів етики програмних інженерів.

Основні рівні CASE.

В чому суть еволюції CASE.
№ 40 из NN