14
Проектирование  и  создание  новых  компьютерных  систем,  в  том  числе  из  готовых  
компонентов (Reusing) и систем,  теоретически и практически осуществляется с учетом 
современных возможностей платформ и  распределенных сред, в которых компоненты 
распределяются по разным узлам сети и взаимодействуют между собой  через сетевые 
протоколы.  Появились  новые  методы  и  подходы  к  разработке  ПО:  структурный, 
объектно-ориентированный,  компонентный,  аспектный,  визуальный – UML, агентно-
ориентированный, сервисный и др. [3-13]. 
 
Разработано  огромное  количество  разнообразных  инструментальных  средств 
поддержки  процесса  проектирования  ПО  и  методов  оценки  качества, 
производительности,  стоимости  и  т.п.  Процесс  разработки  ПО  и  методы  оценки 
продукта,  процессов  ЖЦ  стандартизованы (ISO/IEC 12207 [14],  15504 [15], ISO 
9126[16-18]  и  др.).  Все  это  способствует  повышению  уровня  проектирования, 
тестирования, прогнозирования надежности и
 оценки качества ПО.            
 
Вместе  с  тем,  новый  программный  проект  разрабатывается 1-2 года,  а 
эволюционирует 6-7лет. На его сопровождение тратиться 61% затрат против 39% на его 
разработку. Эффективность разработчиков в зависимости от квалификации колеблется 
в  отношении 20:200, отсюда  требуется  повышать  уровень  знаний  разработчиков  ПО. 
На сегодня ядро стабильных знаний по программной инженерии составляет 75% от тех 
знаний, что используются в практической программисткой деятельности. 
 
В  связи  с  этим  мировое  компьютерное  сообщество  пришло  к  необходимости 
систематизации  накопленных   знаний  и  общие  из  них   зафиксировать  в  виде  ядер 
знаний (Body of Knowledge – BOK) для  разных  областей  информатики [19]. Для 
создания  ядра  знаний  ПО  был  создан  международный  комитет  при  американском 
объединении  компьютерных  специалистов ACM   (Association   for Computing  
Machinery)  и институте  инженеров  по  электронике  и электротехнике IEEE Computer 
Society.  В  комитет  вошли  специалисты  мирового  уровня  в  области  информатики  и 
разработки  ПО,  которые  внесли  свой  опыт  и  знания,  а  также  систематизировали 
накопленные  разнородные  знания  и  определили (1999г.,  2001г.,  2004г.)  ядро 
профессиональных  знаний  SWEBOK  (Software Engineering Body Knowledge)  
программной инженерии [20], как основы проектирования ПО.  Ядро включает сумму 
знаний,  распределенную  по  10  специализированным  областям,  которые  отражают 
отдельные  процессы проектирования  ЖЦ ПО и методы их поддержки.  
 
Программная инженерия (Software Engineering) является отраслью Computer science,  
изучает  вопросы  построения  компьютерных  программ,  отражает  закономерности  ее 
развития, обобщает  опыт программирования в виде комплекса общих знаний и правил  
регламентации  инженерной  деятельности  разработчиков  ПО.  В  этом  определении 
важно рассмотреть два основных аспекта. 
 
1.  Инженерная  дисциплина,  по  которой  инженеры  применяя  теоретические  идеи, 
методы  и  средства  для  разработки  ПО,  проводят  создание  ПО,  согласно  стандартов, 
регламентирующих процессы проектирования и разработки. 
2.  Аспекты  создания  ПО.  Программная  инженерия  рассматривает  такие  аспекты  ПО 
как управление проектом ПО и разработка средств, методов и теорий, необходимых для 
создания  качественных  программных  систем.  Эта  инженерная  дисциплина    
предоставляет  всю  необходимую  информацию  и  стандарты  для  выбора  наиболее 
подходящего  метода  проектирования  практических  задач.  Не  исключается  и  
творческий неформальный подход к созданию ПО.