《第4章 系统分析与静态结构建模教学课件.pptx》由会员分享,可在线阅读,更多相关《第4章 系统分析与静态结构建模教学课件.pptx(186页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在线开放课程 SDUFE面向对象的系统分析与设计在线开放课程第四章 系统分析与静态结构建模 4.1 面向面向对象的系象的系统分析分析 4.3 定定义属属性性与与操作操作 4.4 建立建立类与与类之之间的的关关系系 4.2 对象象与与类在线开放课程4.1 面向对象的系统分析l面向对象的系统分析(面向对象的系统分析(OOAOOA),即运用面向对象方法,),即运用面向对象方法,对问题域和系统责任进行分析与理解,找出描述问题域对问题域和系统责任进行分析与理解,找出描述问题域和系统责任所需要的对象与类,定义对象(类)的属性和系统责任所需要的对象与类,定义对象(类)的属性、操作以及对象(类)之间的关系,目
2、标是建立一个符、操作以及对象(类)之间的关系,目标是建立一个符合问题域、满足用户需求的对象静态模型。合问题域、满足用户需求的对象静态模型。l对象静态模型对问题域的观察、分析和认识是很直接的,对象静态模型对问题域的观察、分析和认识是很直接的,对问题域的描述也是很直接的对问题域的描述也是很直接的;它所采用的概念与问题它所采用的概念与问题域中的事物保持了最大程度的一致,不存在语言上的鸿域中的事物保持了最大程度的一致,不存在语言上的鸿沟沟;问题域中有哪些值得考虑的事物,模型中就有哪些问题域中有哪些值得考虑的事物,模型中就有哪些对象,而且对象的属性与操作的命名都强调与客观事物对象,而且对象的属性与操作的
3、命名都强调与客观事物一致。一致。l另外,对象静态模型也保留了问题域中事物之间关系的另外,对象静态模型也保留了问题域中事物之间关系的原貌。原貌。3在线开放课程4.1.1 问题域和系统责任4 软件的复杂性软件的复杂性首先源于问题域和系统责任的复杂性。首先源于问题域和系统责任的复杂性。【问题域问题域】被开发系统的被开发系统的应用领域应用领域,即在现实世界中即在现实世界中由该系统进行处理的业务范围。由该系统进行处理的业务范围。【系统责任系统责任】被开发系统应该具备的功能或者职能。被开发系统应该具备的功能或者职能。这两个术语的含义在很大部分上是重合的,但不一定完全相同。这两个术语的含义在很大部分上是重合
4、的,但不一定完全相同。在线开放课程4.1.2 对系统开发人员的要求系统开发人员与领域专家的技术背景不同系统开发人员与领域专家的技术背景不同;系统开发人员对问题域的理解系统开发人员对问题域的理解,要求比工作人员更要求比工作人员更深入和准确深入和准确;而且比领域专家有更高明的见解;而且比领域专家有更高明的见解;现今的系统所面临的问题域比以往更为广阔和复现今的系统所面临的问题域比以往更为广阔和复杂杂,系统比以往更为庞大。系统比以往更为庞大。OOOO比以往方法更利于对问题域和系统责任的分析!比以往方法更利于对问题域和系统责任的分析!1.1.系统开发人员要迅速、准确、深入地掌握领域知识系统开发人员要迅速
5、、准确、深入地掌握领域知识系统开发人员要迅速、准确、深入地掌握领域知识系统开发人员要迅速、准确、深入地掌握领域知识在线开放课程u系系统开开发人人员与用与用户及及领域域专家的交流家的交流u系系统开开发人人员之之间的交流的交流u系系统开开发人人员与管理人与管理人员的交流的交流重视非技术因素!重视非技术因素!系统模型系统模型术语术语表示符号表示符号文档书写格式文档书写格式4.1.2 对系系统开开发人人员的要求的要求2.2.系统开发人员要善于交流系统开发人员要善于交流系统开发人员要善于交流系统开发人员要善于交流如如果果分分析析文文档档使使分分析析员员以以外外其其他他人人员员都都很很难难读读懂懂,那那就
6、就很很不不利利于于交交流流!这这会会使使彼彼此此的的思思想想不不易易沟沟通通,并并容容易易隐隐藏藏许许多多错错误误!在线开放课程1 1.需求的不断变化需求的不断变化需求的不断变化需求的不断变化l用户客观原因:问题域发生变化主观原因:用户所提出的需求不可靠l竞争因素:竞争、成本l经费:削减、增加l技术因素:技术支持的缺乏或增加应应变变能能力力强强弱弱是是衡衡量量一一种种分分析析方方法法优优劣劣的的重重要要标标准准!4.1.3 系统系统分析面分析面临的主要的主要问题 在线开放课程2.系系 统统 成成 分分 的的 易易 变变 性性 和和 稳稳 定定 性性功能功能(最易变最易变)外部接口外部接口(易变
7、易变)属性属性(较易变较易变)对象对象(较稳定较稳定)类类属性属性操作操作4.1.3 分析面分析面临的主要的主要问题 在线开放课程商场管理系统商场管理系统3.OOA3.OOA的弹性得益于以的弹性得益于以对象对象为构成单位和为构成单位和封装封装原则!原则!当系统要求功能更为完善的时候,这种变化首先反映各当系统要求功能更为完善的时候,这种变化首先反映各个对象提供的操作上。如收款台对象的收款操作,由原个对象提供的操作上。如收款台对象的收款操作,由原先接受现金改为既能接受现金又能使用信用卡。同时,先接受现金改为既能接受现金又能使用信用卡。同时,设备与其他系统(银行)的接口部分也容易变化,这些设备与其他
8、系统(银行)的接口部分也容易变化,这些变化或多或少地也会引起对象属性的变化。但对象是最变化或多或少地也会引起对象属性的变化。但对象是最稳固的,基本保持不变,或许要增加一些对象但旧的对稳固的,基本保持不变,或许要增加一些对象但旧的对象基本还保留!象基本还保留!4.1.3 分析面分析面临的主要的主要问题 在线开放课程4.4.复用的要求复用的要求复用的要求复用的要求复用级别提高复用级别提高分析结果复用分析结果复用,对分析提出更高要求对分析提出更高要求要求分析模型中的可复用部分用于多个系统要求分析模型中的可复用部分用于多个系统要求一个分析模型在多种条件下设计和实现要求一个分析模型在多种条件下设计和实现
9、软件复用软件复用程序复用程序复用分析分析结果复用结果复用设计设计结果复用结果复用4.1.3 分析面分析面临的主要的主要问题 在线开放课程4.1.4 面向对象系统分析的任务l面向对象的系统分析(面向对象的系统分析(OOAOOA),即运用面向对象的),即运用面向对象的方法,对问题域和系统责任进行分析和理解,对方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确认识,找其中的事物和它们之间的关系产生正确认识,找出描述问题域和系统责任所需的类和对象,定义出描述问题域和系统责任所需的类和对象,定义这些类和对象的属性和操作,以及找出它们之间这些类和对象的属性和操作,以及找出它们之间
10、所形成的各种关系。最终的目的是建立符合用户所形成的各种关系。最终的目的是建立符合用户需求,并能够直接反映问题域和系统责任的静态需求,并能够直接反映问题域和系统责任的静态结构模型及其规约结构模型及其规约。11在线开放课程l静态结构建模对应的类图是系统的基本模型,主要静态结构建模对应的类图是系统的基本模型,主要因为类图为面向对象编程提供了最直接的依据,同因为类图为面向对象编程提供了最直接的依据,同时它描述了系统的静态结构特征。时它描述了系统的静态结构特征。l类图的主要构成成分是:类、属性、操作、继承类图的主要构成成分是:类、属性、操作、继承(泛化)、关联(包含聚合、组合)和依赖(泛化)、关联(包含
11、聚合、组合)和依赖l在在OOOO中中,类图是最重要的图之一类图是最重要的图之一,描述了类及其间描述了类及其间存在的各种关系。存在的各种关系。l建立类图是建立类图是OOOO中最需要花费时间和精力的技术活动。中最需要花费时间和精力的技术活动。l类图用于描述系统的静态结构类图用于描述系统的静态结构,分析和设计阶段都分析和设计阶段都需要使用它需要使用它,也是构建其他其他图的基础。没有类也是构建其他其他图的基础。没有类图图,就没有状态图、协作图等其他图。就没有状态图、协作图等其他图。4.1.4 面向面向对对象系象系统统分析的任分析的任务务在线开放课程OOA基本模型在面向对象分析与设计中,类图永远是最重要
12、、最基本的模型。这是因为:首先,类图是最集中、最完整地体现了面向对象的概念;其次,类图为面向对象编程提供了最直接和可靠的依据。在线开放课程第四章 系统分析与静态结构建模 4.1 面向面向对象的系象的系统分析分析 4.3 定定义属属性性与与操作操作 4.4 建立建立类与与类之之间的的关关系系 4.2 对象象与与类在线开放课程4.2.1 对象与类的概念可以从两个角度理解对象,一个角度是可以从两个角度理解对象,一个角度是现实世界现实世界,另一个角度是我们另一个角度是我们所要建立的系统所要建立的系统。在现实世界中,。在现实世界中,对象可以看做是现实世界中客观存在的任何事物,对象可以看做是现实世界中客观
13、存在的任何事物,它可以是有形的或者物理的;也可以是无形的,但它可以是有形的或者物理的;也可以是无形的,但又是客观存在的,也可以成为概念性的对象。又是客观存在的,也可以成为概念性的对象。从所要建立的系统模型来说,现实世界中的有些对从所要建立的系统模型来说,现实世界中的有些对象是有待于进行抽象的客观事物,这些对象一方面象是有待于进行抽象的客观事物,这些对象一方面需要在系统中进行定义和持久存储,一方面需要编需要在系统中进行定义和持久存储,一方面需要编程实现。程实现。在线开放课程物理对象物理对象听讲的学生听讲的学生;讲课的老师讲课的老师;上课的教室上课的教室;教室中的家具教室中的家具;教室所在的建筑物
14、教室所在的建筑物;学生所使用的课本学生所使用的课本;概念性对象概念性对象学生选修的课程学生选修的课程;教师所在的院系教师所在的院系;学生的考试分数学生的考试分数;4.2.1 对象与类的概念在线开放课程4.2.1 对象与类的概念对象具有自己的静态特征和动态特征。对象具有自己的静态特征和动态特征。静态特征静态特征是可以用是可以用某种数据来描述的属性,某种数据来描述的属性,动态特征动态特征是对象所表现的行为或是对象所表现的行为或对象所具有的功能。对象所具有的功能。类是对具有相同属性和服务的一组对象的集合,它为属于类是对具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其
15、内部包括属性该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。和服务两个主要部分。类与对象的关系如同模具与用这个模具铸造出来的铸件之类与对象的关系如同模具与用这个模具铸造出来的铸件之间的关系。间的关系。类给出了属于该类的全部对象的抽象定义,而类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。所以,一个对象又称对象则是符合这种定义的一个实体。所以,一个对象又称为类的一个实例(为类的一个实例(instance),也可以把类作为对象模板。),也可以把类作为对象模板。各对象属性声明相同,但是属性值不同。各对象属性声明相同,但是属性值不同。在线开放课程属性/状态
16、记录学生和课程记录学生和课程,需要哪些数据需要哪些数据?学生姓名学生姓名学号学号生日生日住址住址主要研究方向主要研究方向(如果有如果有)累计平均等级分累计平均等级分(GPA)导师导师(faculty advisor)是谁是谁本学期要修课程本学期要修课程(course load);成绩单成绩单u课程编号课程编号u课程名称课程名称u先修课程先修课程u学时数学时数u承担教授列表承担教授列表在线开放课程选修一门课;选修一门课;退修一门课;退修一门课;选择主修方向;选择主修方向;选择导师(选择导师(advisor););告诉你他的告诉你他的GPA告诉你他是否已选某门告诉你他是否已选某门课课,什么时候修的
17、什么时候修的,分数分数,老师老师操作操作/行为行为学生的行为学生的行为课程的行为课程的行为允许学生选修;允许学生选修;判断指定学生是否已选修判断指定学生是否已选修;告诉你有多少学生选择告诉你有多少学生选择,还还有多少空额;有多少空额;需要什么先修课程需要什么先修课程;告诉你课程的有效学时告诉你课程的有效学时;告诉本学期任课老师;告诉本学期任课老师;在线开放课程OOM的基本思想在线开放课程现实世界与面向对象世界现实世界与面向对象世界21在线开放课程面向对象思想面向对象思想假设现在需要开发一个电子商务平台实现以上功能,那么,假设现在需要开发一个电子商务平台实现以上功能,那么,在面向对象的系统建模过
18、程中,首先系统分析员需要用面在面向对象的系统建模过程中,首先系统分析员需要用面向对象的思想对现实世界的客观事物进行抽象与分类。向对象的思想对现实世界的客观事物进行抽象与分类。在这个例子中,以厦门张三为代表的订货人被抽象为在这个例子中,以厦门张三为代表的订货人被抽象为“订订货人货人”类,各地的蛋糕店被抽象为类,各地的蛋糕店被抽象为“商家商家”类,以绍兴李类,以绍兴李四为代表的收货人被抽象为四为代表的收货人被抽象为“收货人收货人”类,该电子商务网类,该电子商务网站被抽象为站被抽象为“网站网站”类,当然还有类,当然还有“送货人送货人”类,等等。类,等等。实际上,类是一个集合概念,一个具体的个体实体仅
19、代表实际上,类是一个集合概念,一个具体的个体实体仅代表同一类的一个实例同一类的一个实例。22在线开放课程面向对象思想面向对象思想每个对象都扮演了一个每个对象都扮演了一个角色,并角色,并为其它成员提供特定的为其它成员提供特定的服务或执行特定的行为。服务或执行特定的行为。在面向对象世界在面向对象世界中,行为中,行为的启动是通过将的启动是通过将“消息消息”传递传递给对此行为负责的对象来完成的;同时还将伴随着执行给对此行为负责的对象来完成的;同时还将伴随着执行要求附上相关的信息(参数);而收到该消息的对象则要求附上相关的信息(参数);而收到该消息的对象则会执行相应的会执行相应的“方法方法”来来实现需求
20、。实现需求。用类和对象表示现实用类和对象表示现实世界,用世界,用消息和方法来模拟现实世消息和方法来模拟现实世界的核心思想界的核心思想。23在线开放课程l对象对象对象是象是现实世界中一个世界中一个实际存在的事物,它可以是有形的存在的事物,它可以是有形的(比如一(比如一辆汽汽车),也可以是无形的(比如一),也可以是无形的(比如一项计划)。划)。对象具有自己的静象具有自己的静态特征和特征和动态特征。特征。l类:物以:物以类聚聚类是是对具有相同具有相同属性属性/操作操作/关系关系/语义的的对象集合的描述象集合的描述其定其定义包括包括属性属性说明明和和服服务说明明两个主要部分。两个主要部分。类与与对象如
21、同象如同模具模具与与铸件件之之间的关系的关系,各各对象象属性声明属性声明相相同同,但是但是属性属性值不同。不同。244.2.1 对象与类的概念1.1.基本概念基本概念在线开放课程名称:每个类都有一个惟一的名称:每个类都有一个惟一的名称,通常名称,通常采用采用Pascal格格式式表示,首字母大写。表示,首字母大写。属性:是已被命名的类的属性:是已被命名的类的特性,它特性,它描述该类实例中描述该类实例中包含的包含的信息。信息。操作:是类所提供的操作:是类所提供的服务,服务,它可以由类的任何对象请求以影响其它可以由类的任何对象请求以影响其行为。行为。属性名和操作名也通常采用属性名和操作名也通常采用C
22、amelCase格式格式表示,只不表示,只不过属性名首过属性名首字母通常为字母通常为小写,操作名首字母通常大写。小写,操作名首字母通常大写。252.2.类的类的UMLUML表示法表示法4.2.1 对象与类的概念在线开放课程l实例例(instance)(instance)是从某是从某类创建的建的对象,它象,它们都可使用都可使用类中中提供的函数。提供的函数。l实例的表示法:例的表示法:对象名:象名:类名名l对象的状象的状态则包含在包含在实例的属性例的属性中。中。l实例化例化(instantiation)(instantiation)是指在是指在类定定义的基的基础上构造上构造对象象的的过程。程。l同
23、同一个一个类的不同的不同对象的差象的差别是通是通过不同不同对象的象的不同属性不同属性值的差的差别(状状态)来体来体现的。的。l以以OOOO方法开方法开发系系统时,先要先要对现实世界中的世界中的对象象进行行分析分析与与归纳,找出找出组成系成系统的的对象。象。l类一方面一方面是是对现实世界中世界中对象的象的抽象抽象,但不是照搬;但不是照搬;另一另一方面方面是是为了构建系了构建系统而而引入引入的。的。264.2.1 对象与类的概念在线开放课程4.2.2 识别类与对象l识别类与与对象象是是OOOO建模中最重要和困建模中最重要和困难的一步。的一步。l重要重要:分析分析/设计/编码都将以其都将以其为基基础
24、,此此时犯的犯的错误不但会影响到不但会影响到后后续开开发,而且而且对软件的件的维护性和性和可可扩展性展性产生生影响。影响。l困困难:需要有需要有丰富丰富经验和熟和熟练应用用OOOO技技术以及将其以及将其应用用到所开到所开发系系统当中的能力。当中的能力。27在线开放课程l建建议性方法性方法 :1.考虑问题域考虑问题域:从客观存在的事物出发考虑。从客观存在的事物出发考虑。例如例如:人员人员/组织机构组织机构/物品物品/设备设备/事件事件(索赔、上访、交易索赔、上访、交易)/)/表格表格/日志日志/报告报告/结构等。其中分类的角度是多种多样结构等。其中分类的角度是多种多样的,的,例如,在例如,在汽车
25、类别汽车类别上,汽车上,汽车向上有向上有车辆,向下车辆,向下细分为客车和细分为客车和轿车,其轿车,其左右有摩托车和拖拉机。在汽车结构左右有摩托车和拖拉机。在汽车结构上,有上,有发动机、发动机、车轮、车厢等车轮、车厢等2.2.名词短语识别法名词短语识别法:名词短语识别法对于类的发现是建立在对用户需求陈述的构名词短语识别法对于类的发现是建立在对用户需求陈述的构词分析上词分析上,分析人员可根据需求陈述与用例描述中出现的名分析人员可根据需求陈述与用例描述中出现的名词和名词短语来提取实体对象词和名词短语来提取实体对象。284.2.2 识别对象与类在线开放课程l建建议性方法性方法 :2.2.名词短语识别法
26、名词短语识别法:对于每个识别出来的候选类可以从以下对于每个识别出来的候选类可以从以下3 3个方面进行分类个方面进行分类l相关类相关类相关类是那些明显属于问题域的类,一般表示这些类的名字的名相关类是那些明显属于问题域的类,一般表示这些类的名字的名词经常出现在需求陈词经常出现在需求陈 述中。另外从对问题域的一般常识中,从述中。另外从对问题域的一般常识中,从对相似的系统、教科书、文件的研究中,确认这些类的显著性和对相似的系统、教科书、文件的研究中,确认这些类的显著性和目的。目的。l模糊类模糊类模糊类是那些不能肯定地和无歧义性地分类为相关类的类。需要模糊类是那些不能肯定地和无歧义性地分类为相关类的类。
27、需要对它们进一步进行分析后才能确定其是相关类、还是属性或者无对它们进一步进行分析后才能确定其是相关类、还是属性或者无关类。关类。l无关类无关类无关类是那些问题域之外的类,无法陈述它们的目的。有经验的无关类是那些问题域之外的类,无法陈述它们的目的。有经验的开发人员在他们候选类的初始表中就不包括无关类,这样,识别开发人员在他们候选类的初始表中就不包括无关类,这样,识别和消除无关类的步骤就可以省略了和消除无关类的步骤就可以省略了294.2.2 识别对象与类在线开放课程需求描述需求描述顾客带着所要购买的商品到达营业厅的一个销售点终端顾客带着所要购买的商品到达营业厅的一个销售点终端(终端设在门口附近终端
28、设在门口附近),销售点),销售点终端负责接收数据、显终端负责接收数据、显示数据和打印购物单;出纳员与销售点终端示数据和打印购物单;出纳员与销售点终端交互,通过交互,通过销售点终端录入每项商品的通用产品销售点终端录入每项商品的通用产品代码,如果代码,如果出现多出现多个同类个同类商品,出纳员商品,出纳员还要录入该商品的数量;系统确定还要录入该商品的数量;系统确定商品的商品的价格,并价格,并将商品代码、数量信息加入到正在运行将商品代码、数量信息加入到正在运行的系统;系统显示当前商品的描述信息和价格。的系统;系统显示当前商品的描述信息和价格。30“名名词短短语法法”举例例在线开放课程识别名词识别名词顾
29、客顾客带着所要购买的带着所要购买的商品商品到达营业厅的一个到达营业厅的一个销售点终端销售点终端(终端设在门口附近(终端设在门口附近),销售点,销售点终端负责接收数据、显终端负责接收数据、显示数据和打印示数据和打印购物单购物单;出纳员出纳员与销售点终端与销售点终端交互,通过交互,通过销售点终端录入每项商品的销售点终端录入每项商品的通用产品通用产品代码代码,如果,如果出现多出现多个同类个同类商品,出纳员商品,出纳员还要录入该商品的还要录入该商品的数量数量;系统系统确定确定商品的商品的价格价格,并,并将将商品代码商品代码、数量信息加入到正在运行、数量信息加入到正在运行的系统;系统显示当前商品的的系统
30、;系统显示当前商品的描述信息描述信息和价格。和价格。31“名名词短短语法法”举例例在线开放课程筛选备选类筛选备选类“系统系统”显然是指待开发的软件本身显然是指待开发的软件本身,所以不能作为所以不能作为实体类来认识实体类来认识。“通用产品代码通用产品代码”、“数量数量”、“价格价格”明显属于商品的明显属于商品的属性属性,也不适合作为对象来认识也不适合作为对象来认识。“描述信息描述信息”显然是指显然是指“通用产品代码通用产品代码”、“数量数量”等等,也不适合作为对象来认识也不适合作为对象来认识。32“名名词短短语法法”举例例在线开放课程得到候选类得到候选类需要注意的需要注意的是,不一定是,不一定每
31、个名词都对应一个对象或每个名词都对应一个对象或类,有时类,有时描述可能描述可能过细,那么过细,那么该名词可能就是对象的一个属性。另外该名词可能就是对象的一个属性。另外鉴于需求陈述与用例描述不可能十分鉴于需求陈述与用例描述不可能十分规范,开发规范,开发人员还必须人员还必须从这些名词、名词短语中排除同义词或近义词的干扰。从这些名词、名词短语中排除同义词或近义词的干扰。在使用在使用“名词短语法名词短语法”寻找类的寻找类的时候,要求时候,要求需求描述是完整需求描述是完整的和正确的和正确的,事实上,这的,事实上,这一点很难一点很难达到,因此,很多达到,因此,很多团队会团队会在此耗费大量的在此耗费大量的时
32、间,特别是时间,特别是对于中大型对于中大型项目,这样项目,这样很容易很容易迷失方向。其实在此主要的目的是对问题领域建立概要的迷失方向。其实在此主要的目的是对问题领域建立概要的了了解,无需解,无需太过咬文嚼字太过咬文嚼字。顾客、商品、销售点终端、购物单、出纳员“名名词短短语法法”举例例在线开放课程l建建议性方法性方法 :3.系统实体识别方法系统实体识别方法该方法是从通用的对象分类理论中导出候选类。该方法是从通用的对象分类理论中导出候选类。根据预先定根据预先定义的概念类型列表义的概念类型列表,逐项判断系统中是否有对应的实体对象逐项判断系统中是否有对应的实体对象。大多数客观事物可分为下述五类。大多数
33、客观事物可分为下述五类。(1)(1)可感知的物理实体。可感知的物理实体。例如例如,汽车汽车、书、信用卡。、书、信用卡。(2)(2)人或组织的参与者。人或组织的参与者。例如例如,学生学生、教师、经理、管理员、教师、经理、管理员、供应科供应科,(3)(3)应该记忆的事件。应该记忆的事件。例如例如,取款取款、飞行、订购。、飞行、订购。(4)(4)两个或多个对象的相互作用。两个或多个对象的相互作用。例如例如,购买购买、结婚。、结婚。(5)(5)需要说明的概念。需要说明的概念。例如例如,保险政策保险政策、业务规则。、业务规则。通过试探系统中是否存在这些类型的概念通过试探系统中是否存在这些类型的概念,或将
34、这些概念与或将这些概念与前几种方法得到的对象进行比较前几种方法得到的对象进行比较,就可以尽可能完整地提取就可以尽可能完整地提取出系统中的类和对象出系统中的类和对象。4.2.2 识别对象与类在线开放课程 对上述超市购买商品系统逐项判断系统中是否有对应的实体对上述超市购买商品系统逐项判断系统中是否有对应的实体对象对象,识别结果如下识别结果如下:(1)可感知的物理实体可感知的物理实体:销售点终端、商品。销售点终端、商品。(2)人或组织的参与者人或组织的参与者:顾客顾客、出纳员。出纳员。(3)应该记忆的事件应该记忆的事件:购物单购物单(记录购买的商品信息记录购买的商品信息)。(4)两个或多个对象的相互
35、作用两个或多个对象的相互作用:此处不适用。此处不适用。(5)需要说明的概念需要说明的概念:此处不适用。此处不适用。系统实体识别方法可以是分析人员确定类的初始集或者用于验系统实体识别方法可以是分析人员确定类的初始集或者用于验证某些类是否应该存在证某些类是否应该存在,但它并不提供系统化的过程但它并不提供系统化的过程,使人们使人们依照它就可以发现可靠的和完整的类的集合依照它就可以发现可靠的和完整的类的集合。35“系统实体识别方系统实体识别方法法”举例例在线开放课程l建建议性方法性方法 :4.CRC法法类类-责任责任-协作者(协作者(Class-Responsibility-CollaboratorC
36、lass-Responsibility-Collaborator,CRCCRC)技术是一组表示类的索引)技术是一组表示类的索引卡片,每卡片,每张卡片分成三张卡片分成三部分:类名、类的责任、类的协作者。部分:类名、类的责任、类的协作者。责任是与类相关的属性和责任是与类相关的属性和操作,即操作,即类知道要做的事情。类知道要做的事情。作者是指另一个类,通常协作蕴涵着对信息的请求,或对作者是指另一个类,通常协作蕴涵着对信息的请求,或对某种动作的请求。某种动作的请求。通常协作蕴含着对信息的通常协作蕴含着对信息的请求,或请求,或对某种动作的请求。对某种动作的请求。4.2.2 识别对象与类在线开放课程(1)
37、标识潜在的对象类)标识潜在的对象类通常需求陈述和用例描述中的名词或名词短语是可能的潜在对象,它们以通常需求陈述和用例描述中的名词或名词短语是可能的潜在对象,它们以不同的形式展示出来,如:不同的形式展示出来,如:外部实体外部实体(如,人员、设备、其它系统),他们生产或消费该系统所使(如,人员、设备、其它系统),他们生产或消费该系统所使用的信息;用的信息;物件物件(如,报告、显示、信函、信号等),它们是问题域的一部分;(如,报告、显示、信函、信号等),它们是问题域的一部分;发生的事情或事件发生的事情或事件(如,取款、订购等),它们出现在系统运行的环境(如,取款、订购等),它们出现在系统运行的环境中
38、中;角色角色(如:管理者、工程师、销售员),他们由与系统交互的人扮演;(如:管理者、工程师、销售员),他们由与系统交互的人扮演;组织单位组织单位(如,部门、小组、小队),他们与一个应用有关;(如,部门、小组、小队),他们与一个应用有关;场所(场所(如,制造场所、如,制造场所、装载码头装载码头),它们建立问题域和系统所有功能的它们建立问题域和系统所有功能的环境。环境。构造物构造物(如,四轮交通工具、计算机),它们定义一类对象,或者定义(如,四轮交通工具、计算机),它们定义一类对象,或者定义对象的相关类。对象的相关类。“CRC方方法法”步骤步骤在线开放课程(1)标识潜在的对象类)标识潜在的对象类另
39、外,可以通过回答以下问题来识别潜在对象:另外,可以通过回答以下问题来识别潜在对象:是否有要储存、转换、分析或处理的信息是否有要储存、转换、分析或处理的信息?是否有外部系统是否有外部系统?是否有模式(是否有模式(pattern)、类库和构件等)、类库和构件等?是否有系统必须处理的设备是否有系统必须处理的设备?是否有组织部门是否有组织部门?业务中的参与者扮演什么角色业务中的参与者扮演什么角色?这些角色可以看作类,如客户、操作员等。这些角色可以看作类,如客户、操作员等。“CRC方方法法”步骤步骤在线开放课程(2)筛选对象类,确定最终对象类)筛选对象类,确定最终对象类我们可以用以下选择特征来确定最终的
40、对象:我们可以用以下选择特征来确定最终的对象:保留的信息:保留的信息:仅当必须记住有关潜在对象的信息,系统才能运作时,则仅当必须记住有关潜在对象的信息,系统才能运作时,则该潜在对象在分析阶段是有用的;该潜在对象在分析阶段是有用的;需要的服务需要的服务:潜在对象必须拥有一组可标识的操作,它们可以按某种方:潜在对象必须拥有一组可标识的操作,它们可以按某种方式修改对象属性的值;式修改对象属性的值;多个属性:多个属性:在分析阶,关注点应该是在分析阶,关注点应该是“较大的较大的”信息(仅具有单个属性的信息(仅具有单个属性的对象在设计时可能有用,但在分析阶段,最好把它表示为另一对象的属性);对象在设计时可
41、能有用,但在分析阶段,最好把它表示为另一对象的属性);公共属性:公共属性:可以为潜在的对象定义一组属性,这些属性适用于该类的所可以为潜在的对象定义一组属性,这些属性适用于该类的所有实例;有实例;公共操作公共操作:可以为潜在的对象定义一组操作,这些操作适用于该类的所:可以为潜在的对象定义一组操作,这些操作适用于该类的所有实例有实例;必要的需求:必要的需求:出现在问题域的外部实体以及对系统的任何解决方案的实出现在问题域的外部实体以及对系统的任何解决方案的实施都是必要的生产或消费信息,它们几乎总是定义为需求模型中的类。施都是必要的生产或消费信息,它们几乎总是定义为需求模型中的类。“CRC方方法法”步
42、骤步骤在线开放课程(2)筛选对象类,确定最终对象类)筛选对象类,确定最终对象类对象和类还可以按以下特征进行分类:对象和类还可以按以下特征进行分类:确切性(确切性(tangibility):类表示了确切的事物(如,键盘或传感器),还是:类表示了确切的事物(如,键盘或传感器),还是表示了抽象的信息(如,预期的输出)表示了抽象的信息(如,预期的输出)?包含性(包含性(inclusiveness):):类是原子的(即不包含任何其它类),还是聚类是原子的(即不包含任何其它类),还是聚合的(至少包含一个嵌套的对象)?合的(至少包含一个嵌套的对象)?顺序性(顺序性(sequentiality):):类是并发
43、的(即,拥有自己的控制线程),还是类是并发的(即,拥有自己的控制线程),还是顺序的(被外部的资源控制)顺序的(被外部的资源控制)?持久性(持久性(persistence):):类是短暂的(即,它在程序运行期间被创建和删类是短暂的(即,它在程序运行期间被创建和删除)、临时的(它在程序运行期间被创建,在程序终止时被删除)、还除)、临时的(它在程序运行期间被创建,在程序终止时被删除)、还是永久的(它存放在数据库中)是永久的(它存放在数据库中)?永久对象(永久对象(persistent object):):其生存周期可以超越程序的执行时间而长其生存周期可以超越程序的执行时间而长期存在的对象。期存在的对
44、象。完整性(完整性(integrity):类是易被侵害的(即,它不保护其资源受外界的影类是易被侵害的(即,它不保护其资源受外界的影响),还是受保护的(该类强制控制对其资源的访问)。响),还是受保护的(该类强制控制对其资源的访问)。“CRC方方法法”步骤步骤在线开放课程(3)标识责任)标识责任责任是与类相关的属性和操作,简单地说,责任是类所知道的或要做的任何事情。责任是与类相关的属性和操作,简单地说,责任是类所知道的或要做的任何事情。标识属性标识属性属性表示类的稳定特征,即为了客户规定的目标所必须保存的类的信息,一般可以属性表示类的稳定特征,即为了客户规定的目标所必须保存的类的信息,一般可以从需
45、求陈述或用例描述中提取出或者通过对类的理解而辨识出属性。系统分析员可从需求陈述或用例描述中提取出或者通过对类的理解而辨识出属性。系统分析员可以再次研究需求陈述或者用例描述,选择那些应属于该对象的内容,同时对每个对以再次研究需求陈述或者用例描述,选择那些应属于该对象的内容,同时对每个对象回答下列问题:象回答下列问题:“在当前的问题域内,什么数据项(复合的和在当前的问题域内,什么数据项(复合的和/或基本的)完整地或基本的)完整地定义了该对象定义了该对象”。定义操作定义操作操作定义了对象的行为并以某种方式修改对象的属性值。操作可以通过对系统的用操作定义了对象的行为并以某种方式修改对象的属性值。操作可
46、以通过对系统的用例描述的分析提取出来,通常用例描述中动词可以作为候选的操作。类所选择的每例描述的分析提取出来,通常用例描述中动词可以作为候选的操作。类所选择的每个操作展示了类的某种行为。个操作展示了类的某种行为。操作大体可分为三类:操作大体可分为三类:a)以某种方式操纵数据的操作(如,增加、删除、修改、选)以某种方式操纵数据的操作(如,增加、删除、修改、选择);择);b)完成某种计算的操作;)完成某种计算的操作;c)为控制事件的发生而监控对象的操作。)为控制事件的发生而监控对象的操作。“CRC方方法法”步骤步骤在线开放课程(4)标识协作者)标识协作者一个类可以用它自己的操作去操纵它自己的属性,
47、从而完成某一特定的责一个类可以用它自己的操作去操纵它自己的属性,从而完成某一特定的责任,一个类也可和其它类协作来完成某个责任。如果一个对象为了完成某任,一个类也可和其它类协作来完成某个责任。如果一个对象为了完成某个责任需要向其它对象发送消息,则我们说该对象和另一对象协作。协作个责任需要向其它对象发送消息,则我们说该对象和另一对象协作。协作实际上标识了类间的关系。实际上标识了类间的关系。为了帮助标识协作者,可以检索类间的类属关系。如果两个类具有整体与为了帮助标识协作者,可以检索类间的类属关系。如果两个类具有整体与部分关系(一个对象是另一个对象的一部分),或者一个类必须从另一个部分关系(一个对象是
48、另一个对象的一部分),或者一个类必须从另一个类获取信息,或一个类依赖于(类获取信息,或一个类依赖于(depends-upon)另一个类,则它们之间往往)另一个类,则它们之间往往有协作关系。有协作关系。“CRC方方法法”步骤步骤在线开放课程(5)复审)复审CRC卡片卡片在填好所有在填好所有CRC卡片后,应对它进行复审。复审应由用户和开发人员共同参与。复卡片后,应对它进行复审。复审应由用户和开发人员共同参与。复审方法如下。审方法如下。参加复审的人,每个人拿参加复审的人,每个人拿CRC卡片的一个子集。卡片的一个子集。注意:有协作关系的卡片要分开,即没有一个人持有两张有协作关系的卡片。注意:有协作关系
49、的卡片要分开,即没有一个人持有两张有协作关系的卡片。将所有用例将所有用例/场景分类。场景分类。复审负责人仔细阅读用例,当读到一个命名的对象时,将令牌传送给持有对应类复审负责人仔细阅读用例,当读到一个命名的对象时,将令牌传送给持有对应类的卡片的人员。的卡片的人员。收到令牌的类卡片持有者要描述卡片上记录的责任,复审小组将确定该类的一个收到令牌的类卡片持有者要描述卡片上记录的责任,复审小组将确定该类的一个或多个责任是否满足用例的需求。当某个责任需要协作时,将令牌传给协作者,并或多个责任是否满足用例的需求。当某个责任需要协作时,将令牌传给协作者,并重复重复。如果卡片上的责任和协作不能适应用例,则需要对
50、卡片进行修改,这可能导致定如果卡片上的责任和协作不能适应用例,则需要对卡片进行修改,这可能导致定义新类,或在现有的卡片上刻画新的或修正的责任及协作者。义新类,或在现有的卡片上刻画新的或修正的责任及协作者。这种做法持续至所有的用例都完成为止。这种做法持续至所有的用例都完成为止。“CRC方方法法”步骤步骤在线开放课程l建建议性方法:性方法:4.CRC法法CRCCRC方法在对象之间为了完成一个处理任务而在发生的消方法在对象之间为了完成一个处理任务而在发生的消息传递中识别类。其重点在于系统责任的统一分布,而且息传递中识别类。其重点在于系统责任的统一分布,而且一些类是通过技术上的需要而导出的。而不是作为