Технологии программирования на базе Microsoft Solutions Framework

Содержание курса


Введение

Важность предмета.

Программа и программное обеспечение, основные отличия. О рынке программного обеспечения.

Сложность управления процессом разработки программного обеспечения.

Технологии программирования как способ борьбы со сложностью.

Обзор технологий программирования (структурное, модульное, объектно-ориентированное, компонентное программирование).

Цели и задачи курса. Структура учебного плана. Основная и дополнительная литература, Интернет-источники.

1. Элементы программной инженерии.

1.1. Программная инженерия, основные понятия.

Инженерия и инженеры.

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

Область действия программной инженерии и отличия от других инженерий.

Программные инженеры и их деятельность.

Программные инженеры и научная среда - ключевые различия и принципы успешного взаимодействия.

Показатели качества программного продукта.

1.2. Процесс создания программного обеспечения

Понятие процесса создания ПО. Основные стадии процесса.

Модели процесса создания ПО. Каскадная и эволюционная модели.

Итерационные модели процесса создания ПО. Модель пошаговой разработки, спиральная модель.

2. Визуальное моделирование при анализе и проектировании. Основы Unified Modeling Language (UML).

2.1. Анализ и проектирование. Некоторые частные вопросы

2.1.1. Обзор принципов объектного подхода.

Алгоритмическая и объектная декомпозиции. Классы и объекты.

Объектно-ориентированный анализ.

Объектно-ориентированное проектирование.

Объектно-ориентированное программирование.

Принципы объектного подхода: абстрагирование, инкапсуляция, иерархия, агрегация и наследование, полиморфизм.

Пример: ООП и структуры данных. Проектирование структуры данных стек.

2.1.2. Повторное использование.

Идея повторного использования. Важность повторного использования.

Достоинства повторного использования. Виды повторного использования.

2.2. Визуальное моделирование. История языка UML.

Идея визуального моделирования.

Необходимость универсального языка для визуального моделирования.

История возникновения и развития языка UML.


2.3. Структура языка UML.

Модели UML.

Диаграммы и понятия UML.

2.4. Учебный пример: Задача о разработке программного комплекса бронирования билетов для авиакомпании "SRS - Seat Reservation System". Постановка задачи.

2.5. Визуальное описание модели функционирования системы средствами UML.

Понятия Актера и Варианта использования.

Ассоциация между Актером и Вариантом использования.

Диаграмма вариантов использования.

Диаграмма действия.

Пример: Использование средств UML для визуального моделирования поведения программной системы "SRS".

2.6. Классы, объекты, поля, методы, подсистемы, компоненты, пакеты и их отображение средствами UML.

Пример: Использование средств UML для визуального проектирования программной системы "SRS".

2.7. Проектирование системы. Диаграммы классов и их описание средствами UML.

Диаграммы классов. Зависимость, наследование, ассоциация, агрегация, композиция и их отображение средствами UML.

Пример: Использование средств UML для визуального проектирования программной системы "SRS".

3. Методология создания программных решений Microsoft Solutions Framework.

3.1. Введение в методологию MSF и историческая справка.

Что такое MSF. Основные концепции методологии: модель процессов, управление проектом, модель проектной группы, управление рисками. Позиционирование MSF в сравнении с другими методологиями разработки программного обеспечения. Инструментальная поддержка методологии до версии 3.0 включительно. Источники информации.

3.2. Нововведения версии MSF 4.0.

Разделение методологии на два направления: MSF for Agile Software Development и MSF for CMMI Process Improvement. Причины разделения методологии MSF на "облегченный" и "тяжелый" варианты, основные отличия направлений. Почему в основу курса положено направление MSF for Agile Software Development? Характеристика основных положений MSF for Agile Software Development. Инструментальная поддержка MSF 4.0 в среде разработки Microsoft Visual Studio 2005. Источники информации.



3.3. Формирование команды. Модель проектной группы MSF for Agile Software Development.

Основные принципы построения команды.

"Проектная группа - команда равных".

Каждая ролевая группа имеет зону ответственности и защищает интересы заинтересованных лиц из этой зоны.

"Масштабируемость" модели проектной группы в зависимости от числа участников.

Ролевые группы и роли, зоны ответственности ролевых групп, их задачи и взаимодействие с заинтересованными лицами.

MSF for Agile Software Development выделяет 7 ролевых групп: управление программой, архитектура продукта, разработка, тестирование, управление выпуском, удовлетворение потребителя, управление продуктом, - и 6 ролей: менеджер проекта, архитектор, разработчик, тестер, релиз-менеджер, бизнес-аналитик. Для каждой группы и роли, помимо зоны ответственности, в которой роль имеет решающий голос, определены заинтересованные стороны, как внутри, так и вне команды, с которыми группа должна взаимодействовать и чьи интересы представлять/отстаивать при принятии решений.

Рекомендации по возможному объединению ролей.

Пример: Задача о разработке программного комплекса бронирования билетов для аэропорта.

3.4. Управление рисками в MSF for Agile Software Development.

Основные сведения о рисках.

Планирование управления рисками.

Процесс управления рисками: выявление, анализ и приоритезация, планирование, мониторинг, корректирование, извлечение уроков.

Управление рисками как составная часть жизненного цикла проекта.

Пример: Задача о разработке программного комплекса бронирования билетов для аэропорта. Выделение рисков.

3.5. Модель процессов MSF for Agile Software Development.

Принципы модели процессов.

Взаимодействуйте с "заказчиками".

Поощряйте свободный обмен информацией в проекте.

Создавайте "единое видение проекта".

Следите за качеством продукта.

Проявляйте гибкость - будьте готовы к изменениям.

Ставьте "вехи".

Будьте готовы к внедрению сегодня.

Схема процесса разработки.

Основные структурные единицы схемы: циклы, фазы и вехи.



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

Фазы и вехи процесса разработки: выработка концепции, планирование проекта, разработка решения, стабилизация решения, внедрение решения. Распределение задач по фазам. Выбор продолжительности фаз. Принцип "каждой фазе - свои вехи". Вопросы, определяющие выполнение очередной фазы и достижение соответствующей вехи.

3.6. Старт проекта. Фаза выработки концепции.

Основные задачи фазы: создание ядра проектной группы, формирование видения проекта, подготовка документа общего описания и рамок проекта, подготовка документа оценки рисков и представление главных рисков проекта, выявление и анализ бизнес-требований.

Задачи ролевых групп на фазе выработки концепции.

Главная веха фазы: "Концепция утверждена".

Рекомендуемые промежуточные вехи: "Ядро проектной группы сформировано", "Черновой вариант концепции проекта составлен".

Результаты фазы: "Общее описание и рамки проекта", "Документ оценки рисков", "Описание структуры проекта".

Пример: Задача о разработке программного комплекса бронирования билетов для аэропорта. Выработка концепции.

3.7. Планирование проекта. Фаза планирования.

Основные задачи фазы: анализ и документирование проектных требований, подготовка функциональной спецификации, разработка дизайнов, подготовка рабочих планов, оценка проектных затрат и сроков разработки различных составляющих проекта.

Категории проектных требований. Уровни процесса проектирования.

Задачи ролевых групп на фазе планирования.

Главная веха фазы: "Планы проекта утверждены".

Рекомендуемые промежуточные вехи: "Верификация технологий", "Базовая версия функциональной спецификации создана", "Базовая версия сводного плана проекта создана", "Базовая версия сводного календарного графика проекта создана", "Среды разработки и тестирования развернуты".



Результаты фазы: "Функциональная спецификация", "План управления рисками", "Сводный план и сводный календарный график проекта".

3.8. Разработка решения. Фаза разработки.

Основная задача фазы - создание компонент решения, включая как документацию, так и программный код.

Задачи ролевых групп на фазе разработки.

Главная веха фазы: "Разработка завершена ".

Рекомендуемые промежуточные вехи: "Концепция подтверждена", "Билд номер N завершен", "Билд номер N+1 завершен",…

Результаты фазы: "Исходный и исполняемый код приложений", "Скрипты установки и конфигурирования", "Окончательная функциональная спецификация", "Материалы поддержки решения", "Спецификации и сценарии тестов".

3.9. Стабилизация решения. Фаза стабилизации.

Основные задачи фазы: тестирование разработанного решения, приоритезация и устранение ошибок, подготовка решения к выпуску, пилотное внедрение.

Задачи ролевых групп на фазе стабилизации.

Главная веха фазы: "Готовность решения утверждена".

Рекомендуемые промежуточные вехи: "Точка конвергенции", "Точка достижения нуля ошибок", "Версии-кандидаты", "Контрольное тестирование завершено", "Тестирование приемлемости для потребителей завершено", "Пилотное внедрение завершено".

Результаты фазы: "Окончательный продукт", "Документация выпуска", "Материалы поддержки решения", "Результаты и инструментарий тестирования", "Исходный и исполнимый код приложений", "Проектная документация", "Анализ пройденной фазы".

3.10. Внедрение решения. Фаза внедрения.

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

Задачи ролевых групп на фазе внедрения.

Главная веха фазы: "Внедрение завершено".

Рекомендуемые промежуточные вехи: "Ключевые компоненты развернуты", "Внедрение на местах завершено", "Внедренное решение стабилизировано".

Результаты фазы: "Информационные системы эксплуатации и поддержки", "Процедуры и процессы", "Базы знаний, отчеты, журналы протоколов", "Версии проектных документов, массивы данных и программный код, разработанные во время проекта", "Отчет о завершении проекта", "Окончательные версии всех проектных документов", "Показатели удовлетворенности заказчика и потребителей", "Описание последующих шагов".


Содержание раздела