Глава 2 53
Возникновение и высокие темпы развития программной инженерии предо-
пределены несколькими важными факторами:
• накоплением значительного объема знаний в области практического соз-
дания ПО, нуждающихся в систематизации;
• появлением разнообразных методов анализа, моделирования и проекти-
рования ПО, а также высоко технологических средств и инструментов разработки
ПО, не обеспеченных рекомендациями по эффективному применению;
• высоким уровнем обнаружения дефектов в ПО несмотря на использова-
ние прогрессивных методов проектирования и программирования;
• не эффективной организацией труда коллективов разработчиков ПО (ме-
неджеров, проектировщиков, программистов, тестировщиков, технологов и др.);
• использованием готовых программных компонентов, подлежащих иден-
тификации и систематизированному ведению (в библиотеках, хранилищах и др.);
• применением реинженерии существующих компонентов как средства их
адаптации к новым, быстро изменяющимся условиям и средам.
В определении понятия программная инженерия существенны два ключевых
момента:
1) программная инженерия – это инженерная дисциплина, суть которой со-
стоит в том, что инженеры (будь то программисты, тестировщики и т.п.) применя-
ют теоретически обоснованные методологии, методы и средства для разработки
ПО, руководствуясь конкретными стандартами, правилами и методиками. Про-
граммная инженерия «предоставляет» всю необходимую информацию для выбора
наиболее подходящего метода, средства и инструмента для реализации разных
практических задач программирования ПО на инженерной основе, хотя и не ис-
ключает и творческий, неформальный подход к созданию ПО;
2) программная инженерия охватывает множество аспектов создания ПО,
дополняя процесс собственно разработки (анализа, проектирования и программи-
рования) такими процессами, как управление проектом, конфигурацией, качеством
ПО и др., включая оценку результатов труда и затраченных ресурсов. К ключевым
аспектам разработки ПО, как инженерной деятельности, относятся, прежде всего,
планирование и сопровождение. Первый из них (планирование) предполагает ана-
лиз целей и задач разработки, возможностей ее реализации и необходимых для это-
го ресурсов, а второй (сопровождение) - устранение найденных недостатков в сис-
теме и реализацию изменений, обусловленных эволюцией ПО, среды и деятельно-
сти пользователей. Один из метров программной инженерии М.Джексон определил
золотое правило программирования: всякая только что законченная программная
система сразу требует изменений [2].
Инженерный аспект деятельности в области программирования делает разра-
ботку ПО близкой по своей сущности к инженерной деятельности, как она опре-
делена в толковом словаре:
1) инженерия есть применение научных результатов, что позволяет получать
пользу от свойств материалов и источников энергии;
2) инженерия есть деятельность по созданию машин для предоставления по-
лезных услуг.
В программной инженерии, инженеры – это специалисты, выполняющие
практические работы по реализации программ с применением теории, методов и
средств компьютерной науки, которая охватывает теорию и методы построения