Экзамен по курсу Технологии разработки программного обеспечения 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 г.