每个软件产品或者软件系统都会经历产品孕育、产品诞生、产品成长、产品成熟、产品衰亡等阶段,一般称为软件生存周期(软件生命周期)。如果把整个软件生存周期划分为若干阶段,使各个阶段都有明确的任务,让规模大、结构复杂、管理复杂的软件开发变的容易控制、容易管理。通常,软件产品生存周期包括:可行性分析、开发项目计划书、软件需求分析、软件设计(分概要设计、详细设计)、程序编码、软件测试与维护等活动同。这些活动要根据项目进度要求分配到不同的阶段去完成。
(一)传统的软件开发流程采用的是瀑布模型,什么是瀑布模型呢,瀑布模型是软件项目工作中,每到一个阶段就必须把这个阶段的合部工作完成才能进行下一阶段的工作,比如:在进入概要设计阶段时,必须把系统需求规格说明书完全确定后才可以。还比如:程序编码在软件系统设计完成后,才可以进行程序编码。所以在整个项目中所有的系统模块全部开发完成之后,才能进行系统集成,要把上百个模块组成复杂系统,是一个很艰巨的任务。
(二)随着我们开发的软件项目越来越复杂,瀑布模型已经很难满足现在的软件项目的开发工作。根据项目实际情况选择适合的软件生命周期原型及开发团队采用实用的软件开发流程对软件项目的成败起到至关重要的作业。
对软件过程的认识
(一)需求获取
1.在确定项目开始前,先了解客户对项目软件准确的需求。合同项目在前期的准备阶段中,在这方面会花费比较长的时间,这样对后期的工作是很有帮助的。
2.进行软件开发一般分:专用软件、通用软件两方面。
(1)专用软件:比如甲单位要开发一套根据本单位性质专用的软件系统,甲单位会对软件的功能要求有一个大概轮廓(一般在签定的软件开发合同中已注明,但只是合同项目框架),所以在之前必须与使用者进行详细沟通,知道客户到底想要一个什么样的软件系统,定好位,工作就很好做;如果前期工作做不好,到制作后期才发现问题,对软件开发来说是非常费时费力的事情。
(2)通用软件:在开发通用软件时,流程上相对要固定一些,首先,做市场调查,从经济效益、市场潜力、技术分析等,其次调查客户终端中硬件配置、网络情况、数据库情况,最后综上调查结果制定软件开发技术指标。
3.在制作过程中会经常与客户沟通,为了更好更便利的与客户进行沟通,使用一些像用VB,Delphi工具做的原型,针对发现的问题进行有效交流,对客户需求及时定位,为现好的完成合同项目软件开发工作打好坚实的基础。
4.软件的运行与流程上面:用UML的Use Case图做参考是非常有用的。
(二)需求分析
1.什么是需求分析,需求分析是在确认完项目客户对软件使用需求后,将需求用某种直观的文法表现出来。现在业内常用的分析方法有:面向对象法,分析项目目标客户的需求,再用类-?D类之间的关系来体现全部软件系统。(具体方法,不予详解)
2.开发过程注意事项。强调问题域与系统责任的区别,开发的软件需要完成的所有应运功能称为系统责任,问题域包括项目软件开发时涉及到的所有问题。比如1:程控机计费程序(程控机现成的、数据输出是固定的,程序从程控机读取信息,程控机对系统来说属外部硬件设备,可以不用一类处理,一个类完成数据读取操作就可以了)。比如2:在现有的数据库上,进行再度开发与应用,数据库格式是固定的,后台程序是现成的,并正常运行,决定开发新的前台软件程序,这时服务器程序就属外部程序了,但是,新软件开发分析文档中必须有体现,以此约束外在的程序系统。
分析与设计过程的关联衔接
1.用类结构表示目标系统时,软件分析过程的全部内容,可以不用具体实现,(如:用那类操作系统平台,用何种程序语言等),这些在项目早期设计阶段,就已明确定位了,这时用面向对象法进行分析、设计、编码过程等表示法进行统一,能很好的进行分析与设计过程的关联与衔接。把设计、分析分开,是用瀑布式方法进行软件开发还是采用别的方法,要根据项目需求的具体情况来定。
2.像设计完成后,后续改动及变化不多的项目,建议用瀑布模型,这们的好处是:在后期软件开发当中,如改用别的编程语言、平台,早期设计阶段中备份的的分析文档就可以用上了。
3.在今后的工作中会涉及到经常变化的合同项目,要整理好运作流程,比如:少部分分析?D?D少部分设计?D?D少部分编码?D?D最后测试的方法,这样可以避免要返回前一个步骤修改的麻烦,所以后续经常变化的软件开发没有一个完整的分析文档。
4.软件开发中分析与设计是不能区分的,虽然市面上很多CASE工具对分析和设计的阶段不区分,但是,不表示就可以不加区分。
设计编码过程
设计阶段:
1.分析模型:类结构在后期工作中会进行一定的修改,修改的原因不外呼有二种,一种是是:编程环境的要求部分,第二种是对原来的一些特定工作重用。
2.定义界面:数据访问(数据库)部分,现阶段很多编程语言都可以用可视化设计界面,所以界面部分的工作都会保留到编码阶段来进行,这样在项目设计阶段,总体工作量是不大的。
项目测试
测试人员需要在项目需求阶段就要安排介入到项目中,针对需求编写测试计划及测试用例。根据需求跟踪矩阵衡量测试用例对软件的覆盖率。另外在详细设计阶段,开发人员需要考虑代码的可测试性,编制单元测试用例并进行测试等。
结束语
针对一个企业的管理模式,需要在实践中找到一套适合自己企业的模式,成功的经验要借鉴,套搬是不行的,还会适得其反。很多项目,不管大也好,还是小也好,并没有本质的区别,很多事情去做的方法是有共性的。同样,在做一个软开发项目时,项目的合作运行方法虽然有区别。但是换一个角度来看,又会感受不同的现解方式。因此把别人的成功的经验及成果转变为自己所用,这个变是至关重要的。