Коктейль waterfall и agile на масштабе: технарский взгляд safe®

Отличия традиционного подхода от «гибких» методов

Итак, в чём же отличия традиционных подходов в образовании от современных гибких методов? Для удобства и наглядности мы собрали их в одну таблицу:

  Традиционный подход в обучении Agile-подходы в образовании
Период обучения от трёх месяцев до полугода короткие спринты от одной до двух недель
Формат обучения соответствие строгому учебному плану обучение построено как игра
Форма организации общие лекции и семинары практические группы от 6 до 8 человек
Форма восприятия информации пассивное восприятие активная самостоятельная работа в группах
Оценка результатов внешняя оценка внутренняя оценка
Роль преподавателя полностью контролирует весь учебный процесс направляет и корректирует

Плюсы и минусы Agile

Постигая Agile, важно знать как о положительных, так и об отрицательных сторонах этой методологии. Начнем с плюсов

В первую очередь стоит отметить, что Agile-управление очень гибкое. Если, например, традиционная методология указывает на конкретные этапы работы, то Эджайл легко подстраивается под потребителя конечного продукта и требования заказчика.

Собственно, и в конечном продукте число дефектов минимизируется, ведь он является результатом тщательной проверки качества, которая проводится по завершении каждого этапа-спринта.

Кроме того, Agile быстро запускается, легко реагирует на изменения, позволяет команде разработчиков и клиентов поддерживать постоянную связь в реальном времени. Преимущества очевидны, но давайте поговорим и о минусах.

Недостатки методологии состоят в том, что, во-первых, постоянная обратная связь может приводить к тому, что все время будет переноситься и дедлайн проекта, тем самым создавая угрозу бесконечно продолжающейся работы. Если заказчик видит, например, только результаты, но не имеет представления об усилиях, потребовавшихся для их достижения, он будет все время требовать улучшений.

Второй недостаток заключается в необходимости адаптировать под изменяющиеся условия проекта проектную документацию. При отсутствии надлежащего информирования команды об изменениях или дополнительных функциях документы с функциональными требованиями или архитектурой могут оказаться неактуальными на текущий момент времени.

Третьим существенным минусом Аджайл можно назвать необходимость в частых встречах

Они, конечно, способствуют повышению эффективности работы, но все же постоянное отвлечение членов команды может сказаться на процессе отрицательно, ведь внимание людей систематически уходит в сторону от решаемых задач

Сюда же можно отнести такие вещи как необходимость в постоянном присутствии клиента, невозможность выстраивать долгосрочные планы и потребность в мотивированных и высококвалифицированных специалистах. Кстати, последнее в огромной степени касается и внедрения Agile-управления в деятельность организации. И, постигая Agile, с темой ее внедрения тоже нужно познакомиться.

Как внедрить Agile?

Переход от каскадной разработки, до сих пор привычной для многих организаций, к гибким методам работы над проектами может быть довольно болезненным.

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

Во-вторых, переход к итеративной разработке заставит сосредоточиться на том, чтобы каждый из этапов гарантированно привносил в продукт что-то новое. Это непросто, инерция плановой разработки будет преследовать вас первые несколько месяцев.

Третий вызов — если вы ведёте заказную разработку, будет непросто объяснить клиентам принципы работы, а если входите в состав крупной организации, та же проблема может возникнуть при обосновании перехода на Agile перед вышестоящими руководителями.

Если вам удастся справиться, процессы станут заметно эффективнее, а качество работы — выше. Главное, никогда не забывайте четыре основных ценности Agile, с которых начинается Манифест гибкой разработки:

Следование им и поможет на этапе внедрения, и будет подспорьем в процессе работы.

Детализированные функции O&M позволяют быстро локализовать сбои

Agile Controller решает наиболее насущные в наложенной виртуальной сети проблемы O&M. Он визуализирует пути переадресации между виртуальными машинами и удаляет «черные дыры» в виртуальной сетевой структуре O&M. Наглядное отображение сервисных трактов позволяет быстро локализовать сбои в виртуальных и физических сетях и позволяют сетевым администраторам быстро проверять сетевые конфигурации. Функции ретроспективного просмотра и воспроизведения сбоев улучшают скорость и качество O&M.

  • Наглядно отображаемые нижележащие пути переадресации между виртуальными машинами
  • Наглядное отображение путей переадресации между узлами VTEP VXLAN
  • Наглядно отображаемые и контролируемые физические и виртуальные ресурсы

Agile – гибкое управление проектом

Agile
  – это система ценностей, помогающая создавать новые продукты. 

Agile появился, когда стало понятно, что традиционное управление неэффективно в проектах с постоянно меняющимися условиями: для разработки новых технологий, тестирования новых продуктов, выхода на новый рынок. 

Сам по себе Agile – это не модель управления, а философия, помогающая сформировать отношение к работе. Философия состоит из четырех ценностей и 12 принципов. Они закреплены в
разработки программного обеспечения:

«Люди и взаимодействия важнее процессов и инструментов. Работающий продукт важнее исчерпывающей документации. Сотрудничество с заказчиком важнее согласования условий контракта. Готовность к изменениям важнее следования первоначальному плану».

Создатели воспринимали Agile  как философию, которую можно адаптировать под конкретные задачи. Современные модели проектного менеджмента, например, Scrum и Kanban, основаны на философии Agile.

Рассмотрим преимущества и недостатки Agile.

Особенности Agile

Полностью самоорганизующаяся команда. Команда Agile – это небольшая работающая над одним проектом группа людей, в составе которой уже есть все необходимые для этого специалисты. В команде нет руководителей и подчиненных и роли за участниками не закреплены: разработчик может тестировать, аналитик предлагать идеи для дизайна.

Разработка небольшими итерациями. Продукт или проект разбивается на ценные части, каждая из которых разрабатывается в отдельный временной промежуток – 
итерацию
. За один такой интервал времени разрабатывают новую версию продукта или перерабатывают уже существующий. В итоге после итерации получается новый продукт или новая версия, готовая к выпуску. Продукт выпускают, собирают обратную связь и в следующую итерацию улучшают и дорабатывают. Иногда итерации называют agile-спринтами, но это не совсем верно. Спринт – термин из Scrum-подхода.

Можно менять проект в процессе. И заказчик, и команда оценивают результат по ходу проекта и решают, как действовать дальше.

Результат важнее документации. От плана можно отступать, если это принесет пользу проекту. 

Ограничения Agile

Нет четких инструкций. Agile – это философия, ее создатели не дают четких инструкций, как внедрять принципы Agile в работу компании. 

Больше времени и энергии. Тестировщики, клиенты и разработчики должны быть постоянно на связи и тесно сотрудничать. Все этапы происходят одновременно, поэтому клиенты должны быть готовы в любой момент протестировать и утвердить работы, чтобы команда могла двигаться дальше. В результате получается работоспособный продукт, но он требует времени и энергии всех участников.

Многое зависит от клиента. Принципы аджайла требуют сотрудничества и участия клиента. Клиенту нужно пройти обучение и перестроить свои процессы, чтобы помогать в разработке продукта. Если клиент не разделяет ценности Agile, работать с ним не получится.

Легко сбиться с пути. Суть аджайла – в гибкости и возможности подстраиваться под постоянно меняющиеся условия. Иногда если обратная связь заказчика не ясна, разработчик может сфокусироваться на работе в неправильном направлении. Есть опасность впустую тратить деньги, постоянно меняя продукт. 

Гибкий подход подойдет, если:

  • вы разрабатываете принципиально новый продукт: страхование домашних животных, инновационную технологию в ракетостроении, новую модель автомобиля;

  • вы делаете продукт, который можно выпускать частями: блог, программное обеспечение, стриминговый сервис;

  • запросы пользователей и ситуация на рынке постоянно меняются.

Нет смысла использовать методы аджайла, когда клиент должен работать по четкому бюджету или графику. Следует также избегать гибкого подхода, если клиенты не смогут изменить объем и содержание проекта, как только он стартовал.

Компании, которые работают по Agile: Spotify, Microsoft, Google, Netflix, Ericsson, Dell, Adobe, Accenture, WordPress, Riot Games, CH Robinson, Magna International, Scrum Alliance, Intronis, General Electric, John Deere.

Бизнес-анализ в управлении требованиями

Бизнес-анализ настолько важен в проектах с гибкой разработкой, что мы делаем это каждый день в течение всего цикла разработки, а не только на начальной фазе проекта. Разработка по гибкой модели (Agile Model Driven Development – AMDD) предполагает использование нескольких лучших практик, которые отражают место бизнес анализа в гибких проектах. Это следующие практики:

Активное участие заинтересованных лиц (stakeholders). Заинтересованные лица своевременно обеспечивают разработчиков информацией, своевременно принимают решения, активно вовлечены в процесс разработки посредством использования интегрирующих инструментов и методик.

Приоритезация требований. Гибкие команды реализуют требования в порядке их важности. Требования приоритезируются по важности при активном участии заинтересованных лиц

Таким образом раньше всего реализуются требования, приносящие наибольший ROI (Return Of Investments) для заинтересованных лиц.

Моделировать немного вперед. Иногда требования, которые по приоритету находятся “недалеко” от самых приоритетных достаточно сложны. Это побуждает вас инвестировать определенные усилия для того, чтобы их исследовать до момента, когда они попадут в разработку. Данное исследование снижает риск при разработке. Подобное явление достаточно редко, но иногда случается.

Предварительный анализ требований. В начале гибкого проекта вам необходимо потратить часть времени для идентификации границ проекта и для создания начального набора приоритезированных требований. Еще один результат – идентификация всех заинтересованных лиц со стороны заказчика. Данный процесс занимает от нескольких дней до нескольких недель.

Итерационное моделирование. В начале каждой итерации при планировании вы должны сделать несколько шагов, моделируя систему.

Моделирование при помощи штурма (Model storming). На протяжении итерации вы будете регулярно, в одно и то же, время заниматься моделированием системы в течение нескольких минут. ДЛя этого вы будете использовать подход штурма (мозшгового). Тем самым вы будете регулярно исследовать детали требований или архитектуры.

Разработка через тестирование (Test-driven development – TDD). Напишите тест (или набор тестов – прим. пер.), для требований или архитектуры, а затем просто напишите ровно столько кода, чтобы данный набор тестов выполнялся. TDD – признанный хороший подход к своевременной спецификации требований.

AMDD (Agile Model Driven Development) предлагает высокоитеративный, очень гибкий и с высокой степенью сотрудничества подход к анализу, который учитывает в то же время риски, неотъемлемо связанные с требованиями. Замечательной стороной agile-философии является то, что запрос на изменение требований на поздних стадиях разработки может быть превращен в конкурентное преимущество продукта, если только вы готовы с ним работать. Гибкие методы работы с требованиями могут сильно отличаться и казаться достаточно некомфортными поначалу для людей, привыкших с традиционным прошлым в разработке ПО.

Автоматизированное развертывание сети на основе приложений

SDN-решение Huawei Cloud Fabric реализует сервис-ориентированную программно-определяемую сеть центра обработки данных (DCN). IT-администраторы могут использовать сервисный язык для конфигурирования настроек сети (профилей приложений) чтобы обеспечить наилучшее соответствие конкретным требованиям к сервисам. У каждого сервиса есть уникальный профиль приложения, и IT-администраторы могут настраивать его в зависимости от потребностей. Agile Controller от Huawei может преобразовывать профили приложений в логические сети. Обладая такими возможностями, IT-администраторы могут гибко настраивать сети, ориентированные на приложения, делая возможной миграцию сетевых ресурсов по требованию.

  • Языково-ориентированная сетевая модель приложений: Реализует контроль политики и оркестрацию цепочки сервисов на основе групп конечных устройств (EPG). Сетевые политики автоматически мигрируют с EPG без необходимости ручного вмешательства.
  • Управление перетаскиванием элементов в WYWIWYG-интерфейсе: Функционал перетаскивания и оркестрации сервисов в рамках графического пользовательского интерфейса предоставляет возможности выделенной или коллаборативной подготовки сетевых и вычислительных ресурсов.

Общие требования и воркшопы по дизайну

С одной стороны, водопадный метод разработки требует сразу на старте разработать полный дизайн систем (Big Design Up Front, BDUF). С другой стороны, почему эту задачу не могут решить Agile- и Waterfall-команды сообща? Гораздо проще выявить и разрешить зависимости, когда обе команды собираются вместе перед белой маркерной доской. Вот несколько советов для эффективного проведения такого воркшопа:

  • Сделайте домашнее задание перед встречей. Не нужно выявлять все зависимости, сначала постарайтесь сформировать целостное понимание всей работы. После этого зависимости начнут быстро выявляться. Каждая группа должна провести такой анализ перед встречей. Иначе на совместной встрече у участников не будет необходимого понимания текущего состояния дел и общего контекста.
  • Активно используйте маркерную доску, флипчарты и стикеры.
  • Используйте метод “Спецификации на примерах” (Specification By Example) для определения конкретного поведения системы и устранения неопределенности, там где это возможно. “Приведи пример!” — должно стать фразой, вокруг которой строится воркшоп. Поможет подход на основе показа (Demo-Driven): представьте, что команды у финишной черты и начинают демонстрацию. Опишите, что показывается. Эти примеры будут использованы обеими группами для формирования цели совместного проекта.
  • Определите зависимости, составьте интеграционный план и выберите механизмы интеграции.

Какие результаты приносят Agile, Scrum и Waterfall

Выше мы писали, что эти подходы помогают быстрой адаптации к запросам клиентов, то есть компания выпускает продукты, которые востребованы здесь и сейчас. Если на рынке запретили социальную сеть, то компания не станет выпускать русскую версию приложения под эту соцсеть. Потому что у разработчиков прописаны задачи на 2 недели, и они успеют быстро перестроиться под новые условия. А если план прописан на 5 лет вперед, то любые изменения рынка будут довольно критичны.

Наши эксперты рассказывают, как методы управления проектов помогают в работе.

Сергей Селезнев:

Александр Стихарев:

Еще стоит сказать, что эти методы не зря назвали гибкими. Компании не всегда должны концентрироваться только на Agile, Waterfall или Scrum. Многие используют комбинированный подход.

Например, Waterfall используют для рекламы и маркетинга

Потому что сначала важно провести анализ рынка и изучить запросы целевой аудитории. А потом уже запускать маркетинговую и рекламную кампании

А если речь идет о веб-разработке, то в этом аспекте больше подходит Scrum, когда можно делать параллельно несколько процессов. Например, дизайн страниц и проработку функциональности.

Давайте подведем итоги. Методы управления проектами — это подходы, которые ускоряют бизнес-процессы и делают их более прозрачными. Потому что результат контролируют на коротких дистанциях, получают обратную связь от клиентов и быстро вносят изменения.

Ключевые навыки руководителя Agile-проектов.

Независимо от конкретного названия должности, каждый, кто занимается управлением Agile-проектами и хочет преуспеть в этой области, должен обладать определённым набором навыков. Вот самые важные из них:

Коммуникационные навыки. 

В Аgile-философии главные акцент делается на совместной работе, поэтому умение эффективно общаться крайне важно для всех членов команды, в том числе и для менеджеров проектов. 

Организационные навыки. 

Менеджеры Agile-проектов должны обладать хорошими организационными навыками и уметь расстанавливать приоритеты. 

Способность управлять рисками. 

Одна из важнейших обязанностей менеджеров проектов — управление рисками. Поэтому способность предвидеть потенциальные препятствия для работы и оперативно устранять их — очень ценный навык для каждого менеджера. 

Адаптивность. 

В быстро меняющейся Agile-среде менеджеры проектов должны уметь быстро адаптироваться, менять приоритеты и корректировать рабочие процессы по мере необходимости.  

Что касается технических навыков, то от проджект-менеджеров ожидается глубокое понимание принципов Agile, знание Agile-фреймворков (Scrum, Kanban и т.д.) и опыт работы с инструментами для управления задачами (Trello, JIRA и т.п.).

Что такое Agile и Scrum?

Что такое Agile?

В переводе с английского языка «agile» означает «живой, подвижный», но переводят его чаще как «гибкий». В отрасли разработки программного обеспечения этот термин появился в начале 2000-х годов, когда в штате Юта был издан «Манифест гибкой разработки ПО». С тех пор под «agile» понимают набор подходов по “гибкой” разработке программного обеспечения.

Agile Manifest

Суть agile-подхода изложена в “манифесте”, но для заказчика ее можно коротко сформулировать так:

  • разработка ведется короткими циклами (итерациями), продолжительностью 1-4 недели;
  • в конце каждой итерации заказчик получает ценное для него приложение (или его часть), которое можно использовать в бизнесе;
  • команда разработки сотрудничает с Заказчиком в ходе всего проекта;
  • изменения в проекте приветствуются и быстро включаются в работу.

В настоящее время agile-принципы используются в работе десятки тысяч команд по всему миру.

Краткое видео о том, что такое Scrum (english).

Неудобные вопросы

  • Как сделать так, чтобы задержка в работе одного отдела не останавливала остальных?
  • Как сделать так, чтобы разработка плана проекта не занимала до 30% времени от всего объёма его реализации?
  • Как, в конце концов, добиться того, чтобы эти планы соблюдались?

Управленцы самого разного уровня, от менеджеров низшего звена до директоров корпораций и государственных чиновников, бились над этим десятилетиями. Но до тех пор, пока единственным известным способом более-менее контролируемого создания продуктов и разработки проектов оставался поэтапный — шаг за шагом, одно за другим, — ничего с этими вызовами было не сделать.

Для того чтобы перейти на качественно новый уровень проектной работы, потребовалось коренное изменение парадигмы.

Оказалось, что искать ответы на большинство этих больных вопросов просто незачем. Их нужно снять, а понятия, их породившие, по возможности упразднить. Так на месте поэтапной waterfall-разработки возникли гибкие методологии.

Почему появился Agile?

Теперь немного слов о том, как и зачем появился этот подход? История возникновения этого подхода стала ответом на запросы отрасли:

  1. Заказчик не может сформировать четкие требования к ПО;
  2. Новые технологии усилили конкуренцию и потребовали оперативного применения в бизнесе;
  3. Заказчики и разработчики ПО не удовлетворены процессом взаимодействия.

#1 Заказчик не может сформировать четкие требования к ПО

В начальной фазе проекта заказчик не может сформулировать исчерпывающие требования к продукту. Этому есть несколько причин:

  • у Заказчика существует только идея приложения и он не представляет всю его функциональность;
  • у группы проекта есть разный взгляд на функциональность приложения;
  • команда не может договориться, как же будет удобнее/разумнее реализовать ту или иную часть функциональности приложения.

В традиционных «водопадных» моделях руководитель проекта минимизирует изменения в проекте, используя для этого отдельные процессы – управление изменениями. Но если требования будут меняться раз в месяц, то управление изменениями становится трудоемким и замедляет ход проекта.

#2 Новые технологии усилили конкуренцию и потребовали оперативного применения в бизнесе

К середине 90-х разрабатываемое ПО было в основном десктопным и его требовалось устанавливать на каждый отдельный компьютер (например, MS Word). С появлением веб-приложений внедрение новой функциональности стало происходить быстрее: требовалось развернуть приложение только на сервере и все пользователи получали к нему доступ. Эта инновация серьезно усилила конкуренцию между компаниями: тот, кто применил новую технологию раньше других – выигрывает рынок и клиентов.

#3 Заказчики и разработчики не удовлетворены процессом взаимодействия

При жестком сроке и в условиях постоянных изменений разработчики вынуждены формализовывать процессы взаимодействия с Заказчиком. Разработчики закладывают в бюджет работы по созданию детальных требований и спецификаций, а также риски на возможные их изменения. При этом Заказчик вынужден оплачивать документы, которые не несут реальной ценности для бизнеса.

При этом agile не отказывается от формулирования требований. Заказчик (в agile – владелец продукта, product owner) предъявляет требования в упрощенном виде и на сценариях работы пользователей.

Резюме

Scrum и Agile

Иногда термины Scrum и Agile используются как взаимозаменяемые. На самом деле, это два разных понятия. Agile — философия или образ мышления, который определяет подход к управлению проектами. Scrum, в свою очередь, это набор конкретных методов, которые позволяют работать над проектами согласно Agile-принципам. Этот фреймворк структурирован вокруг определенных практик и чётко прописанных ролей. Вот краткий обзор основных концепций:

Scrum-команда. 

Фундаментальным компонентом в Scrum является кросс-функциональная, способная к самоорганизации команда. Она состоит из одного владельца продукта (Product Owner), одного Scrum-мастера и нескольких специалистов с различными навыками. Например, в Scrum-команду могут входить разработчики, тестировщики, дизайнеры и UX-специалисты. 

Владелец продукта (Product Owner).

Владелец продукта отвечает за то, чтобы конечный продукт приносил максимальную пользу заказчику. Он анализирует требования, разъясняет бизнес-цели клиента команде и определяет приоритеты задач. 

Scrum-мастер.

Scrum-мастер следит за соблюдением принципов Scrum. Он руководит командой, оптимизирует рабочие процессы, устраняет отвлекающие факторы и организует регулярные совещания.  

Спринты.

Спринты — это повторяющиеся этапы, обычно продолжительностью от одной до четырех недель, во время которых команда работает над определенными задачами. На каждом из таких этап проводится планирование спринта, ежедневные Scrum-совещания, обзор итогов спринта и ретроспективы спринта.    

Бэклоги продукта и спринта.

Бэклог продукта — это динамический список задач, которые команда должна выполнить для получения конечного продукта. Владелец продукта регулярно пересматривает этот список и меняет приоритеты задачам, чтобы бэклог всегда был актуален и соответствовал меняющимся требованиям. Бэклог спринта, в свою очередь, включает в себя только те задачи, которые должны быть выполнены в течение отдельно взятого спринта.  

Теперь давайте разберёмся с тем, какую роль среди самоорганизующихся команд, владельцев продуктов и Scrum-мастеров играют менеджеры проектов и что входит в их обязанности.  

Что такое Agile и Scrum

Прежде, чем говорить о применении Agile-методологии и scrum-технологий в образовании, давайте разберёмся, что они обозначают.

Agile и Scrum — это понятия, которые пришли из IT-сферы. Разработка инновационных продуктов совершенно не похожа на стандартный процесс производства, где есть чёткий план, сроки и бюджет. Здесь часто приходится решать задачи при большом уровне неопределённости и находить новые пути. Именно для этого и разработали эджайл-методологию.

Agile — метод и образ мышления

Многие определяют Agile как общее обозначение целого ряда «гибких» подходов, применяемых для разработки продуктов программного обеспечения. Это верно, но не совсем. Agile — это скорее определённый образ мышления и культурные особенности, которыми характеризуются эти подходы. А потому эджайл можно применять не только в разработке, но и в других сферах.

Agile-мышление опирается на четыре важные ценности:

  1. На первом месте люди и взаимодействия между ними, а не процессы.
  2. Акцент на продукте, а не на регламентах и документах.
  3. Тесное взаимодействие с заказчиком, а не бесконечные согласования по факту.
  4. Постоянные эксперименты и изменения в процессе, а не строгое следование плану.

Подробнее о 4 ценностях и 12 принципах методологии для IT-разработки можно почитать непосредственно в Agile-манифесте.

Вдохновлялись создатели Agile-методологии научным методом, который разработал ещё Галилео Галилей. Что роднит IT-разработчиков и итальянского учёного? В основе двух подходов — постоянное повторение эксперимента и уточнение результатов.

Фреймворк Scrum

Scrum — это один из самых известных и популярных фреймворков, или подходов Agile-методологии. Иначе его ещё называют «подходом структуры». Разработкой метода занимался Джефф Сазерленд, бывший военный лётчик, и его подход изначально не отличался особой гибкостью. Скорее наоборот.

Скрам предполагает чёткое распределение ролей и последовательность процессов. Над каждым проектом работает небольшая команда специалистов, действия которых координирует владелец продукта и scrum-мастер. Первый следит, чтобы результат соответствовал первоначальным целям, а задача последнего — корректировать и направлять действия команды в соответствии с методологией. Вся работа состоит из коротких спринтов (одна-две недели), в начале которых определяются цели, в конце — сравниваются результаты и происходит корректировка. Каждый выполняет свой отрезок задачи и непосредственно влияет на процесс. Такой подход позволяет быстро создать продукт, поддерживать высокую мотивацию команды и не тратить время и деньги на неэффективные действия.

Не менее популярен фреймворк Kanban. Его называют «подходом баланса». В канбане в отличие от скрама нет ролей и строгих подходов к процессам. Главная цель — быстрое продвижение задачи по разным этапам: «Планирование», «В разработке», «На тестировании», «Завершено». Именно в канбане активно применяют scrum-доски для визуализации процесса.Scrum-доска позволяет визуализировать рабочий процесс

Statefull Service¶

Классы UseCases/Interactors являются разновидностью паттерна Команда (Command), и, в определенной мере, могут рассматриваться как Statefull Сервис.

Похожую идею выражает и Eric Evans:

И Randy Stafford с Martin Fowler:

Обратите внимание на использование термина “Domain Model”.
Эти ребята — последние из числа тех, кто может спутать “Domain Model” и “DataMapper”, особенно, при таком количестве редакторов и рецензентов.
Т.е. клиент ожидает от доменной модели интерфейс, который она, по какой-то причине (обычно это Single Responsibility Principle), не реализует и не должна реализовать.
С другой стороны, клиент не может реализовать это поведение сам, так как это привело бы к появлению “G14: Feature Envy” .
Для выравнивания интерфейсов служит паттерн Adapter (aka Wrapper), см

“Design Patterns Elements of Reusable Object-Oriented Software” .
Отличается Statefull Services от обычного Adapter только тем, что он содержит логику более низкого уровня, т.е. Логику Приложения (Application Logic), нежели Доменная Модель.

Этот подход сильно напоминает мне “” с тем только отличием, что “Cross-Cutting Concerns” реализует интерфейс оригинального объекта, в то время как domain facade дополняет его.
Когда объект-обертка реализует интерфейс оригинального объекта, то его обычно называют Aspect или Decorator.
Часто в таких случаях можно услышать термин Proxy, но, на самом деле паттерн Proxy имеет немного другое назначение.
Такой подход часто используется для того, чтобы наделить Доменную Модель логикой доступа к связанным объектам, при этом сохраняя Доменную Модель совершенно “чистой”, т.е. отделенной от поведения логики более низкого уровня.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: