Як і інші інженерні дисципліни, інженерія програмного забезпечення характеризується такими аспектами:
- творчість - інженерія концентрується на проблемах аналізу і проектування;
- інструментальність ключові проблеми в інженерії - це ви бір і використання інструментів;
- стандартизація - кращі практичні досягнення інженерії у вигляді інженерних принципів є основою створення стандартів;
- успадкованість (повторне використання) - в інженерії повтор не використання знань і продуктів фаз життєвого циклу с найважливішим чинником підвищення продуктивності і якості;
- професіоналізм - інженерія програмного забезпечення - це професія.
Остання властивість характеризує інженерію програмного забезпечення не як академічну, а швидше як практичну дисципліну. Професійний інженер з програмного забезпечення мас такі риси:
- ухвалює рішення, оцінюючи стан і кожного разу вибираючи підходи для вирішення конкретних завдань і в конкретному контексти знаходячи баланс між витратами і прибутком;
- вимірює, калібрує і оцінює вимірювальні інструменти;
- виконує в практичній діяльності одну з багатьох ролей, на приклад, дослідник, розробник, архітектор, виробник, тестер, експлуатаційник, керівник, продавець, консультант, викладач;
- результати праці інженера можуть бути різні, від пристроїв і систем, до процесів і структур;
- застосовує знання з інших дисциплін (на додаток до своїх власних), наприклад, з математики, базових наук і економіки. При цьому; основними дисциплінами є «Комп'ютерні науки», «Дискретна математика» і «Групова динаміка». Дисципліни «Фізика» і «Без перервна математика» використовуються в деяких застосуваннях, але вони менш важливі, ніж вказані;
- створює: інструменти;
- працює дисциплінованим і систематичним чином;
- працює в колективах разом з іншими фахівцями, розвиваючи навички взаємин колективної роботи;
- дотримується стичних і професійних принципів, захищаючи суспільство, замовників і себе;
- постійно поповнює свої знання, освоюючи нові методи, техніку і технології;
- спирається на специфічні знання і досвід, працюючи всередині специфічних доменів, враховуючи особливість доменних рішень, виробництва, матеріалів, вимог;
- уміє визначати, які частини можна повторно використовувати, а які слід розробляти заново.
2.1. Культура інженерії програмного забезпечення
Культура інженерії програмного забезпечення - це сукупність позицій розробників, людських відносин і технічних процесів, орієнтованих на якість у широкому сенсі. Кожна організація і особа має власну культуру, набуту шляхом копіткої роботи. Культура інженерії програмного забезпечення характеризується такими чинниками:
- чіткими організаційними цілями;
- зобов'язанням менеджменту вести організацію до досягнення встановлених цілей;
- середовищем, яке дає змогу кожному розробникові вдосконалювати і ефективно застосовувати свої знання і навички;
- вимірюваннями, що дають змогу добирати ефективні процеси. Будь-яка «здорова» культура повинна містити три істотні компоненти:
- персональне зобов'язання кожного розробника створювати якісні продукти шляхом систематичного застосування передового досвіду інженерії програмного забезпечення;
- зобов'язання менеджерів усіх, рівнів забезпечувати середовище, в якому якість програмного забезпечення (у всіх його аспектах) є фундаментальною концепцією і кожен розробник може реалізовувати цю концепцію;
- зобов'язаній всіх членів організації постійно вдосконалювати процеси, в яких воли беруть участь і продукти, які вони створюють.
На рис. 2.1 показано, як культура інженерії програмного забезпечення пов'язана з цілями, пріоритетами і технічною практикою розробки програмного забезпечення [25]. Культура інженерії програмного забезпечення визначає якісний рівень дій, процесів і технічних можливостей організації, задає проектні цілі і можливості організації. Рівень проектних цілей залежить від того технічного досвіду, який нагромоджено в організації. Чим більший цей досвід, тим вищі проектні цілі і тим краще відповідне програмне забезпечення здатна створювати організація. Технічний досвід, очевидно, впливає на загальну культуру організації і чим він більший, тим вища культура (А). Культура організації є, з одного боку, основою для діяльності кожного розробника, а з іншого - культура організацій буде тим вища, чим вища культура кожного розробника (В). Нарешті, культура інженерії програмного забезпечення допомагає встановлювати пріоритети менеджменту. Очевидно, вищі пріоритети менеджменту визначають (підсилюють) загальну культуру організації (С).