软件体系结构(Software Architecture)是软件系统的骨架,由软件系统的各个部分及其相互关系组成。它定义了软件系统的基本组织方式,包括构件、构件之间的关系、构件与环境之间的关系等。[6][7]软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,它的组成包括构成系统元素的描述、元素的相互作用、指导元素集成的模式以及这些模式的约束[a]。软件体系结构不仅指定了系统的组织结构和拓扑结构[b],并且显示了系统需求和构成系统的元素之间的对应关系,提供了设计决策的基本原理。[1] 在20世纪70年代之前,由于当时的软件多采用汇编程序设计,并且软件规模较小,因此几乎不考虑体系结构问题。[10][11]20世纪70年代中后期,随着结构化开发工具的广泛应用,软件体系结构开始作为一个明确的概念出现在系统的开发过程中。[11][12]到了20世纪80年代,面向对象开发方法的出现,强化了软件体系结构在软件开发中的作用。20世纪90年代以后,软件开发采用了构件化技术,软件体系结构作为了一个明确的文档和中间产品置于软件开发过程中,成为软件工程的研究热点。[12] 软件体系结构研究的主要内容涉及软件体系结构描述、软件体系结构风格、软件体系结构评价和软件体系结构的形式化方法等。其根本目的是解决软件重用、软件质量和软件维护问题。[13]软件体系结构的优势在于降低了项目开发的复杂度和风险,可以支持项目管理、跟踪和风险防范 ,并且支持系统演化和复用。[6]在实际应用中,工业、农业以及第三产业等都是与软件体系结构结合的重要领域。[14]同时为了进一步的发展,未来的软件体系结构需要提升其可靠性,并且进一步与网络技术相结合。[15] 基本概念
软件重用