Последнее изменение: 13 сентября 2010г.


Что такое архитектура? Для начала хочу привести одно из определений Википедии (http://ru.wikipedia.org/wiki/Архитектура):

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

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

Насоздавать кубиков – модулей, из которых строится ПО – просто. Заставить их работать вместе – тоже задача решаемая. А вот как сделать приложение гибким? Расширяемым? Как сделать, чтобы кубики – программые модули – можно было использовать в других местах с минимальными переработками или вообще без них? Как сделать, чтобы изменение в одном месте не повлекло необходимость именений в пятидесяти других? Ответ на все эти и множество других вопросов призвана дать архитектура.

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

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


Общее

Сначала статьи общего плана.


Шаблоны

Потом – различные статьи о шаблонах, анти-шаблонах и всё, что с этим связано.