Термін «програмна інженерія» вперше був застосований у 1968 р. на конференції з цієї проблематики NATO Software Engineering Conference.
Програмна інженерія, або інжиніринг програмного забезпечення, (Software Engineering) – систематичний, дисциплінований, вимірюваний підхід до розроблення використання та підтримки програм.
Тим самим було визначено дисципліну, яка мала пришвидшити створення програмного забезпечення вищої якості, дешевшого за вартістю та легшого у супроводі.
У своєму становленні програмна інженерія пройшла три етапи.
1 етап. Класичний підхід до розроблення програмного забезпечення (ПЗ) ІС.
До 1970-х років процес створення програм розглядався як творчий процес, що не підлягає контролю і не може бути стандартизований.
Характерні риси класичного підходу: неформальні методи, брак стандартизації і мінімум документації, яку розробляли після завершення створення системи.
На початку 1970-х років почали застосовувати методи управління проектами на базі моделей життєвого циклу ІС, що забезпечило деяку впорядкованість розроблення ПЗ. Проект розбивають на кілька стадій, кожна з яких має чіткі цілі і завдання, результати виконання яких можна перевірити, і забезпечує підгрунтя переходу до подальших робіт. Виконання кожної стадії супроводжується оформленням відповідної документації.
Проблеми використання методів життєвого циклу:
- недостатній ступінь формалізації, що породжує неузгодженість елементів ПЗ;
- відсутність ефективного супроводу розроблення і модернізації ІС.
2 етап. Методи програмної інженерії.
Наприкінці 1970-х – початку 1980-х рр. з’явились методи програмної інженерії, які поділяють на такі категорії:
евристичні методи, що включають неформалізовані підходи. Це структурно-орієнтовані (функціонально-орієнтовані), об’єктно-орієнтовані, зорієнтовані на дані, та зорієнтовані на область застосування методи;
формальні методи, обгрунтовані математично. До цієї категорії відносять мови специфікацій, зорієнтовані на модель, властивості або поведінку; підходи до уточнення специфікацій (трансформації у кінцевий результат, максимально близький до бажаного – виконуваний програмний продукт); підходи підтвердження точності характеристик (початкових припущень та отримуваного продукту) із використанням теорем і перевіркою точності моделей;
методи прототипування, що включають стилі прототипування (створення тимчасових прототипів, еволюційне прототипування, розроблення виконуваних специфікацій); техніки оцінювання результатів прототипування.
3 етап. CASE-технологія.
Неавтоматизоване (ручне) проектування ІС породжує низку проблем:
- Пов’язаних з виконанням проекту:
- запізнення реалізації;
- суттєве перевищення бюджету проекту.
- Пов’язаних з якістю розробленого ПЗ:
- неадекватна специфікація вимог;
- складність виявлення помилок у проектних рішеннях;
- неадекватне виконання і низький рівень надійності ПЗ;
- неузгодженість структурних частин системи (підсистем, задач, файлів, баз даних);
- висока вартість, трудомісткість і ризикованість модифікації.
- Пов’язаних з якістю проектної документації на систему:
- неузгодженість, дублювання проектних рішень у різних проектних документах;
- неповнота;
- неможливість простежити за документацією цілісну реакцію системи на зміну окремого елемента.
Необхідність розв’язання вказаних проблем зумовила, а поширення персональних комп’ютерів у середині 1980-х років уможливило появу спеціалізованих програмно-технологічних засобів – CASE-систем, які реалізують CASE-технології створення і супроводження ІС.
CASE-технологія (Computer-Aided Software/System Engineering) являє собою сукупність методологій аналізу, проектування, розробки й супроводження складних систем програмного забезпечення (ПЗ), підтриману комплексом взаємозв’язаних засобів автоматизації. CASE надає системним аналітикам, проектувальникам і програмістам інструментарій для автоматизації проектування і розробки ПЗ.
До CASE-засобів зазвичай відносять будь-який програмний засіб, що забезпечує автоматичну допомогу в процесі розробки ПЗ, його супроводженні, а також під час управління проектом.
Сучасні CASE-засоби характеризуються такими властивостями:
- застосування потужної графіки для представлення і документування систем ПЗ, а також для покращання інтерфейсу з користувачем;
- використання комп’ютерного сховища, або репозиторію - бази даних CASE, в якій зберігається вся проектна інформація;
- інтеграція інформації і інструментальних засобів, що дає змогу керувати всім процесом проектування і розробки ПЗ, використовуючи засоби планування проекту;
- застосування базових програмних засобів різного призначення (бази даних і СУБД, компілятори, налагоджувачі, документатори, текстові редактори, оболонки експертних систем і бази знань, мови четвертого покоління і т.ін.);
- автоматична кодогенерація, призначена для одержання виконуваних машинних кодів із специфікацій ПЗ;
- обмеження складності з метою одержання керованих компонентів системи з простою структурою і доступних для огляду і розуміння;
- гнучкість, яка забезпечує здатність до адаптації при зміні вимог і цілей проекту.