Принципы, паттерны и методологии разработки программного обеспечения, Чернышев С.А., 2022.
В учебном пособии рассматриваются существующие принципы разработки программных продуктов, такие как SOLID, KISS, DRY, YAGNI и чистая архитектура, общие паттерны распределения обязанностей (GRASP), а также порождающие, структурные и поведенческие паттерны проектирования GoF. Приводятся сильные и слабые стороны существующих методологий разработки программного обеспечения.
Весь материал, который приводится в учебном пособии, в той или иной мере применяется на практике в продуктовых компаниях IТ-сегмента.
Все исходные коды рассматриваемых примеров можно скачать с репозитория автора на GitHub.
Соответствует актуальным требованиям федерального государственного образовательного стандарта высшего образования.
Издание адресовано студентам высших учебных заведений, обучающимся по ИТ направлениям.
Принцип единственной ответственности (SRP).
Данный принцип является самым неоднозначным и трудным к пониманию. В классическом виде SRP звучит следующим образом [4]: «Модуль должен иметь одну и только одну причину для изменения».
По словам Мартина, в данной формулировке многие этот принцип поняли не так, как он задумывал. Так, например, в различных источниках говорится, что при соблюдении принципа SRP модуль (класс) должен отвечать за что-то одно. По сути, такая трактовка является не чем иным, как переносом принципа разбиения большой по размеру функции на более маленькие: «функция должна делать что-то одно и только одно», который не входит в SOLID.
Поскольку разрабатываемые программные продукты ориентированы на их пользователей, стейкхолдеров (заинтересованных лиц), а также требования заказчика, то именно они и выступают той самой «причиной для изменения», про которую говорится в классической формулировке SRP. Из-за сложившегося положения дел Р. Мартин ее перефразировал следующим образом: «Модуль должен отвечать за одного и только за одного пользователя или заинтересованное лицо».
ОГЛАВЛЕНИЕ.
Введение.
Тема 1. Принципы разработки программных продуктов.
1.1. Принципы SOLID.
1.1.1. Принцип единственной ответственности (SRP).
1.1.2. Принцип открытости/закрытости (ОСР).
1.1.3. Принцип подстановки Барбары Дисков (LSP).
1.1.4. Принцип разделения интерфейсов (ISP).
1.1.5. Принцип инверсии зависимости (DIP).
1.2. Принцип программирования KISS.
1.3. Принцип программирования DRY.
1.4. Принцип программирования YAGNI.
1.5. Чистая архитектура.
Резюме.
Вопросы для самопроверки.
Тема 2. Общие паттерны распределения обязанностей (GRASP).
2.1. Проектирование на основе обязанностей и GRASP.
2.2. Паттерн Создатель (Creator).
2.3. Паттерн Информационный эксперт (Information Expert).
2.4. Паттерн Слабая связность (Low Coupling).
2.5. Паттерн Контроллер (Controller).
2.6. Паттерн Высокое зацепление (High Cohesion).
2.7. Паттерн Полиморфизм (Polymorphism).
2.8. Паттерн Чистая выдумка (Pure Fabrication).
2.9. Паттерн Посредник (Indirection).
2.10. Паттерн Устойчивость к изменениям (Protected Variations).
Резюме.
Вопросы для самопроверки.
Тема 3. Паттерны проектирования GoF.
3.1. Порождающие паттерны.
3.1.1. Паттерн Фабричный метод (Factory Method).
3.1.2. Паттерн Абстрактная фабрика (Abstract Factory).
3.1.3. Паттерн Строитель (Builder).
3.1.4. Паттерн Прототип (Prototype).
3.1.5. Паттерн Одиночка (Singleton).
3.1.6. Паттерн Моностатический синглтон (Borg).
3.1.7. Паттерн Ленивая инициализация (Lazy Initialization).
3.1.8. Паттерн Цепочка методов (Method Chaining).
3.1.9. Паттерн Объектный пул (Object Pool).
3.2. Структурные паттерны.
3.2.1. Паттерн Адаптер (Adapter).
3.2.2. Паттерн Мост (Bridge).
3.2.3. Паттерн Компоновщик (Composite).
3.2.4. Паттерн Декоратор (Decorator).
3.2.5. Паттерн Фасад (Facade).
3.2.6. Паттерн Приспособленец (Flyweight).
3.2.7. Паттерн Заместитель (Proxy).
3.3. Поведенческие паттерны.
3.3.1. Паттерн Цепочка обязанностей (Chain of Responsibilities).
3.3.2. Паттерн Команда (Command).
3.3.3. Паттерн Итератор (Iterator).
3.3.4. Паттерн Посредник (Mediator).
3.3.5. Паттерн Хранитель (Memento).
3.3.6. Паттерн Наблюдатель (Observer).
3.3.7. Паттерн Состояние (State).
3.3.8. Паттерн Стратегия (Strategy).
3.3.9. Паттерн Шаблонный метод (Template Method).
3.3.10. Паттерн Посетитель (Visitor).
Резюме.
Вопросы и задания для самопроверки.
Тема 4. Методологии разработки программного обеспечения.
4.1. Методология Test-Driven Development.
4.2. Методология Domain-Driven Design.
4.2.1. Стратегические паттерны DDD.
4.2.2. Тактические паттерны DDD.
4.2.3. Приемы и принципы DDD.
4.2.4. Преимущества и недостатки.
4.3. Методология Behavior-Driven Development.
4.4. Методология Type-Driven Development.
4.5. Методология Model-Driven Development.
4.6. Методология Feature-Driven Development.
4.6.1. Моделирование объектов предметной области.
4.6.2. Разработка по функциям.
4.6.3. Единоличное владение классом или фрагментом кода.
4.6.4. Функциональные команды.
4.6.5. Инспекции.
4.6.6. Постоянные сборки приложения.
4.6.7. Управление конфигурацией.
4.6.8. Отчетность/Видимость результатов.
4.6.9. Преимущества и недостатки.
4.7. Методология Comment-Driven Development.
4.8. Методология Panic-Driven Development.
Резюме.
Вопросы и задания для самопроверки.
Список используемых источников.
Новинки по дисциплине «Методология разработки программного обеспечения» и смежным дисциплинам.
Купить .
Данный принцип является самым неоднозначным и трудным к пониманию. В классическом виде SRP звучит следующим образом [4]: «Модуль должен иметь одну и только одну причину для изменения».
По словам Мартина, в данной формулировке многие этот принцип поняли не так, как он задумывал. Так, например, в различных источниках говорится, что при соблюдении принципа SRP модуль (класс) должен отвечать за что-то одно. По сути, такая трактовка является не чем иным, как переносом принципа разбиения большой по размеру функции на более маленькие: «функция должна делать что-то одно и только одно», который не входит в SOLID.
Поскольку разрабатываемые программные продукты ориентированы на их пользователей, стейкхолдеров (заинтересованных лиц), а также требования заказчика, то именно они и выступают той самой «причиной для изменения», про которую говорится в классической формулировке SRP. Из-за сложившегося положения дел Р. Мартин ее перефразировал следующим образом: «Модуль должен отвечать за одного и только за одного пользователя или заинтересованное лицо».
ОГЛАВЛЕНИЕ.
Введение.
Тема 1. Принципы разработки программных продуктов.
1.1. Принципы SOLID.
1.1.1. Принцип единственной ответственности (SRP).
1.1.2. Принцип открытости/закрытости (ОСР).
1.1.3. Принцип подстановки Барбары Дисков (LSP).
1.1.4. Принцип разделения интерфейсов (ISP).
1.1.5. Принцип инверсии зависимости (DIP).
1.2. Принцип программирования KISS.
1.3. Принцип программирования DRY.
1.4. Принцип программирования YAGNI.
1.5. Чистая архитектура.
Резюме.
Вопросы для самопроверки.
Тема 2. Общие паттерны распределения обязанностей (GRASP).
2.1. Проектирование на основе обязанностей и GRASP.
2.2. Паттерн Создатель (Creator).
2.3. Паттерн Информационный эксперт (Information Expert).
2.4. Паттерн Слабая связность (Low Coupling).
2.5. Паттерн Контроллер (Controller).
2.6. Паттерн Высокое зацепление (High Cohesion).
2.7. Паттерн Полиморфизм (Polymorphism).
2.8. Паттерн Чистая выдумка (Pure Fabrication).
2.9. Паттерн Посредник (Indirection).
2.10. Паттерн Устойчивость к изменениям (Protected Variations).
Резюме.
Вопросы для самопроверки.
Тема 3. Паттерны проектирования GoF.
3.1. Порождающие паттерны.
3.1.1. Паттерн Фабричный метод (Factory Method).
3.1.2. Паттерн Абстрактная фабрика (Abstract Factory).
3.1.3. Паттерн Строитель (Builder).
3.1.4. Паттерн Прототип (Prototype).
3.1.5. Паттерн Одиночка (Singleton).
3.1.6. Паттерн Моностатический синглтон (Borg).
3.1.7. Паттерн Ленивая инициализация (Lazy Initialization).
3.1.8. Паттерн Цепочка методов (Method Chaining).
3.1.9. Паттерн Объектный пул (Object Pool).
3.2. Структурные паттерны.
3.2.1. Паттерн Адаптер (Adapter).
3.2.2. Паттерн Мост (Bridge).
3.2.3. Паттерн Компоновщик (Composite).
3.2.4. Паттерн Декоратор (Decorator).
3.2.5. Паттерн Фасад (Facade).
3.2.6. Паттерн Приспособленец (Flyweight).
3.2.7. Паттерн Заместитель (Proxy).
3.3. Поведенческие паттерны.
3.3.1. Паттерн Цепочка обязанностей (Chain of Responsibilities).
3.3.2. Паттерн Команда (Command).
3.3.3. Паттерн Итератор (Iterator).
3.3.4. Паттерн Посредник (Mediator).
3.3.5. Паттерн Хранитель (Memento).
3.3.6. Паттерн Наблюдатель (Observer).
3.3.7. Паттерн Состояние (State).
3.3.8. Паттерн Стратегия (Strategy).
3.3.9. Паттерн Шаблонный метод (Template Method).
3.3.10. Паттерн Посетитель (Visitor).
Резюме.
Вопросы и задания для самопроверки.
Тема 4. Методологии разработки программного обеспечения.
4.1. Методология Test-Driven Development.
4.2. Методология Domain-Driven Design.
4.2.1. Стратегические паттерны DDD.
4.2.2. Тактические паттерны DDD.
4.2.3. Приемы и принципы DDD.
4.2.4. Преимущества и недостатки.
4.3. Методология Behavior-Driven Development.
4.4. Методология Type-Driven Development.
4.5. Методология Model-Driven Development.
4.6. Методология Feature-Driven Development.
4.6.1. Моделирование объектов предметной области.
4.6.2. Разработка по функциям.
4.6.3. Единоличное владение классом или фрагментом кода.
4.6.4. Функциональные команды.
4.6.5. Инспекции.
4.6.6. Постоянные сборки приложения.
4.6.7. Управление конфигурацией.
4.6.8. Отчетность/Видимость результатов.
4.6.9. Преимущества и недостатки.
4.7. Методология Comment-Driven Development.
4.8. Методология Panic-Driven Development.
Резюме.
Вопросы и задания для самопроверки.
Список используемых источников.
Новинки по дисциплине «Методология разработки программного обеспечения» и смежным дисциплинам.
Теги: учебник по информатике :: информатика :: компьютеры :: Чернышев
Смотрите также учебники, книги и учебные материалы:
- Криптография с секретным ключом, Рубин Ф., 2023
- Основы теории построения квантовых компьютеров и моделирование квантовых алгоритмов, Монография, Гузик В.Ф., Гушанский С.М., Ляпунцова Е.В., Потапов В.С., 2019
- Компьютер глазами хакера, Шалин П., 2021
- Надежность информационных систем, Лекционный материал, Яковлев А.В., 2004
- Информационная безопасность и защита информации, Зенков А.В., 2022
- Анализ и проектирование систем с использованием UML, Галиаскаров Э.Г., Воробьев А.С., 2022
- Методика преподавания информатики, Учебное пособие, Лапчик М.П., Семакин И.Г., Хеннер Е.К., 2001
- Adobe Photoshop СС 2019, Мастер-класс Евгении Тучкевич, Тучкевич Е.И., 2020