Архитектура. Что такое программная архитектура. Зачем нужна архитектура, страница 4

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

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

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

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

При подходе контур как шаблон создается контур, содержащий собранные воедино части типовой системы. При создании новой системы этот контур используется как основа для нового приложения, в которой затем реализуются абстрактные методы или используется какая-то другая форма настройки (например, создание подклассов). Ясно, что это требует больших усилий, чем простое собирание некоторых классов в свободно организованную библиотеку, а также некоторого предварительного планирования. Однако этот метод дает и более существенные результаты в смысле повторного использования, поскольку в контуре фиксируются и могут быть использованы заново важные и крайне трудно воспроизводимые знания о системной архитектуре. Этот подход позволяет быстрее разрабатывать новые системы, поскольку разработчик получает в свое распоряжение не только код реализации отдельных фрагментов, но и точный план их размещения в непротиворечивом и пригодном для практического применения порядке. Например, контур для разработки Web-приложений может содержать элементы безопасности, простых запросов, взаимодействий, включающих транзакции, службы идентификации пользователя и т.д., а также сведения о поддерживаемых конфигурациях и рекомендации по быстрой сборке разных элементов в готовое Web-приложение. Примером такого коммерческого контура на базе технологий J2EE является Brokat Financial Framework разработки Brokat Technologies2, предназначенный для быстрого создания финансовых приложений.

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

Некоторые рекомендации по разработке контура.

·  Контур должен быть понятен. Нежелательны сложные иерархии, непоследовательные API и тому подобное. Важно, чтобы пользователь мог быстро и эффективно начать работу с контуром.

·  Достаточное количество документации. Имейте в виду, что контур будут долгое время использовать другие программисты. Чем лучше вы сможете разъяснить назначение контура, описать предположения, которые в нем сделаны, и показать, как надо его использовать, тем дольше контур сможет приносить пользу.