О разработке программного обеспечения. Взгляд архитектора