摘要:笔者根据当前软件开发的现状,提出了一种在保证当前开发质量及效率的前提下,还能让以后的软件开发人员重用已开发软件资源的"再用式"软件开发方法,该方法结合了面向对象及快速原型法的优点:针对软件开发中的需求多变性,用快速原型法进行需求分析,在后续的开发中,以面向对象为基础,用各种"级别"不同的可重用软部件组装系统,在对软部件不断的创建(只在没有所需部件时才创建)、重用及组合中完成系统的开发。这种方法可以有效地提高软件的整体开发效率。文中最后对该方法的进一步研究方向进行了探讨。
要害词:再用式,软件重用,部件,面向对象,快速原型法
1 引言
当前的软件开发多是针对具体情况的开发过程,开发者注重的是针对当前需求的设计及实现,对由此而产生的软件资源是否能为以后的软件开发者重用却想的很少。这种开发方法无形中造成了巨大的资源浪费。为改变这种现状,本文提出了"再用式"软件开发方法,该方法的出发点,就是在完成当前系统开发的基础上,同时考虑了未来其它系统的开发(当然也包括对原系统的再维护),为以后的软件开发提供尽可能多的可重用软件资源。
"再用式"软件开发方法是在面向对象(以下简称OO)方法的基础上,针对一类(而不是单个)具有类似需求及特征的系统进行开发的。系统开发的数量越多,其优越性也就越明显。显然,这种方法会给软件开发造成一种非常有益的良性循环。
2 "再用式"软件开发方法的要点
2.1 以OO方法为基础
在OO方法中,对象是可重用的最小单元,对象间的继续既是一种增量式的开发模式,也是一种有效的重用手段。从目前各支撑软件所提供的重用方式看,OO是最有效的一种,因此,"再用式"软件开发方法是在OO方法的基础上进行了补充,以增强软件的可重用性:其软件的可重用部件既可以是OO中的对象(或一组关系密切的对象集团),也可以是非OO方法中的可重用部件,如函数、数据类型、过程、操作、文档等等。
对本方法来说,可重用的软件都是一种"部件"。部件是本方法重用的基本单位,也是本方法的核心。一般而言,我们可以把目前的部件分成这样几类:系统部件、组织部件、分子部件和原子部件。
a 系统部件
这其实就是系统的总体框架,也是本方法中粒度最大的部件。从总体上看,它与硬件中的主板类似。除了由程序、数据构成的框架外,还有一些开发规范,包括其中子部件的开发规范。一般来说,每一个具体的应用领域都需要一个系统部件。对开发者来说,应该建立自己的"系统部件库",尽量在工作中多储存不同领域的系统部件,以利日后的工作。
最理想的情况,是能象硬件开发那样,由某个权威机构制定系统部件的开发规范,据此发布或开发各领域的系统部件,以最大限度地减少重复劳动,提高规范化程度,使软件开发工业化。
b 组织部件
这是一种嵌在系统部件上的子部件,它类似于硬件中的功能插板,也应有严格的规范。一般系统都要靠一个(或几个)组织部件来完成一个特定的任务。各个组织部件只有在系统部件的协调下,才能实现全系统的功能要求。一个系统构件可因其嵌入的组织部件的不同而构成不同的应用系统。
假如制定规范的机构(或部门) 权威性强,制定的规范严格而又可操作,那么就完全可以象硬件插板一样,让不同的软件开发团体开发的组织部件在一种规范化的系统构件下兼容工作。这样会使软件的重用率大大提高,并能增大程序员们的选择余地。目前微软公司在其系统软件中所提供的一些公用类库可以认为是一种良好的开端,但权威性和规范性还值得怀疑(究竟是个"民办"公司)。
b 分子部件与原子部件
这是本方法中粒度最小的部件,其作用类似硬件中的芯片。OO中使用的基类、派生类就是其典型代表。在这里,原子部件是永久不变的(这样可以增大软件的可重用性),分子部件重用原子部件,而组织部件又由分子部件组成。显然,必须注重原子部件的制作工作:在需要制作新的分子部件时,必须重用原子部件,若没有可重用的原子部件,再创建新的原子部件。原子部件的粒度需由具体情况决定,例如在开发某设计院的人事治理系统时,需要建立一个高级工程师的分子部件(类),我们可以有三种创建的方法:
①.直接按"高级工程师(类)"创建;
②.按"科技干部----高级工程师"创建;
③.按"职工----科技干部----高级工程师"创建。
从本质上看,第3种方法是先创建一个原子部件----"职工",再创建科技干部、高级工程师,是符合再用式开发方法原则的。而第1、2种方法则不符合本方法。
显然,以上所说的各类部件都必须在一个统一的软件规范下开发,只有保证了部件的规范化,才能保证开发的成功。
因为再用式开发方法会在工作中产生一个可为所有开发人员共享的软件资源----部件库,那么以后的软件开发都可以在此基础上利用重用手段使用部件库,而不需要从零开始。在这里,只要都能遵守统一的软件规范,这些共享的部件库既可以由开发人员自己在工作中积累,也可以由软件开发商提供。
2.2 应具备的开发环境
在再用式开发方法中,人们需要与部件库交互工作,这样,就需要一个部件库的开发治理平台,这个平台应该提供对部件库的选择、浏览、查询和扩充(以不断充实部件库)等功能,同时还应提供编写部件文本的编辑器,以及与部件对应的语言调试、编译程序,以便制作、调试所产生的部件。假如条件许可,还应提供辅助学习功能,以帮助开发人员熟悉平台的情况。
2.3 与快速原型法的结合
在现实中,需求多变是个让开发人员头痛的问题,目前能有效地解决这一问题的当属快速原型法。但这种方法的最大缺点是开发成本较高,这一点限制了它的推广。而再用式软件开发方法采用快速原型法做需求分析,在后续阶段使用重用机制,就能有效地降低开发成本。
2.4 需要的开发工具
几乎所有的软件开发方法都需要开发工具的支持,再用式软件开发方法也不例外。一般而言,本方法需要这么几个平台:部件库开发治理平台、系统组装平台及维护平台。
更多的请看:http://www.QQread.com/windows/2003/index.Html
3 再用式开发方法的基本设计过程
3.1 基本原则
从开发过程上看,再用式开发方法采用的是自顶向下设计,自底向上构成的方法,即在设计时根据需求分析的结果,按照由粗到细、先总体后细节、先上层后下层的原则,确定所需要的部件(必须时还得创建新的部件)。自底向上构成则是指在已预备好所需部件的基础上,在组装平台的支持下把部件组装成用户需要的应用系统的过程。
3.2 基本的开发过程
3.2.1 需求分析及设计阶段
这个过程可与一般快速原型法的需求分析过程相同[2],对于大而复杂的系统,建议采用与功能化开发方法相结合的、以细化为基础的对象分析及设计方法[9](具体过程请见参考文献)。最后应产生对各部件的"功能需求"。
3.2.2 制作部件
a 建立系统部件
先在系统部件库中查找所需要的系统部件,对于找出的部件,可根据情况直接重用或经扩充、修改、继续等处理后再重用,假如库中没有可重用的部件,则应按照规则创建之(别忘了经调试后再将其存入系统部件库内,以备重用)。
在创建新的系统部件时,假如条件许可,可向专业化极强的软件开发团体(如一些软件开发商)提供需求规格说明书,由专家制作。为了保证新创建的部件以后的可重用性,这时一定要注重遵守相关的软件规范。
b 确定组织部件
与上一步类似,先在组织部件库中查找所需要的组织部件,对于找出的部件,可根据情况直接重用或经扩充、修改、继续等处理后再重用,假如库中没有可重用的部件,则应按照规则创建之(经调试后再将其存入组织部件库内)。
在创建新的组织部件时,要根据功能的不同将其分成一些不同的分子部件,并按下一步的方法重用或创建分子部件。
c 建立分子部件和原子部件
与上一步类似,先在分子、原子部件库中查找所需要的部件,对于找出的部件,可根据情况直接重用或经扩充、修改、继续等处理后再重用,假如库中没有可重用的部件,则应按照规则创建之(经调试后再将其存入相应的部件库中)。
3.2.3 组装
在组装平台的支持下,把各部件组装成一个可运行的系统。
3.2.4 原型审查
通过上述的步骤,我们已经建立了一个可与用户交流的原型,此时应与用户(在运行的基础上)探讨该原型是否满足其需求,假如没能满足其需求(或需求又有了变化),那么应转回到第一步(即第3.2.1节),否则就转到下一步。
3.2.5 系统测试及维护
在维护平台的支持下,严格测试系统的功能和各部件的接口,修改所发现的问题。测试完后,应再与用户一起进行原型审查(即第3.2.4节),确定正确无误后,就可让系统进入实用阶段。
4 还需要深入研究的内容
a 对于各种软件规范的确定
理想的情况,应由国内的权威机构做这方面的工作,最终应产生一个类似机械行业中的那种严格的、可操作的工业标准。目前已有电子工业部、石油天然气总公司等一些部门发布了各自的"软件工程规范",但距离那种"严格的、可操作的工业标准"还差的很远,还需再做工作。
b 各类部件及部件库的规范问题
c 对支持本方法的CASE工具的研制
5 结束语
软件开发工程化仍是目前人们非常关注的研究内容,虽然人们已经提出了很多开发方法,也有些部门制定了一些条条框框,但距象硬件那样进行工业化生产还有距离。希望本文提出的方法有助于软件开发工程化的研究。