Програмна інженерія як інженерна дисципліна

Тепер спробуємо відповісти питанням, що таке програмна інженерія.

Новий програмний проект розробляється 1-2 роки, а еволюціонує 6-7 років. На супровід проекту витрачається 61% проти 39% коштів на його розробку. Ефективність розробників залежно від кваліфікації коливається щодо 1:10, отже, потрібно підвищувати рівень знань розробників ПЗ.

Розробку програмних систем можна вважати інженерною діяльністю, але вона має деякі відмінності від традиційної інженерії:

програмування об'єктів полягає в стандартах, з допомогою яких відбиваються типові вимоги замовників, тобто. типізація об'єктів та артефактів у сфері програмування;

технічні рішення класифіковані і каталогізовані, а програмної інженерії кожна нова розробка - це нова проблема, реалізації якої встановлюють аналогію з раніше розробленими системами. Одним з інженерних рішень каталогізації у програмуванні єпатернпроектування.

Для перетворення програмної інженерії на спеціальність світова комп'ютерна громадськість створила професійні комітети, що регламентують аспекти процесу програмування: ядро ​​знань SWEBOK, етичний кодекс програміста [1.13], навчальні курси (Curricula -2001, 2004) з підготовки спеціалістів у галузі програмної інженерії, навчання спеціальності та спеціалістів.

Таким чином, виникнення програмної інженерії як дисципліни розробки програмного забезпечення визначено такими важливими факторами:

значним обсягом накопичених знань у галузі створення ПЗ;

появою нових методів аналізу, моделювання та проектування ПЗ;

удосконаленням методів виявлення помилок у ПЗ;

ефективною організацією колективіврозробників ПЗ та оцінки їх трудової діяльності;

використанням готових програмних компонентів, високотехнологічних засобів та інструментів розробки ПЗ;

необхідністю еволюційного розвитку компонентів і систем, а також їх адаптацією до нових умов операційних середовищ і комп'ютерних мереж, що змінюються.

Програмна інженерія наголошує на підвищенні якості та продуктивності ПЗ за рахунок застосування: нових та вдосконалених методів проектування ПЗ; готових компонентів та методів їх генерації; методів еволюції, верифікації та тестування ПЗ; інструментальних засобів; методів управління проектами, оцінки якості та вартості.

Програмна інженерія (Software Engineering)- це інженерна дисципліна, в якій інженери застосовують теоретичні ідеї, методи та засоби при розробці ПЗ, створюють продукти відповідно до стандартів, що регламентують процеси їх проектування та розробки.

Програмна інженерія визначає методи управління програмним проектом, якістю та ризиками. Застосування таких методів дозволяє досягти високої якості програмних продуктів.

Ця інженерна дисципліна надає всю необхідну інформацію та стандарти для вибору найбільш відповідного методу та процесів життєвого циклу ПЗ для реалізації конкретного проекту.

Програмна інженерія (Software Engineering) – це інженерна дисципліна, яка пов'язана з усіма аспектами виробництва ПЗ від початкових стадій створення специфікації до підтримки системи після здачі в експлуатацію. У цьому вся визначенні є дві ключові фрази:

• Усі аспекти виробництва ПЗ

Як було з'ясовано раніше, програмне забезпечення є власне програми плюс вся супутня документація. Протягом останніхдесятиліть вартість розробки ПЗ неухильно зростає, внаслідок чого ця вартість стає дуже високою. Програмна інженерія сприяє вирішенню цієї проблеми.

Програмна інженерія має справу з усіма аспектами створення програмного забезпечення.

У західній літературі часто використовуються терміни:softwareengineering,systemengineeringіcomputerscience. В чому різниця?

Computer scienceмає справу з теорією та основами розробки ПЗ.

System engineeringпов'язане з питаннями розробки систем за участю комп'ютерів (архітектура, дизайн, інтеграція, ПЗ).

Software engineering- частина Systemengineering, що має справу з розробкою ПЗ.

Отже,computer scienceє безумовно важливий, але переважно теоретичний базис. Насправді його недостатньо. До відкриті можна віднести такі проблеми:

Робота із замовником.

Етичні питання. Мікроклімат у колективі. Команда.

Забезпечення якості програмного продукту.

Усім цим займається програмна інженерія та програмні інженери.