为了帮助你大致了解本书的内容,这里有每个开发者都应该知道的五件有关软件架构的事。
1. 软件架构不是大型预先设计
软件架构历来被认为跟大型预先设计和瀑布式项目有关,团队要周全地考虑软件设计的所有细节,然后才开始编码。软件架构就是关于软件系统的高层次结构,以及你如何理解它。它是影响软件系统形态的重要决策,而非理解数据库每个字段应该有多长。
2. 每个软件团队都需要考虑软件架构
不论产品的大小和复杂性,每个软件团队都需要考虑软件架构。为什么?简单地说,尚未发生的坏事往往都会发生!如果软件架构是关于结构和愿景的,不考虑这一点就可能产出结构糟糕、内部不一致的软件系统。这样的软件系统难以理解和维护,很可能无法满足一些重要的非功能需求,比如性能、可伸缩性或安全性。明确地考虑软件架构,提供了一种引入技术领导的方式,增加成功交付的胜算也对你有益。
3. 软件架构的角色关乎编码、指导和合作
很多人对软件架构师的印象还很老套,以为就是“象牙塔”软件架构师向毫不知情的开发团队面授机宜。其实并非如此,因为现代软件建构更倾向于成为一种有利于编码、指导和协同设计的方法。软件架构的角色不一定要由一个人来承担,而且要了解得到的架构是否确实行得通,编码是非常好的方式。
4. 无需使用UML
同样地,传统观点还以为软件架构就是试图捕捉每一个细节的庞大UML模型。创造和交流共同的愿景很重要,然而你不见得需要使用UML。实际上,可以说UML并不是一个交流软件架构的好方法。如果要保留一些简单的指导方针,轻量级“框线”风格的草图是一个交流软件架构的有效方式。
5. 好的软件架构是支持敏捷开发的
有一种普遍的误解,认为“架构”和“敏捷”之间是矛盾的。但恰恰相反,好的软件架构是支持敏捷的,可以帮助你拥抱并实现变化。然而好的软件架构并非与生俱来,需要你努力争取。