Проектирование программного обеспечения

Цели и задачи дисциплины

В результате изучения дисциплины слушатели должны познакомиться с основными принципами и приемами объектно-ориентированного проектирования и программирования.

В результате изучения дисциплины слушатели должны знать

уметь

Содержание разделов дисциплины

  1. Базовые концепции. Качество кода. О чем этот курс. Критерии качества программ. Архитектура и метафора. Стиль и концепции именования. Специфика конкретного языка программирования, идиомы.
  2. Понятие дизайна.Программа как растущая сложная система. Защита данных от случайной модификации. Переиспользование кода. Наследование и полиморфизм. Зацепление и связность, закон Деметры. Инкапсуляция и модульность.
  3. Рефакторинг.Что такое рефакторинг. "Код с душком". Поясняющий метод / переменная. Подъем метода / поля. Замена условий полиморфизмом.
  4. Блочное тестирование.Чем грозит рефакторинг. Уверенность в правильности поведения. Assert. Блочные тесты и автоматические приемочные тесты. Test Driven Development. JUnit.
  5. Паттерны проектирования.Что такое паттерны. Классификация паттернов. Interface, Immutable. Iterator. Template Method. Strategy. Adapter. Singleton. Factory.
  6. Антипаттерны.Что такое антипаттерны. False tile. Null reference. Null flag.
  7. Model-View-Controller. Проектирование пользовательского интерфейса. Понятие модели, представления и контроллера. Организация тестирования пользовательского интерфейса.
  8. Паттерны, полезные при работе с пользовательским интерфейсом.Mediator. Facade. Prototype. Memento. Composite. Observer. Proxy. Lazy Computations. Command.
  9. Паттерны Visitor и State.Visitor как средство отчуждения аспекта. Visitor при обработке гетероморфных деревьев. State и конечные автоматы. Другие применения State.

Рекомендуемая литература