Связь архитектуры и процесса разработки
Понятие «архитектура» обычно определяют как “структурная декомпозиция системы, включающая ее разделение на части, их связность, механизмы взаимодействия и руководящие принципы, которые формируют проект системы.” [1] Хотя, с технической точки зрения это не такое уж ошибочное определение, оно все же достаточно вольно интерпретируется. В то же время Grady Booch и Martin Fowler [4] предлагают ценностно-ориентированные определения архитектуры программного обеспечения. Оба определяют архитектуру с точки зрения значимых решений, которые являются дорогостоящими и трудноизменяемыми. Paul Dyson и Andy Longshaw [5] расширили структурное рассмотрение архитектуры логически обоснованным "почему" фактором, который направляет ход проектных решений. Эти определения помогают нам посмотреть на архитектуру как на реалию, отвечающую набору требований, таких как функциональные требования, эксплуатационные характеристики и приспособленность разработчика. На практике, выражение архитектуры программного обеспечения может включать в себя одномоментную выборку решений, от набросанных от руки эскизов и вплоть до важных деталей, некоторые из которых являются должным образом и в явной форме обоснованными решениями, некоторые являются гипотезами и предположениями, а некоторые являются непреднамеренно принятыми решениями, значимость которых признают только в ретроспективе. Следовательно, архитектура представляет собой определенный сервис, направляющий и развивающий программную систему в направлении достижения ряда коммерческих и технических целей [6], выраженных в форме, лучше всего способствующей общению и обмену. Сама по себе она не является техническим артефактом, выраженным в качестве чисто формального описания. Процесс разработки можно рассматривать в качестве ответа на ряд вопросов: кто и чем занимается, когда, как, почему и для кого? Таким образом, все проекты разработки программного обеспечения имеют собственный процесс, даже если он и не явный. Все же, очевидно, что способы подбора команды разработчиков, утверждения бюджета и составления плана проекта являются, как раз, теми решениями, которые в значительной степени оказывают влияние на выбор и жизнеспособность любой архитектуры. Процесс должен поддерживать команду проекта, а не наоборот; проектные команды получают оплату не за удовлетворение требований процесса, а за доставку работающего программного обеспечения! Agile процессы как раз нацелены именно на это. -- Оригинал статьи: http://www.infoq.com/articles/architecture-and-agility-good-friends Авторы: Frank Buschmann, Kevlin Henney
Литература1 J. Rumbaugh, I. Jacobsen, and G. Booch, The Unified Modeling Language Reference Manual, Addison-Wesley, 1998. 2 J. Spolsky, “Architecture Astronauts Take Over,” 1 May 2008. 3 G. Booch, “On Design,” blog, Mar. 2006. 4 M. Fowler, “Who Needs an Architect?,” IEEE Software, vol. 20, no. 5, 2003, pp. 11–13. 5 P. Dyson and A. Longshaw, Architecting Enterprise Solutions, John Wiley & Sons, 2004. 6 R. Faber, “Architects as Service Providers,”IEEE Software, vol. 27, no. 2, 2010, pp.33–40.
|
Еще интересные статьи на эту тему:
|