Проектирование программного обеспечения
Цели и задачи дисциплины
В результате изучения дисциплины слушатели должны познакомиться с основными принципами и приемами объектно-ориентированного проектирования и программирования.
В результате изучения дисциплины слушатели должны знать
- основные понятия дизайна объектно-ориентированных программ,
- идеи рефакторинга и unit-тестирования,
- основные шаблоны разработки объектно-ориентированных программ,
- писать unit-тесты, используя среду JUnit,
- применять шаблоны разработки объектно-ориентированных программ.
Содержание разделов дисциплины
- Введение. О чем этот курс. Критерии качества программ. Надежность, производительность, простота поддержки и развития, безопасность, удобство для пользователя.
- Основные принципы дизайна. Разделение данных и кода. Защита данных от случайного изменения. Единство дизайна внутри программы. Повторное использование кода.
- Разные подходы к дизайну программы. Процедурно-ориентированный дизайн. Обектно-ориентированный дизайн.
- Архитектура программы. Разделение программы на части (слои). Разные типы общения между слоями. Компонентный дизайн.
- Простой пример полезной техники — assert. assert в Java.
- Рефакторинг. Понятие рефакторинга. Ситуации, в которых полезен рефакторинг. Примеры плохого кода, нуждающегося в рефакторинге.
- Рефакторинг и unit-тестирование. Опасности рефакторинга. Важность внутренних тестов. Unit-тесты.
- Junit.
- Конкретные приемы рефакторинга. Введение/удаление временной переменной. Extract/inline method. Перемещение метода/поля. Расщепление/слияние классов. Замена наследования включением и обратно. Композиция рефакторингов.
- Шаблоны проектирования. Общая идея. Полезность знания конкретных шаблонов.
- Простые примеры. Interface. Delegation. Immutable. Proxy.
- Структурные шаблоны. Adapter. Decorator. Iterator. Facade.
- Генерирующие шаблоны. Factory Method. Factory. Builder. Singleton. Object Pool.
- Шаблоны поведения. Command. Mediator. State. Null Object. Observer. Visitor.
Рекомендуемая литература
- Основная литература
- Э. Гамма и др. “Приемы объектно-ориентированного проектирования. Паттерны проектирования” СПб, Питер, 2001
- М. Фаулер. “Рефакторинг” СПб, Символ, 2003