您好,欢迎访问三七文档
1第五章面向对象的分析与设计方法目录发展阶段和设计流程面向对象的分析面向对象的设计面向对象的实现信息系统应用开发发展阶段初期阶段以面向对象的静态结构表示为主体,典型如Coad&Yourdon方法21世纪初,UML方法UML集成静态结构域动态变化与一体,用图形方法表示,使系统分析与设计成为一种统一的、标准的方法OOM分析与设计流程信息系统分析与设计的基本工作是根据用户的信息需求、处理需求以及信息系统支持环境设计出数据模式与数据模型。信息需求主要是指用户对象的数据及其结构,它反映数据的静态要求。处理需求表示用户对象的数据处理过程和方式,反映数据的动态要求。需求阶段分析阶段设计阶段实现阶段编程测试维护需求阶段又称问题域,是客观世界对信息系统的需求反映,包括功能的需求反映、信息的需求反映和性能的需求反映。确立整个系统所关注的目标及系统的周边环境面向对象的分析(OOA)运用面向对象的方法进行需求分析,其主要任务是分析和理解问题域,找出描述问题域和系统责任所需的类及对象,分析它们的内部构成和外部关系,建立OOA模型。强调的是对一个系统中的对象特征和行为的定义。仅与问题域需求有关而与系统平台无关。OOA就是要解决“作什么”的问题。OOA法的基本任务就是要建立三种模型:对象层定义构成系统的类和对象,它们的属性与操作。属性层为每个类内做属性扩展服务层表示动态行为,包括类内的方法与类间的消息面向对象的设计(OOD)根据已确定的系统对象模型,运用面向对象技术,进行系统软件设计。与OOA密切配合顺序实现对现实世界的进一步建模。它将OOA模型直接变成OOD模型,并且补充与一些实现有关的部分,如人机界面、数据存储、任务管理等。OOD是在需求分析的基础上,进一步解决“如何作”的问题,OOD法也分为概要设计和详细设计。概要设计:细化对象行为,添加新对象,认定类,确定外部接口及主要数据结构详细设计:加细对象描述面向对象的编程(OOP)使用面向对象的程序设计语言,如C++进行程序设计。面向对象的编程语言将OOD模型中的各个成分编写成程序,从OOA→OOD→OOP的无缝连接和平滑过渡,提高了开发工作的效率和质量。面向对象的测试(OOT)是指对于运用OO技术开发的软件,在测试过程中继续运用OO技术进行以对象概念为中心的软件测试。它以类作为基本测试单位,集中检查在类定义之内的属性、服务和有限的对外接口,大大减少了错误的影响范围。面向对象的软件维护软件维护的最大难点在于人们对软件的理解过程中所遇到的障碍,在面向对象方法中,各阶段采用的表示是一致的,从而大大降低了理解的难度,无论是从程序中的错误追溯到问题域,还是需求的变化需要从问题域追溯到程序,整个过程都是平坦的。另外,对象的封装性使得一个对象的修改对其他对象的影响很小,不至于牵一发而动全身。开发流程总结在整个开发过程中,OOA、OOD和OOP采用统一的表示方法,自然语言与编程语言之间不存在鸿沟。只有局部的修改或调整,增加了与实现有关的独立部分。在传统的结构化方法中,自然语言与编程语言之间存在差距,开发人员需要将自然语言表示的分析结果转换成计算机的编程语言,工作量巨大且容易出错。传统的开发方法与面向对象的开发方法OOM的代表性成果B.Henderson-sellers和J.m.Edwards提出的面向对象软件生存期喷泉模型及面向对象的系统开发方法G.Booch提出的面向对象的开发方法P.Coad和E.Yourd提出的OOA和OOD法J.Rumbaugh等人提出的对象建模技术(OMT)Jacobson提出的面向对象的软件工程(OOSE)G.boochJ.RumboughJacobson等人在Booch方法、OMT和OOSE的基础上推出了统一建模语言UML5.2面向对象分析面向对象分析的一般步骤如下:获取客户对系统的需求:包括标识场景(scenario)和用况(usecase,也称用例),以及建造需求模型用基本的需求为指南,来选择类和对象(包括属性和操作)。定义类的结构和层次。建造对象—关系模型。建造对象—行为模型。利用用况/场景来复审分析模型。Coad&Yourdon方法采用自顶向下的方法,由问题域出发,由宏观到微观逐步分析,包含5个层次:主题层-定义主题对象层-标识对象结构层-标识结构属性层-定义属性服务层-定义服务定义主题也称为子系统,将复杂的问题域按照内在关系的疏密划分成若干个主题每个主题有单一含义,主题内具有高内聚性,主题间具有低耦合性划分主题原则在开发很小系统时,无须引入主题层对于含有较多对象的系统,则往往先识别出类与对象和关联,然后划分主题,并用它作为指导开发者和用户观察整个模型的一种机制对于规模极大的系统,则首先由高级分析员粗略地识别对象和关联,然后初步划分主题,经进一步分析,对系统结构有更深入的了解之后,再进一步修改和精炼主题应该按问题域而不是用功能分解方法来确定主题按不同主题的对象相互间依赖和交互最少的原则来确定主题主题和子系统都是一种抽象,从外界观察系统时,主题或子系统可看作黑盒,它有自己的一组责任和协作者,观察者不必关心其细节。观察一个主题或子系统的内部时,观察者可以把注意力集中在系统的某一个方面。因此,主题或子系统实际上是系统更高抽象层次上的一种描述。主题表示方法由主题图和主题表示两部分组成主题1矩形表示,内部标以编号或名称主题间的联系12主题间的联系用双向实线表示例例5.1传感器系统对象很少,只有一个传感器对象类,可以不用划分主题1.Sensor编号主题名说明1Sensor传感器主题图主题表示例5.2登记发照系统含有较多对象,包括车辆管理机构,相关工作人员,车主,车辆等,需要划分主题。按照问题域,划分为Staff,User,LegalEvent,Vehicle四个主题2.User1.Staff3.LegalEvent4.Vehicle练习教学系统问题陈述如下:教学系统负责协调和管理教学任务的工作,具体工作是,教务人员首先收集和记录本专业学生人数,课程数及每门课课时,教师数量;然后根据这些信息给每个教师分配若干门课程,安排每门课程的教学地点及时间;并印发课表,通知学生和教师。编号主题名说明1Staff教务处及相关人员2Teacher教师3Student学生4Course课程5TeachingManagement教学管理工作对象层对每个主题进行分析,分解出若干个对象类对象类来自问题领域。可以先标识候选类,然后进行筛选由对象图表示对象图由划分成3格的长方形表示(长式表示),下面2个格子可省略(短式表示)。图形符号如下:对象名标识…………长式表示短式表示对象名标识Sensor例:传感器系统对象图①长式表示②短式表示Sensor登记发证系统的对象类主题对象类StaffOrganization,ClerkUserOwnerLegalEventRegistration,TitleVehicleVehicle传感器对象图自对象层起,主题图中的主体间联系可省略OrganizationClerkOwnerRegistrationTitleVehicle1234练习完成教务系统的对象图主题对象StaffOrganization,ClerkTeacherTearherStudentStudentCourseCourseTeachingManagementScheduling,Timetable结构层在对象层基础上建立对象类之间关系。内容对象类调整对象类间关系模型对象类调整依据对象和类的定义,使用概括来寻找两个或多个共享相同特征的对象,将这些共同的方面来形成父类。依据对象和类的定义,将对象类进一步分解成若干子类。类的属性或操作不适合该类的全部对象例:“汽车”类的“乘客限量”属性,不适合于吊车、铲车。问题:分类不够详细——进一步划分特殊类属性及操作相同的类经过抽象,差别很大的事物可能只保留相同的特征——考虑能否合并为一个类,如计算机与吸尘器属性及操作相似的类——考虑能否提升出一个一般类,或形成整体部分结构。例:轿车、货车,抽象出汽车;机床与鼓风机用电机做成分.同一事物的重复描述例:“职员”和“工作证”——取消其中一个对象类间关系:对象-关系模型对象--关系模型描述了系统的静态结构,它指出了类间的关系类之间的关系有继承关系组合关系组装引用继承关系一般—特殊(generalization—specialization)结构一般—特殊结构是一种分类结构,反映了是一种“isa”的关系,如:汽车是一种交通工具。继承关系图示ABCAB超类子类组合关系组装整体—部分(whole—part)结构反映的是一种“hasa”的关系,如“汽车”有“发动机”。同样,整体—部分结构也具有层次结构。引用组装关系图示AB是一种单向关系存在函数关系1:11:nn:mmn例汽车发动机车轮111n引用关系图示AB反映一般性联系是一种无向关系存在函数关系1:11:nn:mmn例教师学生nm城市教学航线mn结构图由对象类,类间继承、组装和引用关系构建的图例1传感器系统根据问题域的描述,做对象类调整进一步划分出临界传感器和标准传感器确定类间关系类型继承关系画图例2登记发照系统根据问题域的描述,做对象类调整抽取超类:Registration和Title抽取超类LegalEvent派生子类:Vehicle分解出若干子类确定类间关系类型类Organization与Clerk:组装关系类LegalEvent与Clerk:引用关系类LegalEvent与Vehicle:引用关系类LegalEvent与Owner:引用关系OrganizationClerkOwnerRegistrationTitleVehicle1234登记发证系统对象图画图P92图5.16练习画出教务系统结构图属性层为每个类内作属性的扩充类内属性有两种类内静态特性:刻画对象类的若干静态特征,仅表示出问题域所限定的哪些属性。类间组合的指针属性层定义属性识别属性筛选属性的命名和定位属性的详细说明定义属性属性是与问题相关的。从技术观点上,属性是一些变量(数据项或状态信息),包含它的每一个对象(实例)都具有自己的值。在类中,必须给每一个属性一个唯一的名字。属性的类型可以是常见的基本数据类型,也可以其他的类或者自己所在的类。识别属性按常识这个对象应该有哪些属性?在当前的问题域中,对象应该有哪些属性?建立这个对象是为了保存和管理哪些信息?根据系统责任,这个对象应具有哪些属性?对象为了完成其功能,需要增设哪些属性?对象是否需要通过专设的属性区别其状态?例如信用卡的使用根据常识:卡号,有效期,密码问题域:持卡人姓名,持卡人信用记录功能:当前透支额度,最大透支额度专设属性:是否有效?若一个属性的结构较为复杂(即不仅仅是一些简单的数字或文本),可考虑把其作为对象。筛选是否体现了以系统责任为目标的抽象;例:书的重量?是否描述对象本身的特征;例:课程—电话号码?一个属性所对应的一个事物性质的粒度要适当。例如人的通信地址,包括国家、省、城市、街道、门牌号码等内容,但这些内容在通信地址这个概念上是不可分的。在定义“人员”对象的属性时,应该使用一个属性“通信地址”,而不应把有关通信地址的各项内容拆散开用多个属性来描述。若一个对象与另一个对象有关系,其属性必须捕获该对象的性质,而不是关系或关系中的其他对象的性质;如属性必须是整个实体的特征,而不是其成分的特征是否可通过继承得到?可以从其它属性直接导出的属性;与实现有关的因素,推迟到OOD考虑(规范化、对象标识、性能问题)属性的命名和定位命名:原则与类的命名相同定位:针对所描述的对象,适合全部对象实例。属性的详细说明把每个属性都填写到相
本文标题:软件系统分析第五章
链接地址:https://www.777doc.com/doc-1991845 .html