参考链接:
(1)软件工程中的各种图
https://www.cnblogs.com/sungyouyu/p/3590592.html
(2)UML 用例图,时序图,活动图的定义以及区别
https://www.cnblogs.com/sdjnzqr/p/4043288.html
(3)用例图与用例描述
https://www.jianshu.com/p/e1ff96af7e8c
(4)【UML 建模】UML入门 之 交互图 – 时序图 协作图详解
https://blog.csdn.net/shulianghan/article/details/17927131
(5)【必看!!!】UML之时序图详解
https://blog.csdn.net/xingjiarong/article/details/50232199
(6)软件工程各阶段的UML图应用
https://www.cnblogs.com/ygj0930/p/6616876.html
(7)软件工程 UML类图(Java)https://blog.csdn.net/JxufeCarol/article/details/104084452
CMM 能力成熟度模型:它是对于软件在组织定义,实施,度量,控制和改善软件过程的实践中对于各个发展阶段的描述。CMM的核心是软件开发视为一个过程。并根据这一个原则对软件开发和维护进行监控和研究,以使其更加科学化、标准化、使企业能够更好的实现商业目标。
项目失败的原因:70%项目的失败不是由于技术原因导致的,而是由管理不善引起的。
解决:引入统一建模语言UML进行规范描述
UML(Unified Modeling Language,统一建模语言)是一种基于面向对象的可视化语言。
它采用一组形象化的图形(如类图)符号作为建模的语言。使用这些符号可以形象的描述系统的各个方面。UML是通过建立图形之间的各种关系(如类之间的关系)来描述模型。
UML图形一共有十种,分为静态模型图和动态模型图。其中静态模型图主要描述系统的静态结构,动态模型图主要描述系统行为的各个方面。
静态模型图:类图、对象图、包图、组件图、部署图。
动态模型图:用例图、时序图、协作图、状态图、活动图。
(1)需求分析阶段
(2)概要设计阶段
(3)详细设计阶段
用例图:
由《开发文档》中的“功能详细设计”部分,画出每一个功能用例的约束图,主要包括:用例名、用例流程、异常处理等操作。
类图:对每个用例的架构、以及功能模块的划分,可以初步确定系统需要多少个实现类组成,画出类图。
时序图:根据每个用例的活动图以及第五步的系统类图,为每个用例画出时序图,更加清晰明确地模拟出用户是怎么一步步调用哪个类的哪个方法来实现进行功能交互的。
(1)时序图和活动图之间的关系和区别
(2)时序图和协作图之间的关系和区别
(3)
用例图也被称为用户模型图,是从软件的需求分析的到最终实现的第一步,它是从客户角度来描述系统功能的。用例模型就是以用例为基本单位建立的一个系统功能展示模型,它是系统所有用例的集合,以统一、图形化的方式展示系统的功能和行为特性。
它包含三个基本组件:参与者(使用系统的人或事物)、用例(代表系统的某项完整的功能,在图形中使用椭圆型表示)、关系(关联关系、泛化关系、扩展关系、包含关系)。
【Example】
用例图描述了系统提供的一个功能单元。
用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"角色"(actors,也就是与系统交互的其他实体)关系,以及系统内用例之间的关系。
用例图一般表示出用例的组织关系——要么是整个系统的全部用例,要么是完成具有功能(例如,所有安全管理相关的用例)的一组用例。
要在用例图上显示某个用例,可绘制一个椭圆,然后将用例的名称放在椭圆的中心或椭圆下面的中间位置。要在用例图上绘制一个角色(表示一个系统用户),可绘制一个人形符号。
角色和用例之间的关系使用简单的线段来描述。
【用例描述】
在描述用例时一定要注意:
1)围绕“交互”进行场景描述。
2)保持“规格说明”级别,尽可能不要涉及界面、按钮、方法等软件系统的内部构造机制。
3)正常流程中,注意交互序列的完整性,用户操作与系统反应都应该写出来。
【建立用例图步骤】
a. 进行目标分析与确定解决方向
b. 寻找参与者
c. 寻找用例
以上面系统用例图为例,“特价策略制定”、“赠送策略制定”两个用例的业务目的、发起源和过程基本相同的,仅仅业务数据不同的可以合并成一个用例;“会员管理”用例有两个明显不同的业务事件,可以被细化为“发展会员”和“礼品赠送”两个更细粒度的用例;“库存处理”有三个不同业务目标:出库、入库、库存分析。最终调整和细化后如下图:
类图是面向对象系统建模中最常用的,也是定义其他图的基础。它主要是用来显示系统中的类,接口及他们之间的关系。类图中包含的主要元素有类、接口、和关系。其中的关系有关联关系、泛化关系、依赖关系、实现关系。在类图中也可以包含注释和约束。
类是类中的主要组件,有3部分组成:类名、属性和方法。
接口的表示法:在UML中接口用一个带有名称的圆圈表示。并且通过一条实践与它的模型相连。也可以使用普通的类表示,但是要在上面要做声明。
时序图用于描述对象之间的传递信息的时间顺序,即用例中的行为顺序。
序列图显示具体用例(或者是用例的一部分)的详细流程。它几乎是自描述的,并且显示了流程中中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用。
序列图有两个维度:垂直维度以发生的时间顺序显示消息/调用的序列;水平维度显示消息被发送到的对象实例。
(1) 对象(Object)
对象 : 时序图中的对象在交互中扮演的角色就是对象;
对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;
对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;
(2) 生命线(Lifeline)
生命线 : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线;
生命线作用 : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间;
对象的生命线 : 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标 以及 对象下面的生命线图标 如上图;
(3) 激活(Activation)
激活(Activation) : 代表时序图中对象执行一项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表示该对象被占用以完成某个任务;
去激活(Deactivation) : 指对象处于空闲状态, 在等待消息激活这个对象;
激活的表示 : 当对象处于激活时期, 生命线可以拓宽为矩形, 这个矩形条成为激活条;
激活去激活的时机
(4) 消息
消息概念 : 定义 交互 和 协作 中 交换信息 的类, 对 对象之间的 通信内容 建模;
消息动作 :
消息的异步和同步通信 :
消息类型 :
活动图本质上就是流程图。它用于描述系统的活动,判定点和分支等。活动中的动作状态,原子的、不可已中断的动作,并在此动作完成后向另一个动作转变。分支与合并。
活动图表示在处理某个活动时,两个或者更多类对象之间的过程控制流。活动图可用于在业务单元的级别上对更高级别的业务过程进行建模,或者对低级别的内部类操作进行建模。
分支在软件系统中很常见:用于表示对象类具有的条件行为。用一个布尔型的表达式真假来判定动作的流向,合并有两个如转换一个出转换,分支有一个如转换两个出转换。
状态图包括状态、转换、初始状态、终止状态。
协作图也叫做合作图,是一种交互图。
时序图主要侧重于对象之间的消息传递在时间上的先后关系。
而协作图表达对象之间的交互过程及对象之间的关联关系。
对象图是类图的实例,用于显示系统执行时的一个可能的快照。即在某一个时间系统上可能出现的样子,对象图用带有下滑线的对象名称表示对象。
组件图用来建立系统中各种组件之间的关系。各个组件通过功能组织在一起。JavaBean,ejb,jsp都是组件。
在UML中,组件使用左侧有两个小矩形的矩形来表示。
组件图用来设计系统的整个架构。
包图由包与包之间的关系组成,包的图标就如同一个带标签的文件夹。
部署图是用来帮助开发者了解软件中各种组件驻留在什么硬件位置,以及这些硬件之间的相互关系。