这一学期的学习重点是软件架构的学习。软件架构是软件业的一个重要研究领域,也正在受到越来越多的关注,软件架构的地位也日益明显地体现了出来。但是其实据我们所知,无论是从技术角度还是从管理角度,目前针对实际软件开发组织的、有关如何管理软件构架的实用指导文献还十分地缺乏。所以,这本书的主旨就是基于如何把软件构架和行业或组织的实际情况结合起来的探讨。
在设计和分析大型并且复杂的软件密集型系统过程中,我们已经认识到了软件行业和开发组织对这些系统的设计及其最终成败所起的作用。而我们构建系统的目的是为了满足组织的需求(或者在套装产品中的假设需求),这些需求决定了系统的性能、可用性、安全性、与其他系统的兼容性以及在生命周期内适应变化的能力。系统的这些属性都是受软件构架制约的,或者说,上述属性的实现影响着软件设计师的设计选择。
在如何把软件架构与行业或组织的实际情况相结合的问题上,我们可以了解一下真实系统的案例,内容有:1.在最小程度的集中控制下,在本组织范围内快速、方便地共享文档的设想如何最终转化为万维网的软件构架。2.在空中交通管制中,对安全性的极高需求如何使公司为了获得极高可用性而围绕着一个构架构建系统。3.分散在各地的不同开发人员开发的飞行模拟器子系统如何连接成一个构架,以便于各子系统的集成。4.为满足产品同时交付的需求而促使(或者说迫使)公司采用某个适当地构架,从而使该公司能够将一组复杂的相关软件系统构建为一个产品线。5.在组织间和团体内标准化构架方法的需要导致了诸如J2EE和EJB这样的基础结构。向我们展示了如何根据组织和其业务模型的需求、设计师的经验或主流设计方式来构建合适的软件构架。
作为一种开发产品,软件构架在质量、速度和成本方面具有极高的投资回报。这是因为软件构架出现于产品生命期的早期阶段,合理的构架为系统生命期的其他阶段即开发、集成、测试和更改几个阶段奠定了良好的基础。相反,如果构架选择不当,就意味着系统的整体结构有误,而且无法通过细小的修补或删除某些部分得到更正,就会经常导致全部拆解重建。而且,与其他开发活动相比,构架分析的投入较低。由此,我们可以看出软件架构对于整个系统的重要性。