软件架构设计包括“逻辑视图”和“物理视图”设计。两种视图设计都可参看“分而治之”和“迭代式设计”思想进行设计。
分而治之:聚焦不同方面,更有效思考;相当于化“大问题”为“子问题”。
迭代式设计:不同视图设计交替迭代展开;逻辑划分逐步清晰,促进物理分布设计,反之亦然。
架构设计模式模块划分方法:自顶向下(分层)、水平划分和垂直划分(功能划分)
小西天和大系统的架构设计不同,首先是“概念架构”上的不同,而归根溯源这是由于架构所支撑的“关键需求”不同造成的,概念架构的设计顺序:
- 首先,选择架构风格、划分顶级子系统。这两项设计任务是相互影响的,相辅相成的。
- 然后,开发技术选型,集成技术选型、二次开发技术选型。这三项设计任务紧密相关、同时进行。另外可能不需要集成支持,也可以决定不支持二次开发。
概念架构(Conceptual Architechture),界定系统的高层组件、以及它们之间的关系。概念架构意在对系统进行适当分解 、而不陷入细节。借此,可以与管理人员、市场人员、用户等非技术人员交流架构。概念架构规定了每个组件的非正式规约、以及架构视图,但不涉及接口细节。根据上述定义,我们注意到如下几点:
- 概念架构满足“架构=组件+交互”的基本定义,只不过概念架构仅关注高层组件(high-level components)
- 概念架构对高层组件的“职责”进行了笼统的界定(informal specification),并给出了高层组件之间的相互关系
- 而且,必须地,概念架构不应涉及接口细节(without interface detail)。
架构设计的全过程,包括:高层需求分析、需求分析、概念架构设计(对顶级子系统)和细化架构设计(每个子系统)的设计。
高层需求分析包括:系统目标、需求范围、Feature、上下文图
需求分析:流程、功能(用例)、非功能需求
软件架构5维分析
- 商业模式/功能:支撑系统提供有价值的功能特性的能力。
- 运行类属性(可靠性、安全、性能、可服务性、可伸缩性、易用性):支撑系统运行维护的各种DFX属性,相应的基本属性包括可靠性、安全性、可服务性、性能、可伸缩性/可扩展性、节能减排和易用性。
- 可交付类属性:支撑系统快速交付、快速部署的能力,相应的基本属性包括可供应性、可制造性和可部署性。
- 开发与演进类属性(可演进性、可测试性等):支撑系统能够快速、高效、高质量开发出来,并能够方便修改、重用,持续演进,相应的基本属性包括可构建性、可测试性、可演进性、可重用性和易学习性。
- 生态类系统属性(开放性、可定制性、易集成性、兼容性):支撑系统构建开放、打造生态系统的能力,相应的基本属性包括开放性、可定制性、易集成性和兼容性。