
- •Гагарина. Л.Г., Федоров а.Р., Федоров п.А. Введение в архитектуру проектирования программного обеспечения Москва
- •Оглавление
- •5.11. Паттерны grasp
- •Глава 1. Архитектура как форма концептуального существования по
- •1.1. Определения архитектуры по и ее значимость
- •1.2. Место архитектурных решений
- •1.3. Роль архитектурных решений
- •1.4. Архитектурные концептуальные схемы. Определение и ретроспектива
- •Глава 2. Нормативные практики архитектурного описания по
- •2.1. Основные понятия
- •2.2. Содержание стандарта
- •2.3. Представления схемы ieee-1471
- •Глава 3. Рациональный процесс архитектурного моделирования
- •3.1. Архитектурные парадигмы
- •3.2. Примеры архитектурных стилей и моделей
- •Глава 4. Сравнительное сопоставление архитектурных видов
- •4.1. Сопоставление систем видов
- •4.2. Примеры систем видов
- •Языки описания архитектуры
- •Глава 5. Проектирование с учетом будущих изменений.
- •5.1. Что такое паттерн проектирования.
- •5.2. Как решать задачи проектирования с помощью паттернов
- •3. Зависимость от аппаратной и программной платформ.
- •5.4. Порождающие паттерны
- •5.4.1. Паттерн Фабричный метод (Factory Method) - уровень класса
- •Классический вариант фабричного метода, когда интерфейс фабричных методов объявляется в независимом классе-фабрике, а их реализация определяется конкретными подклассами этого класса (Рис. 33).
- •Реализация паттерна Factory Method на основе обобщенного конструктора
- •Void info() {
- •Void info() {
- •Void info() {
- •Int main()
- •V.Push_back( Warrior::createWarrior( Infantryman_id));
- •V.Push_back( Warrior::createWarrior( Archer_id));
- •V.Push_back( Warrior::createWarrior( Horseman_id));
- •Void info() {
- •Void info() {
- •Void info() {
- •Int main()
- •5.4.2. Паттерн Одиночка (Singleton) - уровень объекта
- •Классическая реализация Singleton
- •If(!p_instance)
- •Singleton Мэйерса
- •Улучшенная версия классической реализации Singleton
- •Void initialize( Singleton* p );
- •Void SingletonDestroyer::initialize( Singleton* p ) {
- •If(!p_instance) {
- •Использование нескольких взаимозависимых одиночек
- •Int main()
- •5.4.3. Паттерн Абстрактная фабрика (Abstract Factory) - уровень объекта
- •Пример кода для паттерна Abstract Factory
- •Void info() {
- •Int main()
- •5.4.4. Паттерн Строитель (Builder) - уровень объекта
- •Void info() {
- •Int main()
- •Infantryman
- •Infantryman
- •5.4.5. Паттерн Прототип (Prototype) - уровень объекта
- •Void info() {
- •Void info() {
- •5.4.6. Обсуждение порождающих паттернов
- •5.5. Структурные паттерны
- •5.5.1. Паттерн Адаптер, обертка (Adapter, wrapper)
- •Адаптер объекта применяет композицию объектов.
- •Int main()
- •Void adjust() {} // Настройка датчика (защищенный метод)
- •5.5.2. Паттерн Мост (Bridge)
- •Void log( string & str );
- •Достоинства паттерна Bridge
- •5.5.3. Паттерн компоновщик (Composite)
- •Описание паттерна Composite
- •Virtual void addUnit(Unit* p) {
- •Int main()
- •Virtual CompositeUnit* getComposite() {
- •Void addUnit(Unit* p);
- •Достоинства паттерна Composite
- •Недостатки паттерна Composite
- •5.5.4. Паттерн декоратор (Decorator , wrapper, обертка)
- •Реализация паттерна Decorator
- •Int width, height;
- •5.5.5. Паттерн фасад (Facade)
- •Void submitNetworkRequest()
- •If (_engineer.CheckOnStatus())
- •5.5.6. Паттерн приспособленец (Flyweight)
- •Структура паттерна приспособленец (Flyweight)
- •Icon(char *fileName)
- •Icon *FlyweightFactory::_icons[];
- •5.5.7 Паттерн заместитель (Proxy, surrogate, суррогат)
- •Void draw()
- •Int balance;
- •5.5.8. Обсуждение структурных паттернов
- •5.6. Паттерны поведения
- •5.6.1. ПаттернЦепочка обязанностей (Chain of Responsibility)
- •Void setNext(Base *n)
- •5.6.2. Паттерн Command (команда)
- •Реализация паттерна Command
- •5.6.3. Паттерн Interpreter (интерпетатор)
- •Совместное использование паттернов Interpreter и Template Method
- •Int interpret(char*); // interpret() for client
- •Virtual void interpret(char *input, int &total)
- •Int index;
- •If (!strncmp(input, nine(), 2))
- •Virtual char one(){}
- •Int items[10];
- •Int main()
- •5.6.5. Паттерн Mediator (посредник)
- •Virtual void changed();
- •Void Widget::changed()
- •Int main()
- •5.6.6. Паттерн Memento (хранитель)
- •Int _state;
- •Void static redo()
- •Int main()
- •Integer: 11
- •5.6.7. Паттерн Observer (наблюдатель)
- •Int value;
- •5.6.8. Паттерн State
- •Void setCurrent(State *s)
- •5.6.9. Паттерн Strategy
- •Void compress( const string & file ) {
- •5.6.10. Паттерн Template Method (шаблонный метод)
- •Void a()
- •V.Visit(this);
- •V.Visit(this);
- •V.Visit(this);
- •Int main()
- •5.6.12. Обсуждение паттернов поведения
- •5.7. Дальнейшее развитие идеи паттернов проектирования
- •5.8. Архитектурные системные паттерны
- •5.9. Паттерны управления
- •5.9.1. Паттерны централизованного управления
- •5.10. Паттерны интеграции корпоративных информационных систем
- •5.10.1. Структурные паттерны интеграции
- •5.10.2. Паттерны по методу интеграции
- •5.10.3. Паттерны интеграции по типу обмена данными
- •5.12. Антипаттерны (anti-patterns)
- •Глава 6. Архитектура и характеристики качества
- •6.1. Специфика требований к качеству по
- •6.2. Подход к построению архитектуры с позиций качества
- •6.3. Подходы к оцениванию архитектуры
Гагарина. Л.Г., Федоров а.Р., Федоров п.А. Введение в архитектуру проектирования программного обеспечения Москва
2015
Гагарина. Л.Г., Федоров А.Р., Федоров П.А.
Приведен систематизированный курс одной из дисциплин направления специализированной подготовки бакалавров по направлению «Программная инженерия».
Рассмотрены первостепенные задачи в области разработки (ДОПИШЕМ)…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………….
Строгий стиль изложения сопровождается доступными для понимания пояснениями и многочисленными примерами, необходимыми для глубокого усвоения материала.
Книга адресована студентам старших курсов технических специальностей, соискателям степени бакалавра по направлению 09.04.03 «Программная инженерия», аспирантам, научным сотрудникам, преподавателям высших учебных заведений, слушателям институтов повышения квалификации; может быть использована для самообразования
Рецензент:
Доктор техн. наук, профессор А.С.Бондаревский
ISBN _______ Гагарина Л.Г,Федоров А.Р., Федоров .П.А.
2015
Оглавление
Предисловие…………………………………………………………………………..
Глава1. Архитектура как форма концептуального существования ПО
1.1. Определения архитектуры ПО и ее значимость
1.2. Место архитектурных решений
1.3. Роль архитектурных решений
1.4. Архитектурные концептуальные схемы. Определение и ретроспектива
Архитектурная концептуальная схема Дж. Захмана
Архитектурная концептуальная схема DoDAF
Архитектурная концептуальная схема TOGAF
Архитектурная схема FEAF
Глава 2. Глава 2. Нормативные практики архитектурного описания ПО
2.1. Основные понятия
2.2. Содержание стандарта IEEE 1471-2000
2.3. Представления схемы IEEE-1471
Глава 3. Рациональный процесс архитектурного моделирования
3.1. Архитектурные парадигмы
Объектно-ориентированная парадигма.
Компонентно-ориентированная парадигма.
Сервисно-ориентированная парадигма.
3.2. Примеры архитектурных стилей и моделей
Архитектура файл-сервер
Клиент-серверная модель
Трех-уровневая модель
Blackboard
Front end and back end
Peer-to-peer
Пайпы и фильтры
Сервис-ориентированная архитектура
Архитектура, управляемая событиями
REST
Model Driven Architecture
Model-view-controller
Глава 4. Сравнительное сопоставление архитектурных видов
4.1. Сопоставление систем видов
Архитектура «4+1»
Архитектурные решения SEI
Архитектурные решения RM ODP
Архитектурные решения SIMENS
Архитектурные решения ADS
4.2. Примеры систем видов
4.3. Языки описания архитектуры
Глава 5. Проектирование с учетом будущих изменений.
5.1. Что такое паттерн проектирования.
5.2. Как решать задачи проектирования с помощью паттернов
5.3. Каталог паттернов проектирования (GoF)
5.4. Порождающие паттерны
5.4.1. Паттерн Фабричный метод (Factory Method)
5.4.2. Паттерн Одиночка (Singleton
5.4.3. Паттерн Абстрактная фабрика (Abstract Factory)
5.4.4. Паттерн Строитель (Builder) - уровень объекта
5.4.5. Паттерн Прототип
5.4.6. Обсуждение порождающих паттернов
5.5. Структурные паттерны
5.5.1. Паттерн Адаптер
5.5.2. Паттерн Мост
5.5.3. Паттерн Компоновщик
5.5.4. Паттерн Декоратор
5.5.5. Паттерн Фасад
5.5.6. Паттерн Приспособленец
5.5.7. Паттерн Заместитель
5.5.8. Обсуждение структурных паттернов
5.6. Паттерны поведения
5.6.1. Паттерн Цепочка обязанностей
5.6.2. Паттерн Команда
5.6.3. Паттерн Интерпретатор
5.6.4. Паттерн Итератор
5.6.5. Паттерн Посредник
5.6.6. Паттерн Хранитель
5.6.7. Паттерн Наблюдатель
5.6.8. Паттерн Состояние
5.6.9. Паттерн Стратегия
5.6.10. Паттерн Шаблонный метод
5.6.11. Паттерн Посетитель
5.6.12. Обсуждение паттернов поведения
5.7. Дальнейшее развитие идеи паттернов проектирования
Архитектурные паттерны
Паттерны проектирования
Идиомы
5.8. Архитектурные системные паттерны
Репозиторий
Паттерн клиент/сервер
Паттерн обьектно - ориентированный
Паттерн многоуровневая система или абстрактная машина
Паттерн потоки данных (конвейер или фильтр)
5.9. Паттерны управления
5.9.1. Паттерны централизованного управления
Вызов - возврат
Диспетчер
Передача сообщений
5.9.2. Паттерны, обеспечивающие взаимодействие с базой данных
Активная запись
Единица работы
Загрузка по требованию
Коллекция обьектов
Множество записей
Наследование с одной таблицей
Наследование с таблицами для каждого класса
Оптимистическая автономная блокировка
Отображение с помощью внешних ключей
Отображение с помощью таблицы ассоциаций
Пессимистическая автономная блокировка
Поле идентификации
Преобразователь данных
Cохранение сеанса на стороне клиента
Cохранение сеанса на стороне сервера
Шлюз записи данных
Шлюз таблицы данных
5.10. Паттерны интеграции корпоративных информационных систем
5.10.1. Структурные паттерны интеграции
Взаимодействие "точка - точка"
Взаимодействие "звезда"
Смешанный способ взаимодействия
5.10.2. Паттерны по методу интеграции
Интеграция систем по данным
Функционально-центрический подход
Объектно-центрический подход
Интеграция на основе единой понятийной модели предметной области
5.10.3. Паттерны интеграции по типу обмена данными
Файловый обмен
Общая база данных
Удаленный вызов процедур
Обмен сообщениями