1、面向对象的分析与设计简介OOA & OOD: An introduction2022-3-23Institute of Computer SoftwareNanjing University1摘要引言如何发现“类”如何设计“类”小结2022-3-23Institute of Computer SoftwareNanjing University2摘要引言引言如何发现“类”如何设计“类”小结2022-3-23Institute of Computer SoftwareNanjing University3面向对象软件工程2022-3-23Institute of Computer Softwar
2、eNanjing University4问题域问题域需求分析需求分析总体设计总体设计详细设计详细设计计算机计算机OOTOOPOODOOA问题域问题域编程编程测试测试计算机计算机自然语言自然语言自然语言自然语言分析与设计的鸿沟分析与设计的鸿沟编程语言编程语言自然语言自然语言面向对象的编程语言面向对象的编程语言传统的软件工程方法传统的软件工程方法面向对象的软件工程方法面向对象的软件工程方法面向对象软件工程面向对象方法真正意义深远的目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复用。面向对象的开发不仅仅是编程,必须在整个软件生命周期采用一种全新的方法:在软件开发过程所有阶段都运用面向对象
3、的方法,将OOA,OOD,OOP,OOT有机地集成在一起,这样有利于系统的稳定性。2022-3-23Institute of Computer SoftwareNanjing University5面向对象软件工程喷泉模型以用户需求为动力,以对象为驱动各阶段是相互迭代和无间隙的使用相同的描述方法和模型,使得软件生存期各阶段所使用的方法、技术具有高度的连续性。2022-3-23Institute of Computer SoftwareNanjing University62022-3-23Institute of Computer SoftwareNanjing University7面向对象
4、方法BoochCoad/YourdonOMT:对象模型,功能模型,动态模型JacobsonUMLl三种基本活动三种基本活动l识别类和对象识别类和对象l描述对象和类之间描述对象和类之间的关系的关系l通过描述每个类的通过描述每个类的功能定义对象的行功能定义对象的行为为面向对象方法Rational Unified Process (RUP) Rational统一开发过程迭代式的增量开发用例驱动以软件体系结构为核心2022-3-23Institute of Computer SoftwareNanjing University8面向对象的分析与设计OO方法强调开发过程的连续性构造一系列不断精化的面向对
5、象的模型构造一系列不断精化的面向对象的模型实际上目前大多倾向于采用迭代式开发类成为分析、设计和实现的基本单元类成为分析、设计和实现的基本单元核心问题:How to find the classes (不同层面的类)?How to design the classes?2022-3-23Institute of Computer SoftwareNanjing University9推荐CraigLarman: Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterati
6、ve Development 2022-3-23Institute of Computer SoftwareNanjing University10面向对象分析OOA是软件开发过程中的问题定义阶段领域分析(Domain Analysis):抽取和整理用户需求并建立问题域精确模型的过程。以公共对象、类和框架等形式在特定应用领域中标识、分析和规约公共的可复用的软件成分的能力。抽象出目标系统的本质属性,建立问题领域模型。应用分析(Application Analysis):将领域分析建立起来的问题领域模型,用某种基于计算机系统的语言来表示。响应时间需求、用户界面需求和数据安全等特殊的需求也都在这一层
7、分解抽出。2022-3-23Institute of Computer SoftwareNanjing University11面向对象分析领域分析2022-3-23Institute of Computer SoftwareNanjing University12领域领域知识知识源源领域领域分析分析模型模型领域领域分析分析技术文件技术文件专家建议专家建议已有应用已有应用客户考察客户考察目前目前/未来的需未来的需求求类的分类类的分类复用标准复用标准功能模型功能模型领域语言领域语言2022-3-23Institute of Computer SoftwareNanjing University1
8、3面向对象分析具体步骤2022-3-23Institute of Computer SoftwareNanjing University14获取用户基本需求获取用户基本需求标识类和对象标识类和对象定义类的结构和层定义类的结构和层次次表示类(对象)间表示类(对象)间的关系的关系为对象行为建模为对象行为建模常用用例来收集和描述用常用用例来收集和描述用户的需求户的需求标识类及类的属性和服务标识类及类的属性和服务描述系统的静态结构描述系统的静态结构描述系统的动态行为描述系统的动态行为2022/3/23Institute of Computer SoftwareNanjing University15需
9、求分析Waterfall式开发其需求分析一开始(其实是过早地)确定的式开发其需求分析一开始(其实是过早地)确定的features 在最终产品中真正采用情况的比例在最终产品中真正采用情况的比例Requirement checklistFURPS+Functionalfeatures, capabilities, securityUsabilityhuman factors, help, documentationReliabilityfrequency of failure, recoverability, predictabilityPerformanceresponse times, thr
10、oughput, accuracy, availability, resource usage.Supportability adaptability, maintainability, internationalization, configurability.“+”Implementation Interface Operations Packaging Legal 2022-3-23Institute of Computer SoftwareNanjing University16ClassificationFunctional requirements: behavior, featu
11、res, capabilities,securityUsability requirements: human factors, help, documentation“The font on the display should be readable from 5 feet”2022-3-23Institute of Computer SoftwareNanjing University17ClassificationReliability requirements: frequency of failure, recoverabilityPerformance requirements:
12、 response times, throughput, accuracy, availability, resource usage, etc.2022-3-23Institute of Computer SoftwareNanjing University18ClassificationSupportability requirements: adaptability, internationalization, maintainability“The system should allow frequent and easy changes in the network configur
13、ation”The + in the FURPS+: Implementation requirements: “Must use Linux and Java”2022-3-23Institute of Computer SoftwareNanjing University19面向对象分析OOA模型2022-3-23Institute of Computer SoftwareNanjing University20基本模型(类图)基本模型(类图)对象层对象层特征层特征层关系层关系层交交互互图图主主题题图图详细说明详细说明面向对象设计OOD是面向对象方法在软件设计阶段应用与扩展的结果,通常分为
14、两个阶段高层设计:建立应用的体系结构低层设计:集中于类的详细设计OOD的准则抽象,信息隐藏,模块化,弱耦合,强内聚,可重用2022-3-23Institute of Computer SoftwareNanjing University21面向对象设计OOD具体内容按实现条件对OOA模型进行调整,并补充几个新的组成部分:设计问题域组元设计人机交互组元设计任务管理组元设计数据管理组元2022-3-23Institute of Computer SoftwareNanjing University22摘要引言如何发现如何发现“类类”如何设计“类”小结2022-3-23Institute of Co
15、mputer SoftwareNanjing University23回顾:三个世界Three worldsVisual modeling2022-3-23Institute of Computer SoftwareNanjing University242022-3-23Institute of Computer SoftwareNanjing University25现实世界现实世界问题世界问题世界软件世界软件世界Reality抽象抽象问题:How to find the classes?Use case基于需求文档Use-case model: writing requirements
16、in context2022-3-23Institute of Computer SoftwareNanjing University26用例(Use Cases)用例是一个叙述性文档,用来描述参与者使用系统完成某个过程时的事件发生顺序。用例乃是对过程的描述。过程描述事件、动作和事务处理自始至终的发生顺序。Use cases are text documents, not diagrams, and use-case modeling is primarily an act of writing text, not drawing diagrams.2022-3-23Institute of
17、Computer SoftwareNanjing University27Use Case例子:Process Sale: 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 v
18、alidates and records. The system updates inventory. The customer receives a receipt from the system and then leaves with the items.2022-3-23Institute of Computer SoftwareNanjing University28Actor, Scenario, Use Case简单地说,an actor is something with behavior, such as a person (identified by role), comp
19、uter system, or organization; for example, a cashier.A scenario is a specific sequence of actions and interactions between actors and the system; it is also called a use case instance. It is one particular story of using a system, or one path through the use case; for example, the scenario of succes
20、sfully purchasing items with cash, or the scenario of failing to purchase items because of a credit payment denial.a use case is a collection of related success and failure scenarios that describe an actor using a system to support a goal. For example, here is a casual format use case with alternate
21、 scenarios:2022-3-23Institute of Computer SoftwareNanjing University29Process Sale2022-3-23Institute of Computer SoftwareNanjing University302022-3-23Institute of Computer SoftwareNanjing University31Actor有GoalIvar Jacobson: A set of use-case instances, where each instance is a sequence of actions a
22、 system performs that yields an observable result of value to a particular actor.软件工程师容易犯的错误:自认为所做的是客户/用户需要的。不能代替客户/用户假想其价值所在。2022-3-23Institute of Computer SoftwareNanjing University32创建USE CASE的一些原则用例可以是一个场景,包括动作和交互。用例可以是一组场景,描述不同场景下的行为。这种书写格式可以在任何时候描述有变体的行为,例如黑盒需求,业务流程,系统设计说明。 用例里不要有系统设计,用例里不要有界面
23、设计,用例里不要有特性列表,用例里不要有测试。用例应该描述行为需求。用例的主场景不要超过九步。可以在适当的层次上得到子目标和移除设计说明。用例的最大价值不在于主场景,而是在于备选行为。主场景可能只占用例长度的四分之一到十分之一。2022-3-23Institute of Computer SoftwareNanjing University33用例的识别界定系统边界基于参与者先识别参与者对每个参与者,找出其所发起和参与的过程基于事件识别系统必须响应的外部事件把事件与参与者和用例联系起来2022-3-23Institute of Computer SoftwareNanjing Universi
24、ty34边界,Actors,Goals2022-3-23Institute of Computer SoftwareNanjing University35识别Actors及其Goals除了明显的Actors之外,还要问问诸如以下这些问题:Who starts and stops the system?Who does system administration?Who does user and security management?Is time an actor because the system does something in response to a time event?
25、Is there a monitoring process that restarts the system if it fails?Who evaluates system activity or performance?How are software updates handled? Push or pull update?Who evaluates logs? Are they remotely retrieved?In addition to human primary actors, are there any external software or robotic system
26、s that call upon services of the system?Who gets notified when there are errors or failures?36Use cases favor a functional approach!“Also, name use cases starting with a verb.”NOT very useful in finding classes.But, useful in understanding requirements, validating the resulted model and implementati
27、on.此外还要对照FURPS+检查其他需求2022-3-23Institute of Computer SoftwareNanjing University37Find the classes“The nouns and the verbs”启发:类与方法;但是“The elevator will close its door before it moves to another floor.”有的名词不是类;有的类不表现为名词;基本原则:ADT2022-3-23Institute of Computer SoftwareNanjing University38Find the classes
28、没有机械的办法。基于经验的启发性、指导性的原则:哪些东西是可能的类;哪些形式的类不理想,可考虑从模型中去除;2022-3-23Institute of Computer SoftwareNanjing University39The ideal class明确的抽象类名是名词或形容词,刻画该抽象形容词 常用于 表达接口代表一系列运行时刻的对象。(允许特意的singleton)有修改操作(或作用式操作)形式或非形式地刻画性质:不变式 前后置断言2022-3-23Institute of Computer SoftwareNanjing University40三种 类分析类直接对应于问题域设计类
29、为得到优雅的、可扩展的结构而引入实现类满足软件系统实现算法所需。如LinkedList; Array等2022-3-23Institute of Computer SoftwareNanjing University41分析类Analysis classes represent an early conceptual model for things in the system which have responsibilities and behavior.Analysis classes are used to capture a first-draft, rough-cut of the
30、 object model of the system.Analysis classes handle primarily functional requirements. They model objects from the problem domain. 2022-3-23Institute of Computer SoftwareNanjing University42分析类There are three aspects of the system that are likely to change: the boundary between the system and its ac
31、tors (boundary)the information the system uses (entity)the control logic of the system (control)2022-3-23Institute of Computer SoftwareNanjing University43behaviourinformationboundaryHeuristics for finding classes寻找分析类Operational Model of some aspect of the external world.SimulationBut external clas
32、ses can be quite abstract 不一定是客观实体,也可能是抽象概念2022-3-23Institute of Computer SoftwareNanjing University44Heuristics for finding classes寻找实现类实现难多复用数据结构与算法知识延迟实现类如“Queue” 类层次 组织 多种不同实现2022-3-23Institute of Computer SoftwareNanjing University45Heuristics for finding classes寻找设计类创造性工作设计模式的用武之地其他途径旧系统Adapta
33、tion through inheritance 2022-3-23Institute of Computer SoftwareNanjing University462022-3-23Institute of Computer SoftwareNanjing University472022-3-23Institute of Computer SoftwareNanjing University482022-3-23Institute of Computer SoftwareNanjing University492022-3-23Institute of Computer Software
34、Nanjing University50Domain Model 领域模型A domain model is a representation of real-world conceptual classes not a representation of software components. not a set of diagrams describing software classes, not software objects with responsibilities.A domain model is a visual representation of conceptual
35、classes or real-world objects in a domain of interest MO95, Fowler96They have also been called conceptual models, domain object models, and analysis object modelsThe UP defines a Domain Model as one of the artifacts that may be created in the Business Modeling discipline.2022-3-23Institute of Comput
36、er SoftwareNanjing University51Domain ModelUsing UML notation, a domain model is illustrated with a set of class diagrams in which no operations are defined. It may show:domain objects or conceptual classesassociations between conceptual classesattributes of conceptual classes2022-3-23Institute of C
37、omputer SoftwareNanjing University52 Informally, a conceptual class is an idea, thing, or object. More formally, a conceptual class may be considered in terms of its symbol, intension, and extensionMO95.Domain Model2022-3-23Institute of Computer SoftwareNanjing University53Domain ModelSoftware probl
38、ems can be complex;Decomposition (divide-and-conquer) is a common strategy to deal with this complexity by division of the problem space into comprehensible units. In structured analysis, the dimension of decomposition is by processes or functions. However, in object-oriented analysis, the dimension
39、 of decomposition is fundamentally by things or entities in the domain.A central distinction between object-oriented and structured analysis is: division by conceptual classes (objects) rather than division by functions.A primary analysis task is to identify different concepts in the problem domain
40、and document the results in a domain model2022-3-23Institute of Computer SoftwareNanjing University54System Sequence Diagrams识别系统事件定义系统操作给出这些操作的Contracts2022-3-23Institute of Computer SoftwareNanjing University552022-3-23Institute of Computer SoftwareNanjing University57Contract CO2: enterItemOperat
41、ion:enterItem(itemID: ItemID, quantity: integer)Cross References: Use Cases: Process SalePreconditions:There is a sale underway.Postconditions:- A SalesLineItem instance sli was created (instance creation).- sli was associated with the current Sale (association formed).- sli.quantity became quantity
42、 (attribute modification).- sli was associated with a ProductDescription, based on itemID match (association formed).接下来建立系统类模型 类图在类之间分配职责2022-3-23Institute of Computer SoftwareNanjing University58摘要引言如何发现“类”如何设计如何设计“类类”小结2022-3-23Institute of Computer SoftwareNanjing University59Class DesignOO设计是一个
43、迭代的过程!把分析类直接带入设计阶段如果在设计阶段合并了分析模型,那么在演化的时候,保持分析和设计模型的一致性会更容易类设计:增加细节和执行精细决策2022-3-23Institute of Computer SoftwareNanjing University60Class Design填补从高层需求到低层服务之间的空白用操作实现用例阐述每个操作的算法选择算法;数据结构;设计内部类和操作向下递归到支持更高层操作的设计操作功能分层;机制分层把模型重构成更简洁的设计2022-3-23Institute of Computer SoftwareNanjing University61Class D
44、esign优化数据的访问路径效率问题具体化必须操作的行为Command, Strategy模式调整类的结构以增加继承重新调整类和操作;提取公共行为;使用委托来共享行为组织类和关联信息隐藏;内聚性;微调包2022-3-23Institute of Computer SoftwareNanjing University62Class Design创建初始设计类定义操作定义方法定义状态定义属性定义依赖定义关联2022-3-23Institute of Computer SoftwareNanjing University63How Many Classes Are Needed?大部分,简单的类意味
45、着每一个类封装较少的整个系统的智能更易被复用更易实现少部分,复杂的类意味着每个类封装较多的整个系统的智能不太会被复用更难实现2022-3-23Institute of Computer SoftwareNanjing University64A class should have a single well focused purpose. A class should do one thing and do it well!小结面向对象分析和设计特点,过程,任务如何发现类用例领域模型如何设计类2022-3-23Institute of Computer SoftwareNanjing University652022-3-23Institute of Computer SoftwareNanjing University66UML - Books2022-3-23Institute of Computer SoftwareNanjing University67UML - Tools ?作业(本次作业不用提交)复习UML,学习使用一种UML工具2022-3-23Institute of Computer SoftwareNanjing University68