Week1
什么是软件架构?
封面即软件架构的组成含义示例图。软件架构由架构元素和元素间的关系组成,架构不单单指软件代码。硬件服务器,业务架构,部署架构,开发架构等等等等,都是软件架构的一部分。所有系统都需要有架构设计。架构师的产出就是架构文档,架构文档由文字和架构视图组成。需要注意的是,架构文档、架构图关键是确定相关方,确定你做的架构图写的架构文档是给谁看,他们的关注点有哪些?站在他们的角度上,是不是可以理解你做的架构图?脱离了使用者,架构文档毫无意义。
4+1架构视图
逻辑视图:设计的对象模型
过程视图:捕捉设计的并发和同步特征
物理视图:描述了软件到硬件的映射,反映了部署特性
开发视图:描述了在开发环境中软件的静态组织架构
场景视图:描述用例场景
4+1视图模型,传递的理念是非常重要的。它传递出的是软件架构,不可能使用一种视图描述清楚。软件架构是非常复杂、立体的。需要多种视图来阐述。
软件设计的三个阶段
三个重要的文档:需求分析文档,概要设计文档,详细设计文档。
需求分析
一般情况下是产品经理的工作,需要给出用例图,需求分析文档。产出:系统大体的功能和概要就有了。
应该画什么图?(用例图(核心)、活动图(业务流程图)、状态图(关键业务对象的状态变更)、时序图(与外部系统的依赖关系))
概要设计
概要设计文档。产出:系统如何部署、高层架构、核心模块、核心的流程。
应该画什么图?(部署图、组件图、时序图(子系统级)(组件级)、活动图(子系统级))
详细设计
详细设计文档。产出:类图和类的详细关系。
应该画什么图?(时序图(类级)、状态图(枚举、boolean值)、活动图(方法级))
软件建模语言UML
什么是模型?
模型是一个系统的完整抽象。人们对某个领域特定问题的求解及解决方案,对他们的理解和认识都蕴含在模型中。通常,开发一个计算机系统是为了解决某个领域特定问题,问题的求解过程,就是从领域问题到计算机系统的映射。(重点是对系统的抽象,对现实业务的抽象)
静态图
通过描述类、对象和数据结构以及它们之间的关系,来描述软件要素中不变的逻辑解构。
用例图、对象图、类图、组件图、包图、部署图
动态图
通过描述执行流程或者实体状态变化方式,来展示软件实体在执行过程中的变化过程。
协作图、序列图(时序图)、活动图、状态图
通用模型元素
包括两部分:模型元素、模型元素之间的连接关系。
模型元素
模型元素之间的连接关系
模型元素之间的连接关系包括6个,3组。
这也是类的六种关系(元素之间的静态关系)。
依赖-关联、继承-实现、组合-聚合。
关联比依赖的关联关系更强。一个类是另一个类的成员变量,一般称为关联。方法内的局部变量,一般称为依赖。
继承比实现关联关系更强。
组合比聚合的关联关系更强。依赖一个生命周期的概念,组合的东西,生命周期结束,组件也跟着结束生命。聚合
用例图:说明功能和使用者之间的关系,需求分析阶段使用。
类图:(-)private、(+)public
时序图:描述对象之间的动态的调用关系。对象、生命线、集活、消息。需求分析、概要设计、详细设计。
活动图:描述整个处理流程如何完成。活动图主要关注流程。泳道图。软件设计中使用活动图代替流程图。软件设计中没有流程图。需求分析、概要设计、详细设计。
状态图:
合作图(协作图):基本不画,可以用时序图自动生成
组件图:软件设计中最主要的图。配合组件时序图,可以画出组件之间的依赖关系,动态交互关系。概要设计阶段。
部署图:物理部署。需求设计文档已经由产品经理给出后,部署图是架构设计第一个做的图。
评论