写点什么

Week1

用户头像
关注
发布于: 2020 年 06 月 09 日
Week1

什么是软件架构?

封面即软件架构的组成含义示例图。软件架构由架构元素和元素间的关系组成,架构不单单指软件代码。硬件服务器,业务架构,部署架构,开发架构等等等等,都是软件架构的一部分。所有系统都需要有架构设计。架构师的产出就是架构文档,架构文档由文字和架构视图组成。需要注意的是,架构文档、架构图关键是确定相关方,确定你做的架构图写的架构文档是给谁看,他们的关注点有哪些?站在他们的角度上,是不是可以理解你做的架构图?脱离了使用者,架构文档毫无意义。

4+1架构视图

逻辑视图:设计的对象模型

过程视图:捕捉设计的并发和同步特征

物理视图:描述了软件到硬件的映射,反映了部署特性

开发视图:描述了在开发环境中软件的静态组织架构

场景视图:描述用例场景

4+1视图模型,传递的理念是非常重要的。它传递出的是软件架构,不可能使用一种视图描述清楚。软件架构是非常复杂、立体的。需要多种视图来阐述。

软件设计的三个阶段

三个重要的文档:需求分析文档,概要设计文档,详细设计文档。

需求分析

一般情况下是产品经理的工作,需要给出用例图,需求分析文档。产出:系统大体的功能和概要就有了。

应该画什么图?(用例图(核心)、活动图(业务流程图)、状态图(关键业务对象的状态变更)、时序图(与外部系统的依赖关系))

概要设计

概要设计文档。产出:系统如何部署、高层架构、核心模块、核心的流程。

应该画什么图?(部署图、组件图、时序图(子系统级)(组件级)、活动图(子系统级))

详细设计

详细设计文档。产出:类图和类的详细关系。

应该画什么图?(时序图(类级)、状态图(枚举、boolean值)、活动图(方法级))

软件建模语言UML

什么是模型?

模型是一个系统的完整抽象。人们对某个领域特定问题的求解及解决方案,对他们的理解和认识都蕴含在模型中。通常,开发一个计算机系统是为了解决某个领域特定问题,问题的求解过程,就是从领域问题到计算机系统的映射。(重点是对系统的抽象,对现实业务的抽象)

静态图

通过描述类、对象和数据结构以及它们之间的关系,来描述软件要素中不变的逻辑解构。

用例图、对象图、类图、组件图、包图、部署图

动态图

通过描述执行流程或者实体状态变化方式,来展示软件实体在执行过程中的变化过程。

协作图、序列图(时序图)、活动图、状态图

通用模型元素

包括两部分:模型元素、模型元素之间的连接关系。

模型元素

模型元素

模型元素之间的连接关系

模型元素之间的连接关系

模型元素之间的连接关系包括6个,3组。

这也是类的六种关系(元素之间的静态关系)。

依赖-关联、继承-实现、组合-聚合。

关联比依赖的关联关系更强。一个类是另一个类的成员变量,一般称为关联。方法内的局部变量,一般称为依赖。

继承比实现关联关系更强。

组合比聚合的关联关系更强。依赖一个生命周期的概念,组合的东西,生命周期结束,组件也跟着结束生命。聚合

用例图:说明功能和使用者之间的关系,需求分析阶段使用。

类图:(-)private、(+)public

时序图:描述对象之间的动态的调用关系。对象、生命线、集活、消息。需求分析、概要设计、详细设计。

活动图:描述整个处理流程如何完成。活动图主要关注流程。泳道图。软件设计中使用活动图代替流程图。软件设计中没有流程图。需求分析、概要设计、详细设计。

状态图:

合作图(协作图):基本不画,可以用时序图自动生成

组件图:软件设计中最主要的图。配合组件时序图,可以画出组件之间的依赖关系,动态交互关系。概要设计阶段。

部署图:物理部署。需求设计文档已经由产品经理给出后,部署图是架构设计第一个做的图。

用户头像

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
Week1