7.4评审和修正OOA模型 分析模型的一致性和完整性 一个良好的OOA模型,在问题论域内必须上一致的和完整的。因此为了建立一个完整 的OOA模型,必须掌握分析模型的一致性和完整性的方法。OOA模型的一致性和完整性 指的是模型的语法正确性。在OOA模型的环境中,有各种各样正确性准则,它们可以应用 于OOA方法中。这些正确性准则可以标识为: (1)命名约定。是指关于模型标号、标识符、指示符等的形式或格式的公认标准。命名约 定使得通信清晰明了。命名约定应在应用论域中有实际意义,且是唯一的。名字中不应出现 “与”和“或”之类的连接词。 (2)风格约定。是一种形式和格式的公认标准,应用于结构、过程、探索等,也可以 应用于建模技术 (3)语法需求。是指建模技术所要求的条件或行为。用于建成模的每个技术都有应当 有一组语法需求,以保证用该技术建立起来的OOA模型的语法正确 对于OOA模型的5个层次,分析模型的一致性和完整性有不同的要求,以下将分别进 行讨论。 1、对象一类层 (1)命名约定。对象应当有一个合适的名字(唯一的),用于描述一个类,而不是类所 执行一个功能或类的一个特性。它是一个名词或形容词一名词形式 (2)风格约定。每个对象都应有一个明确意义的职责,每个对象应至少封装一个只有 该对象知道的职责。对于那些只含有单个实例的对象的使用要谨慎。通常一个事件都是由 个对象识别,而事件的影响则应由一个或多个对象共同产生 (3)语法需求。对象的描述要清晰明了,不能的二义性。必须正确使用对象和类属性 类,每个对象不是参与对某一事件的识别,就是参与产生响应。 2、属性层 (1)命名约定。属性名字必须适当,能体现相关联对象的特性、质量或数据存储要求 通常采用名词或形容词一名词形式的词组,且命名中不用动词。 (2)风格约定。OOA模型中应当只出现基本的实例关系。应避免冗长的实例关系。 (3)语法需求。每个对象至少应含有一个属性,用来唯一标识对象的每个实例 3、服务层 (1)命名约定。服务的命名必须能代表一些与对象相关联的工作、功能或处理。名字 通常采用动词一名词形式的词组,尽量避免使用其他结构。 (2)风格约定。服务应当是经过精心设计的。如只有单一的入口点;不涉及并发处理 通过接收的消息或其他精心定义的事件来对其进行初始化;使用与语言无关的过程性描述来 作规格说明等等。 (3)语法需求。每个对象都至少应有一个类服务,从而能操作对象的实例,访问一个 或多个相关联的属性。服务的定义与输入输出的消息,以及封装在对象中的属性相一致。 4、结构层 (1)风格约定。当整体一部分关系中的“整体”部分是一个类属类,那么该类属类的 每个子类型都必须纳入整体一部分关系中的“整体”部分。当整体一部分关系中的“部分
7.4 评审和修正 OOA 模型 7.4.1 分析模型的一致性和完整性 一个良好的 OOA 模型,在问题论域内必须上一致的和完整的。因此为了建立一个完整 的 OOA 模型,必须掌握分析模型的一致性和完整性的方法。OOA 模型的一致性和完整性 指的是模型的语法正确性。在 OOA 模型的环境中,有各种各样正确性准则,它们可以应用 于 OOA 方法中。这些正确性准则可以标识为: (1)命名约定。是指关于模型标号、标识符、指示符等的形式或格式的公认标准。命名约 定使得通信清晰明了。命名约定应在应用论域中有实际意义,且是唯一的。名字中不应出现 “与”和“或”之类的连接词。 (2)风格约定。是一种形式和格式的公认标准,应用于结构、过程、探索等,也可以 应用于建模技术。 (3)语法需求。是指建模技术所要求的条件或行为。用于建成模的每个技术都有应当 有一组语法需求,以保证用该技术建立起来的 OOA 模型的语法正确。 对于 OOA 模型的 5 个层次,分析模型的一致性和完整性有不同的要求,以下将分别进 行讨论。 1、对象—类层 (1)命名约定。对象应当有一个合适的名字(唯一的),用于描述一个类,而不是类所 执行一个功能或类的一个特性。它是一个名词或形容词—名词形式。 (2)风格约定。每个对象都应有一个明确意义的职责,每个对象应至少封装一个只有 该对象知道的职责。对于那些只含有单个实例的对象的使用要谨慎。通常一个事件都是由一 个对象识别,而事件的影响则应由一个或多个对象共同产生。 (3)语法需求。对象的描述要清晰明了,不能的二义性。必须正确使用对象和类属性 类,每个对象不是参与对某一事件的识别,就是参与产生响应。 2、属性层 (1)命名约定。属性名字必须适当,能体现相关联对象的特性、质量或数据存储要求。 通常采用名词或形容词—名词形式的词组,且命名中不用动词。 (2)风格约定。OOA 模型中应当只出现基本的实例关系。应避免冗长的实例关系。 (3)语法需求。每个对象至少应含有一个属性,用来唯一标识对象的每个实例。 3、服务层 (1)命名约定。服务的命名必须能代表一些与对象相关联的工作、功能或处理。名字 通常采用动词—名词形式的词组,尽量避免使用其他结构。 (2)风格约定。服务应当是经过精心设计的。如只有单一的入口点;不涉及并发处理; 通过接收的消息或其他精心定义的事件来对其进行初始化;使用与语言无关的过程性描述来 作规格说明等等。 (3)语法需求。每个对象都至少应有一个类服务,从而能操作对象的实例,访问一个 或多个相关联的属性。服务的定义与输入输出的消息,以及封装在对象中的属性相一致。 4、结构层 (1)风格约定。当整体—部分关系中的“整体”部分是一个类属类,那么该类属类的 每个子类型都必须纳入整体—部分关系中的“整体”部分。当整体—部分关系中的“部分
是一个类属时,该类属的每个子类型都必须出现在整体一部分关系中的“部分”中。如果泛 化一特化关系中的“特化对象”是一个类属类,那么该类属类中的每个子类型都必须出现在 这个泛化一特化关系的“特化对象”中,当泛化一特化关系中的泛化一特化关系中的“泛化 对象”部分是另一个类属类的特化对象时,该类属类的每个子类型都有必须出现在这个泛化 一特化关系的“特化对象”中。 (2)语法需求。所有的结构在应用论域中都必须有实际意义。整体一部分结构应当是 从一个实例的范围跨越到另一个实例范围。整体部分结构必须指明重复度和参与度。泛化 特化结构必须从一个类的范围跨越到另一个类的范围。参与泛化一特化关系中的对象必须以 与这个泛化一特化关系相一致的关系继承属性及服务。 5、主题层 (1)命名约定。主题的命名要恰当。应避免使用名词一动词形式的名字。 (2)风格约定。各不同主题相互间可以重叠。如果采用了某种约定,那么就应当自始 自终地采用这种约定。主题中可以包含结构。如果使用主题的话,每个对象都应包含在某个 主题的边界内 7.4.2OOA模型的评审策略 在建立OOA模型之后,需要对该模型进行评审。其目的是为了保证在实现系统之前 能够正确理解和解释用户的要求,以降低在系统运行后才发现对用户的需求理解错误再修改 所付出的巨大代价 基于对OOA模型的要求,可以建立一个评审者的检查表(如P212图7.1所示)。也 可以从该表入手,对特定的项目再进一步制定更详细的检查表。评审过程已成为开发过程的 一部分,其生成的管理报告不仅在工程进度,而且在每个模型成分的这一层都有给予保证 由于现有的所有检査表均无法保证语义正确性,因此对语义正确性的评审采用将模型的 行为对照用户描述的场景或用户事例 加以确认的策略 7.4.3从OOA到OOD的过渡 当OOA模型已经确定并经过评审之后,就可以从面向对象分析(OOA)过渡到面向对 象设计(OOD)。在面向对象方法中,分析和设计之间的界限是模糊的,这种模糊性是面向 对象方法的一个有意识的深思熟虑的特征 面向对象设计(OOD)包含了三个方面的内容 (1)表示法:OOD采用图形建成模表示法来表达用户需求,使得设计人员的设计思想 能够与其他项目成员进行交流。如针对任务、模块、处理器队列以及其他硬件/软件成分的 表示法。但OOD的表示法应尽可能地接近OOA表示法。 (2)策略:OOD的目的之一就是要在软件开发过程中引入一致性和可预测性。在面向 对象方法中,OOD体系结构以OOA模型为基础,它使用类和对象与OOA模型中的相同 然后围绕着这些类和对象又加入一些其他的类和对象,用来处理与实现有关的活动,如数据 管理、任务管理等。良好的OOD策略使得我们不必对每个项目设计都有从头开始,而将人 们对共同论域中问题的设计引入相似的解决模式 (3)良好的准则:OOD的准则可以分解为效率、完备性、灵活性等问题。具体来说 惯用的准则有:耦合准则、内聚性准则、设计的明确性准则等。良好的准则使得我们能以 种客观的方法来对一个设计做出评价
是一个类属时,该类属的每个子类型都必须出现在整体—部分关系中的“部分”中。如果泛 化—特化关系中的“特化对象”是一个类属类,那么该类属类中的每个子类型都必须出现在 这个泛化—特化关系的“特化对象”中,当泛化—特化关系中的泛化—特化关系中的“泛化 对象”部分是另一个类属类的特化对象时,该类属类的每个子类型都有必须出现在这个泛化 —特化关系的“特化对象”中。 (2)语法需求。所有的结构在应用论域中都必须有实际意义。整体—部分结构应当是 从一个实例的范围跨越到另一个实例范围。整体部分结构必须指明重复度和参与度。泛化— 特化结构必须从一个类的范围跨越到另一个类的范围。参与泛化—特化关系中的对象必须以 与这个泛化—特化关系相一致的关系继承属性及服务。 5、主题层 (1)命名约定。主题的命名要恰当。应避免使用名词—动词形式的名字。 (2)风格约定。各不同主题相互间可以重叠。如果采用了某种约定,那么就应当自始 自终地采用这种约定。主题中可以包含结构。如果使用主题的话,每个对象都应包含在某个 主题的边界内。 7.4.2 OOA 模型的评审策略 在建立 OOA 模型之后,需要对该模型进行评审。其目的是为了保证在实现系统之前, 能够正确理解和解释用户的要求,以降低在系统运行后才发现对用户的需求理解错误再修改 所付出的巨大代价。 基于对 OOA 模型的要求,可以建立一个评审者的检查表(如 P212 图 7.1 所示)。也 可以从该表入手,对特定的项目再进一步制定更详细的检查表。评审过程已成为开发过程的 一部分,其生成的管理报告不仅在工程进度,而且在每个模型成分的这一层都有给予保证。 由于现有的所有检查表均无法保证语义正确性,因此对语义正确性的评审采用将模型的 行为对照用户描述的场景或用户事例,一一加以确认的策略。 7.4.3 从 OOA 到 OOD 的过渡 当 OOA 模型已经确定并经过评审之后,就可以从面向对象分析(OOA)过渡到面向对 象设计(OOD)。在面向对象方法中,分析和设计之间的界限是模糊的,这种模糊性是面向 对象方法的一个有意识的深思熟虑的特征。 面向对象设计(OOD)包含了三个方面的内容: (1)表示法:OOD 采用图形建成模表示法来表达用户需求,使得设计人员的设计思想 能够与其他项目成员进行交流。如针对任务、模块、处理器队列以及其他硬件/软件成分的 表示法。但 OOD 的表示法应尽可能地接近 OOA 表示法。 (2)策略:OOD 的目的之一就是要在软件开发过程中引入一致性和可预测性。在面向 对象方法中,OOD 体系结构以 OOA 模型为基础,它使用类和对象与 OOA 模型中的相同, 然后围绕着这些类和对象又加入一些其他的类和对象,用来处理与实现有关的活动,如数据 管理、任务管理等。良好的 OOD 策略使得我们不必对每个项目设计都有从头开始,而将人 们对共同论域中问题的设计引入相似的解决模式。 (3)良好的准则:OOD 的准则可以分解为效率、完备性、灵活性等问题。具体来说, 惯用的准则有:耦合准则、内聚性准则、设计的明确性准则等。良好的准则使得我们能以一 种客观的方法来对一个设计做出评价
在OOA的工作结束,进入OOD阶段后,可以按以下步骤进行系统的设计及实施等工 (1)物理测试 (2)原型开发(可选) (3)程序编制,软件开发 (4)用户文档编制 (5)软件测试 (6)人员培训。 (7)用户认可 (8)系统投入运行 在面向对象设计及实施过程完毕之后,其成果将是已完成的信息系统
在 OOA 的工作结束,进入 OOD 阶段后,可以按以下步骤进行系统的设计及实施等工 作: (1)物理测试。 (2)原型开发(可选) (3)程序编制,软件开发。 (4)用户文档编制。 (5)软件测试。 (6)人员培训。 (7)用户认可。 (8)系统投入运行。 在面向对象设计及实施过程完毕之后,其成果将是已完成的信息系统