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