В рамках проходящей уже несколько лет серии семинаров известных специалистов по разработке программного обеспечения Guru Workshop Series компания Tekama пригласила в Москву Рика Казмана, ведущего научного сотрудника Института программной инженерии Университета Карнеги-Меллона. Одной из основных областей интересов Казмана является архитектура программного обеспечения, ее влияние на экономические и технологические аспекты проектов разработки. Его книги выходили и в русском переводе. Московской аудитории Казман предложил обсудить вопросы проектирования и анализа архитектуры программных систем.
Казман убежден в том, что архитектура является фундаментальным артефактом процесса разработки программного обеспечения, определяющим его ход. Поэтому важно прежде всего правильно определить понятие программной архитектуры. Казман призвал аудиторию не ограничиваться построением традиционных схем из прямоугольников, квадратов и овалов, связанных между собой стрелками. Такое «определение» архитектуры имеет много ограничений, не раскрывая сути составляющих ее элементов и не описывая всех существующих между ними зависимостей. По Казману, архитектуру программного обеспечения необходимо определить как структуру системы, которая охватывает все ее программные элементы, их внешне видимые свойства и взаимосвязи. Архитектура — это абстракция системы, ее базовая структура. Любая программная система обладает архитектурой, но для успешной разработки важно, чтобы она была изначально правильно спроектирована и стала руководящим документом для команды разработки.
Фиксация в архитектуре на начальных стадиях разработки принятых решений по дизайну системы во многом определяет возможность достижения необходимых атрибутов качества готового продукта. Кроме того, с продуманной и документированной архитектурой команде разработки проще управлять изменениями в проекте, а также строить работающие каркасы системы по ходу разработки, проверяя ее возможности и обсуждая их с заказчиком еще до полной реализации всех функций. Архитектура также позволяет делать более тщательную оценку материальных и временных затрат и планировать проект разработки. В целом архитектура является средством для четкого определения стратегических целей разработки и реализации продуманных, а не эмпирических способов их достижения.