7.4 评审和修正OOA模型
7.4.1 分析模型的一致性和完整性
一个良好的OOA模型,在问题论域内必须上一致的和完整的。因此为了建立一个完整的OOA模型,必须掌握分析模型的一致性和完整性的方法。OOA模型的一致性和完整性指的是模型的语法正确性。在OOA模型的环境中,有各种各样正确性准则,它们可以应用于OOA方法中。这些正确性准则可以标识为:
(1)命名约定。是指关于模型标号、标识符、指示符等的形式或格式的公认标准。命名约定使得通信清晰明了。命名约定应在应用论域中有实际意义,且是唯一的。名字中不应出现“与”和“或”之类的连接词。
(2)风格约定。是一种形式和格式的公认标准,应用于结构、过程、探索等,也可以应用于建模技术。
(3)语法需求。是指建模技术所要求的条件或行为。用于建成模的每个技术都有应当有一组语法需求,以保证用该技术建立起来的OOA模型的语法正确。
对于OOA模型的5个层次,分析模型的一致性和完整性有不同的要求,以下将分别进行讨论。
对象—类层
(1)命名约定。对象应当有一个合适的名字(唯一的),用于描述一个类,而不是类所执行一个功能或类的一个特性。它是一个名词或形容词—名词形式。
(2)风格约定。每个对象都应有一个明确意义的职责,每个对象应至少封装一个只有该对象知道的职责。对于那些只含有单个实例的对象的使用要谨慎。通常一个事件都是由一个对象识别,而事件的影响则应由一个或多个对象共同产生。
(3)语法需求。对象的描述要清晰明了,不能的二义性。必须正确使用对象和类属性类,每个对象不是参与对某一事件的识别,就是参与产生响应。
2、属性层
(1)命名约定。属性名字必须适当,能体现相关联对象的特性、质量或数据存储要求。通常采用名词或形容词—名词形式的词组,且命名中不用动词。
(2)风格约定。OOA模型中应当只出现基本的实例关系。应避免冗长的实例关系。
(3)语法需求。每个对象至少应含有一个属性,用来唯一标识对象的每个实例。
3、服务层
(1)命名约定。服务的命名必须能代表一些与对象相关联的工作、功能或处理。名字通常采用动词—名词形式的词组,尽量避免使用其他结构。
(2)风格约定。服务应当是经过精心设计的。如只有单一的入口点;不涉及并发处理;通过接收的消息或其他精心定义的事件来对其进行初始化;使用与语言无关的过程性描述来作规格说明等等。
(3)语法需求。每个对象都至少应有一个类服务,从而能操作对象的实例,访问一个或多个相关联的属性。服务的定义与输入输出的消息,以及封装在对象中的属性相一致。
4、结构层
(1)风格约定。当整体—部分关系中的“整体”部分是一个类属类,那么该类属类的每个子类型都必须纳入整体—部分关系中的“整体”部分。当整体—部分关系中的“部分”是一个类属时,该类属的每个子类型都必须出现在整体—部分关系中的“部分”中。如果泛化—特化关系中的“特化对象”是一个类属类,那么该类属类中的每个子类型都必须出现在这个泛化—特化关系的“特化对象”中,当泛化—特化关系中的泛化—特化关系中的“泛化对象”部分是另一个类属类的特化对象时,该类属类的每个子类型都有必须出现在这个泛化—特化关系的“特化对象”中。
(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)系统投入运行。
在面向对象设计及实施过程完毕之后,其成果将是已完成的信息系统。