- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Ивановский государственный энергетический университет имени в.И. Ленина».
- •Иваново 2014
- •Оглавление
- •Предисловие
- •Введение
- •1.Предмет программной инженерии
- •1.1.Определение и свойства программного обеспечения
- •1.2.Проблемы разработки программного обеспечения
- •1.3.Процессы производства программного обеспечения
- •1.4.Понятие программного проекта
- •1.5. Стандартизация в области производства по
- •1.6.Определение программной инженерии и ее место в системе информационных технологий
- •2.Жизненный цикл программных продуктов
- •2.1.Понятие жизненного цикла
- •2.2.Процессы жизненного цикла программного обеспечения
- •2.3.Модели жизненного цикла
- •3.Виды деятельности в программной инженерии
- •3.1.Управление требованиями
- •3.1.1.Проблема
- •3.1.2.Цикл работы с требованиями
- •3.1.3.Виды и свойства требований
- •3.1.4.Варианты формализации требований
- •3.2.Проектирование программного обеспечения
- •3.2.1.Понятие
- •3.2.2.Принципы
- •3.2.3.Шаблоны
- •3.2.4.Моделирование по
- •3.2.5.Методологии
- •3.2.6.Оценка качества
- •3.3.Конструирование программного обеспечения
- •3.3.1.Определение
- •3.3.2.Связь с другими процессами
- •3.3.3.Принципы
- •3.3.4.Модели и методы
- •3.3.5.Языки конструирования
- •3.4.Конфигурационное управление
- •3.4.1.Проблемы управления активами программного проекта
- •3.4.2.Единицы конфигурационного управления
- •3.4.3.Управление версиями
- •3.4.4.Управление сборками
- •3.4.5.Понятие baseline
- •3.5.Тестирование программного обеспечения
- •3.5.1.Основные определения
- •3.5.2.Уровни тестирования (Test Levels)
- •3.5.3.Виды тестирования
- •3.5.4.Метрики
- •3.6.Сопровождение программного обеспечения
- •Эволюция программного обеспечения (Evolution of Software)
- •4.Методология объектно-ориентированного анализа и проектирования
- •4.1.Основные понятия
- •4.1.1.Объекты и классы
- •4.1.2.Принципы ооп
- •4.1.3.Разработка объектно-ориентированных программ
- •4.2.Язык uml
- •4.2.1.Что дает uml
- •4.2.2.Структура языка uml
- •4.2.3.Uml диаграммы
- •4.2.4.Программы поддержки языка uml
- •4.3.Вопросы для самоконтроля
- •5.Технологии разработки программного обеспечения
- •5.1.Тяжеловесные и облегченные технологии
- •5.2.Технология rup
- •5.3.Гибкие технологии
- •5.4.Технология msf
- •5.4.1. Управление рисками в msf for Agile Software Development1
- •5.4.2.Основные сведения о рисках
- •5.4.3.Планирование управления рисками
- •5.4.4.Процесс управления рисками
- •5.4.5.Управление рисками как составная часть жизненного цикла проекта
- •5.4.6.Учебный пример. Выделение рисков
- •5.5.Модель процессов msf for Agile Software Development2
- •5.5.1.Принципы модели процессов
- •5.5.2.Управление компромиссами
- •5.5.3.Схема процесса разработки
- •5.6.1. Подготовка проекта
- •5.6.2. Планирование проекта
- •5.6.3. Планирование спринта
- •5.6.4. Выполнение спринта
- •5.6.5. Отслеживание проекта
- •5.7.1. Каково назначение модели cmmi?
- •5.7.2. Как лучше использовать модель cmmi?
- •5.7.3. Элементы модели cmmi
- •Заключение Литература
- •153003, Г. Иваново, ул. Рабфаковская, 34.
1.3.Процессы производства программного обеспечения
Любая производственная деятельность включает регламентированные последовательности шагов по достижению целей производства, нормы и правила поведения работников, определенные взаимоотношения между членами коллектива, взаимодействие с внешним миром и т.д. Все это вместе называют процессом. Его осознание, выстраивание и улучшение - основа любой эффективной групповой деятельности. Поэтому не случайно, что процесс создания ПО оказался одним из основных понятий и основным объектом изучения программной инженерии.
Под процессом создания ПО понимают множество различных видов деятельности, методов, методик и шагов, используемых для разработки и эволюции ПО и связанных с ним продуктов (проектных планов, документации, программного кода, тестов, пользовательской документации и пр.).
Задача программной инженерии сострит в том, чтобы объяснить, как выстраивать эффективные процессы создания ПО. Универсального процесса разработки ПО, подходящего для любых компаний и всех видов ПО не существует. Каждый процесс разработки, осуществляемый некоторой командой в рамках определенного проекта, имеет большое количество особенностей и индивидуальностей. Тем не менее, в любых проектах присутствуют определенные планы, распределение ролей и обязанностей в команде, промежуточные и финальные продукты, документы и т.д. Совокупность этих видов деятельности называют конкретным процессом.
Поскольку компании обычно выпускают множество программных продуктов (или версий программного продукта), то они стремятся стандартизировать свои текущие конкретные процессы, т.е стремятся выстраивать унифицированный процесс, который иногда называют стандартным процессом. Описание такого процесса может включать следующие элементы:
пакеты и средства разработки ПО, документацию по ним и правила их использования;
описание практик (правил и примеров) разработки, правил работы с заказчиком и т.п.;
шаблоны проектных документов – технических заданий, проектных спецификаций, планов тестирования и т.п.
Основная идея введения стандартного процесса – распространение внутри компании передового опыта, а также унификация методов и средств разработки. Обеспечить единство процесса для множества разнообразных проектов довольно сложная задача. Наличие формализованного стандартного процесса свидетельствует о зрелости организации. Однако при организации стандартного процесса начинает увеличиваться бюрократический аппарат и имеется опасность его формального внедрения, а это может повредить делу.
Развитие компаний, их рост и повышение качества их продукции связывают с совершенствованием процесса. Совершенствование процесса (software process improvement) – это деятельность по изменению существующего процесса (как текущего, в рамках одного проекта, так и стандартного, для всей компании) с целью улучшения качества создаваемых продуктов и/или снижения цены и времени их разработки.
Причины актуальности этой деятельности для компаний-производителей ПО заключается в следующем:
Происходит быстрая смена технологий разработки ПО, требуются изучение и внедрение новых средcтв разработки.
Наблюдается быстрый рост компаний и их выход на новые рынки, что требует новой организации работ.
Имеет место высокая конкуренция, которая требует поиска более эффективных, более экономичных способов разработки.
Что и каким образом можно улучшать.
Переход на новые средства разработки, языки программирования и т.д.
Улучшение отдельных управленческих и инженерных практик – тестирования, управления требованиями и пр.
Полная, комплексная перестройка всех процессов в проекте, департаменте, компании.
Сертификация компании по стандартам качества.
Главная трудность реального совершенствования процессов в компании заключается в том, что она при этом должна работать и создавать ПО, ее нельзя "закрыть на учет". Отсюда вытекает идея непрерывного улучшения процесса, так сказать, малыми порциями, чтобы это не было болезненно. Это тем более разумно, что новые технологии разработки, появляющиеся на рынке, а также развитие уже существующих нужно постоянно отслеживать.
