- •Программная инженерия, основные понятия Инженеры и программные инженеры
- •Программная инженерия как инженерная дисциплина
- •Цели программных инженеров
- •Качественный программный продукт
- •Создание по должно укладываться в бюджет
- •Создание по должно укладываться в сроки
- •Программные инженеры и научная среда
- •Процесс создания программного обеспечения
- •Понятие процесса
- •Модели процесса
- •Каскадная модель (Waterfall model)
- •Эволюционная модель (Evolutionary development)
- •Итерационный подход
- •Модель пошаговой разработки
- •Спиральная модель разработки
- •Что дальше?
- •Литература
- •Профессиональные и этические требования
- •Стандарты и сертификация
- •Что такое технология
- •Что такое стандарт?
- •Что такое сертификация?
- •Какие бывают стандарты?
- •Кто разрабатывает стандарты se?
- •Iso - International Organization for Standardization
- •Acm - Association for Computing Machinery
- •Sei - Software Engineering Institute
- •Pmi - Project Management Institute
- •Ieee – Institute of Electrical and Electronics Engineers
- •Основные стандарты se
- •Iso/iec12207-95
- •Iso/iec tr 15504
- •Pmipmbok
- •Ieee swebok
- •Acm/ieee Computing Curricula
- •Характер и роль стандартов инженерии программного обеспечения
- •Какие бывают стандарты?
- •Кто разрабатывает стандарты ?
- •Iso - International Organization for Standardization
- •Acm - Association for Computing Machinery
- •Sei - Software Engineering Institute
- •Pmi - Project Management Institute
- •Ieee – Institute of Electrical and Electronics Engineers
- •Основные стандартыSe
- •Iso/iec12207-95
- •Iso/iec tr 15504
- •Pmipmbok
- •Ieee swebok
- •Acm/ieee Computing Curricula
- •1. Основы качества программного обеспечения (Software Quality Fundamentals)
- •2. Процессы управления качеством программного обеспечения (Software Quality Processes)
- •3. Практические соображения (Practical Considerations)
Программная инженерия как инженерная дисциплина
Теперь попробуем ответить на вопрос, что такое программная инженерия.
Новый программный проект разрабатывается 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– частьSystemengineering, имеющая дело с разработкой ПО.
Итак, computer scienceпредоставляет собой безусловно важный, но преимущественно теоретический базис. На практике его недостаточно. К числу открыты можно отнести следующие проблемы:
Поиск финансирования.
Работа с заказчиком.
Подбор персонала.
Этические вопросы. Микроклимат в коллективе. Команда.
Обеспечение качества программного продукта.
...
Всем этим занимается программная инженерия и программные инженеры.