既然软件架构是关于结构和愿景的,那你可以说它总是存在的。我同意,确实如此。说了这么多,显而易见,不思考软件架构(以及“大局”)会导致团队经常遭遇一些常见问题。问问你自己下面这些问题:
- 你的软件系统有良好定义的结构吗?
- 团队里每个人都以一致的方式实现特性吗?
- 代码库的质量水平一致吗?
- 对于如何构建软件,团队有共同的愿景吗?
- 团队里每个人都得到了足够的技术指导吗?
- 有适当的技术领导力吗?
如果上面某些问题的答案是“不”,那就需要很好的团队和很好的运气才可能成功地交付一个软件项目。如果没人思考软件架构,最终结果往往看起来像一团乱麻(big ball of mud)1 。当然,会有一个结构,但不是你想要的!其他副作用还包括软件系统太慢、不安全、脆弱、不稳定、难以部署、难以维护、难以改变、难以扩展,等等。我敢肯定你从没见过或参与过这样的软件项目,对吗?你没有,我也没有。
1 : http://www.laputan.org/mud/ 。
既然软件架构是每个软件系统都固有的,那我们为什么不干脆承认这一点,放一些心思在上面?