欢迎来到天天文库
浏览记录
ID:42051248
大小:23.50 KB
页数:7页
时间:2019-09-07
《软件工程概论教学资料:crc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、面向对象的分析过程可分为两个阶段,即论域分析阶段和应用分析阶段。论域分析论域分析是软件开发的基本组成部分,目的是使开发人员了解空间的组成,建立大致的系统实现环境。论域分析给出一组抽象,从高层表示论域知识,常常超出当前应用的范围,作为特定系统需求开发的参考。论域分析实际上是一种学习,软件开发人员在这个阶段尽可以地理解当前系统与应用有关的知识。应放开思维,放宽考虑的领域,尽可能标识与应用有关的概念。论域分析的边界可能很模糊,有了广泛的论域知识,涉及到具体的应用时,就可以更快地进入情况,掌握应用的核心知识。而
2、且,在用户改变对目标系统的需求时,广泛的分析可以帮助我们预测出目标系统在哪些方面会发生哪些变化。通常进行小组分析,小组成员可以包括领域专家和分析员等。在分析过程中标识出系统的基本概念:对象、类、方法、关系等。识别论域的特征,把这些概念集成到论域的模型中。论域的模型中必须包含概念之间的关系,还有关于每个单独概念的全部信息。这里信息起一种胶合作用,把标识出的相关概念并入论域综合视图中去。应用分析应用分析是依据在论域分析时建立起来的问题论域模型,并把问题论域用于当前特定的应用之中。首先,通过收集到的用户信息来
3、对论域进行取舍,把用户需求作为限制来使用,缩减论域的信息量。因此,论域分析的视野大小直接影响到应用分析保留的信息量。一般来说,论域分析阶段产生的模型并不需要用任何基于计算机系统的程序设计语言来表示,而应用分析阶段产生的影响条件则通过某种计算机系统的程序设计语言来表模型识别的要求可以针对一个应用,也可以针对多个应用。通常我们着重考虑两个方面,即应用视图和类视图。在类视图中,必须对每个类的规格说明和操作进行详细化,并表示出类之间的相互作用。领域模型表示与问题领域相关的基本业务概念,领域建模的工作是,去发现那
4、些表示与问题领域相关的事物和概念的类。领域模型的类职责协作(ClassResponsib订ityCollavorator,CRC)模型是一组标准索引卡片的集合,这些卡片被分为三部分,如图4.2所示。类代表相似对象的集合,职责是类所知道或要做的事情,协作者是一个类为完成其职责与之交互的其他类。类名职责协作者图4.2(:RC卡片的布局CRC模型被开发人员和用户成功地用于理解整个系统开发周期中面向对象的应用,CRC模型是一种惊人的用于领域建模的有效工具,也就是说为领域中的基本概念进行建模。CRC建模是一个迭代
5、的过程:发现类、发现职责和定义协作者。一个类代表一组相似对象的集合,一个对象是与所讨论的系统之中相关的一个人、地址、物品、时间或概念。类的名字出现在横跨CRC卡片顶端的区域,并且通常是单个名词或名词词组,如顾客、图书和资源等。使用单个名词是因为每个类都代表单个对象的泛化形式,所以类名用单数而不是复数,类的名称还应该简要直观。发现类,从本质上讲是一项分析工作,因为它为应用程序确定构件。使用以下策略来发现潜在的类:(1)参与者是潜在的类;(2)确定客户;(3)跟踪资金流;(4)领域的术语概念是候选的类;(5
6、)领域中的关键事件是潜在的类;(6)主要用户界面元素等。类的职责是类知道的或要完成的事情。例如,顾客有名字、地址和电话号码,这是顾客知道的东西。顾客要借书和还书,这些是顾客要完成的事情。一个类知道和要完成的事情构成了类的职责,重要的一点是,类能够改变它所知道的事情的值,但类不能改变其他类所知道的事情的值。换句话说,类只能更新它们自己的属性,而不能更新其他类。发现职责是需求分析的任务,因为它定义某个类是什么,而不管它是如何实现的。对象范型基于以类的形式表示数据(类知道的事情)和功能(类要完成的事情)的组合
7、,这也正是为什么CRC建模特别适合面向对象开发的原因。确定职责的一种方法是,应该问自己某个类需要做什么,即某个类必须执行那些功能。另一种方法是问自己必须存储类的一些什么消息。有时一个类要实现某一职责,但却没有足够的信息去完成该职责,就必须依靠与其他类协作来完成工作。协作通过以下两种形式之一完成:即对信息的请求或对完成某项工作的请求。仅当类A为类B完成某些事情的时候,类A才显示为类B的协作者。这里需要理解的一个重要概念是,协作必须发生在一个类需要它自己仍不知道的信息的时候。在面向对象的世界中,必须讲礼貌,
8、去请求信息。这是与面向过程开发完全不同的思想,在面向过程的世界中,如果需要信息,把它拿来就好了。虽然面向过程方法很直接,但它会导致代码难以维护。在确定协作时,以下问题需要注意:•对于任何协作,总是至少有一个发起者。换句话说,协作总是会从某个地方开始的。•有时候协作者完成工作的主要部分。一个类发起一项协作,并不能说明这个类要完成大部分工作。•为了完成一项协作,一个类必须与其他类协作,要减少不必要的转手,这样做通常会有更高的效率。•可能会产生新
此文档下载收益归作者所有