Архитектор создает архитектуру совместно с другими разработчиками. Они работают,
создавая систему, которая будет иметь высокую производительность и высокое
качество, будет высоко функциональной, тестируемой, дружественной
к пользователю, надежной, постоянно доступной, точной, расширяемой, устойчивой
к изменениям, разумной, легкой в обслуживании, переносимой, безопасной,
защищенной и экономичной. Они знают, что доллсны существовать в пределах этих
ограничений и как-то делать выбор между ними. Поэтому и существует архитектор.
Архитектор имеет самую высокую степень технической ответственности
в этих вопросах. Он выбирает между образцами архитектуры и существующими
изделиями и назначает связи между подсистемами, чтобы разделить их интересы.
Разделение интересов здесь означают создание такого проекта, в котором изменения
в одной из подсистем не откликаются еще в нескольких.__
Истинная задача состоит в том, чтобы исполнять требования приложения наилучшим
|
|
|
из способов, возможных при текущем состоянии технологии, по доступной
для приложения цене, другими словами, иметь возможность рентабельно осуществить
функциональные возможности приложения (то есть варианты использования)
как в настоящее время, так и в будущем. В этом архитектору помогают
UML и Унифицированный процесс. UML содержит мощные инструменты для
формулирования архитектуры, а Унифицированный процесс дает детальное описание
того, что входит в хорошую архитектуру. Но даже в этом случае выбор архитектуры
осуществляется в итоге на основе оценки, основанной на квалификации
и опыте. Архитектор является ответственным за эту оценку. Когда архитектор
в конце фазы проектирования передает описание архитектуры менеджеру проекта,
это означает: «Теперь я уверен, что мы сможем построить систему, не сталкиваясь
с какими-либо серьезными техническими проблемами».
Квалифицированный архитектор должен быть знатоком в двух областях. Первая
из них — это предметная область, в которой он работает, поскольку он должен
общаться со всеми заинтересованными лицами, а не только разработчиками, и понимать
их. Вторая — знание разработки программного обеспечения, вплоть до способности
писать код, поскольку он должен выдать разработчикам архитектуру,
координировать их усилия и получать от них отклик. Также полезно, когда архитектор
имеет опыт разработки систем, подобных данной.
Труден хлеб архитектора в программной фирме. Он не должен быть менеджером
проекта, поскольку эта позиция предполагает множество обязанностей и помимо
архитектуры. Он должен иметь искреннюю поддержку руководства как при
|
|
|
создании архитектуры, так и настаивая на ее соблюдении. Однако он должен быть
достаточно уступчив, чтобы воспринимать то полезное, что говорят ему разработчики
и другие заинтересованные лица. Это краткое описание качеств, необходимых
архитектору. Для больших систем одного архитектора может не хватить. Вместо
этого разумно было бы сделать так, чтобы архитектуру разрабатывала и поддерживала
группа архитекторов.
Разработка архитектуры занимает значительное время. Отводимое на архитектуру
время привлекает к себе внимание в планах разработки и может вызывать
беспокойство у менеджеров, привыкших, что время разработки в основном уходит
на реализацию и тестирование. Опыт показывает, однако, что если поздние
фазы разработки проводятся на базе хорошей архитектуры, то полная продолжительность
разработки заметно снижается. Об этом мы поговорим в главе 5.






