Теоретический вопрос
1. Сущность программной инженерии (ПИ). Связь c computer science. Особенности в сравне-
нии и другими инженерными дисциплинами. Свод знаний ПИ - SWEBOK
2. Жизненный цикл (ЖЦ) программного продукта и проекта. «Легкие» и «тяжелые» модели
процессов разработки ПО. Этапы и технологические процессы (дисциплины) ЖЦ. Резуль-
таты этапов и основные документы. Каскадная, итеративная и спиральная модели.
3. Унифицированный процесс UP. Фазы жизненного цикла: исследование, анализ, реализация,
внедрение. Содержание и результаты фаз. Итерация и ее рабочие потоки: требования, ана-
лиз, проектирование, реализация, тестирование, их содержание.
4. Фаза исследования. Основные дисциплины и артефакты. Дисциплина «анализ предметной
области»
5. Фаза анализа. Дисциплина «анализ требований». Классификация требований. Функцио-
нальные и нефункциональные, перечень. Атрибуты требований: приоритеты, состояние,
трудоемкость, стабильность, риск, полезность. Способы извлечения и фильтрации требова-
ний.
6. Разработка и управление требованиями. Документ «спецификация требований к ПО ». Диа-
граммы прецедентов.
7. Фаза анализа. Понятие архитектуры, ее многомерность. Основные методы проектирования
и их особенности: структурное, функциональное, объектно-ориентированное, компонент-
ное, проектирование на основе структур данных. Классы анализа. Виды классов: граница,
управление, сущность. Диаграммы устойчивости. Архитектурные аспекты технологическо-
го процесса проектирования (по SWEBOK)
8. Виды моделей. Сущность UML как средства моделирования. Структура UML, статическая
и динамическая составляющие модели. Составные элементы: сущности, отношения, диа-
граммы. Виды сущностей: структурные сущности – класс, интерфейс, кооперация, преце-
дент, активный класс, компонент, узел; поведенческие сущности – взаимодействия, дея-
тельности, автоматы; группирующая сущность – пакет, аннотационная сущность – приме-
чание.
9. UML. Виды отношений: зависимость, ассоциация, агрегация, композиция, включение,
обобщение, реализация. Отношения. Связи – отношения между объектами. Направленность
связи, Сообщения. Диаграммы объектов. Ассоциации – отношения между классами. Свой-
ства ассоциации: имя, кратность, навигация, атрибуты. Рефлексивные ассоциации, деревья
и сети. Классы атрибутов ассоциаций (классы-ассоциации). Зависимости. Зависимости ис-
пользования «use», «call», «parameter», «send» и «instantiate». Зависимости абстракции. За-
висимости доступа.
10. UML. Принятые деления: классификатор-экземпляр, интерфейс-реализация. Расширения:
ограничения, стереотипы. Классификация диаграмм. Диаграммы классов (объектов). Диа-
граммы взаимодействий, коммуникационные диаграммы.
11. UML. Диаграммы деятельности. Технология сетей Петри. Параллелизм. Поток управления,
узел действия, ребро, узел управления, объектный узел, буферизация и в объектном узле.
Объектные узлы – параметры, состояния объектных узлов. Контакты. Прерывающие ребра.
Контакты исключений. Потоки объектов. Их аналоги в программировании
12. UML. Диаграммы состояний. Конечные автоматы.
13. Экстремальное и гибкое программирование. Манифест экстремального программирования
(XP). Гибкие (agile) технологии. SCRUM. Agile UP, ICONIX.
14. SCRUM как технологический фреймворк.. Терминология. Спринт. Митинг. Собственник
проекта. Команда. SCRUM-мастер. Беклог проекта и спринта. Планирование спринта. Диа-
грамма сгорания. Оценка трудоемкости. Покер-планирование.
15. Элементы проектирования. Внутренний и внешний параллелизм. Потоки и синхронизация.
Выполнений заданий асинхронно к GUI. Событийное программирование. Слушатели со-
бытий и CallBack-вызовы. Распределение компонентов. Клиент-серверные приложения:
тонкий и толстый клиент. Обработка ошибок и исключительных ситуаций, управление от-
казоустойчивостью и надежностью.
16. Оценка сроков на основании трудоемкости (по Боэму). Оценка на основе собственного
опыта. Метод PERT. Оценка на основе функциональных точек. Оценка по отраслевым дан-
ным. Метод COCOMO II
17. Понятие программной ошибки. Философия ошибок. Классификационные характеристики
ошибок. Отладка, инспекция и тестирование как этапы поиска ошибок
18. Ошибки вычислений и преобразований. Ошибки структурирования кода. Ошибки форматов
входных данных. Ошибки форматов внутренних данных и соглашений по данным. Ошиб-
ки сборки, конфигурирования, размещения. Ошибки использования ресурсов. Ошибки, свя-
занные с ограничениями по ресурсам. Ошибки реактивности и производительности. Ошиб-
ки параллелизма и синхронизации. Ошибки распределенных систем и протоколов. Ошибки
пользовательского интерфейса
19. Сущность тестирования. Экономическая сторона тестирования. Методологическая сторона
тестирования. Невозможность исчерпывающего тестирования. Алгоритмически неразре-
шимые проблемы тестирования и инспекции. Понятие теста, тестового набора. Критерии
выбора тестов: структурный (белый ящик), функциональный (черный ящик), стохастиче-
ский, мутационный.
20. Структурное тестирование. Тестирование операторов, условий (решений) и путей. Комби-
национное тестирование. Пример.
21. Функциональное тестирование. Классы эквивалентности по входным данным. Проектиро-
вание тестового покрытия. Классы эквивалентности по граничным условиям. Примеры.
22. Отладка и инспекция программного кода. Сущность отладки. Приемы отладки. Инспекция
как неформальный анализ программного кода. Логический и временной анализ. Методы
инспектирования. TDD – разработка, управляемая тестированием.
23. Производящие шаблоны builder, factory, prototype, singleton.
24. Структурные шаблоны adapter, bridge, composite, decorator, faсade
25. Структурные шаблоны flyweight, proxy
26. Поведенческие шаблоны command, iterator.
27. Поведенческие шаблоны mediator, snapshot
28. Поведенческие шаблоны observer, state.
29. Поведенческие шаблоны starategy, method template, visitor.
30. Системные шаблоны model-view-controller (MVC), session, transaction
31. Шаблоны параллелизма Single Threaded Execution, Two-phase Termination, Asynchronous
Task
32. Шаблоны параллелизма Lock Object, Read/Write Lock
33. Шаблон параллелизма Scheduler.
34. Шаблон параллелизма Double Buffering
35. Шаблон параллелизма Producer-consumer
Практический вопрос
Для произвольно выбранного варианта лабораторных работ выполнить черновую разработку одной из компонент:
1. Модель классов предметной области
2. Общая архитектура системы
3. Диаграмма состояний одной из сущностей
4. Диаграмма деятельности для бизнес-процесса
5. Перечень нефункциональных требований (бизнес-требования, системные требования,
бизнес-правила, атрибуты качества)
1.Управление проектами как инженерная дисциплина. Особенности управления программными проектами. Роль и место УПП в программной инженерии (ПИ). Компоненты организационного (менеджмент) и технологического (исполнение) планирования в УПП.
2.Стандартизация в УПП. Стандарт ISO 12207. Свод знаний о программной инженерии SWEBOK. Разделы «Управление в ПИ» и «процессы в ПИ»
3.Жизненный цикл (ЖЦ) программного продукта и проекта. «Легкие» и «тяжелые» модели процессов разработки ПО. Обзор: «как получится», ГОСТы, RUP, MSF. CW-CMM, SEI PSP/TSP, Agile
4.Функциональная, проектная и матричная структура организации, разрабатывающей ПО. Функциональная классификация участников проекта, возможности совмещения функций. CheckList успешности проекта.
5.Фазы ЖЦ: начало, уточнение, построение, внедрение. Результаты этапов и основные документы. Каскадная, итеративная и спиральная модели. Итерация и ее структура: требования, анализ, проектирование, реализация, тестирование. Структура ЖЦ по SWEBOK, UP(RUP) и ISO 12207. Процессы в ЖЦ, классификация. Модульная декомпозиция ЖЦ на процессы. Трудоемкость процессов на различных этапах.
6.Фаза инициации (начала). Структура и содержание концепции: финансовая и стратегическая ценность, риски, обоснование выполнимости (прототипирование), цели и результаты, допущения и ограничения, ключевые участники, ресурсы, оценка трудоемкости и сроков. Результаты завершения фазы инициации по UP.
7.Фаза анализа. Иерархическая структура работ (ИСР). Планирование управления содержанием, организационной структуры, управления конфигурацией и управления качеством. Базовое расписание проекта. Диаграммы Ганта, критический путь. Результаты завершения фазы анализа по UP. Управление требованиями, классы анализа, прецеденты. UML как средство поддержки фазы анализа.
8.Фаза построения (реализации). Процессы итерации фазы реализации: архитектурный и программный дизайн (проектирование), конструирование, тестирование, развертывание. UML как средство поддержки фазы реализации.
9.Определение и характеристики риска. Шкалы оценивания последствий и вероятности. Способы идентификации. Реакция на риски. Наиболее вероятные риски по Боэму и Архипенкову.
10.Качественные оценки рисков. Количественные оценки: анализ чувствительности, дерево решений, имитационное моделирование. Управление, направленное на снижение рисков.
11.Вероятностный характер оценивания, его природа. Последствия «агрессивного» планирования. Исходные данные для оценивания, характеристики проекта, используемые в оценивании. Оценка сроков на основании трудоемкости (по Боэму).
12.Оценка на основе собственного опыта. Метод PERT. Пример оценивания.
13.Оценка по отраслевым данным. Метод COCOMO II
14.Подбор команды проекта. Функциональная организация команды. Мотивация. Эффективное взаимодействие. Кодекс этики и профессиональной деятельности в ПИ.