面向对象的分析过程
第5讲 面向对象的分析-建立对象模型
在需求陈述中,找到一些名词词组 领域知识和常识 只需要重要的属性,不需要实现阶段的属性 不能把对象作为属性 不能把关联类的属性作为一般对象的属性 不能把限定当作属性,如分行代码是限定词,决定 总行拥有的哪一个分行 如果有毫不相关的属性,则可以考虑分解为两个类
识别继承关系
继承关系的识别,需要领域知识 自底向上,有共同属性泛化出父类 自顶向下,将父类细化成子类
1.面向对象分析过程
首先,系统分析员要对需求文档进行分析。发现和改正需求 文档中的歧义性、不一致性,剔除冗余的内容,挖掘潜在的 内容,弥补不足,从而使需求文档更完整、更准确。 然后,是需求建模。系统分析员根据提取的用户需求,即用 面向对象观点建立对象模型、动态模型和功能模型。
最后,是需求评审。通过用户、领域专家、系统分析员和系 统设计人员的评审,并进行反复修改后,确定需求规格说明。
完善
1 给关联定义含义明确的名字。“分行拥有柜员终 端” 2 为了适应不同的关联,分解前面析出的类 如事务分解为远程事务和柜员事务 3 补充。 当分解出柜员事务后,多出几个关联,如 柜员输入柜员事务,ATM上输入远程事务 4 标明重数。
ATM系统原始的类图
确定属性
确定类间关联
由需求陈述中的动词词组表示关联关系 确定隐含的关联
总行有多个分行构成 分行保管帐号 储户拥有现金兑换卡
根据问题域知识得到的关联
现金兑换卡访问帐号 分行雇佣柜员
筛选
1去掉前面已删除的对象引起的关联 2 去掉实现阶段考虑的关联 3 去掉瞬时事件(有更长期的联系存在) 4 将3元关联,变为两个2元的,或者限定的 5 去掉重复的关联。如总行拥有多台ATM, 事 实上是与(总台拥有中央计算机,中央计算 机与ATM通信)重复的
面向对象分析方法
面向对象分析方法面向对象分析方法是以系统的用户和目的为出发点的一种分析技术,它主要用于分析系统中的物体(对象)之间的关系,以及这些物体所具有的通用性质,以便将它们组织为一个可使用的整体系统。
在软件开发中,面向对象分析方法用于发现和描述系统中的对象,以及它们之间的关系,并将这些对象组织为可重用的模块,以便用于系统的设计和实现。
面向对象分析方法包括四个主要步骤: 1、识别对象:根据系统的用户和目的,识别系统中的对象,并确定它们之间的关系。
2、分析对象:对系统中的对象进行进一步分析,以便更好地理解它们之间的关系。
3、确定对象的功能:确定系统中的对象应该具有的功能,以及它们之间的关系应该如何实现。
4、设计对象结构:考虑到对象之间的关系,设计系统的对象结构,以便将它们组织为可重用的模块。
面向对象分析方法有助于定义和分析系统中的对象以及它们之间的关系,从而准备进行软件设计和实现。
它能够帮助开发人员更好地理解系统的用户和目的,以及系统的功能和结构,从而有效地实现软件开发过程。
首先,面向对象分析可以帮助开发人员确定和识别系统中的对象,以及它们之间的关系。
通过分析用户和目的,开发人员可以确定用户可能会使用的对象,以及这些对象之间的关系。
在确定系统中的对象之后,开发人员可以分析这些对象,以便更好地理解它们之间的关系。
其次,面向对象分析可以帮助开发人员确定系统中的对象应该具有的功能,以及它们之间的关系应该如何实现。
通过分析用户和目的,开发人员可以确定每个对象应具有的功能,以及它们之间的关系应该如何实现。
最后,面向对象分析可以帮助开发人员设计系统的对象结构,以便将它们组织为可重用的模块。
在设计对象结构时,开发人员需要考虑到对象之间的关系,以及它们应该如何被组织和重用。
总之,面向对象分析方法是一种帮助开发人员确定和分析系统中的对象以及它们之间的关系的技术,从而为软件设计和实现提供依据。
它可以帮助开发人员确定系统中的对象,以及它们应该具有的功能和结构,从而有助于软件开发过程的有效实施。
软件工程-面向对象分析
第7章面向对象分析•7.1.1 面向对象分析过程面向对象的分析主要以用例模型为基础。
开发人员在收集到的原始需求的基础上,通过构建用例模型从而得到系统的需求。
进而再通过对用例模型的完善,使得需求得到改善。
所谓用例是指系统中的一个功能单元,可以描述为参与者与系统之间的一次交互。
用例常被用来收集用户的需求。
①首先要找到系统的操作者,即用例的参与者。
参与者是在系统之外,透过系统边界与系统进行有意义交互的任何事物。
②可以把参与者执行的每一个系统功能都看作一个用例。
可以说,用例描述了系统的功能,涉及系统为了实现一个功能目标而关联的参与者、对象和行为。
③确定了系统的所有用例之后,就可以开始识别目标系统中的对象和类了。
把具有相似属性和操作的对象定义为一个类。
边界类示意图控制类示意图目标系统的类可以划分为边界类、控制类和实体类。
Ø边界类代表了系统及其操参与者的边界,描述参与者与系统之间的交互。
它更加关注系统的职责,而不是实现职责的具体细节。
通常,界面控制类、系统和设备接口类都属于边界类。
Ø控制类代表了系统的逻辑控制,描述一个用例所具有的事件流的控制行为,实现对用例行为的封装。
通常,可以为每个用例定义一个控制类。
Ø实体类描述了系统中必须存储的信息及相关的行为,通常对应于现实世界中的事物。
确定了系统的类和对象之后,就可以分析类之间的关系了。
对象或类之间的关系有依赖、关联、聚合、组合、泛化和实现。
①依赖关系是“非结构化”的和短暂的关系,表明某个对象会影响另外一个对象的行为或服务。
②关联关系是“结构化”的关系,描述对象之间的连接。
③聚合关系和组合关系是特殊的关联关系,它们强调整体和部分之间的从属性,组合是聚合的一种形式,组合关系对应的整体和部分具有很强的归属关系和一致的生命期。
比如,计算机和显示器就属于聚合关系。
④泛化关系与类间的继承类似。
⑤实现关系是针对类与接口的关系。
明确了对象、类和类之间的层次关系之后,需要进一步识别出对象之间的动态交互行为,即系统响应外部事件或操作的工作过程。
面向对象分析与设计
面向对象分析与设计在软件开发过程中,面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是一种重要的方法论。
通过OOAD,开发者可以将现实世界中的概念和问题转化为软件系统的结构和行为。
一、什么是面向对象分析与设计?面向对象分析与设计是一种以对象为核心的开发方法。
它强调将问题领域的实体、关系和行为抽象为对象、类和方法。
面向对象的分析阶段主要关注问题领域的需求和约束,而设计阶段则更关注如何将需求转化为可执行的软件系统。
二、面向对象分析与设计的优势1. 模块化:面向对象的方法将复杂的系统拆分为多个独立的对象,每个对象都有清晰的职责和接口。
这种模块化可以提高代码的可维护性和可复用性。
2. 继承与多态:继承是面向对象编程中的重要特性,它允许新的类继承已有类的属性和方法。
多态则允许对象在不同上下文中表现出不同的行为。
这些特性使得代码更加灵活和易于扩展。
3. 封装与信息隐藏:面向对象的方法将数据和操作封装在对象内部,外界只能通过对象的接口进行交互。
这种封装和信息隐藏可以保护数据的完整性和安全性。
4. 规范化的开发流程:面向对象的分析与设计有一套规范的开发流程,包括需求分析、概念设计、详细设计和实现等阶段。
这种流程可以提高开发效率,并减少错误和重复工作。
三、面向对象分析与设计的过程1. 需求收集与分析:在这个阶段,开发者与用户密切合作,收集和分析系统的业务需求。
通过访谈、文档分析等方法,确定系统的功能、性能和约束等方面的要求。
2. 概念设计:在概念设计阶段,开发者将业务需求转化为概念模型。
通过绘制用例图、类图、状态图等工具,描述系统的结构和行为。
3. 详细设计:在详细设计阶段,开发者将概念模型进一步细化,确定具体的类和接口。
同时,还需要考虑系统的性能、安全和可维护性等方面的问题。
4. 编码与测试:在编码阶段,开发者根据详细设计的要求,使用具体的编程语言实现系统。
面向对象分析
面向对象分析:是确定需求或者业务的角度,按照面向对象的思想来分析业务。
例如:OOA只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象。
OOA与结构化分析有较大的区别。
OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
基本步骤:
在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤:
第一步,确定对象和类。
这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。
类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。
第二步,确定结构(structure)。
结构是指问题域的复杂性和连接关系。
类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
第三步,确定主题(subject)。
主题是指事物的总体概貌和总体分析模型。
第四步,确定属性(attribute)。
属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。
第五步,确定方法(method)。
方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。
对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。
面向对象分析的基本过程
10.1 面向对象分析的基本过程10.2 需求陈述10.3 建立对象模型10.4 建立动态模型10.5 建立功能模型10.6 定义服务不论采用哪种方法开发软件,分析的过程都是提取系统需求的过程。
分析工作主要包括3项内容,这就是理解、表达和验证。
首先,系统分析员通过与用户及领域专家的充分交流,力求完全理解用户需求和该应用领域中的关键性的背景知识,并用某种无二义性的方式把这种理解表达成文档资料。
分析过程得出的最重要的文档资料是软件需求规格说明(在面向对象分析中,主要由对象模型、动态模型和功能模型组成)。
面向对象分析(OOA)的关键是识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。
在用面向对象观点建立起的3种模型中,对象模型是最基本、最重要、最核心的。
10.1 面向对象分析的基本过程10.1.1 概述面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。
通常,面向对象分析过程从分析陈述用户需求的文件开始。
可能由用户(包括出资开发该软件的业主代表及最终用户)单方面写出需求陈述,也可能由系统分析员配合用户,共同写出需求陈述。
当软件项目采用招标方式确定开发单位时,“标书”往往可以作为初步的需求陈述。
接下来,系统分析员应该深入理解用户需求,抽象出目标系统的本质属性,并用模型准确地表示出来。
用自然语言书写的需求陈述通常是有二义性的,内容往往不完整、不一致。
分析模型应该成为对问题的精确而又简洁的表示。
后继的设计阶段将以分析模型为基础。
更重要的是,通过建立分析模型能够纠正在开发早期对问题域的误解。
10.1.2 3个子模型与5个层次面向对象建模得到的模型包含系统的3个要素,即静态结构(对象模型)、交互次序(动态模型)和数据变换(功能模型)。
解决的问题不同,这3个子模型的重要程度也不同:几乎解决任何一个问题,都需要从客观世界实体及实体间相互关系抽象出极有价值的对象模型;当问题涉及交互作用和时序时(例如,用户界面及过程控制等),动态模型是重要的;解决运算量很大的问题(例如,高级语言编译、科学与工程计算等),则涉及重要的功能模型。
面向对象分析及其包括的图建模步骤
一、叙述基于UML的面向对象分析设计过程1)识别系统的用例和角色首先对项目进行需求调研,依据项目的业务流程图和数据流程图以及项目中涉及的各级操作人员,通过分析,识别出系统中的所有用例和角色;接着分析系统中各角色和用例间的联系,再使用UML建模工具画出系统的用例图,同时,勾画系统的概念层模型,借助UML 建模工具描述概念层类图和活动图。
2)进行系统分析,并抽象出类系统分析的任务是找出系统中所有需求并加以描述,同时建立特定领域模型。
建立域模型有助于开发人员考察用例,从中抽取出类,并描述类之间的关系。
3)设计系统和系统中的类及其行为设计阶段由结构设计和详细设计组成。
①结构设计是高层设计,其任务是定义包(子系统),包括包间的依赖关系和主要通信机制。
包有利于描述系统的逻辑组成部分以及各部分之间的依赖关系。
②详细设计就是要细化包的内容,清晰描述所有的类,同时使用UML 的动态模型描述在特定环境下这些类的实例的行为。
二、UML中包括哪些图及每件图的作用UML中包括九种图:用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、配置图。
1)用例图(Use Case Diagram)它是UML中最简单也是最复杂的一种图。
说它简单是因为它采用了面向对象的思想,又是基于用户视角的,绘制非常容易,简单的图形表示让人一看就懂。
说它复杂是因为用例图往往不容易控制,要么过于复杂,要么过于简单。
用例图表示了角色和用例以及它们之间的关系。
2)类图(Class Diagram)是最常用的一种图,类图可以帮助我们更直观的了解一个系统的体系结构。
通过关系和类表示的类图,可以图形化的方式描述一个系统的设计部分。
3)对象图()对象图是类图的实例,几乎使用与类图完全相同的标识。
面向对象分析
面向对象分析
面向对象分析是计算机科学领域中使用最广泛的一种分析技术,它是一种结构化的分析方法,是系统分析的更新与系统设计的预备工作。
面向对象分析可以帮助我们更好地理解和分析现有系统,并为系统重构提供指导。
面向对象分析是一种以对象为中心,以建模和分析实体、对象和对象之间的关系为主要任务的分析方法。
它的主要目的是将概念抽象为实体,然后利用视图及关系描述它们之间的关系。
面向对象分析包括分析、设计、建模过程,分析过程也称为面向对象分析(OOA)。
面向对象分析强调对对象的分析,对象可以看作对实际世界中的实际事物的抽象。
对象可以由属性和行为组成,属性描述了对象的内部状态,行为描述了它如何处理消息。
在面向对象分析中,这种抽象事物被描绘为类,每个类有一组共享的属性和行为。
面向对象分析和设计的主要工作是抽象建模,确定对象之间的关系,并利用抽象和关系建模系统。
建模可以帮助我们清楚地了解系统结构,以及每个系统元素之间的联系。
一旦建模完成,可以使用模型来设计、分析和实现高级的系统。
面向对象分析是一种结构化的分析方法,用于理解和描述系统的行为,从而有效地构建高质量的系统。
它的关键是建立系统的实体、关系和视图,从而提出系统的结构,并提出系统实现的可行方案。
总体而言,面向对象分析是一种重要而普遍应用的管理技术,它是系统分析和设计过程中的重要组成部分。
对对象的分析有助于进行
更好的系统设计,增强了系统容量,提高了系统灵活性和性能,为组建现代软件系统提供了可行的工具。
面向对象程序设计的分析基本步骤
⾯向对象程序设计的分析基本步骤(1)分析项⽬中有哪些类(或对象)参与程序。
分析结果:
*对象选择的标准:
第⼀,这个对象的确能参与程序的运⾏。
第⼆,这个对象有对象的基本特征。
第三,对象必须是项⽬强相关的对象。
初步找到的:试卷、试题、计算机、考⽣、答案、题⼲、选项.…
筛选后:
试卷类:本项⽬中只有⼀张试卷(后续扩展可以做成多套试卷)
试题类:包括题⼲、选项、答案。
(经过分析答案还应该有⼀个独⽴的对象)
答案类:包括正确答案、答案分析、所选答案。
(答案和试题是关联的)
边界类:项⽬主界⾯(负责和⽤户交互,完成对象关联)
(2)分析项⽬中类或对象之间的关系。
分析结果:
试卷->试题:⼀张试卷包含若⼲试题。
⼀对多。
试题在试卷中应该以集合对象形式存在。
试题->答案:⼀道试题有⼀个答案,⼀对⼀。
答案对象应该在试题中以对象属性形式存在。
边界类->试卷:⼀个窗体中有⼀个试卷对象。
⼆、设计类
1.设计答案类。
属性:正确答案、所选答案、答案分析。
2.设计试题类。
属性:试题编号、题⼲、选择A、B、C、D、答案对象(类似数据库外键)
3.设计试卷类。
属性:试题集合List<T>⽅法:(1)抽取试题(2)题⽬选择(3)提交试卷。
4.设计边界类。
属性;试卷对象,试题字号。
事件:(1)抽取试题(2)题⽬选择(3)提交试卷。
UML-面向对象的分析和设计
面向对象分析与设计
15/180
注意,执行者与用户是不同的两个概念, 注意,执行者与用户是不同的两个概念,一个用 户可以扮演几个角色(执行者), ),一个执行者可以是 户可以扮演几个角色(执行者),一个执行者可以是 用户,也可以是其他系统(应用程序或设备)。 )。得到 用户,也可以是其他系统(应用程序或设备)。得到 的用例必须进行复审,以使需求完整。 的用例必须进行复审,以使需求完整。
构成类图的元素所表达的模型信息, 构成类图的元素所表达的模型信息, 对象层 分为三个层次: 分为三个层次: 三个层次 对象层—给出系统中所有反映问题域 对象层 给出系统中所有反映问题域 特征层 系统责任的对象。 和系统责任的对象。 特征层—给出类 对象)的内部特征, 给出类( 特征层 给出类(对象)的内部特征, 关系层 即类的属性和操作。 即类的属性和操作。 关系层—给出各类 对象) 给出各类( 关系层 给出各类(对象)之间的关 图 OOA基本模型 基本模型 包括继承、组装、一般—特殊 系,包括继承、组装、一般 特殊 、整 体—部分、属性的静态依赖关系,操作的 部分、属性的静态依赖关系, 部分 动态依赖关系。 动态依赖关系。
目录
首页
末页
面向对象分析与设计
6/180
抽象类与子类示例
Shape { abstract } draw ( ) { abstract }
Abstract class Abstract operation
Circle draw ( )
Rectangle draw ( )
目录
首页
末页
面向对象分析与设计
目录 首页 末页
面向对象分析与设计
18/180
构造对象—关系模型 4. 构造对象 关系模型
第4章__面向对象需求分析
• 在确定事件轨迹后,所有事件可以汇总成输入对象的事件 集和从对象输出的事件集。事件流图就是用于标记所有流入和 流出某对象的事件。
•
例:打印机对象—行为模型示例。
• 状态转换图表示了打印机的状态转换。图中的每个箭头代 表了从对象的一个状态到另一个状态的转变,箭头上标记的是 触发转变的事件。有时需要增加保护条件来满足对象的变迁, 例如,上图中打印机在故障状态时,故障修复事件只有在打印 队列不破坏的情况下才能使打印机进入打印状态,否则即使修 复也只能进入就绪状态。
工人
1..*
经理 管理
(1)关联
•限定关联 • 限定关联通常用在一对多或多对多的关联关系中,可以把 模型中的重数从一对多变成一对一,或从多对多简化成多对一。 在类图中把限定词放在关联关系末端的一个小方框内。 • 例如,某操作系统中一个目录下有许多文件,一个文件仅 属于一个目录,在一个目录内文件名确定了惟一一个文件。利 用限定词“文件名”表示了目录与文件之间的关系,可见,利 用限定词把一对多关系简化成了一对一关系。
(1)关联
•关联类 • 为了说明关联的性质可能需要一些附加信息。可以引入 一个关联类来记录这些信息。关联类也有属性、操作和其他 关联。
个人
0..*
授权
0..*
个人
授权 优先权 特权
用户和工作站的授权关联的关联类
3.对象-关系图
• (2)聚集
• 聚集也称为聚合,是关联的特例。聚集表示一类对象与 另一类对象之间的关系,是整体与部分的关系。
• 一.面向对象分析模型的组成结构 • 二.面向对象分析模型描述工具 • 三.面向对象分析的基本过程
• 四. 面向对象分析方法
• 五. 小结
一.面向对象分析模型的组成结构
面向对象分析过程案例实战
⾯向对象分析过程案例实战原始需求描述如下:某公司鉴于业务和员⼯的快速发展,为了提升整体⼯作效率,公司准备开发⼀套员⼯报账系统,取代原来的⼈⼯处理⽅式,更加⽅便的服务于员⼯⽇常的账务操作。
财务部门能够通过账务系统定期向各部门负责⼈反映账务统计情况,并设置和维护相关额度准则。
系统应该具有基于先进技术的操作界⾯。
这段描述⾥包含的业务⽬标⼤致有⼆:1. 为员⼯提供账务的⾃动化办理,提⾼办事效率,⽅便员⼯。
2. ⽅便财务部门管理好账务信息。
这些业务⽬标⼀般在项⽬的招标书⾥都有相关的描述,也可以由开发⽅整理得出。
之所以这⾥要把业务⽬标列出来,是因为我所采取的⽅法⾥,业务⽬标是进⾏需求分析的第⼀步,接下来的推导过程和业务模型的建⽴都是根据业务⽬标开始的。
整理出了业务⽬标后,接下来先不要⼀头扎进具体的业务流程和业务细节之中去,应该先把涉众找出来,整理出⼀份涉众分析报告,涉众就是和这个项⽬相关的⼈。
也不要就去考虑技术实现细节,要⽤什么先进的技术,界⾯如何美观,性能如何优越等等,虽然这些确实重要,但是相⽐起来,忠实的实现涉众的期望,满⾜涉众的需求才是最为重要,也是⼀个项⽬成败的关键。
在实际的项⽬中,我们可以通过需求调研找出相关的涉众,这⾥我就直接列出本案例的涉众分析报告:员⼯:公司的正式录⽤雇员;期望:通过⽹上办理账务业务申请,计算机控制流程。
部门经理:部门负责⼈,负责审核员⼯提交的申请;期望:⽅便审核操作,通过计算机代替原来的⼿⼯审核⽅式。
公司主任:公司负责⼈,负责2次审核员⼯提交的申请;期望:⽅便审核操作,通过计算机代替原来的⼿⼯审核⽅式,界⾯友好易⽤。
财务主任:公司财务部门负责⼈,负责发放报账款项;期望:通过计算机转账的⽅式替代原来的⼈为付款⽅式。
以上的涉众分析报告是很简单的了,在实际稍微复杂些的项⽬中要下功夫好好整理清楚⼀份完整的⽂档才是,因为接下来的业务⽤例获取⼯作也是在此基础上展开的。
这⾥先罗嗦下业务⽤例和平时开发中的我们开发⼈员从项⽬经理或者需求⼈员⼿中拿到的需求⽂档中的⽤例什么区别。
面向对象的分析和设计步骤
即定义事件的操作
1.3 面向对象的设计
系统分析主要关心系统必须做什么,而不必太多的考虑其中的实现 细节,它注重的是问题领域与系统责任。系统设计就要考虑实现的细 节问题了,它主要说明如何实现分析中的元素,注重的是实现相关的 问题,并作为实施阶段的依据。即设计是把分析阶段得到的需求转变 成系统实现方案的过程,回答“怎么做”的问题,面向对象的设计是针 对系统的一个具体的实现运用OO方法,其中包括两方面的工作,一 是把OOA模型直接搬到OOD(不经转换,仅作某些必要的修改和调整), 作为OOD的一部分;另外是针对具体实现中的人机界面、数据存储、 任务管理等因素补充一些与实现有关的部分。大多数系统的面向对象 设计就是实现目标系统的四个子系统:问题域子系统、人—机交互子 系统、任务管理子系统、数据管理子系统。
部 分2
图1.3表示组合关系的图形符号
3.关联关系
库管员
物资
图 1.4 库 管 员 与 他所管理的物资 之间的关系
文件
用户
访问权 限
图1.5链属关系的表示方法
目录
文件 名
文件
图1.6 一个受限的关联
发送者
接收者
图1.7 消息连接的表示符号
(4)消息连接 (5)状态的表示
初始状态
状态1
服务1[条件1] 服务2[条件2]
1.2.3 建立动态模型
各个类的状态图通过共享事件合并起来,构成了系统的动态模型。 动态模型描述了系统投入运行后可能出现的各种正常/异常情况、各 种事件发生的次序、人机界面的情况等。一个系统的动态模型通过 系统脚本、用户界面、事件跟踪图和状态图来描写。 注意:对于仅存储静态数据的系统而言,动态模型毫无意义,可以 不建立;而对于交互式系统,动态模型起着很重要的作用。
面向对象分析与设计
面向对象分析与设计一、引言面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件工程中的一种方法论,用于解决复杂系统的设计与开发问题。
本文将介绍面向对象分析与设计的概念、原则和过程,并结合实际案例说明其重要性和应用。
二、概念解析1. 面向对象分析(Object-Oriented Analysis,简称OOA):通过识别和描述系统所涉及的对象及其相互关系,以及对象的属性和行为,从而确定系统需求和问题领域的分析方法。
2. 面向对象设计(Object-Oriented Design,简称OOD):基于面向对象分析的结果,通过定义类、抽象数据类型、方法、接口等概念,设计出系统的结构和组织,以及类之间的关系和交互方式。
三、面向对象分析与设计的原则1. 单一职责原则(Single Responsibility Principle,简称SRP):一个类只负责一项职责,保证类的内聚性和高内聚性。
2. 开放封闭原则(Open-Closed Principle,简称OCP):系统中的类、模块等应该对拓展开放,对修改封闭,通过继承、接口等方式实现。
3. 里氏替换原则(Liskov Substitution Principle,简称LSP):所有引用基类的地方必须能透明地使用其子类的对象,即子类必须能够替换基类。
4. 依赖倒置原则(Dependency Inversion Principle,简称DIP):高层模块不应该依赖于底层模块,二者都应该依赖于抽象;抽象不应该依赖于具体,具体应该依赖于抽象。
5. 接口隔离原则(Interface Segregation Principle,简称ISP):客户端不应该依赖于它不需要的接口,接口应该进行细化拆分以适应不同的场景和客户端需求。
6. 迪米特法则(Law of Demeter,简称LoD):一个对象应该对其他对象有尽可能少的了解,减少耦合性,降低系统的复杂度。
面向过程的分析POA,和面向对象的分析OOA
面向过程的分析POA ,和面向对象的分析OOA软件开发方法论概述在60年代的软件开发行业,随着所开发的软件复杂度不断提升,使用原先的方法(1)开发出来的软件终于不能满足需要,其所出现的问题是层出不穷,而且由于缺少必要的文档,人们又没办法寻找定位出其中的问题所在。
更有甚者,就算是找出其中的问题,但由于软件设计的杂乱不堪,其修改起来也是叫人头大.于是,终于爆发了所谓的软件危机。
危机爆发后,人们认识到之所以出现这类危机的原因,那是因为没有使用一种系统性的方法来规范软件的开发过程,导致开发出的软件缺少架构不明晰,代码编写不规范,文档缺乏等等问题。
最终使得开发出来的软件可靠性大大下降,以至于到了不可使用的地步。
为了解决这种问题,北约组织各国的计算机专家于60年代末召开了两次国际会议(NATO Software Engineering Conference(2))来讨论软件危机问题。
会议上提出了"software engineering"一词。
从此,为解决软件危机问题,诞生了一门新兴的学科--软件工程学。
经历了几十年的发展,软件工程学这门学科,提出了很多实际可用的软件开发方法。
这其中,最著名的,也是业界使用最广泛的,当属结构化的方法和面向对象的方法。
本文标题内面向过程的分析(POA),其实就是结构化的分析(SA)。
记得我们在前面介绍课程的时候,说过任何程序都是由数据和处理这些数据的方法构成的,那么对于软件开发方法论来说,您仍然可以从这两方面去考虑。
简单来说,您要仔细体会在某一个软件开发方法下,人们是如何考虑下面三点的:⒈人们如何从现实的待解问题中抽象出要处理的数据的?⒉人们是如何抽象出要处理这些数据的方法,并通过它们去解决整个问题的?⒊人们在将所抽象出的数据和方法映射到程序的时候,是如何考虑的?是数据方法分开考虑呢,还是一并考虑?本文只重点讲述结构化的方法和面向对象的方法。
您如果也有兴趣了解其他方法,还请广泛使用google/baidu。
软件开发实习报告:面向对象分析与设计的实践与总结
软件开发实习报告:面向对象分析与设计的实践与总结一、引言在我参加软件开发实习的过程中,我主要负责了面向对象分析与设计的工作。
通过实践与总结,我认识到面向对象分析与设计对于软件开发的重要性,并且对面向对象的原理和方法有了更深入的理解。
本报告将围绕面向对象分析与设计的实践经验和总结展开。
二、实践过程1. 需求分析在实践过程中,需求分析是首先需要进行的阶段。
通过与客户的沟通,我了解到客户的需求,并在此基础上进行了需求分析和规划。
我学会了运用UML图来清晰地展示需求,如用例图、活动图等,这对于后续的设计工作起到了指导作用。
2. 面向对象分析在需求分析的基础上,我进行了面向对象的分析工作。
通过识别出系统中的各种对象以及它们之间的关系,我可以更好地理解系统的结构和行为。
我学会了用类图来描述对象的属性和方法,以及它们之间的关系,这使得我能够更好地理解系统的结构和行为。
3. 面向对象设计在面向对象分析的基础上,我进行了面向对象的设计工作。
通过对类图的完善和细化,我可以进一步详细地设计对象的属性和方法。
我学会了用时序图来描述对象之间的交互,以及状态图来描述对象的状态变化。
这对于确保系统的正确性和可靠性至关重要。
4. 实践总结在实践过程中,我遇到了一些问题和挑战。
首先,我发现在面向对象分析与设计中,需求的不明确性是一个常见的问题。
为了解决这个问题,我学会了与客户保持良好的沟通,并时刻关注需求的变化。
其次,我发现在面向对象分析与设计中,设计的复杂性是一个常见的问题。
为了解决这个问题,我学会了运用设计模式和设计原则来降低复杂性。
5. 实践经验通过实践经验,我总结出以下几点:(1)良好的需求分析是面向对象分析与设计的基础。
需求分析不仅仅是了解客户的需求,还包括对需求进行详细的分析和规划。
(2)面向对象分析与设计需要运用多种UML图来描述系统的结构和行为。
熟练使用UML图可以使得系统的设计更加清晰和可理解。
(3)设计的复杂性是需要解决的问题,在面向对象分析与设计中,设计模式和设计原则是降低复杂性的重要手段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象的分析过程摘要分析了面向对象技术应用于仿真领域的种种优点,亦即我们选择采用面向对象的方法进行改造的原因。
一些面向对象方法存在的不足。
关键词:仿真,面向对象,岸边集装箱起重机,训练器面向对象的开发方法是以对象作为最基本的元素,它是分析问题、解决问题的核心。
面向对象=对象(Object)+分类(classification)+继承(inheritance)+通过消息的通信(communication with messages)从下图中我们可以看出,面向对象的开发方法明显不同。
面向对象的仿真为仿真人员提供了开发模块化可重用的仿真模型的工具,它把系统看成由相互作用的对象所组成,而对象则往往表示现实系统中的真实实体。
从而提高了仿真模型的可理解性、可扩充性和模块性,并且便于实现仿真与计算机图形和人工智能的结合。
采用面向对象的方法,原因如下:1.可理解性面向对象仿真对设计者、实现者,以及最终用户来说都改进了仿真的可理解性。
因为仿真系统中的对象往往直接表示现实系统中的真实实体,这些实体在面向对象的仿真系统中可以用外观上类似于人们熟悉的实际系统的对象的图形或图像来表示,用户可以通过图形界面与仿真模型进行交互,利用图形或图像来直接建立仿真模型,这对于熟悉实际系统的用户来说是很容易理解的。
2.可重用性和可扩充性在面向对象的仿真中,可以建立起一个模型库用以保存以前建立的模型,模型库中的模型可以作为建立新模型的可重用构件,通过面向对象技术内在的继承机制可以容易地和系统地修改现有的对象(类)以创建新的对象。
并且可以加入现有的类库中。
类库提供了仿真建模所需要的一般设施。
通过修改现有的类,可以建立各种应用中所需要的特殊对象。
3.模块性面向对象的仿真是模块化,特殊的过程来寻找相应的信息,不会影响其它的对象。
4.图形用户界面对象作为模块,对象的所有信息都保存在该对象中,在面向对象的仿真系统中往往表示实际系统中的真实实体,因而在系统中可以用相似的图形或图像来表示,因此更便于建立非常直观的图形用户界面,用户可以直接在屏幕上建立系统的图形概念,直观地构造仿真模型。
5.仿真与人工智能的结合在面向对象的仿真中,对象封装了它们的功能,而功能可以包含智能。
因而利用人工智能和专家系统的方法可以在功能中嵌入智能,使对象也能具有决策和学习能力。
仿真与人工智能的结合可以增强仿真的能力。
在基于知识的仿真系统和专家仿真系统方面,许多学者己进行了广泛的研究,表明了人工智能和专家系统在辅助仿真建模、仿真结果的解释和仿真模型灵敏度分析等方面的重要作用。
6.并行仿真由于对象封装了所有的信息,因而每个对象都能分配给自己的处理程序执行它的功能。
这样,对象在某种程序上可以相对独立的运行。
正是由于对象之间的这种相对独立性,产生了并行仿真执行的可能性。
仿真的并行执行可以极大的降低仿真时间,允许仿真更多的对象,能够实现更详细的仿真。
3. 2面向对象的方法选择3. 2. 1方法比较八十年代末以来,随着面向对象技术成为研究的热点出现了几十种支持软件开发的面向对象方法。
下面介绍几种经典的分析和设计方法:1 .OMT/RumbaughOMT(Object Modeling Technique)方法最早是由Loomis,Shan和Rumbaugh在1987年提出的,曾扩展应用于关系数据库设计。
J. Runmbaugh在1991年正式把OMT应用于面向对象的分析和设计。
这个方法是在实体关系模型上扩展了类、继承和行为而得到的。
OMT覆盖了分析、设计和实现三个阶段。
OMT包括了一组定义的很好的并且相互关联的概念,他们是类(class)、对象(ob ject)、一般化(generalization)、继承(inheritance)、链(link)、链属性(link attribute)、聚合(aggregation)、操作(operation)、事件(event)、场景(scene)、属性(attribute)、子系统(subsystem)、模块(module)等。
OMT方法包含四个步骤:分析、系统设计、对象设计和实现。
OMT定义有三种模型,这些模型贯穿于每个步骤,在每个步骤中被不断的净化和扩充。
这三种模型是: 对象模型,用类和关系来刻画系统的静态结构。
动态模型,用事件和对象刻画系统的动态特性。
功能模型,按照对象的操作来描述如何从输入给出输出结果。
OMT是一种比较成熟的方法,用几种不同的观念来适应不同的建模场合。
但应用所有的OMT技术来建立一个一致的模型是非常困难的,而且各阶段三个模型之间的关系也不是十分清晰。
为建立一个一致的模型,OMT的许多概念和语义还需要形式的定义。
2. OOD/BoochOOD(Object Oriented Design)方法是Grady Booch从1983开始研究,1991年后走向成熟的一种方法。
Booch方法在面向对象的设计中主要强调多次重复和开发者的创造性。
方法本身是一组启发性的过程式建议。
方法并不依从硬性的条件限制,OOD的一般过程如下:1)在一定抽象层次上标识类与对象。
2)标识类与对象的语义。
3)标识类与对象之间的关系。
4)实现类与对象。
这个过程是递归的。
设计过程从发现类和对象,形成问题域的字典开始,直到不再发现新的抽象与机制,或者说,所有发现的类和对象己经可以由现有的复用类和对象实现为止。
OOD为开发者提供了丰富的图形表示。
从不同的侧面观察模型都可以获得模型在某一方面特性的丰富视图。
OOD方法并不是一个开发过程,只是在开发面向对象系统时应遵循的一些技术和原则。
OOD方法是从外部开始,逐步求精每个类直到系统被实现。
它的缺点在于不能有效的找出每个对象和类的操作。
3. RDD/Wirfs一BrockRDD(Responsibility-Driven Design)方法是Wirfs-Brock在1990年提出的。
这是一个按照类、责任以及合作关系对应用进行建模的方法。
RDD方法分为探索阶段和精化阶段。
ftDD的设计规范主要包括:类层次图、合作图、类规范、子系统规范、合同规范。
RDD是一种用非形式的技术和指导原则开发合适的设计方案的设计技术。
寻找类及其特性的策略主要依赖设计者的个人技巧。
RDD用交互填写CRC卡的方法完成设计,这对大型系统设计不太适用。
RDD也引入了一些新的概念和技术,例如合同、子系统等,使得开发过程可以并发完成。
RDD采用传统的方法确定对象类,有一定的局限性。
另外,均匀的把行为分配给类也是十分困难的。
4. GOAD/Coad一YoordonOOAD(Object-Oriented Analysis and Design)方法是由Peter Coad和Ed Yourdon在1991年提出的。
这是一种逐步进阶的面向对象建模方法。
OOA使用了基本的结构化原则,并把他们同面向对象的观点结合起来。
OOA方法主要包括下面五个步骤:确定类与对象、标识结构、定义主题、定义属性、定义服务。
其结果是结构化的图文挡。
模型自顶向下包括五个层次:主题层(只有主题);类与对象层(上层中加入类与对象):结构层(上层中加入结构);属性层(上层中加入属性);服务层(上层中加入服务);OOA没有特别的支持来刻画对象的动态特性。
OOA完成系统分析。
OOD负责系统设计。
OOD包括四个步骤:1)设计问题域(细化分析结果);2)设计人机交互部分(设计用户界面);3)设计任务管理部分(确定系统资源的分配):4)设计数据管理部分(确定持久对象的存储)。
OOA把系统横向划分为五个层次,OOD把系统纵向划分为四个部分,从而形成一个清晰的系统模型。
5.OOSE/JacobsonOOSE(Object-Oriented Software Engineering)是Jacobson在1992年提出的一种用例驱动的面向对象开发方法。
每个用例都是使用系统的一条途径。
用例的一个执行过程可以看作是用例的实例。
系统开发是一个复杂的任务。
通过在不同层次逐步构造模型可以控制这种复杂性。
OOSE开发过程中有五种模型,这些模型是自然过渡和紧密祸合的。
包括:需求模型、分析模型、设计模型、实现模型、测试模型。
DOSE是一种实用的面向对象的系统开发方法。
其中,Booch, Coad/Yourdon, OMT,和Jacobson的方法在面向对象软件开发界得到了广泛的认可。
特别值得一提的是统一的建模语言UML (Unified Modeling Language),该方法结合了Booch, OMT,和Jacobson方法的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。
UML现在是一个国际标准,它正在对象管理小组(Object Management Group)的指导下进行修订和扩展。
准确的说,UML是面向对象分析与设计的一种标准表示。
3. 2. 2 UML及其工具介绍UML作为用于创建系统的逻辑模型的一般语法,通常随着在分析和设计期间对各种要点的理解,来描述计算机系统。
它独立于其他任何特定的目标语言、软件工程或工具,但它具有充分的一般性和灵活性,用用户定义的扩展能对其进行裁剪,以适合几乎所有的语一言、工具或过程需求。
对我们使用者来讲,UML就是一组标准化了的标记模型、设计的符号。
更具体的说,实际上就是一些图。
所谓的使用UML描述设计,展现的就是一系列相互协调的图。
UML共有五类九种图,最重要的就是四种图,也就是UML语法中最重要的四种模型:1)用例图:用用例捕捉用户使用系统的方式。
以用户和开发者能理解的方式,用这样的用例形成对计算机系统的需求的外在定义。
2)类图:用类图定义系统的静态结构模型。
静态结构模型识别对象、类以及他们之间的关系。
3)交互图(通常为顺序图):用交互图捕捉功能需求。
把他们用作工具,用以帮助决定怎样在类(对象)间分布支持用例所必需的功能。
他们也可以作为一种机制,用一种方式把必需的系统功能映射到对象上,以产生在功能上的内聚的、可维护的、可复用的和可扩展的类。
4)状态(动态)图:用状态图捕获系统的动态视图。
构成模型的状态图表示系统状态上的功能性依赖。
从以对象为中心的观点(而不是以用例为中心的观点)来看,他们也表示系统的功能。
这有助于进行详细设计,以确保对操作的条件限制进行正确地编码、对封装动态状态的类编码而言,这也体现了可维护性、内聚和健壮性。
忽略了这点,整体上就丧失了对各个体的功能项的深入理解。
比较常用的两种UML工具分别是:Rational公司的Rose,一种是微软公司的Vision Rose一度成为UML的代名词,但由于Visio和微软的Office套件的结合比较紧密,便于生成文档报告,后者更为流行。
在“岸边集装箱起重机”训练器的仿真建模中我们应用Visio作为辅助工具。