Программа экзамена по Технологии программирования (2012 г.)
Технологические подходы к разработке программ.
Принципы быстрой разработки и экстремального программирования
1. Общая классификация технологических подходов и процессов разработки.
Традиционный подход к разработке программ (каскадный или водопадный
процесс) и итеративные подходы.
2. Унифицированный процесс (UP) и Rational Unified Process (RUP).
3. Принципы быстрой разработки (agile development).
Манифест альянса быстрой разработки.
4. Основные принципы и практики экстремального программирования (XP). Отличия
XP от каскадного и унифицированного подходов.
Начальные этапы разработки. Анализ требований. Прецеденты и
Пользовательские истории. Дополнительные требования
5. Виды требований. Функциональные и нефункциональные требования,
ограничения.
6. Понятие о прецедентах. Виды описания прецедентов. Анализ прецедентов.
7. Пользовательские истории в XP. Их отличия от прецедентов.
8. Анализ дополнительных требований.
9. Планирование разработки. Экстремальное планирование. Общий план. Планы
версий и итераций, текущее планирование. Измерение скорости работы.
10. Архитекутурное проектирование. Задачи. Архитектурные паттерны.
Основы ООП. Моделирование предметной области
11. Понятие о классе и объекте. Атрибуты (поля) и методы классов. Инкапсуляция,
наследование, полиморфизм.
12. Отношения между классами и объектами. Виды отношений.
13. Ассоциация, агрегация и композиция. Отношение зависимости.
14. Наследование и реализация. Сравнение наследования и делегирования.
15. Абстрактные классы и интерфейсы. Назначение интерфейсов.
16. Задача классификации на примере анализа предметной области. Варианты
выделения классов.
17. Базовые принципы объектного проектирования SOLID
UML и MDD
18. Понятие об UML. Назначение UML. Виды диаграмм UML.
19. Диаграммы классов и пакетов. Диаграммы прецедентов.
20. Диаграммы взаимодействия.
21. Диаграммы активности и состояний.
22. Диаграммы компонентов и размещения.
23. Разработка, управляемая моделью (MDD). Основные принципы. Использование
диаграмм UML. Пример MDD.
24. Использование CASE — средств в процессе MDD. Reverse Engeneering.
Практики экстремального программирования. Планирование, тестирование, рефакторинг
25. Понятие о модульном тестировании. Назначение, способы реализации.
26. Каталог шаблонов тестирования (виды модульных тестов).
27. Понятие о разработке через тестирование (TDD).
28. Оболочка xUnit/NUnit. Назначение, структура, применение.
29. Понятие о приемочном тестировании. Назначение, автоматизация.
30. Понятие о рефакторинге.
31. Каталог шаблонов рефакторинга.
Шаблоны (паттерны) проектирования
32. Понятие о шаблонах (паттернах). Паттерны проектирования. Классификация
паттернов.
33. Паттерны GoF. Классификация паттернов GoF. Назначение паттернов.
34. Шаблоны структурирования (Адаптер, Компоновщик, Фасад, Заместитель и др.)
35. Шаблоны поведения (Итератор, Наблюдатель, Стратегия, Шаблонный метод и др.)
36. Шаблоны создания (Фабричный метод, Абстрактная фабрика, Одиночка).
37. Архитектурные шаблоны (Слои, Контроллер и др.). Шаблоны создания
корпоративных приложений (М.Фаулер).
38. Шаблон Слои и концепция расслоения приложений. Трех- и многоуровневые
приложения.
Использование технологий баз данных в объектно-ориентированных проектах
39. Виды приложений, работающих с БД и варианты использования БД.
40. Применение шаблонов при работе с БД (Фасад, Заместитель, Активная запись, DIP,
модуль таблицы, преобразователь данных-маппер, репозиторий, ORM и др.).
41. Преимущества и недостатки размещения логики предметной области в БД и в
классах приложения.
Реализация пользовательского интерфейса
42. Виды пользовательского интерфейса. Роль интерфейса в приложении.
Проблематика отделения интерфейса от основной части приложения.
Анти-паттерн Smart User Interface.
43. Применение шаблонов GoF при построении пользовательского интерфейса
(Наблюдатель, Контроллер, Фасад и др.).
44. Шаблоны MVC, MVP, MVVM.
Упаковка проектов и построение распределенных приложений
45. Задача упаковки программных проектов. Общие принципы упаковки (REP, CCP и
др). Понятие о пакете.
46. Метрики упаковки. Способы улучшения метрик.
47. Понятие о распределенных приложениях. Виды распределенных приложений.
Проблематика построения распределенных приложений.
Средства и среды разработки
48. Классификация средств и сред создания программ.
49. CASE средства. Преимущества и недостатки. Примеры CASE средств. Понятие о
возвратном проектировании. Стандарты IDEF. Понятие о MDD/MDA.
50. Интегрированные среды (IDE) и визуальные средства быстрой разработки (RAD).
Преимущества и недостатки.
51. Средства поддержки коллективной разработки.
52. Понятие о защищенном программировании.