软件架构是 软件系统的整体结构和组件的抽象描述,它用于指导大型软件系统的设计。以下是关于软件架构的一些关键理解:
软件架构的内容
组成:软件系统的组成,包括子系统及其接口元素的选择,以及元素间的协作行为。
架构风格:不仅与结构和行为有关,也和功能性、兼容性、可用性、系统弹性、性能、适应性、重用性等有关。
其他考虑因素:经济和技术的限制和折中,美学的考虑。
软件架构的层次
系统:由一群有关联的个体组成,能完成个别元件不能独立完成的工作。
子系统:更大的系统的一部分,由一群关联的个体组成。
模块:逻辑单元,从逻辑上将系统分解。
组件:物理单元,可以包括应用服务、数据库、网络等。
框架与架构
框架:组件实现的规范,例如MVC、MVP、MVVM等,提供基础功能的产品。
架构:软件系统的顶层结构,经过系统性地思考,权衡利弊之后在现有资源约束下的最合理决策。
软件架构的设计
概念:软件架构是指软件系统的组织结构和拓扑结构,包括构件的描述、构件的相互作用、指导构件集成的模式以及这些模式的约束。
意义:提供项目干系人交流手段,体现早期设计决策,明确系统实现的约束条件,决定开发和维护组织的组织结构,制约系统的质量属性,使推理和控制更改更简单,有助于循序渐进的原型设计,可作为培训的基础,是可传递和可复用的模型。
软件架构的风格
描述:特定应用领域中系统组织方式的惯用模式,定义了系统“家族”的架构定义、词汇表和一组约束。
软件架构的组成
要素:子系统、模块、组件及其接口元素。
结构:系统要素按照特定结构进行连接交互。
连接:定义架构元素之间的接口和交互关系、集成机制。
软件架构的发展
历程:从无架构设计阶段到基于构件的软件开发阶段,经历了程序结构设计、对象建模、架构技术等阶段。
软件架构的模型
建模:包括结构模型、框架模型、动态模型、过程模型和功能模型,以及“4+1”视图模型(逻辑视图、开发视图、进程视图、物理视图和场景)。
通过以上内容,可以更全面地理解软件架构的概念、组成、设计原则及其在软件工程中的重要性。