软件开发流程方法探析

2018-07-24 13:55:34

随着计算机应用的日益普及和深入,人们对软件的需求量急剧增加,但此时计算机软件的开发技术却远远没有跟上硬件技术的发展,使得软件开发的成本逐年剧增,更为严重的是,软件的质量没有可靠的保证。软件开发的速度与计算机普及的速度不相适应,软件开发技术已经成为影响计算机系统发展的“瓶颈”。早期所形成的计算机软件开发的错误方式,严重阻碍了计算机软件的发展,导致了20世纪60年代软件危机的发生。20世纪60年代后期,西方的计算机科学家开始认真研究解决软件危机的方法,提出借鉴工程界严密完整的工程设计思想来指导软件的开发与维护,并取得了可喜的成果。软件工程首次出现在1968年由NATO组织的一次计算机学术会议上,其目的是倡导工程的原理、原则和方法进行软件开发。因此,一门新的学科一软件工程学(Software Engineering)诞生了。软件工程学是一门介于软件科学、系统工程和工程管理学之间的边缘性学科。随着软件的发展和商品化,软件工程学的研究范围越来越广,是软件开发过程的理论指导。主要包括可行性分析、项目计划与质量管理、需求分析、总体设计、详细设计、程序设计、软件测试、系统实施、软件维护和文档规范等内容。软件开发流程就是遵循着软件工程的理论基础来进行的。
1 国内外软件工程理论应用现状
国外的软件工程理论的应用相对比较成熟,其中表现最为突出的是印度。印度作为亚洲最大的软件外包大国之一,其软件工程的思想在软件开发流程中的应用是比较好的。整个软件开发过程已经完全成为一个流程化的过程。其软件开发行业30%以上的编程人员的流动性对软件开发工程不会造成什么影响,可见他们的编程规范及流程规划的水平。从以下特点之中可以找到其软件开发行业发展如此成熟的答案。
(1)流程重于项目;
(2)软件质量管理独立于研发部门,专门检查研发部门的开发流程是不是按照既定流程走,如果软件质量管理人员觉得流程不对,会直接上报高层,项目肯定就此停止;
(3)所有的东西(包括草稿)都有文档,详细文档要求达到只有这个文档就可以编码的程度,一般写文档时间占60%,编码时间极少;
(4)有各种详细的同行评审,包括项目组内,项目组件以及与客户之间的沟通,而中国相对于印度而言差距很大,这种差距不在于研发技术是否先进,而是在于软件工程的思想重视与运用水平的差距。从开发团队上来看,中国的开发团队人员过少,仅仅是“作坊式”的开发方式,软件的生产速度、产量和品质上都与印度等国家差距日渐变大。因此,从根本上重视软件工程的开发思想,严格执行软件开发的规范流程,将是改变我国当前软件开发现状的有效途径。
2 软件系统开发流程分析
典型的软件过程有Waterfall Model(瀑布模式)、Iter-ative&Incremental Model(反复渐进模式)和Spiral Mod-el(螺旋模式),无论采用哪种模型方式,软件开发过程最起码要包括支持软件整个生命期的活动。基本的生存周期包括软件计划、需求分析、总体设计、详细设计、编码及单元测试、综合测试、移交及软件维护。
由此可以看出,需求分析阶段是软件开发流程的第一步,是软件开发最首要的工作,直接影响到软件设计和开发的一切流程。如果需求分析工作不到位,将会导致与用户要求存在偏差的严重后果。国内软件企业对需求分析工作的重视程度普遍低于流程中的设计和开发。国内大部分企业特别是小软件企业将70%的时间花在软件设计开发上,需求分析过程只占整个流程中的15%。相比之下,国外开发企业是40%的时间进行需求分析,比设计开发时间还多10%。需求分析阶段要根据软件开发需求特点确定采用何种软件工程方法进行设计。目前比较典型的方法有结构化的方法、面向对象的方法、基于构件的方法、基于A-gent的方法、基于净室技术以及基于敏捷技术的方法等。由于后三种方法相对是针对某些特殊用途而产生的,适用性上有很大的局限性,有待进一步完善,因此,仅对主要的三种方法在操作单位、方法特性等方面进行了比较.     
软件工程技术和方法在不断发展.为了设计出大规模、复杂度高的软件,必须有更高水准的结构设计技术。目前越来越受到软件工程研究者关注的是把对象群作为角色、将各种角色进行拼装组合的技术。不管是已经出现的技术,还是行将推出的方法,十全十美的软件开发方法是难以寻觅的,真正实用的技术或方法往往是多种开发方法的结合。