Экзамен по курсу Технологии проектирования 2012 г.
Билет содержит два вопроса и упражнение.
По каждому вопросу необходимо написать теорию и привести примеры для конкретной темы (тема выдается отдельно).
Темы вопросов:
Методологии и стратегии разработки ПО и модели жизненного цикла:
каскадная модель,
спиральная модель,
инкрементная модель,
макетирование,
модель быстрой разработки RAD,
экстремальное программирование (XP-процесс),
компонентно-ориентированная модель,
тяжеловесные (прогнозирующие) процессы разработки,
адаптивные (облегченные, agile) процессы разработки,
модель, управляемая архитектурой (MDA),
унифицированный процесс (RUP).
Перечень, последовательность и содержимое этапов разработки по методологиям.
Руководство программным проектом. Меры и метрики. Планирование проекта.
Анализ и управление рисками. Планирование проектных задач. Распределение работ.
Структурная декомпозиция работ. Диаграммы Ганта, сетевой график, метод критического пути.
Трассировка и контроль. Вехи. Оценка границ времени выполнения. Типы связей задач.
Рекуррентные и суммарные задачи. Календари ресурсов. Связи задач по ресурсам.
Планирование, определяемое трудозатратами. Распределение ресурсов.
Оценка бюджета проекта:
экспертная,
по аналогии,
алгоритмическая,
на основе графика выполнения.
Отслеживание выполнения проекта. Отслеживание графика выполнения и бюджета.
Оценка затрат на разработку. Точность оценки.
Оценка затрат, длительности и стоимости разработки. Метрический базис.
Оценка размера проекта на основе LOC, FP или OP.
Размерно-ориентированные и функционально-ориентированные метрики.
Вычисление затрат, длительности и стоимости разработки на основе моделей СОСОМО -81,
СОСОМО –II. Модели композиции приложения, раннего этапа проектирования и этапа пост-архитектуры. Анализ чувствительности программного проекта с применением СОСОМО –II.
Унифицированный процесс RUP. Этапы и итерации. Вехи. Управление рисками.
Рабочие процессы, их деятельности и модели:
Определение требований. Кандидаты в требования. Контекст системы. Функциональные и нефункциональные требования. Модели прецедентов (требований) и предметной области. Нахождение актеров и прецедентов. Определение приоритетов и детализация прецедентов. Создание прототипа пользовательского интерфейса. Структурирование модели прецедентов.
Анализ. Модель анализа (пакеты, их зависимости и состав, диаграммы коопераций анализа). Анализ архитектуры, прецедентов, классов и пакетов. Граничные, управляющие и классы сущностей.
Проектирование. Модель проектирования (подсистемы всех уровней, их состав, интерфейсы и зависимости, диаграмма развертывания и активные классы, примеры диаграмм взаимодействия подсистем). Проектирование архитектуры, прецедентов, классов и подсистем.
Реализация. Модели реализации (компоненты, интерфейсы и подсистемы реализации, стереотипы и зависимости файлов). Реализация архитектуры, подсистем, классов. Сборка системы. Тестирование модулей.
Тестирование. Цели, методы и методики тестирования: модульного, интеграционного, регрессионного и системного.
Трассировка между элементами моделей различных рабочих процессов.
Оценка качества проекта на основе объектно-ориентированых метрик.
Определение архитектурно-значимых прецедентов. Модель прецедентов, модель анализа (пакеты, классы и кооперации), модель проектирования (диаграммы развертывания, подсистемы, их интерфейсы и активные классы) и модель реализации (подсистемы и компоненты). Трассировка между элементами моделей.
Проектирование программных систем. Переход от моделей анализа к моделям проектирования.
Предварительное и детальное проектирование. Проектирование GUI.
Структурирование системы. Модели архитектуры:
хранилище данных,
клиент-сервер,
трехуровневая модель,
многоуровневая модель,
каналы и фильтры,
компонентная,
каркасы.
Модели управления:
вызов-возврат,
менеджер,
широковещательная,
с прерываниями.
Интерфейсы взаимодействия на основе:
API,
иерархии классов,
форматов данных,
компонентных технологий.
Декомпозиция подсистем на модули. Модуль и модульность. Оптимальное разбиение.
Связность модуля:
функциональная,
информационная,
коммуникативная,
процедурная,
временная,
логическая,
по совпадению,
объектная.
Сцепление модулей:
по данным,
по образцу,
по управлению,
по внешним ссылкам,
по общей области,
по содержанию.
Сложность модуля: объем, длина, цикломатическая сложность.
Сложность программной системы. Иерархическая структура. Метрики высоты, ширины, невязки. Коэффициенты объединения по входу и по выходу. Оценка сложности системы.
Структурный проект. Состав. Процесс построения. Выделение уровней.
Управление зависимостями. Устранение циклической зависимости. Зависимости наследования, уровней, методов. Делегирование. Зависимости реализации и интерфейсов.
Интерфейсы предоставляемые и требуемые. Использование интерфейсов для устранения циклических зависимостей.
Синхронные и асинхронные сообщения. Организация подписки. Знакомства. Пакет знакомств.
Структурные шаблоны:
MVC,
PCMEF,
PCMEF+.
Подсистемы шаблонов, их назначение и схема взаимодействия. Требования и особенности.
Использование в шаблонах паттернов проектирования: наблюдатель, компоновщик, команда и стратегия, фабричный метод. Делегирование и знакомство. Диаграммы классов и последовательностей.
Проектирование пользовательского интерфейса. Применение паттернов: наблюдатель, абстрактная фабрика, фасад, цепочка обязанностей, посредник, декоратор и команда. Диаграммы классов и последовательностей.
Паттерны для реализации бизнес-логики (Диаграммы классов и последовательностей):
сценарий транзакций,
модель предметной области,
модуль таблицы,
слой служб.
Паттерны для работы с базой данных (Диаграммы классов и последовательностей):
шлюз таблицы,
шлюз записи,
активная запись,
медиатор (посредник).
Паттерны проектирования. Назначение и принцип описания. Параметры.
Паттерны GoF. Структурные, порождающие и поведенческие. Паттерны классов и объектов. Диаграммы классов и последовательностей для паттернов GoF.
Метрики объектно-ориентированных систем:
Чидамбера и Кемерера,
Лоренца и Кидда,
Абреу.
Тестирование ПО. Назначение и цели. Процесс. Возможности.
Тестовый вариант. Критерии разработки и оценки качества.
Функциональное и структурное тестирование. Особенности и возможности.
Тестирование базового пути. Тестирование условий.
Тестирование ветвей и операторов отношений.
Тестирование данных. Тестирование циклов.
Разбиение по эквивалентности. Анализ граничных значений.
Виды тестирования: модульное, интеграционное, регрессионное и системное. Виды системного тестирования.
Драйверы и заглушки.