Зачем уделять внимание архитектуре ПО?
Если предположить, что все программисты пишут идеальные программы - то архитектура по определению не нужна. Но в реальности программисты имеют разные знания и опыт, а языки программирования предоставляют всевозможные способы реализации ПО. Выбор тех или иных способов в зависимости от задачи порой считается искусством программирования.
Выполняя спецификацию программного обеспечения мы рассуждаем лишь о том, что программа должна делать. Но любой, кто отвечает за реализацию программного обеспечения, должен задуматься о большем. Ему необходимо выстроить архитектуру — форму, в рамках которой будут творить программисты.
При этом задачей архитектора ПО является направить искусство и способности каждого программиста в соответствии с выбранной архитектурой ПО в целом. Это позволит отдельные программные решения не превратить в бесформенную кучу. Когда соединяют составляющие части ПО без архитектуры она не превратится в единое целое. Это будут практически бесполезные, с точки зрения архитектора, программы - так как их невозможно использовать повторно и код становится настолько запутанным, что его после определенного периода невозможно развивать. Именно поэтому программы с плохой архитектурой предпочитают переписать заново - они в дальнейшем не подаются развитию и сопровождению.
Хорошая архитектура ставит программиста в такие условия, в которых он, независимо от своих знаний, вынужденно напишет качественную программу или она просто не будет работать. Именно поэтому первым шагом является выбор инструментальных средств, языка программирования и принятие единого стиля программирования. Но это только первый шаг, например, использование C# предотвратит грубые ошибки, но тем не менее не компенсирует недостатки проекта и выбранной архитектуры.
Таким образом, когда речь идет о небольшой программе или когда программирует только один программист, если не уделять внимание архитектуре - это тем не менее будет не так заметно, но когда идет речь о промышленном программировании существует опасность, что реализация станет не возможна из-за непродуманности и не строгости архитектуры, несмотря на то, что отдельные части будут хорошо функционировать.