文章目录
前言: UML面向对象需求分析与建模知识点总结,仅仅为了期末考试。带*不重要了解一下即可。
UML几种常用图
首先先区分uml常用的几种图。
如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。
静态图分为:用例图,类图,对象图,包图,构件图,部署图。
动态图分为:状态图,活动图,协作图,序列图。
1、用例图(UseCase Diagrams):
用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。
2、类图(Class Diagrams):
用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。
各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
2.1.泛化
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
2.2.实现
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
2.3.关联
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量
2.4.聚合
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
2.5.组合
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体
2.6.依赖
【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者
3、对象图(Object Diagrams):
描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。
4、状态图(Statechart Diagrams):
是一种由状态、变迁、事件和活动组成的状态机,用来描述类的对象所有可能的状态以及时间发生时状态的转移条件。
5、活动图(Activity Diagrams):
是状态图的一种特殊情况,这些状态大都处于活动状态。本质是一种流程图,它描述了活动到活动的控制流。
交互图强调的是对象到对象的控制流,而活动图则强调的是从活动到活动的控制流。
活动图是一种表述过程基理、业务过程以及工作流的技术。
它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模。
5.1 带泳道的活动图
泳道表明每个活动是由哪些人或哪些部门负责完成。
5.2 带对象流的活动图
用活动图描述某个对象时,可以把涉及到的对象放置在活动图中,并用一个依赖将其连接到进行创建、修改和撤销的动作状态或者活动状态上,对象的这种使用方法就构成了对象流。对象流用带有箭头的虚线表示。
6、序列图-顺序图(Sequence Diagrams):
交互图的一种,描述了对象之间消息发送的先后顺序,强调时间顺序。
序列图的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。
消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。
序列图中涉及的元素:
6.1 生命线
生命线名称可带下划线。当使用下划线时,意味着序列图中的生命线代表一个类的特定实例。
6.2 同步消息
同步等待消息
6.3 异步消息
异步发送消息,不需等待
6.4 注释
6.5 约束
6.6 组合
组合片段用来解决交互执行的条件及方式。它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。常用的组合片段有:抉择、选项、循环、并行。
7、协作图(Collaboration Diagrams):
交互图的一种,描述了收发消息的对象的组织关系,强调对象之间的合作关系。时序图按照时间顺序布图,而写作图按照空间结构布图
8、组件图(Component Diagrams):
构件图是用来表示系统中构件与构件之间,类或接口与构件之间的关系图。其中,构建图之间的关系表现为依赖关系,定义的类或接口与类之间的关系表现为依赖关系或实现关系。
9、部署图(Deployment Diagrams):
描述了系统运行时进行处理的结点以及在结点上活动的构件的配置。强调了物理设备以及之间的连接关系。
部署模型的目的:
描述一个具体应用的主要部署结构,通过对各种硬件,在硬件中的软件以及各种连接协议的显示,可以很好的描述系统是如何部署的;平衡系统运行时的计算资源分布;可以通过连接描述组织的硬件网络结构或者是嵌入式系统等具有多种硬件和软件相关的系统运行模型。
二、图的差异比较
1.序列图(顺序图)VS协作图
序列图和协作图都是交互图。二者在语义上等价,可以相互转化。但是侧重点不同:序列图侧重时间顺序,协作图侧重对象间的关系。
共同点:时序图与协作图均显示了对象间的交互。
不同点:时序图强调交互的时间次序。
协作图强调交互的空间结构。
2.状态图VS活动图
状态图和活动图都是行为图。状态图侧重从行为的结果来描述,活动图侧重从行为的动作来描述。状态图描述了一个具体对象的可能状态以及他们之间的转换。在实际的项目中,活动图并不是必须的,需要满足以下条件:1、出现并行过程&行为;2、描述算法;3、跨越多个用例的活动图。
3.活动图VS交互图
二者都涉及到对象和他们之间传递的关系。区别在于交互图观察的是传送消息的对象,而活动图观察的是对象之间传递的消息。看似语义相同,但是他们是从不同的角度来观察整个系统的。
三、UML与软件工程
UML图是软件工程的组成部分,软件工程从宏观的角度保证了软件开发的各个过程的质量。而UML作为一种建模语言,更加有效的实现了软件工程的要求。
如下图,在软件的各个开发阶段需要的UML图。
下表是UML使用人员图示:
转载自此帖
第一章绪论
*日程生活中的应用:UML的目标是以面向对象各种相关图的方式来描述任何类型的系统的。最常用的是建立软件系统的模型,也可描述非计算机软件的系统或商业机构或过程。常见应用(信息系统、技术系统、嵌入式实时系统、分布式系统、系统软件及商业系统)
第二章面向对象方法
面向对象方法是一种把面向对象的思想应用于软件开发工程中,指导开发活动的系统方法,是建立在“对象”概念基础方法上的方法学。
面向对象的概念
对象是要研究的任何事物。类是对象的模板。消息是对象之间进行通信的一种规格说明(由三部分组成:接收消息的对象 消息名 实际变元)
面向对象的特征
封装
封装是一种信息隐蔽技术,使数据和加工数据的方法(函数)封装为一个整体 ,以实现独立性很强的模块,使数据更安全。通过封装提高内聚度,降低耦合度
继承
继承性是子类自动共享父类数据的和方法的机制,由类的派生功能体现;继承具有传递性;提高系统的可重用性。
多态
指同一消息为不同的对象接收时可产生完全不同的行动,这种现象称为多态。基于继承的层次关系实现
面向对象的要素:抽象,封装,共享
面向对象的软件开发过程
软件开发过程
面向对象方法用于系统开发有以下优越性
强调从现实世界中客观存在的事务触发来认识问题域和构造系统,这就使系统开发者大大减少了对问题域的理解难度,从而使系统能更准确的反应问题域。
运用人类日常的思维方法(体现于面向对象方法的抽象、分类、继承、消息通信等)进行系统开发,有益于发挥人类的思维能力,并有效控制系统的复杂性。
对象的概念始终贯穿于整个开发过程,使各个开发阶段的系统成分具有良好的对应关系,从而显著提高系统的开发效率和质量,并大大降低了系统维护的难度。
对象概念的一致性,是参与系统开发的各类人员在开发的各个阶段具有相同的语言,有效改善了人员间的交流和协作。
对象的相对稳定性和对易变因素的隔离,增强了系统的应变能力
对象类之间的继承关系和对象的相对独立,为软件复用提供了有力支持
面向对象下一步发展方向:组件化,形式化,智能化
第三章 统一建模语言
UML图(UML是一种半形式化的建模语言)
UML动态图
UML静态图
UML图(百度脑图绘制)
第四章 RUP统一过程
软件开发模型(详细介绍见软件工程导论)
线性:瀑布模型,原型模型等
迭代:螺旋模型,喷泉模型,进化树模型,迭代增量模型等
RUP三大特点
软件开发是一个迭代过程
软件开发由用例驱动
软件开发是以架构设计为中心
迭代过程的优点
降低了在一个增量上的开支风险
降低了产品无法按既定进度进入市场的风险
加快了整个开发工作的进度
RUP开发过程
初始阶段:目标是为系统建立商业案例并确定项目的边界
细化阶段:目标是分析问题领域
构造阶段:所有构件和应用程序功能被开发完毕并集成为产品
交付阶段:确保软件对最终用户是可用的
RUP核心工作流(前6个为核心过程工作流, 后3个为核心支持工作流)
①业务建模:深入了解使用目标系统的机构及商务运作评估目标系统对使用它的机构的影响
②需求:捕获客户的需求并且使开发人员和用户达成对需求描述的共识
③分析与设计:把需求分析的结果转化为分析模型和设计模型
④实现:把设计模型转化为实现结果
⑤测试:检查各子系统的交互与集成,验证所有需求是否都被正确实现,识别,确认缺陷并确保在软件部署之前消除缺陷
⑥部署:成功生成目标系统的可运行版本,并将软件移交给用户
⑦配置与变更管理:跟踪并维护在软件过程中产生的所有制品的完整性和一致性
⑧项目管理:提供项目管理框架,为软件开发制定计划,人员配备,执行和监控等方面的使用准则,并为风险管理提供框架
⑨环境:向软件开发机构提供软件开发环境,包括过程管理和工具支持
第五章 UML建模工具
使用IBM 的 Ration Rose软件使用说明:参考上机实验
第六章 UML的进一步讨论
用例图细节
泛化关系:当多个用例共同拥有一种类似的结构和行为时,可以将它们的共性抽象为父用例,其他用例作为子用例
包含关系:即多个用例的公共用例。《include》
扩展关系:太复杂,简单说就是继承,扩展父用例。《extend》
请假用例图(很重要)
类图细节
关联(包含聚合和合成):对象与对象间关系
关联
聚合
合成
一般化关系(也称泛化关系):父类与子类间,(Java中extends关键字实现)
泛化关系
实现:模型与模型之间(如接口与类,Java中implements关键字实现)
实现
依赖:类与类,且单向
依赖
第七章 UML需求分析与建模的过程
软件需求获取获取困难的原因
客户描述不清楚
需求自身经常变动
分析人员或客户理解有误
需求工程的过程
需求获取:确定和收集与软软件系统相关的、来自不同来源和对象用户的需求信息
需求分析:对获得的用户需求信息进行分析和综合建立软件系统的逻辑模型
需求描述:使用适当的语言,按标准格式描述软件系统的需求,并产生规格说明及相关文档
需求验证: 审查和验证需求规格说明是否正确和完整表达了用户对软件系统的需求
需求获取的方法
现场调查:When、Where、Who、What、Why
网络调查
复杂网络和数据挖掘
第八章 需求分析
UML描述方法
RUP过程中建议使用以架构为中心的UML描述方法
UML视图(PPT绘制)
面向对象分析(OOA)方法基本步骤
OOA是在一个系统开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题
确定系统的逻辑模型:①确定对象和类②确定结构
确定系统的过程模型:状态图、活动图、顺序图、协作图
分析人事管理系统案例——请假模块
员工顺序图.jpg
领导顺序图.jpg
状态图.jpg
第九章 设计
面向对象设计的准则
模块化
抽象
信息隐藏
低耦合度
高内聚
面向对象设计的启发规则
设计结果应该清晰易懂
一般-具体 结构的深度应适当
设计简单类
使用简单协议
使用简单操作
把设计变动减至最少
第十章 实现
选择面向对象语言
采用面向对象方法开发软件的基本目的和主要优点是通过重用提高软件的生产率。选择语言时应考虑的因素:对用户学习面向对象分析、设计和编码技术所能提供的培训操作;在使用该面向对象语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台,对机器性能和内存的需求;继承已有软件的容易程度
第十一章 测试
面向对象的单元测试
数据成员是否满足数据封装的要求
类是否实现了要求的功能
面向对象的集成测试
通常在整个程序编译完成后进行,黑盒测试。
静态测试主要针对程序的结构
动态测试步骤如下:
选定检测的类
确定覆盖标准
利用类图确定待测类的所有关联
根据程序中类的对象构造测试用例。确定使用什么输入激发类的状态,使用类的服务和期望产生什么行为等
面向对象的系统测试 :测试内容包含以下七点
功能测试
强度测试
性能测试
安全测试
恢复测试
可用性测试
安装/卸载测试
搬运自该帖子
此贴为贴图加强与扩展版。。。(๑‾ ꇴ ‾๑)