不断变化的需求、复杂的业务流程、领域知识的缺乏等许多不可避免的因素都会导致软件变化的发生,演化性是软件的基本特征之一。同一类型软件的重复开发不仅仅浪费了人力物力,也会导致开发效率降低、开发水平提高缓慢等不良情况。软件开发中如何适应软件不断变化的需求并提高软件产品的复用程度成为了软件开发过程中关注的焦点问题。实践表明软件中稳定度从高到低依次为数据、功能、对象、接口,由此可以知道定义与实现分离,实现软件的高内聚、低耦合是适应软件演化性,提高软件复用度的指导原则。面向对象方法方法、面向构件的开发方法都是在这个原则下产生的。
◇ 结构化设计,软件系统的行为与数据分离
◇ 面向对象设计,数据和操作的封装,行为和属性的隐藏
◇ 当复用占据了应用开发的主导地位时,则构造方法有时被称为基于构件的开发或构件软件。基于构建的开发,耦合度更低,适合快速创建更加复杂的系统
构件分类
按功能分,分为三层:底层构件为基本数据类构件和系统支撑构件,包括数据库构件、代码表构件;中间层为各种通用的构件包括消息中间件、数据交换中间件等;顶层为针对各种领域的专用构件或子系统构件,例如统计构件,查询构件等。
传统的软件体系结构、开发过程、组织形式
◇ 自底向上法和自顶向下法
自底向上法出现于早期的计算机应用系统,即在进行系统分析和设计时自下而上,先从底层模块做起,然后逐步完成整个系统。自底向上法使得系统的开发易于适应组织机构真正的需要;有助于发现系统的增长需要,所获得的经验有助于下一阶段的开发,易于控制和管理。但由于方法的演变性质,自底向上法使系统难以实现其整体性;同时由于系统未进行全局规划,数据一致性和完整性难以保证;而且为了保证系统性能的需求,往往要重新调整,甚至重新设计系统。
随着系统规划的扩大和对开发经验的总结与归纳,自顶向下的系统分析方法论逐步得到了发展和完善。自顶向下法要求开发者首先制定系统的总体规划,然后逐步分离出高度结构化的子系统,从上至下实现整个系统。运用这类方法可以为企业或机构系统的中期或长期发展规划奠定基础,同时支持系统的整体性,为系统的总体规划、子系统的协调和通信提供保证。但它同样也存在缺点:对系统分析、设计人员要求较高,在大系统中,对下层系统的实施往往缺乏约束力,开发的周期长,系统复杂,成本较高。
◇ 快速原型法
原型法的核心是原型,即模型,是系统的早期可运行版本。随着用户或开发者对系统理解的加深,不断地对原型进行补充和细化。系统的定义是在逐步发现的过程中进行,这就是快速原型法的基本出发点。快速原型法的开发过程体现了不断迭代的快速修改过程,是一种动态定义技术。
快速原型法的最大优点是能够大大减少软件系统的后期维护费用,使系统功能能正确反映用户的需求。原型本身及这种方法的不足之处在于,如果原型本身功能设置不齐全、性能不好,会导致原型的设计和使用超出预期的花费和时间。另一个关键不足是原型法需要一个合适的软件开发环境,以便原型能直接转换成现实的系统。
以上方法各有其优缺点。"自底向上"法只重局部而忽视了对整体的把握;"自顶向下"法开发周期长、见效慢、缺乏灵活性和适应性;快速原型法虽然具有很明显的优越性,但因其依赖于快速开发工具的支持,又不能不令许多系统开发者望而却步。
基于软构件技术的软件体系结构、开发过程、组织形式
◇ 系统体系结构
◇ 组织形式
在这种新的软件开发方式下,软件公司以开发软部件为主要业务,提供规格化的软部件。系统集成商则汇总部件,组合成能完成不同功能的软构件,将自己的核心技术构件化。正是这两者之间分工的泾渭分明,将软件行业工业化逐渐推向成功。
目前,采用软构件思想开发的软件产品相继出台,而主流是以美、日大公司为首的产品。由于采用其思想的开发工具推出的时间还不足五年。因此,真正使用软构件的用户还屈指可数。尽管软构件技术还存在着很多不成熟之处,但人们都相信软构件带来的好处是不可估量的,它代表了新一代软件技术的发展方向。
对于本公司内部的组织机构要采取矩阵式的组织形式,以不同的构件分类方向来确定不同的组,在做项目时,在每个组中选择合适的人员组成项目组
◇ 系统开发过程
基于构件的软件开发与其他开发过程不同之处在于它在分析、设计、实现等各个阶段中所充实的工作不再是从零开始,在每个阶段开发人员首先要通过构件库管理系统在已有的构件库中检索需要的构件,如果:
对于新增、修改的构件要根据构件库的标准加入到构件中去,丰富系统构建苦,为以后的系统开发提供好的支持。基于构件的软件开发需要含有非常丰富的构件的构件库做支持,构件库中应含有大量各种类型的构件,还要对构建进行分类、描述、检索、维护等。为此,需要设计软构件库的管理程序来完成这些工作,软构件库的管理程序主要完成以下几个功能:
构件检索:在软构件中查找到所要求的构件;
构件扩充:加入一个构件到构件库中;
构件删除:删除一个已存在的构件;
构件修改:修改一个已存在的构件。
构件集成:利用已有的软构件集成软件系统;
基于构件的开发将复杂的问题空间映射成了解决构件分析、提取、开发和构件的集成机制问题。构件的集成机制也称作构架技术,涉及到构件的描述、体系结构、消息通信等多种技术。构件的分析、提取工作需要对领域具有丰富的经验,通过不断分析领域内的共性、个性的特征来完成的,其方法主要有面向领域的特征分析方法等,构件的实现与系统所要采用的体系结构和集成机制有关。形象地说,结构化的开发方法就是用泥土、草来垒房子,面向对象的开发方法就是用砖头、钢筋等原料来间房子,基于构件的开发方法就时用混凝土浇筑房子,其中做好的架子就是所谓的构架,或者成为集成机制。基于构件的开发,一般是先构筑系统的总体框架,然后构造各个构件,并依次把构件安装到系统中去。
面向构件的开发方法克服了快速原型法需要快速工具支持的不足,取而代之以软件构件化技术来构造系统。大部分领域中的系统,在功能上有类似之处,因而利用软件构件技术可以加大软件复用的粒度,提高复用率,大大简化开发过程,提高开发效率。基于构件的开发在确定系统总体框架、构筑总体框架、修改总体框架、构造构件以及修改构件等阶段,都同一个构件库打交道,丰富的构件库是提高系统开发效率,保证系统成功的关键所在,因此对于刚刚使用基于构件开发的开发小组来说,不要过于追求系统的构件化程度,尤其不要过分的考虑复用问题,要采取循序渐进的方法,不断的提高软件的构件化程度和复用的程度,不断的完善构件库的方式来实施面向构件的开发方法,否则可能就丧失了其优越性,就好比想用混凝土浇筑的方法建一间猪舍一样。
基于构件开发的未来
构件技术的出现,极大地满足了多个应用领域的要求,使得各种技术形成的软构件可以最大程度地进行重用。同时引出了大规模软件开发所面临的一系列问题,如何建造面向对象的软构件库结构,并有效地组织和管理;如何分析、提取可复用构件;如何设计适合构建集成的环境等。
工业化的生产,带给人们生活翻天覆地的变化;软件的工业化生产,会带给人们更多的方便与舒适,但这条道路还很漫长,不过随着构件、构架技术、产品线技术等新技术的产生,我们有理由相信,软件工业化的软件发展的必然,构件化开发也是软件工业化发展的必然。