|
Раздел 1. Программная инженерия |
||
|
Модуль 1. UML как средство поддержки процесса проектирования |
||
|
Структура UML, статическая и динамическая составляющие модели. Составляющие элементы, механизмы, архитектура. Составные элементы: сущности, отношения, диаграммы. Виды сущностей: структурные сущности – класс, интерфейс, кооперация, прецедент, активный класс, компонент, узел; поведенческие сущности – взаимодействия, деятельности, автоматы; группирующая сущность – пакет, аннотационная сущность – примечание. Виды отношений: зависимость, ассоциация, агрегация, композиция, включение, обобщение, реализация. Отношения. Связи – отношения между объектами. Направленность связи, Сообщения. Ассоциации – отношения между классами. Свойства ассоциации: имя, кратность, навигация, атрибуты. Рефлексивные ассоциации, деревья и сети. Классы атрибутов ассоциаций (классы-ассоциации). Зависимости. Зависимости использования «use», «call», «parameter», «send» и «instantiate». Зависимости абстракции. Зависимости доступа. Виды диаграмм. Спецификации. Дополнения. Принятые деления: классификатор-экземпляр, интерфейс-реализация. Расширения: ограничения, стереотипы. |
||
|
Диаграммы взаимодействия. Линия жизни, активности, сообщения, их виды. Комбинированные фрагменты и операторы. Включения, параметры, шлюзы. Продолжения. Их аналоги в программировании. Коммуникационные диаграммы. Диаграммы деятельности. Технология сетей Петри. Параллелизм. Поток управления, узел действия, ребро, узел управления, объектный узел, буферизация и в объектном узле. Объектные узлы – параметры, состояния объектных узлов. Контакты. Прерывающие ребра. Контакты исключений. Потоки объектов. Их аналоги в программировании (фаза реализации). Диаграммы состояний. Конечные автоматы. Состояния. Переходы. События. Сигналы. Составные состояния. Подавтоматы. Предыстория. |
||
|
Модуль 2. Предмет программной инженерии, жизненный цикл проекта, методологии проектирования и модели процессов ЖЦ |
||
|
Свод знаний по программной инженерии SWEBOK Жизненный цикл (ЖЦ) программного продукта и проекта. «Легкие» и «тяжелые» модели процессов разработки ПО. Обзор: «как получится», ГОСТы, RUP, Agile, XP. Модели жизненного цикла. Каскадная, итерационная и спиральная модели. Организационная и технологическая составляющие жизненного цикла. Роль UML в формализации технологической составляющей. Моделирование, виды моделей. UML как средство описания различных аспектов «мысленной» модели проектируемой системы. |
|
|
|
Унифицированный процесс UP. Фазы жизненного цикла: начало, уточнение, построение, внедрение. Содержание и результаты фаз. Итерация и ее рабочие потоки: требования, анализ, проектирование, реализация, тестирование, их содержание. Фаза начала. Видение проекта, глоссарий. Рабочий поток анализа предметной области. Диаграммы классов предметной области. |
|
|
|
Требования. Место рабочего потока определения требований. Функциональные и нефункциональные, перечень. Атрибуты требований: приоритеты, состояние, трудоемкость, стабильность, риск, полезность. Способы извлечения и фильтрации требований. Актеры и роли. Прецеденты. Выявление актеров и прецедентов: бизнес-модель предметной области, модель требований, глоссарий проекта. Диаграммы прецедентов, детализация прецедентов, спецификации прецедентов. Отображение требований на прецеденты. |
|
|
|
Архитектура как система представлений: представление классов, процессов, реализации, развертывания и прецедентов (требований). Классы анализа. Виды классов: граница, управление, сущность. Выявление классов анализа. Диаграммы устойчивости. Архитектурные аспекты технологического процесса проектирования (по SWEBOK) |
|
|
|
Проектирование графического интерфейса (GUI). Основные аспекты. Архитектурное проектирование, основанное на GUI. |
|
|
|
Примеры проектирования. Система выдачи ключей аудиторий. . Система подсчета рейтинга успеваемости |
|
|
|
Экстремальное и гибкое программирование. Манифест экстремального программирования (XP). Гибкие (agile) технологии. SCRUM. Agile UP, ICONIX. SCRUM как технологический фреймворк.. Терминология. Спринт. Митинг. Собственник проекта. Команда. SCRUM-мастер. Беклог проекта и спринта. Планирование спринта. Диаграмма сгорания. Оценка трудоемкости. Покер-планирование. |
|
|
|
Модуль 3. Управление программными проектами – 4 часа |
|
|
|
Управление проектом как специфическая деятельность и разновидность менеджмента. Функциональная, проектная и матричная структура организации, разрабатывающей ПО. Функциональная классификация участников проекта, возможности совмещения функций. Управление проектом на разных фазах. Фаза инициации (начала). Структура и содержание концепции: финансовая и стратегическая ценность, риски, обоснование выполнимости (прототипирование), цели и результаты, допущения и ограничения, ключевые участники, ресурсы, оценка трудоемкости и сроков. Результаты завершения фазы инициации по UP. Фаза анализа. Иерархическая структура работ (ИСР). Планирование управления содержанием, организационной структуры, управления конфигурацией и управления качеством. Базовое расписание проекта. Диаграммы Ганта, критический путь. Результаты завершения фазы анализа по UP |
|
|
|
Управление рисками. Определение и характеристики риска. Шкалы оценивания последствий и вероятности. Способы идентификации. Реакция на риски. Наиболее вероятные риски по Боэму и Архипенкову. Качественные оценки рисков. Количественные оценки: анализ чувствительности, дерево решений, имитационное моделирование. Управление, направленное на снижение рисков. |
|
|
|
Модуль 4. Тестирование ПО – 6 часов |
||
|
Понятие программной ошибки. Философия ошибок. Классификационные характеристики ошибок. Отладка, инспекция и тестирование как этапы поиска ошибок. Обзор и основная классификация распространенных программных ошибок (дефектов), документирование и анализ ошибок. Ошибки вычислений и преобразований. Ошибки структурирования кода. Ошибки форматов входных данных. Ошибки форматов внутренних данных и соглашений по данным. Ошибки сборки, конфигурирования, размещения. Ошибки использования ресурсов. Ошибки, связанные с ограничениями по ресурсам. Ошибки реактивности и производительности. Ошибки параллелизма и синхронизации. Ошибки распределенных систем и протоколов. Ошибки пользовательского интерфейса |
|
|
|
Отладка и инспекция программного кода. Сущность отладки. Приемы отладки. Инспекция как неформальный анализ программного кода. Логический и временной анализ. Методы инспектирования. |
|
|
|
Сущность тестирования. . Экономическая сторона тестирования. Методологическая сторона тестирования. Невозможность исчерпывающего тестирования. Алгоритмически неразрешимые проблемы тестирования и инспекции. Понятие теста, тестового набора. Критерии выбора тестов: структурный (белый ящик), функциональный (черный ящик), стохастический, мутационный. |
|
|
|
Структурное тестирование. Тестирование операторов, условий (решений) и путей. Комбинационное тестирование. Пример. Функциональное тестирование. Классы эквивалентности по входным данным. Проектирование тестового покрытия. Классы эквивалентности по граничным условиям. Примеры. |
|
|
|
Модульное и интеграционное тестирование как фазы процесса конструирования. Средства автоматизации тестирования при конструировании (JUnit).Тестирование, совмещенное с проектированием (TDD-Test Driven Development). Технологический цикл. Паттерны тестирования. Приемы рефакторинга. |
2 |
|
|
Раздел 2. Инженерный подход к проектированию ПО (Инжиниринг ПО) |
||
|
Модуль 1. Базовые элементы инженерного подхода |
||
|
Семейства программ и фреймворки. Обзор JavaEE как средства разработки, отладки и тестирования распределенных приложений на Java. Реинжиниринг и рефакторинг. Системы контроля версии, сборки кода. |
|
|
|
Технологические вопросы проектирования на Java. Выполнений заданий асинхронно к GUI. Событийное программирование. Слушатели событий и CallBack-вызовы. Распределение компонентов. Клиент-серверные приложения: тонкий и толстый клиент. Обработка ошибок и исключительных ситуаций, управление отказоустойчивостью и надежностью. Разделение представления и сущности: концепция модель-вид-контроллер. |
|
|
|
Метрики программного кода. Средства оценки качества программного кода. |
|
|
|
Модуль 2. Шаблоны проектирования - 6 часов |
||
|
Сущность шаблонов (паттернов) проектирования как элементов абстрагирования. Виды шаблонов, их назначение, примеры использования. Базовые шаблоны: делегирование, интерфейс, абстрактный класс, обратный вызов. |
|
|
|
Производящие шаблоны: builder, factory, prototype, singleton, object pool, разделяющие шаблоны - filter |
|
|
|
Структурные шаблоны: adapter, bridge, composite, decorator, facade, flyweight, proxy |
|
|
|
Шаблон model-view-controller (MVC) |
|
|
|
Поведенческие шаблоны: command, interpreter, iterator, mediator, momento, observer, state, starategy, template, visitor |
|
|
|
Шаблоны параллелизма: session, worker thread, successive update, router, transaction, single threaded execution, lock object, guarded suspension, balking, scheduler, read/write lock,two-phase termination, double buffering, asynchronous processing |
|
|
Лабораторная работа 1. Анализ предметной области, разработка видения. Для выбранного варианта разработать следующие документы фазы исследования проекта (ТП моделирование предметной области и разработка требований).
Анализ предметной области выполняется в одной из трех вариантов:
Лабораторная работа 2. Разработка модели прецедентов. Разработать модель прецедентов, кратко описать роли и содержание прецедентов, расписать сценарии 2-3 наиболее значимых прецедентов, основываясь на модели предметной области
Лабораторная работа 3. Разработка требований. Определить полный перечень функциональных и нефункциональных требований к системе. На его основе разработать документ «Спецификация требований к ПО».
Лабораторная работа 4. Разработка прототипа графического интерфейса. Для всех приложений с учетом их функционала и имеющихся прецедентов разработать систему окон графического интерфейса пользователя (GUI) и диаграммы классов (или граф связей) оконных классов. Обосновать принятые решения требованиями из «Спецификации требований к ПО». Дополнить спецификацию с учетом выполненного проектирования.
Лабораторная работа 5. Разработка архитектуры системы. Разработать архитектуру системы, оформив результат в виде документа, включающего в себя:
Лабораторная работа 6. Реализация прецедента. Для одного из сценариев, разработанного в л.р.2 проиллюстрировать его реализацию в разработанной архитектуре (диаграмма устойчивости, диаграмма последовательности или коммуникационная диаграмма)
Лабораторная работа№7. Оценка трудоемкости и стоимости программного проекта. На основе имеющихся данных оценить объем программного кода. Произвести оценку трудоемкости и сроков реализации методами PERT и COCOMO II.
Лабораторная работа№8. Разработка бизнес-плана программного проекта. Определить этапы реализации, деятельности, структур команды разработчиков и план исполнения отдельных работ (деятельностей).
Для выбранного варианта разработать следующие документы фазы исследования проекта (тех. процессы моделирования предметной области, разработки требований, проектирования):
Расчетно-графическое задание выполняется в виде разработки одного из шаблонов проектирования. Пояснительная записка должна содержать:
Все сторонние материалы должны быть снабжены корректно оформленными библиографическими ссылками.