Воркшоп используется для обоснованного и осознанного введения в систему новых компонентов, описания ответственностей этих компонентов и как совместно компоненты формируют видение архитектуры.
Цели
- Создать общее понимание дизайна системы
- Быстро пройтись по нескольким вариантам распределения ответственности компонентов
- Создать связь между архитектурно-значимыми требованиями и вариантами дизайна
- Построить первый вариант или выявить потенциальные пробелы в архитектуре
План проведения
- Расскажите участникам о целях
- Зачитайте участникам первую историю
- Создайте карточку, представляющую пользователя
- Запишите пользователя вверху карточки, а ниже укажите действие, инициирующее сценарий
- Добавьте еще одну карточку, представляющую первый архитектурный элемент. Это элемент, с которым происходит первый контакт пользователя. Напишите название элемента вверху карточки.
- Развивайте диаграмму, создавая карточки с новыми элементами. Указывайте на карточках ответственности каждого элемента. Помечайте отношения между элементами на карточках. Расположите карточки в таком порядке, чтобы расположение представляло связи между элементами.
- С развитием дизайна, оставляйте все карточки на столе. Отодвигайте карточки в сторону, если они могут понадобиться позже, что позволит вам разглядеть и быстро оценить альтернативы
- Возьмите следующую историю и пройдитесь по полученной схеме дизайна. В случае необходимости — добавляйте или меняйте карточки. Попробуйте изменить предположения, касающиеся историй и посмотреть, как это повлияет на дизайн.
- Повторяйте шаги 4-8 до тех пор, пока не рассмотрите все истории
- В конце сессии запишите все полученные компоненты и назначенные им ответственности. Так же запишите все принципы проектирования, выявленные во время воркшопа
how can i change my icloud email address on my iphone creating writing is there danger in viagra san francisco creative writing mfa count of monte cristo essay questions go to site essay topics for environmental issues diana hacker mla essay college 5 paragraph essay outline determining theoretical yield thesis statement for informative speech examples https://ssmf.sewanee.edu/experience/how-to-start-a-autobiographical-essay/250/ when should cialis be taken evaluating web sites essay https://albionfoundation.org/perpill/why-does-my-insurance-not-cover-cialis/63/ here https://www.brennansteil.com/attorneys/example-cause-and-effect-essay/41/ https://presentdangerchina.org/review/evidence-based-practice-nursing-research-paper/65/ coreg viagra interaction https://soundhealingcenter.com/center/school-girl-must-help-devil-take-sinners-off-list-managa/94/ follow site why need viagra essays in criticism matthew arnold summary https://www.southerntech.edu/programs/how-do-i-set-up-a-group-email-on-my-iphone-6/99/ buy degree essays https://robsonranchviews.com/article/my-greatest-wish-in-life-essays/4/ dissertation sur le conseil constitutionnel propecia price canada https://cadassisting.com/what/to-what-extent-essay-thesis-format/93/ see url follow link essay about your favorite teacher Рекомендации
- Используйте стикеры
- Можно рисовать картинки, не только писать текст
- Смешивать различные уровни представления (динамика, статика и физика) — нормально, если помогает в принятии решений
- В конце упражнения каждый элемент должен иметь как минимум одну ответственность.
- Обсудите карточки с большим количеством ответственностей.
- Компонент должен иметь минимально возможное количество ответственностей
- Компонент должен иметь минимально возможное число связей
Типовые проблемы
- Прямое изменение одним компонентов данных другого компонента.
Нарушение принципа инкапсуляции, снижает гибкость дизайна. Требуется дополнительный анализ границ предметной области. - Слишком много ответственностей.
Компонент сложно понять и использовать. Требуется разбиение на более мелкие компоненты. - Отсутствие ответственностей.
Компонент не несет ценности. Бывает, когда проектирование велось без учета того, как компонент будет использоваться. - Вводящие в заблуждение именования компонентов.
Название компонента должно быть коротким, емким и отражать ответственность, закрепленную за ним.
Пример: «Система планирования питания для спортсменов»
Высокоуровневый список требований
- Просмотр базы данных рецептов
- Добавление нового рецепта в базу данных
- Редактирование существующего рецепта
- Планирование курса питания
Один из множества возможных результатов:
На практике модель может иметь следующий вид:
Составлено на основе описания в книге Design It! (Michael Keeling)
Добрый вечер.
Статья интересная, имеет четкий практический уклон. Однако мне некоторые моменты не совсем понятны.
1. пример не иллюстрирует все шаги методики, описанной выше. Можно ли кратко их проиллюстрировать примером? Или показать конечный вариант архитектуры?
2. указаны функциональные требования, но совсем не указаны. нефункциональные
3. есть ли какие-то рекомендации по наименованию компонентов? В примере присутствует компонент «база данных рецептов» и «компонент рецептов», по-моему и то, и другое обозначает одно и тоже, т.е. не отражает действия, база данных еще намекает на хранение.
4. Карточка компонента подразумевает двустороннюю связь или одностороннюю?
1. Конечного варианта не существует. Методика позволяет рассмотреть множество вариантов структуры компонентов и выбрать наиболее оптимальную. Подход очень хорошо дополняет принятый в Agile подход к работе с требованиями. Например, можно построить User Story Mapping, в котором определить задачи на несколько будущих версий продукта, то есть составить дорожную карту развития. Какие-то задачи точно будут выполнены, выполнение же других мы, возможно, отложим или вообще откажемся от них. Принцип такой: строим компонентную структуру для первой версии. Затем достраиваем до второй версии (возможно — в нескольких вариантах), затем для третьего. Что для нас важно — это выделить те компоненты, которые остаются неизменными для максимального количество вариантов — это стабильные компоненты и они не должны зависеть от нестабильных. Логично, что это не единственный критерий. Однако эта практика дает возможность за короткий промежуток времени рассмотреть множество компонентных структур и совместно прийти к решению о наиболее подходящей в существующих ограничениях.
Плюс мы можем прикинуть как примерно может развиваться компонентная структура, чтобы обоснованно принимать решение о том, куда стоит заложить чуть больше гибкости, а где сделать максимально простую реализацию.
2. Здесь намеренно не рассматриваются атрибуты качества. Цель — именно в определение логических границ компонентов, структуры зависимостей и зон ответственности. При необходимости можно явно зафиксировать внутренние атрибуты качества, но обычно на данном этапе это не требуется.
3. Именование исходя из предметной области (Ubiquitous Language в терминах DDD). Используем принятую в домене терминологию.
4. Одностороннюю. Двусторонняя в такой структуре означает появление циклических зависимостей.