• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

致面向对象技术初学者的一封公开信

发布: 2009-11-17 10:28 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 41次 | 进入软件测试论坛讨论

领测软件测试网


从上面的这些经验可以看到,使用CRC 进行OO 建模得到的模型和概念数据建模得到的结果非常相似。另外,根据经验,基于逻辑(存储的信息)的关系建模和OO 建模是不同的。大多数情况下,区别是由于技术的不同导致的,例如,在OO 模型中可以自由地使用继承和多对多的关系。由于技术上的差异,两种建模人员之间不能很好地交流,这是最大的困难。
数据建模部分的问题就说这么多吧。
对流程建模而言, 情况却不一样了。90 年代初, 涌现出各种方法、计划、会议和项目,试图将数据流图的模型转变为对象模型。曾经有几个项目声称获得了成功,但都是后续无音,业界一致的结论是: 这个转变太困难了。大多数使用数据流图的建模人员最终都抛弃了这项技术, 投入了对象设计的怀抱(Martin-Odell 和Ptech 小组是著名的例外)。对于流程建模,现阶段我的回答是:其模型无法与OO 模型相比较。但这并不是最终的回答,OO 建模人员正在开始进行本质上的流程建模,下一步的发展将会怎样,我也并不清楚,流程将变成过程那样(过程编程复活?), 或者变成数据流图那样,还是类似于封装的对象?
业务结构建模中为什么要用use case 和场景(scenario)?
use case 和场景……
……为讨论提供范围和内容,
……预示内容,包括什么,不包括什么,讨论多广,多深入,什么时候停止,
……为设计的压力测试提供参数。
我见过一些不使用“场景”的小组,他们建模的时候实际上就是在问题域内作随机的探险。负责人根本不知道下一个该问什么问题?经常都是凭直觉。一般说来,他们也不知道现在捕获的信息最后是否真正需要,就算知道也是凭直觉或者瞎蒙。
在一个寂静的深夜,几个真正专家级的OO 设计师向我说了心里话:根本就没有一个有效的规则来指导漂亮的对象设计。其中一位说,“我们有时真的是在毫无目的地讨论”, 另一位也相当赞同,“有时候我们就象没头的苍蝇一样到处乱撞,直到突然把一些好的对象给撞出来。”
使用场景也不能防止盲目的讨论和到处撞墙,只是可以为讨论提供内容和边界。我曾经见过有的小组不用场景,长时间在很大的建模范围内四处乱撞,失去控制。因此,使用场景和use case 的第一个理由就是为建模的努力提供一个范围。
使用场景的第二个理由是决定需求获取到什么程度算足够。
假设现在让你为一家货运公司建模。你建模的内容是什么?卡车的购买价值……实际价值……转售价值……车内颜色……快送单据的数目……旅途的数目和目的地?如果你想要把所有的内容都包括进来,那你将永远无法结束。除此之外,还有其它的问题:从何处开始,何时结束,包括什么,不包括什么,需要多少细节? 场景可以回答关于内容的问题,答案是:你需要足以回答场景中所有问题的信息。在结构化模型或完全的对象模型中,如果用一个方框来对应一个场景。然后在浏览场景的过程中将涉及到的元素(译者注:这里的元素, 是比如在OO 的类或对象) 涂成红色, 会发现最后所有的元素都按某种顺序连接起来了(不会有遗漏的元素)。如果对所有的场景都执行这个操作,最后所有的元素都会被涂成红色。在建模过程中,讨论会经常离题,用这种方法可以保证针对当前的需要制定一个边界,这样不会跑题太远。
最后,场景还提供了压力测试的参数以保证质量
怎样比较两个模型的优劣? “和业务相符”,这是必要的,但肯定不够,可能有很多模型都可以“和业务相符”,怎样来度量这些模型的质量呢?
软件变更的成本很高,另外,变更越靠后,变更的成本也就越高。(变更成本曲线)。软件设计的一个目的就是将变更隔离开来,每次变更只需改变一个模块。这并不是什么时候都能做到的,正如Kent Beck 所说,“如果你可以只改变一个类, 那软件的质量将得到显著的提高”。和软件相比, 业务模型的成本函数并不是很清楚,但将变更影响的范围降低到最低肯定是应该的。
为了测试变更曲线,需要参数,而场景可以提供这些参数。如果用户想要“something-or-the-other”,怎么办?模型中到底需要多少元素?像CRC(class-responsibility-collaborator )这样的技术鼓励用户在现场快速得到场景, 揭示可能的未来变更。最后,检查这些可能的变更,检查需要为之改动多少元素。对于两个都“和业务相符”的模型,哪个模型受场景影响的点少一些,哪个模型就要好一些。其它很多地方也可以找到压力测试的参数。例如相关产品的结构,变更时是不是可以只改一点就可以了?在评价模型时,这些参数都应该用上。
场景还可以用在很多地方,例如:同用户一起检查需求,为系统提供功能测试用例。以上所说,就是在建模活动中采用场景的三个理由。

 


 

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网