Экзамен по курсу Технологии разработки программного обеспечения 2016 г.
Билет содержит два вопроса и упражнение.
По каждому вопросу необходимо написать теорию и привести примеры для конкретной темы (тема выдается отдельно).
Темы вопросов:
Методологии и стратегии разработки ПО и модели жизненного цикла:
l каскадная модель,
l спиральная модель,
l инкрементная модель,
l макетирование,
l модель быстрой разработки RAD,
l экстремальное программирование (XP-процесс),
l компонентно-ориентированная модель,
l тяжеловесные (прогнозирующие) процессы разработки,
l адаптивные (облегченные) процессы разработки,
l Agile (Scrum) процесс,
l унифицированный процесс (RUP).
Перечень, последовательность и содержимое этапов разработки по методологиям.
Примеры итераций, задач, макетов и моделей.
Руководство программным проектом. Планирование проекта. Структурная декомпозиция работ. Распределение задач и ресурсов. Вехи.
Ресурсы и риски. Анализ и управление рисками. Календари ресурсов.
Оценка затрат на разработку. Точность оценки.
Оценка затрат, длительности и стоимости разработки. Метрический базис.
Оценка размера проекта на основе LOC, FP или OP.
Размерно-ориентированные и функционально-ориентированные метрики, их соотношение.
Вычисление затрат, длительности и стоимости разработки на основе моделей СОСОМО –II. Модели композиции приложения, раннего этапа проектирования и этапа пост-архитектуры. Анализ чувствительности программного проекта с применением СОСОМО –II.
Унифицированный процесс RUP. Этапы и итерации. Цели, задачи и деятельность этапов. Вехи. Управление рисками.
Рабочие процессы и их модели:
l Определение требований (деятельность и модели). Кандидаты в требования. Контекст системы. Функциональные и нефункциональные требования. Модели прецедентов (требований) и предметной области. Нахождение актеров и прецедентов. Определение приоритетов и детализация прецедентов. Создание прототипа пользовательского интерфейса. Структурирование модели прецедентов.
l Анализ. Модель анализа (пакеты, их зависимости и состав, диаграммы коопераций анализа). Анализ архитектуры, прецедентов, классов и пакетов (деятельность и модели). Стереотипы классов анализа.
l Проектирование. Модель проектирования (подсистемы всех уровней, их состав, интерфейсы и зависимости, диаграмма развертывания и активные классы, примеры диаграмм взаимодействия подсистем). Проектирование архитектуры, прецедентов, классов и подсистем (деятельность и модели).
l Реализация. Модели реализации (компоненты, интерфейсы и подсистемы реализации, стереотипы и зависимости файлов). Реализация архитектуры, подсистем, классов (деятельность и модели). Сборка системы. Тестирование модулей.
l Тестирование (деятельность и модели). Процедуры, методы и варианты тестирования.
Трассировка между элементами моделей различных рабочих процессов.
Определение архитектурно-значимых прецедентов. Модель прецедентов, модель анализа (пакеты, классы и кооперации), модель проектирования (диаграммы развертывания, подсистемы, их интерфейсы и активные классы) и модель реализации (подсистемы и компоненты). Трассировка между элементами моделей.
Проектирование программных систем. Переход от моделей анализа к моделям проектирования.
Структурирование системы. Модели архитектуры:
l хранилище данных,
l клиент-сервер,
l трехуровневая модель,
l многоуровневая модель,
l каналы и фильтры,
l компонентная,
l каркасы.
Модели управления:
l вызов-возврат,
l менеджер,
l широковещательная,
l с прерываниями.
Интерфейсы взаимодействия на основе:
l API,
l иерархии классов,
l форматов данных,
l компонентных технологий.
Структурный проект. Выделение уровней. Управление зависимостями. Устранение циклической зависимости. Зависимости наследования, уровней, методов. Делегирование. Зависимости реализации и интерфейсов.
Интерфейсы предоставляемые и требуемые. Доминирующий класс.
Использование интерфейсов для устранения циклических зависимостей. Отделенный интерфейс.
(Примеры диаграмм классов и взаимодействия)
Синхронные и асинхронные сообщения. Организация подписки. Знакомства. Пакет знакомств.
(Примеры диаграмм классов и взаимодействия)
Структурные шаблоны:
l MVC,
l PCMEF,
l PCMEF+.
Подсистемы шаблонов, их назначение и схема взаимодействия. Требования и особенности.
(Примеры диаграмм классов и взаимодействия)
Паттерны проектирования. Назначение и принцип описания. Параметры.
Паттерны для реализации бизнес-логики (Примеры диаграмм классов и взаимодействия):
l сценарий транзакций,
l модель предметной области,
l модуль таблицы,
l слой служб.
Назначение, особенности реализации и область применения.
Паттерны для работы с БД (Примеры диаграмм классов и взаимодействия):
l шлюз таблицы,
l шлюз записи,
l активная запись,
l преобразователь данных.
Назначение, особенности реализации и область применения.
Паттерны GoF:
- Порождающие: абстрактная фабрика, строитель, одиночка, фабричный метод, прототип;
- Структурные: фасад, адаптер, компоновщик, мост, приспособленец, декоратор, заместитель; Поведенческие: хранитель, стратегия, команда, состояние, шаблонный метод, итератор, посетитель, посредник, цепочка обязанностей, наблюдатель.
Паттерны классов и объектов. Примеры диаграмм классов и взаимодействия для паттернов GoF.
Назначение, особенности реализации и область применения.
Тестирование ПО. Назначение и цели. Тестовый вариант. Критерии разработки и оценки качества.
Функциональное и структурное тестирование. Особенности и возможности.
Тестирование базового пути. Тестирование условий.
Тестирование данных. Тестирование циклов.
Разбиение по классам эквивалентности. Анализ граничных значений.
Виды тестирования: модульное, интеграционное, регрессионное и системное. Виды системного тестирования.
Восходящее и нисходящее тестирование. Драйверы и заглушки. Автоматизация тестирования.
Автоматизированные средства разработки ПО, их назначение и возможности:
- управление проектами (создание графика, версий и итераций; определение сюжетов и задач; планирование времени и ресурсов; отслеживание состояния проекта; взаимодействие участников проекта, их роли и возможности). Последовательность и состав действий при управлении проектом.
- разработка ПО (построение моделей требований, анализа, проектирования и реализации (виды моделей и используемые нотации); прямое и обратное проектирование; проверка моделей и согласование моделей; использование профилей и стереотипов). Последовательность и состав действий при разработке ПО.
- тестирование ПО (виды автоматического тестирования: модульное, нагрузочное, веб-серверное, пользовательского интерфейса; задание исходных параметров тестирования, результаты тестов и их интерпретация; покрытие кода).
- ведение версий (возможности по работе с локальным и удаленным репозиторием; версии и фиксации; ветки и работа с ними; слияния и разрешения конфликтов; варианты отката изменений; теги и комментирование; возможности по просмотру истории изменений). Последовательность и состав действий при работе с локальным и удаленным хранилищем.
- Создание документации (принципы и возможности автоматического составления документации; возможности по комментированию исходных кодов: проекты, модули, файлы, классы и их компоненты; параметры комментариев; настройки генератора документации).
Пример темы для примеров к вопросам
Дана задача разработки АСУ/ИС: Создать АСУ для наблюдения и корректировки температурного режима некого устройства. АСУ получает данные о температуре от множества датчиков. При выходе из допустимого температурного диапазона формируются и посылаются в устройство команды изменения температуры. Данные о наблюдаемых температурах и управляющих воздействиях фиксируются в журнале. Диапазоны допустимых температур и наборы корректирующих команд хранятся в БД. АРМ оператора АСУ позволяет просматривать журнал и наполнять БД.
Примеры упражнения (для конкретной темы, которая выдается отдельно)
(для указанной подсистемы) В соответствии с методологией RUP выполнить (по варианту):· Составить и детализировать модели прецедентов (требований) и предметной области. Преобразовать ее к модели анализа (пакеты анализа и сервисные пакеты, диаграммы классов анализа и их кооперации, состав и зависимости пакетов). Указать трассировку между элементами моделей.
· Составить модель анализа (пакеты, их зависимости и состав, диаграммы коопераций анализа). Преобразовать ее к модели проектирования (подсистемы всех уровней, их интерфейсы и зависимости, диаграмма развертывания, примеры диаграмм классов и их взаимодействия). Указать трассировку между элементами моделей.
· Составить модель проектирования (подсистемы всех уровней, их состав, интерфейсы и зависимости, диаграмма развертывания и активные классы, примеры диаграмм взаимодействия подсистем). Преобразовать ее к модели реализации (компоненты, интерфейсы и подсистемы реализации, стереотипы и зависимости файлов). Указать трассировку между элементами моделей.
· Определить архитектурно-значимые прецеденты. Составить для них модель прецедентов, модель анализа (пакеты, классы и кооперации), модель проектирования (диаграммы развертывания и подсистем) и модель реализации (подсистемы и компоненты). Указать трассировку между элементами моделей.
Для указанного прецедента построить диаграммы классов и последовательностей с применением паттерна реализации бизнес-логики (по варианту):· сценарий транзакций,
· модель предметной области,
· модуль таблицы,
· слой служб,
и паттерна взаимодействия с базой данных (по варианту):
· шлюз таблицы данных,
· шлюз записи данных,
· активная запись,
· преобразователь данных.
Для указанного прецедента определить набор пакетов в соответствии (по варианту):l MVC,
l PCMEF,
l PCMEF+,
указать входящие в пакеты классы, интерфейсы и зависимости между ними.
Построить диаграммы классов и последовательностей.
Продемонстрировать пример использования (по варианту):
l делегирования,
l отделенного интерфейса,
l оповещения,
l знакомства,
l пакета знакомств.
Построить диаграммы классов и последовательностей.
Для указанного прецедента построить диаграммы классов и последовательностей с применением набора паттернов GoF (по варианту). Указать роли классов прецедента в паттернах.
Для указанной системы определить перечень, последовательность и содержимое этапов разработки АСУ/ИС в соответствии с одной из методологий (по варианту) разработки:
l каскадная модель,
l спиральная модель,
l инкрементная модель,
l макетирование,
l модель быстрой разработки RAD,
l экстремальное программирование (XP-процесс),
l компонентно-ориентированная модель,
l Agile - подход,
l унифицированный процесс (RUP).
Определить задачи и вехи, ресурсы и риски проекта.
Выделить (для указанной ИС/АСУ) подсистемы, определить их функции и методы их взаимодействия по управлению и данным, используя модель архитектуры (по варианту):
l хранилище данных,
l клиент-сервер,
l трехуровневая модель,
l многоуровневая модель,
l каналы и фильтры,
l компонентная,
l каркасы.
и модель управления (по варианту):
l вызов-возврат,
l менеджер,
l широковещательная,
l с прерываниями.
Привести пример взаимодействия подсистем на основе (по варианту):
l API,
l иерархии классов,
l форматов данных,
l компонентных технологий.
Литература
l Конспект лекций по курсу Технология проектирования.
l Орлов разработки программного обеспечения. - Спб.: Питер. - 2002 г. (ссылку см. на сайте кафедры).
l Унифицированный процесс разработки программного обеспечения: учебное пособие / , – М.: МГТУ им. . – 2015 г. http://ebooks. bmstu. ru/catalog/193/book1303.html
l рхитектура корпоративных программных приложений. – М.: Издательский дом Вильямс. – 2008г.
l и др. Приемы объектно-ориентированного проектирования. Паттерны проектирования. – СПб.:Питер. - 2009 г.
Дополнительная
l бзор паттернов проектирования. - Ciforum, 2005 г. - Доступ http://citforum. ru/SE/project/pattern/
l емесло программиста. - Спб.: Символ-плюс. - 2009 г.
l , Лионг программная инженерия. - М.: Бином. - 2009 г.
l Якобсон А, Рамбо Дж. Унифицированный процесс разработки программного обеспечения. - Спб.: Питер. - 2002 г.



