Думаю, нет смысла уходить в академические дебри и рассказывать, что такое архитектура приложений. Все прекрасно понимают такие требования как легкая поддержка, масштабируемость, повторное использование и т.п., а так же каждый разработчик мучился от того, что его изменения ломают другие части системы, и это только малая доля сложностей на пути к идеальной архитектуре. Можно ли достичь идеальной архитектуры? — я думаю, на эту тему будет отдельный пост.