1、1,软件工程,面向对象分析与设计,2,面向对象分析,分析分析工作主要包括3项内容:理解、表达和验证。在面向对象分析中,主要由对象模型、动态模型和功能模型组成。 面向对象分析关键是识别出问题域内的类与对象,并分析它们相互间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。其中对象模型是最基本、最重要、最核心的。,3,对象模型表示静态的、结构化的系统的“数据”性质。面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。为建立动态模型和功能模型,提供了实质性的框架。对象模型用类图来描述。,对象模型,4,动态模型表示
2、瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。状态是对对象属性值的一种抽象。各对象之间相互触发(即作用)就形成了一系列的状态变化。一个触发行为称作一个事件。对象对事件的响应,取决于接受该触发的对象当时所处的状态。,动态模型,5,用UML提供的状态图来描绘对象的状态、触发状态转换的事件以及对象的行为(对事件的响应)。每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。动态模型是基于事件共享而互相关联的一组状态图的集合。,动态模型,6,功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,直接地反映了用户对目标系
3、统的需求。建立功能模型有助于软件开发人员更深入地理解问题域,改进和完善自己的设计。用例图进行需求分析和建立功能模型的强有力工具。在UML中把用用例图建立起来的系统模型称为用例模型。,功能模型,7,(1) 针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。 (2) 状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被映射成用例,它们同时与类图中的服务相对应。 (3) 功能模型中的处理(或用例)对应于对象模型中的类所提供的服务。 (4) 数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。 (5) 数据流图中的数据流,往往是对象模型中对象的属性值,也可能是
4、整个对象。,3种模型之间的关系,8,(6) 用例图中的行为者,可能是对象模型中的对象。 (7) 功能模型中的处理(或用例)可能产生动态模型中的事件。 (8) 对象模型描述了数据流图中的数据流、数据存储以及数据源点/终点的结构。,3种模型之间的关系,9,面向对象设计,分析是提取和整理用户需求,并建立问题域精确模型的过程。设计则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。面向对象设计就是用面向对象观点建立求解域模型的过程。,10,系统分解,软件工程师在设计比较复杂的应用系统时普遍采用的策略是,“分而治之,各个击破”。系统的主要组成部分称为子系统。通常根据所提供的功能
5、来划分子系统。,11,大多数系统的面向对象设计模型,在逻辑上都由4大部分组成。,系统分解,12,设计问题域子系统,面向对象分析所得出的问题域精确模型,为设计问题域子系统奠定了良好的基础,建立了完整的框架。面向对象设计仅需从实现角度对问题域模型做一些补充或修改。,13,在面向对象设计过程中,可能对面向对象分析所得出的问题域模型做的补充或修改有:1. 调整需求2. 重用已有的类3. 把问题域类组合在一起4. 增添一般化类以建立协议5. 调整继承层次,14,从面向对象设计的角度补充设计人机交互子系统的策略:1. 分类用户2. 描述用户3. 设计命令层次4. 设计人机交互类,设计人机交互子系统,15,
6、设计任务管理子系统,确定系统中哪些是必须同时动作的对象,哪些是相互排斥的对象。然后进一步设计任务管理子系统。是设计工作的一项重要内容。1. 分析并发性2. 设计任务管理子系统,16,设计数据管理子系统,数据管理子系统是系统存储或检索对象的基本设施,它建立在某种数据存储管理系统之上,并且隔离了数据存储管理模式(文件、关系数据库或面向对象数据库)的影响。,17,设计数据管理子系统,1、选择数据存储管理模式(1)文件管理系统(2)关系数据库管理系统(3)面向对象数据库管理系统,18,2 、设计数据管理子系统 (1)设计数据格式:包括文件系统、关系数据库管理系统、面向对象数据库管理系统。 (2)设计相应的服务,