关键词:
1 用例建模
统一过程是目前最好的面向对象泛型
分析工作流, 是为了更深的理解需求, 使设计和实现目标系统更加容易
统一过程覆盖了三种类
实体类(分析工作流涉及到的)
边界类
控制类
面向对象分析的三项工作
用例建模: 目标系统如何来提供功能, 不考虑这些功能的先后顺序, 结果是用例图
类建模: 确定实体类以及实体类的属性, 结果是类图
动态建模: 确定由或者对一个实体类的一些操作, 结果是状态图
用例模型
以用例的形式描述目标系统的功能性需求
主要包括三个元素, 参与者+用例+参与者与用例之间的关系
参与者: 用户与目标系统用例进行交互时所扮演的角色, 不是目标系统的角色, 而是属于外部, 参与者可能是人也可能是机器也有可能是另外一个系统, 也可能是信息的主动给予者也可能是信息的被动接受者
参与者需要用一个小人来表示, 要用单数的相关的名称命名
用例: 用来描述一系列的行为, 对特定的客户返回可观察到的结果, 一个用例描述系统做了什么, 而不是怎么做
用例用一个椭圆来表示, 在椭圆中标识用例名, 一般用强动词来表示
关联: 一个参与者可以链接到一个或者多个用例
用一条直线来表示
2 用例图
案例1 电梯系统
案例2 在线商店
案例3 课程注册系统
用例图需要一个用例说明
用例说明包括: 用例名; 简单描述; 事件流; 与其他参与者或者用例之间的关系; 是否有什么特殊要求; 前置条件; 后置条件; ...
参与者之间也有可能有关系
继承关系(泛化): 子参与者继承所有父参与者的行为, 子参与者用空心箭头指向父参与者表示
代理: 请求者发出请求, 实际执行操作的是代理者, 用请求者用虚线箭头指向执行者
用例之间的关系
泛化: 一个用例可以分成几种用例, 这种情况是泛化的关系, 使用空心三角箭头由子类指向父类用例
包含: 一个用例A执行之前需要执行另一个用例B, 则原有用例A包含另一个用例B, 用实心三角箭头由用例A执行用例B, 且在箭头上面写上<<include>>
扩展: 一个用例A的某种结果可能形成另一个用例B, 这个用例B就扩展了用例A, 用实心三角有用例B指向用例A
3 类建模
类建模的产品是类图
类图: 分析阶段的类图, 表达的是软件系统中的实体类与他们之间的关系, 针对功能性需求的一种静态视图
类图表达了模型的静态结构(类, 类的内部结构, 类之间的关系)
形成类建模的方法
名词抽取
CRC(类-职责-合作)卡片方法: 需要较多的领域知识, 更适合对类图进行测试
用名词抽取方法实现类建模
1 对目标系统的业务进行言简意赅的描述
2 从描述中抽取出名词, 这些名词很可能成为候选类
3 对提取出的名词进行筛选处理, 不能成为实体类的排除, 不相关的排除
4 结合用例图等形成初步的类建模
4 动态建模
动态建模的产品是状态图
状态图是类图的补充, 描述了一个类的实例可能的状态以及造成这些状态的事件, 这些事件可能是造成这些状态转变的行为
不是所有的类都需要状态图
案例1 CD播放器
案例2 图书馆的书的状态
案例3 购物系统的订单
案例4 电梯
5 面向对象测试
crc卡片: 对每个类都贴上一个卡片, 该卡片记录了: 类名; 类的功能; 该类将激活的别的类
crc卡片将明确的显示丢失或者不争取的项目
6 软件系统设计
通过需求和分析, 回答了what的问题
在分析和实现之间, 还需要回到how的问题, 这个就是设计
软件系统设计分为
架构设计: 软件系统的整体结构
模块设计: 功能上相对独立, 又可以继承的
数据库设计: 存储和处理数据
数据结构和算法设计: 把软件系统的各个部分连接到一起
用户界面设计: 易用性, 美观大方
软件系统设计先进行架构设计, 在执行后面的四种设计
7 面向对象设计
主要包括两个工作
完成类图: 基于分析阶段的简单类图而完成一个详细类图, 将包括所有的类(实体类; 边界类; 控制类)以及类的属性和方法
完成详细设计: 对类的所有方法进行算法设计, 包括内部变量和数据结构
实现步骤
1) 给每个情景构造交互图
交互图: 完成该情景所涉及的对象以及对象之间传递的消息
包括顺序图和协作图
2) 完成类图
如何给类分配方法
信息隐藏
把方法分配给被激活的类或者对象
做到职责驱动设计
3) 实现详细设计
顺序图
顺序图中有一个矩形, 内含信息组织方式是 类名:对象
一条竖线从矩形延伸下去表示时间的推移顺序
可以在其中用箭头表示信息的传递, 在箭头附近附带调用执行的内容等必要信息
如下表示自己调用自己
条件判断
循环调用
顺序图的具体实例
协作图的实例
软件工程文档-银行业务管理-面向对象分析与设计
软件工程 银行业务管理和现金结算系统---面向对象分析与设计文档 ***原创所有,本文禁止一切形式的未授权转载,如需转载联系作者,请尊重作者权利。以下UML建模图仅供参考。一、面向对象分析1. 建立用... 查看详情
软件工程复习d8章(面向对象设计与分析)d7章
D7章(UML概述) 一、用况建模(画用况图) 二、静态建模(类之间的关系) &n 查看详情
2017级面向对象程序设计寒假作业2
...梯三、MOOC视频学习选择的MOOC:程序设计与算法(三)C++面向对象程序设计选择原因:郭炜老师算是有一定知名度的了,而且下学期教材也用的是他的。这个mooc是从c讲起不是从头讲,适合有一定基础的 查看详情
面向对象分析与设计的底层逻辑(代码片段)
作者| 不拔来源| 阿里巴巴中间件面向对象是符合人认识事物的基本方法01人是怎么认识事物的在面向对象出现之前,已有面向过程的分析方法,为什么面向对象被提出了呢?究其本质原因,人们发现面向过程并... 查看详情
面向过程分析方法与面向对象分析方法的区别
一、结构化分析(面向过程)方法 结构化分析方法(StructuredMethod,结构化方法)是面向过程的程序设计的方法,是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素... 查看详情
面向对象分析与设计的底层逻辑(代码片段)
面向对象是符合人认识事物的基本方法人是怎么认识事物的在面向对象出现之前,已有面向过程的分析方法,为什么面向对象被提出了呢?究其本质原因,人们发现面向过程并不是按照人正常认识事物的方式去分... 查看详情
结构化设计与面向对象设计
...次例会我们就一直在讨论到底是该用结构化分析方法还是面向对象分析方法,以下是他们的区别与优势。 结构化方法和面向对象方法对于不同的软件系统各有优劣。结构化方法把解空间分数据和功... 查看详情
如何评测软件工程知识技能水平?
一、评测软件工程知识技能水平 掌握软件工程知识技能水平,必须了解和掌握软件工程的基本概念和知识,包括软件工程的范畴、软件过程、软件生命周期模型、软件需求、面向对象分析、面向对象设计、实现与集成、维护... 查看详情
结构化方法与面向对象方法的分析比较
...,它极大地推动了计算机软件技术的发展。结构化方法和面向对象方法都是计算技术中常用的软件开发方法,两种开发方法目前都非常流行, 查看详情
mooc软件工程-02面向对象泛型
1内聚 模块 语义上连续的一系列语句,由边界符界定,并且有一个聚集标识符 常见的模块 在面向对象中的类,方法 在面向过程的函数 模块功能单一,内部交互程度最大,模块之间交互程度为最小 ... 查看详情
系统分析与设计学习笔记
...必能成为建筑师”。 这门课程学习的是面向对象分析和设计的核心技能的重要工具。对于使用面向对象技术和语言来,创建设计良好、健壮且可维护的软件来说,这门课程所授予的技能是基本要求。对于创建对... 查看详情
面向对象设计----软件设计师
上午12分下午两大答题30分面向对象的基本概念❤❤❤❤❤采用面向对象的软件开发,通常由面向对象分析,面向对象设计,面向对象实现1面向对象分析OOA:获取对应用问题的理解,主要任务是抽取和整理用户需求并建立问题域精确模... 查看详情
面向对象分析与设计实验七
实验一:http://www.cnblogs.com/scaugsh/p/8983219.html实验二:http://www.cnblogs.com/scaugsh/p/8983253.html实验三:http://www.cnblogs.com/scaugsh/p/9046697.html实验四:http://www.cnblogs.com/scaugsh/p/9056838.html实验七: 查看详情
分数(mooc面向对象程序设计--java语言)(代码片段)
分数题目内容:设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。这个类的构造函数是:Fraction(inta,intb)构造一个a/b的分数。这个类要提供以下的功能:doubletoDouble();将分数转换为doubleFractionplus(Fracti... 查看详情
项目管理系列(22):面向对象系统分析与设计
软件工程文档-银行业务管理-面向对象分析与设计
软件工程 银行业务管理和现金结算系统---面向对象分析与设计文档 ***原创所有,本文禁止一切形式的未授权转载,如需转载联系作者,请尊重作者权利。以下UML建模图仅供参考。一、面向对象分析1. 建立用... 查看详情
软件工程--项目前期
今天初学了软件工程的项目前期,对结构化项目前期和面向对象项目前期有了大概的理解。项目前期的主要工作如下:现状分析:硬件分析,软件分析。需求收集:业务需求,用户需求,功能需求,非功能性需求。粗略设计:体... 查看详情
这是博客
s是早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2=4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将... 查看详情