• 软件测试技术
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘

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

对软件工程的几点思考

发布: 2008-9-17 09:37 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 14次 | 进入软件测试论坛讨论

领测软件测试网 软件测试技术门户6L r l*c/t

n.Aw;P)z
~p4HziY&`E 
.k%P B%lc那么,这个理想的软件工程实施模型究竟是个什么样子呢?具备哪些特点呢?下面从几个方面概括一下。软件测试技术门户SnN J[#LeH
 
i:nko)t0[5u,f~R首先,软件工程的首要任务是对工作任务的细分,也即把工作拆分,实现流水线式的作业化,而且这还不仅是企业内部自己的工作任务流水线化,而且还应该涵盖在整个软件产业链中工作任务的流水线化,也即能够实现软件企业间的“半成品”性质的大颗粒度软件复用。
+O$UF fJ R9J,F w我觉得从技术上来说,这绝对已不成问题,因为软件的模块化实现技术现已非常成熟,那就是我们可以采用基于组件的开发技术,因为它能够实现非常优良的软件的模块化细分。当然我们也都知道,组件开发技术不是什么新鲜玩艺,通常我们总把它与面向对象开发技术放在一起来理解,并做出一些比较,认为组件开发技术是比面向对象开发技术更好的一种软件开发的技术方法。诚然,这种观点也没什么太大的不妥;但是我认为,这种对组件技术的理解可能不是很准确,如果究其本质,面向对象开发技术与面向组件开发技术,这两者之间也许并无太多的关联,或者说它们根本不是一回事。我们可以这样认为:面向对象开发是一种编程思想;而组件则仅仅是一项技术,是一项接口的技术。组件技术能够实现二进制意义上的软件模块复用,它能够使得模块间的耦合性更小,从而提供软件模块的可复用性,及软件模块的可扩展性,同时还为能够轻松实现软件模块的动态装载与更新。软件测试技术门户Fzg-X!~ g]AR
 
"HWn(Cu9x,E组件技术虽然能够实现很好的软件模块化,但是我想仅凭这点是远远不够的。而更重要的是,我们模块化之间的沟通接口必须是规范的、统一标准的,并公开的。因为只有这样统一了接口的模块化软件,它才能真正让这个软件产品,能够实现跨多个厂家的流水线式的生产作业过程。而且,只有实现了接口的统一标准化,才能有效去判断某个模块组件的好坏优劣,才能够实现组件间的优胜劣汰。而现在的实际情况是,我们的接口设计太随意,太多样化了。软件测试技术门户Je2TF f5a~e.OX
 软件测试技术门户:[ MB jY(^Y4h%X
我想微软的COM/COM+当初设计时所预期的目标,肯定也会是建立起能够以这样一种松散合作方式,来构建软件产品的生产开发平台(本文,我们把这种方式称为“流水线式的产品作业链”)。在这个平台环境下,每个公司专注于自己擅长的那一块工作任务,并最终以组件的方式把这个功能模块发布出去;而这些可以被形象地称为半成品,它可以被其它公司进一步加工和封装为颗粒度更大一些的组件;最后软件产品的集成商,可以将这多个大颗粒度的组件,通过连接器来把它们集成为一个最终的软件产品。但是从现在实际情况来看,当初这种美好的设想在今天并没有完全成为现实。究其原因,我认为最为关键的因素,就是因为它们对接口设计没有统一的规范所导致。或者说,COM/COM+对接口的规范化设计没有构成很好的约束力,这就导致对实现同一类功能的某些组件,可能它们会是完全是由不同人来所设计并实现的,所以其接口也可能会截然不同。例如,一个mp3播放的组件模块,有的人可以只实现了对某一种格式(如16bit量化标准)的mp3文件实现播放;而另外一个类似功能的mp3播放组件有可能它是封装为Activx形式而进行发布的;而还有的mp3播放组件可能只对输入mp3文件路径时能够予以正确播放,但是它却不能直接播放音频流等。软件测试技术门户 z^tug9?Ov
 
V&`^2g!Uv8Kb{总之,这些没有统一规范接口的组件,对于使用它们的软件集成商来说,便会觉得无所适从,因此对于我们大多数软件公司来说,对于我们大多数软件开发者这来说,我们经常更愿意是自己来实现软件产品的每一部分的主要功能,而总觉得现在已有的那些个组件,虽然它们似乎已经实现了我想要的那部分功能,但还总是觉得它们不太好用,或不太适合自己,或不能很好的满足自己。
'ZIcyg8eC+rP 
[)a9?2AS ]所以说,微软的COM/COM+并没有能够真正地成为流水线式的产品作业链平台,它不能像其它工业产品的生产过程中的那样,其各个零件之间的接口设计都很规范,因此最终的产品也很容易被组装和拆卸,而且半成品的厂家来源也都是很丰富的,大家有优胜劣汰的选择标准和机会。而现在的仅有的一些可复用的组件几乎都是随微软的开发平台一块发布出来的,而更多的软件开发公司很难真正参与到这个平台中来。因此我们不妨直接了断地说,现在所谓的许多软件平台,其实它们都不是真正意义上的开发平台,因为它们没有发挥出一个真正平台所应该有的那些功能,它没有扮演“有效而公平地分工”的这种角色,当然最终也就难形成为高效的流水线式的产品作业链环境。
lU7`sg1QU 
m,\ahk$Xk*v所以说,对于理想的软件工程应用模型中,最为适合的一种开发方式是“基于接口的编程”。当然,基于接口的编程,这也绝不属于什么创新思想!俺个人在这里也无意炒作概念。而只是觉得“基于接口的开发方式”比“基于组件的开发方式”,它的这种提法更为合理和科学一些,因为它更重点强调接口设计的规范性和公开化,它这不应该属于某个公司的私人财产,而应该是为大家所共有的共享资源财富。其实我觉得可以通过一个协会性质的团体来促进接口设计的统一规范化,类似于RFC标准制定的那种流程方式。另外,如果模块之间的接口规范化了,合理化了,那么这毫无疑问将对软件的测试和软件质量的度量提供了方便,而且也会因此给软件质量的提高有了更多的保障。软件测试技术门户|0]@R u7g
 
q8s5Jo