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. Аспекты создания ПО. Программная инженерия рассматривает такие аспекты ПО
как управление проектом ПО и разработка средств, методов и теорий, необходимых для
создания качественных программных систем. Эта инженерная дисциплина
предоставляет всю необходимую информацию и стандарты для выбора наиболее
подходящего метода проектирования практических задач. Не исключается и
творческий неформальный подход к созданию ПО.