Моя команда использует систему Kanban для отслеживания повседневного прогресса, и она отлично проработана для понимания прогресса в функциях (записанных в виде пользовательских историй). Мы в значительной степени позволили нашему дизайну системы появиться, поскольку мы развиваем особенности, которые работали хорошо до недавнего времени. За последние две недели у нас было несколько дискуссий об архитектурных компромиссах, особенно связанных с характеристиками производительности и качества модифицируемости.
Я думаю, что происходит, когда мы реализуем функции и проектируем систему, мы неявно принимаем решения об архитектуре, но не рассматриваем эти решения с точки зрения наших известных требований к качеству. Было бы здорово, если бы я мог отслеживать / фиксировать / визуально представить, как принимаются эти важные решения по проектированию, чтобы у членов команды был больше шансов не создавать дополнительную напряженность в архитектуре системы во время ее реализации. И, конечно, чтобы усложнить ситуацию, функции на нашей плате не являются исключительно функциональными и иногда скрывают архитектурную сложность!
Как я могу визуально отслеживать прогресс в качественных атрибутах (или других архитектурно значимых решениях) в канбан моей команды?
В этом вопросе действительно две части. Одна часть: как мы узнаем, когда архитектура изменится. Вторая часть: откуда мы знаем, что архитектура все еще хороша.
Для этой первой части: Как вы узнаете, когда архитектура будет изменена?
Цель здесь - взять что-то, что делается неявно, и сделать это явным
Вы, вероятно, согласитесь с первым, если многие карты требуют проверки, или если архитектор не является частью команды и требуется передача обслуживания, или обзор будет достаточно подробным, чтобы занять некоторое время, которое вы хотите отслеживать доска. Последний вариант, если только несколько карт касаются архитектуры, и найти пару по запросу легко.
Теперь перейдем ко второму вопросу: откуда мы знаем, что архитектура все еще хороша?
Я большой поклонник визуализации. Вы можете иметь диаграмму на доске с примечаниями, описывающими компоненты и архитектуру.
Существуют также статические анализаторы, которые будут анализировать кодовую базу и генерировать изображение с графиком зависимостей различных компонентов. Вы можете запустить его, взять отпечаток и повесить его на стену раз в неделю или около того. Возможно, две последние распечатки могут быть на стене, так что вы можете увидеть, изменилось ли что-нибудь за последнюю неделю.
Это позволяет сделать вашу архитектуру и дизайн видимыми. Члены команды будут время от времени смотреть на это и комментировать, если что-то может быть изменено или подвергнуто рефакторингу или сделано лучше.
источник
Я тоже видел эту проблему. Неявное принятие решений! Если проблема заключается в неявности, то решит ли это как можно более явную проблему? Я предлагаю немного подправить процесс архитектуры, чтобы «начать эксплицировать» неявные мысли, которые постепенно превращаются в решения. Цель дополнительного шага в этом процессе состоит в том, чтобы заставить членов команды понять, что каждый склонен к принятию неявных архитектурных решений. Этот шаг просто не даст принять неявное решение.
Может помочь «Выяснение неявных решений» как часть канбана для каждого из сценариев.
То, что я собираюсь предложить, может быть громоздким. Но если процесс сопоставлен с набором элементов канбана и если он присутствует на доске для каждого сценария арки, он не поможет вам отследить его. Я полагаю, что вы также можете сопоставить их с шаблоном сценария из шести частей и импровизировать канбан-доску, чтобы учесть полученные результаты, можно отслеживать QAs.
Викрам.
источник
Это один из рисков задержки архитектурных решений в Agile командах. Очевидно, что самая ответственная вещь за гибкость - откладывать архитектурные решения до последнего ответственного момента . Но шансы, что последний ответственный момент может (или должен) произойти рано.
Одна вещь, которая помогает, состоит в том, чтобы четко определить ваши основные требования к вождению; вещи, которые вы точно знаете, что должны иметь (но не обязательно должны реализовывать прямо сейчас). Ваша развивающаяся архитектура (которая стремится быть минималистичной и гибкой) должна учитывать существующую или будущую поддержку таких требований.
Более важно, однако, что ваша развивающаяся архитектура НЕ ДОЛЖНА реализовывать артефакты, которые получают (или могут получить) способ поддержки таких ключевых требований к вождению, даже если эти артефакты предназначены для разрешения текущих требований. Мы можем ссылаться на такие артефакты как мешающие артефакты , артефакты, которые приносят реальную ценность (поскольку они реализуют решение существующих требований), но чье присутствие затрудняет / удорожает реализацию будущего ключевого движущего требования.
В тех случаях, когда вы должны внедрить мешающий артефакт, ваша задача будет заключаться в том, чтобы спланировать его удаление в какой-то момент (чтобы вы могли реализовать требование к вождению ключа, которому мешают).
Очевидно, что все это эзотерично без реального, осязаемого контекста (например, реального проекта). Но более или менее ваша модель процесса разработки и ваша развивающаяся архитектура должны принимать во внимание эти соображения.
Неявные требования - это мертвая архитектура. Все должно быть четко указано, как ключевые требования к движению, так и те, которые являются вспомогательными. Вам не нужно выполнять требование на ранней стадии. Вам нужно только быть в состоянии объяснить это.
PS. Под требованием я подразумеваю архитектурные требования системного уровня и не обязательно эфемерные требования прикладного уровня, которые могут быть приняты без существенных изменений в архитектуре. Надеюсь, это поможет.
источник