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

Теперь попробуем ответить на вопрос, что такое программная инженерия.

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

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

  • ветви инженерии имеют высокую степень специализации, а в программной инженерии специализация коснулась только отдельных областей (например, операционные системы, трансляторы, редакторы и т.п.);
  • программирование объектов основывается на стандартах, с помощью которых отражаются типовые требования заказчиков, т.е. типизация объектов и артефактов в сфере программирования;
  • технические решения классифицированы и каталогизированы, а в программной инженерии каждая новая разработка - это новая проблема, для реализации которой устанавливают аналогию с ранее разработанными системами. Одним из инженерных решений каталогизации в программировании является паттерн проектирования.

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

Таким образом, возникновение программной инженерии как дисциплины разработки ПО определено следующими важными факторами:

  • значительным объемом накопленных знаний в области создания ПО;
  • появлением новых методов анализа, моделирования и проектирования ПО;
  • совершенствованием методов обнаружения ошибок в ПО;
  • эффективной организацией коллективов разработчиков ПО и оценки их трудовой деятельности;
  • использованием готовых программных компонентов, высокотехнологических средств и инструментов разработки ПО;
  • необходимостью эволюционного развития компонентов и систем, а также их адаптацией к новым изменяющимся условиям операционных сред и компьютерных сетей.

Программная инженерия делает акцент на повышении качества и производительности ПО за счет применения: новых и усовершенствованных методов проектирования ПО; готовых компонентов и методов их генерации; методов эволюции, верификации и тестирования ПО; инструментальных средств; методов управления проектами, оценки качества и стоимости.

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

Программная инженерия описывает методы управления программным проектом, качеством и рисками. Применение таких методов позволяет достичь высокого качества программных продуктов.

Эта инженерная дисциплина предоставляет всю необходимую информацию и стандарты для выбора наиболее подходящего метода и процессов жизненного цикла ПО для реализации конкретного проекта.

Программная инженерия (Software Engineering) – это инженерная дисциплина, которая связана со всеми аспектами производства ПО от начальных стадий создания спецификации до поддержки системы после сдачи в эксплуатацию. В этом определении есть две ключевые фразы:

• Инженерная дисциплина

• Все аспекты производства ПО

Как было выяснено ранее, программное обеспечение представляет собой собственно программы плюс вся сопутствующая документация. На протяжении последних десятилетий стоимость разработки ПО неуклонно растет, в результате чего эта стоимость становится весьма высокой. Программная инженерия способствует решению этой проблемы.

Программная инженерия имеет дело со всеми аспектами создания ПО.

В западной литературе часто используются термины: software engineering, system engineering и computer science. В чем разница?

Computer science имеет дело с теорией и основами разработки ПО.

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

Software engineering – часть System engineering, имеющая дело с разработкой ПО.

Итак, computer science предоставляет собой безусловно важный, но преимущественно теоретический базис. На практике его недостаточно. К числу открыты можно отнести следующие проблемы:

- Поиск финансирования.

- Работа с заказчиком.

- Подбор персонала.

- Этические вопросы. Микроклимат в коллективе. Команда.

- Обеспечение качества программного продукта.

-...

Всем этим занимается программная инженерия и программные инженеры.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: