1
面向对象软件工程实践指南
1.2.6.1 6.1 分析阶段的主要内容
6.1 分析阶段的主要内容

分析阶段与三个模型相关,即功能模型、对象模型和动态模型。在需求获取阶段得到的功能模型是分析阶段的输入,通过分析,建立系统的对象模型和动态模型是分析阶段的输出。其中,对象模型以面向对象的方式定义了系统的内部构成,因而主要以类图的方式进行表达。动态模型表达了围绕用例而展开的对象之间的动态交互过程、某些对象的复杂状态变化以及与软件相关的复杂的业务过程,动态模型可以用交互图(顺序图或者协同图)、状态图或者活动图进行表达。在构造对象模型和动态模型的过程中,可能会对功能模型进行修改。

分析阶段是一个迭代的过程,它涉及以下步骤。

1)类的识别

在采用面向对象方法学进行软件开发时,软件的构成单元是类以及它们的对象,因此,确定正确的类(对象),就是确定软件的构成。在分析阶段,确定类的依据是需求和领域知识。值得指出的是,这些类并非是软件概念上的类,它们是领域类,通过设计阶段的工作后,领域类将与软件类相对应,换言之,通过软件类来实现领域类。

2)对象交互描述

围绕每个用例,各个类的对象之间需要进行交互,才能完成用例描述的流程。对象交互的描述在分析与设计中都具有极其重要的意义。在分析阶段,对象交互的描述规定了每个类具有的责任,并形成了对象之间的协作关系;而在设计阶段对对象交互的描述,确定了每个软件类必须提供的操作(需要处理的消息)。不同的交互方式将最终对系统的可维护性、可扩展性、性能等产生决定性影响。同时,通过交互方式的描述也可以进一步发现前期需求中的不足,以及发现更多的相关的类(对象)。

3)类行为刻画

部分类可能具备复杂的行为,特别是其行为受到状态的影响。在这种情况下,需要描述其可能的状态,以及状态之间的转换条件。通常可以采用状态图来对类的行为进行刻画。当然,那些不具备复杂的状态的类并不需要构造状态图。

4)对象模型构建

在识别类(对象)、描述对象交互行为的基础上,可以形成完整的对象模型。各个类的属性、操作可以通过前述的分析得到。同时,在对象模型中,类之间的关系也将得到表达,包括关联和泛化关系。

5)迭代和检查

以上四个步骤不是一个线性的过程。实际上,类的识别、对象交互描述和行为刻画、对象模型构建构成一个相互影响的迭代序列:识别出来的类的对象将参与交互过程,在描述交互过程中,会引入新的类(对象)。通过多轮迭代后,最终得到的模型必须是正确的、完整的、一致的和现实的。所谓正确的,指的是模型确实代表了实际的需求;模型是完整的,意思是每一个场景包括意外场景都得到了描述;模型的一致性指的是模型中的元素互相不冲突;模型是现实的,意味着模型是可以得到实现的。

分析阶段得到的模型依旧表述在软件需求规格说明文档中,并且主要是对系统模型这一章进行修改和细化。具体来说,对用例模型这一小节,可能会带来修改,同时补充对象模型和动态模型这两小节的内容。