2008-08-21 5 views
8

Я начал свою дипломную работу и тема будет «ловкие архитектурами»Agile архитектуры

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

Мой вопрос в том, какие шаблоны и методы проектирования вы порекомендовали бы для такой архитектуры? Меня интересуют шаблоны, которые позволяют максимизировать развязку классов, таких как инъекция зависимостей, высокая управляемость и максимальная абстракция от конкретной проблемы.

ответ

7

я рекомендую следующее:

  1. Repository Pattern
  2. Спецификация шаблон
  3. Dependency Injection
  4. домена Driven Design

В основном все, что ALT.NET толпа проповедует.

2

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

Какой-то цикл обратной связи вокруг вашего процесса разработки - будь то модульные тесты, непрерывная интеграция и/или встречи «схватки». Я понимаю, что на самом деле это не входит в сферу гибких «архитектур», но если у вас нет и гибкий процесс, никакая степень «гибко ориентированной» архитектуры не имеет значения.

0

Это интересный вопрос, это. Может ли архитектура быть создана гибкой по отдельности? Если мы смотрим на что-то вроде XP, то я немного сомневаюсь. Или, может быть, я неправильно понял, но это никогда не останавливало меня от расширения ...

В XP, чтобы сделать подход, о котором я знаю больше, у нас будет какая-то структура за очень короткое время после того, как мы начать проект; о времени, когда первая история завершена, на самом деле. Во время первоначального написания истории мы начнем понимать, что мы можем создать - это неизбежно: программисты склонны думать с точки зрения кода. Но мышление слишком далеко впереди ведет нас на территорию YAGNI.

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

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

0

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

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

0

Будучи гибкой означает, что вы принять изменения, т.е. принять к изменению требований и проектных решений и принимать рефакторинга и т.д .. много вещей «традиционный» способ будет неодобрительно, так как вы касаясь чего-то, что работает/ранее согласовано.

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

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

2

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

Это то, что Прагматические программисты называют «Tracer Bullets», а Alistair Cockburn - «walking skeleton».

Можете ли вы также определить, что приложение находится в контексте вашей диссертации? Вы рассматриваете только application software или . Вы также имеете дело с более сложными системами?

0

Если у Роберта Мартина есть что сказать об этом (и он назвал оригинальное собрание манифеста Агил IIRC), то у абсолютно архитектуры есть все, что нужно для Ловкости. Весь первый раздел его книги Agile Software Development, Principles, Patterns, and Practices посвящен архитектурным принципам SOLID. Это несколько противоречиво в некоторых кругах, но я не понимаю, почему. Если ваша кодовая база хрупка и сильно связана, она не может быть очень открыта для изменения, что является признаком гибкости. Концептуально отделяющий процесс от практики кода - очень непростая задача.

Принцип 1 манифеста: «Мы ценим людей и взаимодействуем над процессами и инструментами».

Определение гибкого «процесса» как абстракции, отделенной от архитектуры кодовой базы ко мне, нарушает дух этого первого принципа.

Смежные вопросы