资源预览内容
第1页 / 共68页
第2页 / 共68页
第3页 / 共68页
第4页 / 共68页
第5页 / 共68页
第6页 / 共68页
第7页 / 共68页
第8页 / 共68页
第9页 / 共68页
第10页 / 共68页
亲,该文档总共68页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
面向对象的分析与设计简介OOA&OOD:Anintroduction2024/9/15Institute of Computer SoftwareNanjing University1摘要引言如何发现“类”如何设计“类”小结2024/9/15Institute of Computer SoftwareNanjing University2摘要引言引言如何发现“类”如何设计“类”小结2024/9/15Institute of Computer SoftwareNanjing University3面向对象软件工程2024/9/15Institute of Computer SoftwareNanjing University4问题域问题域需求分析需求分析总体设计总体设计详细设计详细设计计算机计算机OOTOOPOODOOA问题域问题域编程编程测试测试计算机计算机自然语言自然语言自然语言自然语言分析与设计的鸿沟分析与设计的鸿沟编程语言编程语言自然语言自然语言面向对象的编程语言面向对象的编程语言传统的软件工程方法传统的软件工程方法面向对象的软件工程方法面向对象的软件工程方法面向对象软件工程面向对象方法真正意义深远的目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复用。面向对象的开发不仅仅是编程,必须在整个软件生命周期采用一种全新的方法:在软件开发过程所有阶段都运用面向对象的方法,将OOA,OOD,OOP,OOT有机地集成在一起,这样有利于系统的稳定性。2024/9/15Institute of Computer SoftwareNanjing University5面向对象软件工程喷泉模型以用户需求为动力,以对象为驱动各阶段是相互迭代和无间隙的使用相同的描述方法和模型,使得软件生存期各阶段所使用的方法、技术具有高度的连续性。2024/9/15Institute of Computer SoftwareNanjing University62024/9/15Institute of Computer SoftwareNanjing University7面向对象方法BoochCoad/YourdonOMT:对象模型,功能模型,动态模型JacobsonUMLl三种基本活动三种基本活动l识别类和对象识别类和对象l描述对象和类之间描述对象和类之间的关系的关系l通过描述每个类的通过描述每个类的功能定义对象的行功能定义对象的行为为面向对象方法RationalUnifiedProcess(RUP)Rational统一开发过程迭代式的增量开发用例驱动以软件体系结构为核心2024/9/15Institute of Computer SoftwareNanjing University8面向对象的分析与设计OO方法强调开发过程的连续性构造一系列不断精化的面向对象的模型构造一系列不断精化的面向对象的模型实际上目前大多倾向于采用迭代式开发类成为分析、设计和实现的基本单元类成为分析、设计和实现的基本单元核心问题:Howtofindtheclasses(不同层面的类)?Howtodesigntheclasses?2024/9/15Institute of Computer SoftwareNanjing University9推荐CraigLarman: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development2024/9/15Institute of Computer SoftwareNanjing University10面向对象分析OOA是软件开发过程中的问题定义阶段领域分析(DomainAnalysis):抽取和整理用户需求并建立问题域精确模型的过程。以公共对象、类和框架等形式在特定应用领域中标识、分析和规约公共的可复用的软件成分的能力。抽象出目标系统的本质属性,建立问题领域模型。应用分析(ApplicationAnalysis):将领域分析建立起来的问题领域模型,用某种基于计算机系统的语言来表示。响应时间需求、用户界面需求和数据安全等特殊的需求也都在这一层分解抽出。2024/9/15Institute of Computer SoftwareNanjing University11面向对象分析领域分析2024/9/15Institute of Computer SoftwareNanjing University12领域知领域知识源识源领域分领域分析模型析模型领域领域分析分析技术文件技术文件专家建议专家建议已有应用已有应用客户考察客户考察目前目前/未来的需求未来的需求类的分类类的分类复用标准复用标准功能模型功能模型领域语言领域语言2024/9/15Institute of Computer SoftwareNanjing University13面向对象分析具体步骤2024/9/15Institute of Computer SoftwareNanjing University14获取用户基本需求获取用户基本需求标识类和对象标识类和对象定义类的结构和层定义类的结构和层次次表示类(对象)间表示类(对象)间的关系的关系为对象行为建模为对象行为建模常用用例来收集和描述用常用用例来收集和描述用户的需求户的需求标识类及类的属性和服务标识类及类的属性和服务描述系统的静态结构描述系统的静态结构描述系统的动态行为描述系统的动态行为2024/9/15Institute of Computer SoftwareNanjing University15需求分析Waterfall式开发其需求分析一开始(其实是过早地)确定的式开发其需求分析一开始(其实是过早地)确定的features 在最终产品中真正采用情况的比例在最终产品中真正采用情况的比例RequirementchecklistFURPS+Functionalfeatures,capabilities,securityUsabilityhumanfactors,help,documentationReliabilityfrequencyoffailure,recoverability,predictabilityPerformanceresponsetimes,throughput,accuracy,availability,resourceusage.Supportabilityadaptability,maintainability,internationalization,configurability.“+”ImplementationInterfaceOperationsPackagingLegal2024/9/15Institute of Computer SoftwareNanjing University16ClassificationFunctionalrequirements:behavior,features,capabilities,securityUsabilityrequirements:humanfactors,help,documentation“Thefontonthedisplayshouldbereadablefrom5feet”2024/9/15Institute of Computer SoftwareNanjing University17ClassificationReliabilityrequirements:frequencyoffailure,recoverabilityPerformancerequirements:responsetimes,throughput,accuracy,availability,resourceusage,etc.2024/9/15Institute of Computer SoftwareNanjing University18ClassificationSupportabilityrequirements:adaptability,internationalization,maintainability“Thesystemshouldallowfrequentandeasychangesinthenetworkconfiguration”The+intheFURPS+:Implementationrequirements:“MustuseLinuxandJava”2024/9/15Institute of Computer SoftwareNanjing University19面向对象分析OOA模型2024/9/15Institute of Computer SoftwareNanjing University20基本模型(类图)基本模型(类图)对象层对象层特征层特征层关系层关系层交交互互图图主主题题图图详细说明详细说明面向对象设计OOD是面向对象方法在软件设计阶段应用与扩展的结果,通常分为两个阶段高层设计:建立应用的体系结构低层设计:集中于类的详细设计OOD的准则抽象,信息隐藏,模块化,弱耦合,强内聚,可重用2024/9/15Institute of Computer SoftwareNanjing University21面向对象设计OOD具体内容按实现条件对OOA模型进行调整,并补充几个新的组成部分:设计问题域组元设计人机交互组元设计任务管理组元设计数据管理组元2024/9/15Institute of Computer SoftwareNanjing University22摘要引言如何发现如何发现“类类”如何设计“类”小结2024/9/15Institute of Computer SoftwareNanjing University23回顾:三个世界ThreeworldsVisualmodeling2024/9/15Institute of Computer SoftwareNanjing University242024/9/15Institute of Computer SoftwareNanjing University25现实世界现实世界问题世界问题世界软件世界软件世界Reality抽象抽象问题:Howtofindtheclasses?Usecase基于需求文档Use-casemodel:writingrequirementsincontext2024/9/15Institute of Computer SoftwareNanjing University26用例(UseCases)用例是一个叙述性文档,用来描述参与者使用系统完成某个过程时的事件发生顺序。用例乃是对过程的描述。过程描述事件、动作和事务处理自始至终的发生顺序。Usecasesaretextdocuments,notdiagrams,anduse-casemodelingisprimarilyanactofwritingtext,notdrawingdiagrams.2024/9/15Institute of Computer SoftwareNanjing University27UseCase例子:ProcessSale:A customer arrives at a checkout with items to purchase. The cashier uses the POS system to record each purchased item. The system presents a running total and line-item details. The customer enters payment information, which the system validates and records. The system updates inventory. The customer receives a receipt from the system and then leaves with the items.2024/9/15Institute of Computer SoftwareNanjing University28Actor,Scenario,UseCase简单地说,an actor is something with behavior,suchasaperson(identifiedbyrole),computersystem,ororganization;forexample,acashier.A scenario is a specific sequence of actions and interactions between actors and the system;itisalsocalledausecaseinstance.Itisoneparticularstoryofusingasystem,oronepaththroughtheusecase;forexample,thescenarioofsuccessfullypurchasingitemswithcash,orthescenariooffailingtopurchaseitemsbecauseofacreditpaymentdenial.a use case is a collection of related success and failure scenarios that describe an actor using a system to support a goal. Forexample,hereisacasualformatusecasewithalternatescenarios:2024/9/15Institute of Computer SoftwareNanjing University29ProcessSale2024/9/15Institute of Computer SoftwareNanjing University302024/9/15Institute of Computer SoftwareNanjing University31Actor有GoalIvarJacobson:A set of use-case instances, where each instance is a sequence of actions a system performs thatyields an observable result of value to a particular actor.软件工程师容易犯的错误:自认为所做的是客户/用户需要的。不能代替客户/用户假想其价值所在。2024/9/15Institute of Computer SoftwareNanjing University32创建USECASE的一些原则用例可以是一个场景,包括动作和交互。用例可以是一组场景,描述不同场景下的行为。这种书写格式可以在任何时候描述有变体的行为,例如黑盒需求,业务流程,系统设计说明。用例里不要有系统设计,用例里不要有界面设计,用例里不要有特性列表,用例里不要有测试。用例应该描述行为需求。用例的主场景不要超过九步。可以在适当的层次上得到子目标和移除设计说明。用例的最大价值不在于主场景,而是在于备选行为。主场景可能只占用例长度的四分之一到十分之一。2024/9/15Institute of Computer SoftwareNanjing University33用例的识别界定系统边界基于参与者先识别参与者对每个参与者,找出其所发起和参与的过程基于事件识别系统必须响应的外部事件把事件与参与者和用例联系起来2024/9/15Institute of Computer SoftwareNanjing University34边界,Actors,Goals2024/9/15Institute of Computer SoftwareNanjing University35识别Actors及其Goals除了明显的Actors之外,还要问问诸如以下这些问题:Whostartsandstopsthesystem?Whodoessystemadministration?Whodoesuserandsecuritymanagement?Istimeanactorbecausethesystemdoessomethinginresponsetoatimeevent?Isthereamonitoringprocessthatrestartsthesystemifitfails?Whoevaluatessystemactivityorperformance?Howaresoftwareupdateshandled?Pushorpullupdate?Whoevaluateslogs?Aretheyremotelyretrieved?Inadditiontohumanprimaryactors,arethereanyexternalsoftwareorroboticsystemsthatcalluponservicesofthesystem?Whogetsnotifiedwhenthereareerrorsorfailures?36Usecasesfavorafunctionalapproach!“Also,nameusecasesstartingwithaverb.”NOTveryusefulinfindingclasses.But,usefulinunderstandingrequirements,validatingtheresultedmodelandimplementation.此外还要对照FURPS+检查其他需求2024/9/15Institute of Computer SoftwareNanjing University37Findtheclasses“Thenounsandtheverbs”启发:类与方法;但是“The elevator will close its door before it moves to another floor.”有的名词不是类;有的类不表现为名词;基本原则:ADT2024/9/15Institute of Computer SoftwareNanjing University38Findtheclasses没有机械的办法。基于经验的启发性、指导性的原则:哪些东西是可能的类;哪些形式的类不理想,可考虑从模型中去除;2024/9/15Institute of Computer SoftwareNanjing University39Theidealclass明确的抽象类名是名词或形容词,刻画该抽象形容词常用于表达接口代表一系列运行时刻的对象。(允许特意的singleton)有修改操作(或作用式操作)形式或非形式地刻画性质:不变式前后置断言2024/9/15Institute of Computer SoftwareNanjing University40三种类分析类直接对应于问题域设计类为得到优雅的、可扩展的结构而引入实现类满足软件系统实现算法所需。如LinkedList;Array等2024/9/15Institute of Computer SoftwareNanjing University41分析类Analysisclassesrepresentanearlyconceptualmodelforthingsinthesystemwhichhaveresponsibilitiesandbehavior.Analysisclassesareusedtocaptureafirst-draft,rough-cutoftheobjectmodelofthesystem.Analysisclasseshandleprimarilyfunctionalrequirements.Theymodelobjectsfromtheproblemdomain.2024/9/15Institute of Computer SoftwareNanjing University42分析类Therearethreeaspectsofthesystemthatarelikelytochange: theboundarybetweenthesystemanditsactors(boundary)theinformationthesystemuses(entity)thecontrollogicofthesystem(control)2024/9/15Institute of Computer SoftwareNanjing University43behaviourinformationboundaryHeuristicsforfindingclasses寻找分析类OperationalModelofsomeaspectoftheexternalworld.SimulationButexternalclassescanbequiteabstract不一定是客观实体,也可能是抽象概念2024/9/15Institute of Computer SoftwareNanjing University44Heuristicsforfindingclasses寻找实现类实现难多复用数据结构与算法知识延迟实现类如“Queue”类层次组织多种不同实现2024/9/15Institute of Computer SoftwareNanjing University45Heuristicsforfindingclasses寻找设计类创造性工作设计模式的用武之地其他途径旧系统Adaptationthroughinheritance2024/9/15Institute of Computer SoftwareNanjing University462024/9/15Institute of Computer SoftwareNanjing University472024/9/15Institute of Computer SoftwareNanjing University482024/9/15Institute of Computer SoftwareNanjing University492024/9/15Institute of Computer SoftwareNanjing University50DomainModel领域模型A domain model is a representation of real-world conceptual classes notarepresentationofsoftwarecomponents.notasetofdiagramsdescribingsoftwareclasses,notsoftwareobjectswithresponsibilities.A domain modelisavisualrepresentationofconceptualclassesorreal-worldobjectsinadomainofinterestMO95,Fowler96Theyhavealsobeencalledconceptualmodels,domainobjectmodels,andanalysisobjectmodelsTheUPdefinesaDomainModelasoneoftheartifactsthatmaybecreatedintheBusinessModelingdiscipline.2024/9/15Institute of Computer SoftwareNanjing University51DomainModelUsingUMLnotation,adomainmodelisillustratedwithasetofclass diagrams inwhichnooperationsaredefined.Itmayshow:domainobjectsorconceptualclassesassociationsbetweenconceptualclassesattributesofconceptualclasses2024/9/15Institute of Computer SoftwareNanjing University52Informally,aconceptualclassisanidea,thing,orobject.Moreformally,aconceptualclassmaybeconsideredintermsofitssymbol,intension,andextensionMO95.DomainModel2024/9/15Institute of Computer SoftwareNanjing University53DomainModelSoftwareproblemscanbecomplex;Decomposition(divide-and-conquer)isacommonstrategytodealwiththiscomplexitybydivisionoftheproblemspaceintocomprehensibleunits.Instructuredanalysis,thedimensionofdecompositionisbyprocessesorfunctions. However,inobject-orientedanalysis,thedimensionofdecompositionisfundamentallybythingsorentitiesinthedomain.Acentraldistinctionbetweenobject-orientedandstructuredanalysisis:divisionbyconceptualclasses(objects)ratherthandivisionbyfunctions.Aprimaryanalysistaskistoidentifydifferentconceptsintheproblemdomainanddocumenttheresultsinadomainmodel2024/9/15Institute of Computer SoftwareNanjing University54SystemSequenceDiagrams识别系统事件定义系统操作给出这些操作的Contracts2024/9/15Institute of Computer SoftwareNanjing University552024/9/15Institute of Computer SoftwareNanjing University57Contract CO2: enterItemOperation:enterItem(itemID:ItemID,quantity:integer)CrossReferences: UseCases:ProcessSalePreconditions:Thereisasaleunderway.Postconditions:-ASalesLineIteminstancesliwascreated(instancecreation).-sliwasassociatedwiththecurrentSale(associationformed).-sli.quantitybecamequantity(attributemodification).-sliwasassociatedwithaProductDescription,basedonitemIDmatch(associationformed).接下来建立系统类模型类图在类之间分配职责2024/9/15Institute of Computer SoftwareNanjing University58摘要引言如何发现“类”如何设计如何设计“类类”小结2024/9/15Institute of Computer SoftwareNanjing University59ClassDesignOO设计是一个迭代的过程!把分析类直接带入设计阶段如果在设计阶段合并了分析模型,那么在演化的时候,保持分析和设计模型的一致性会更容易类设计:增加细节和执行精细决策2024/9/15Institute of Computer SoftwareNanjing University60ClassDesign填补从高层需求到低层服务之间的空白用操作实现用例阐述每个操作的算法选择算法;数据结构;设计内部类和操作向下递归到支持更高层操作的设计操作功能分层;机制分层把模型重构成更简洁的设计2024/9/15Institute of Computer SoftwareNanjing University61ClassDesign优化数据的访问路径效率问题具体化必须操作的行为Command,Strategy模式调整类的结构以增加继承重新调整类和操作;提取公共行为;使用委托来共享行为组织类和关联信息隐藏;内聚性;微调包2024/9/15Institute of Computer SoftwareNanjing University62ClassDesign创建初始设计类定义操作定义方法定义状态定义属性定义依赖定义关联2024/9/15Institute of Computer SoftwareNanjing University63HowManyClassesAreNeeded?大部分,简单的类意味着每一个类封装较少的整个系统的智能更易被复用更易实现少部分,复杂的类意味着每个类封装较多的整个系统的智能不太会被复用更难实现2024/9/15Institute of Computer SoftwareNanjing University64A class should have a single well focused purpose. A class should do one thing and do it well!小结面向对象分析和设计特点,过程,任务如何发现类用例领域模型如何设计类2024/9/15Institute of Computer SoftwareNanjing University652024/9/15Institute of Computer SoftwareNanjing University66UML-Books2024/9/15Institute of Computer SoftwareNanjing University67UML-Tools ?作业(本次作业不用提交)复习UML,学习使用一种UML工具2024/9/15Institute of Computer SoftwareNanjing University68
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号