联盟网站制作/专业网站推广软件
软件开发比较经典的过程模型有:
- 瀑布模型:该模型将基本的过程活动、描述、开发、有效性验证和进化,看成是一些界限分明的独立的过程阶段,例如,需求描述阶段、软件设计阶段、实现阶段、测试阶段等。
- 增量式开发:该方法使得描述活动、开发活动和有效性验证活动交织在一起。系统的开发是建立一系列的版本(增量),每个版本添加部分功能到先前的版本中。
- 面向复用的软件工程:该方法是基于已存在的大量可复用的组件。系统开发过程着重于集成这些组件到新系统中,而非从头开发。
三个模型相互不排斥,而且经常一起使用,尤其是对大型系统的开发。对大型系统,综合瀑布模型和增量开发模型的优点是有意义的。
瀑布模型
也可以看成是软件的生命周期模型。
主要阶段直接映射基本的开发活动:
- 需求分析和定义:通过咨询系统用户建立系统的服务、约束和目标。并对其详细定义形成系统描述。
- 系统和软件设计:系统设计过程通过建立系统的总体体系结构将需求区分为硬件需求和软件需求。软件设计包括识别和描述一些基本的软件系统抽象及其之间的关系。
- 实现和单元测试:在此阶段,将软件设计实现为一组程序或程序单元。单元测试就是检验每个单元是否符合其描述。
- 集成和系统测试:集成单个的程序单元或一组程序,并对系统整体进行测试以确保其满足了软件的需求。在测试之后,软件系统将交付给客户使用。
- 运行和维护:正常情况下(不是必须的),这是一个具有最长生命周期的阶段。系统被安装并投入实际的使用中。维护包括改正那些在早期各阶段末被发现的错误,改善系统各个单元的实现,并当新的需求出现时提高系统的服务能力。
主要问题在于它将项目生硬地分解成这些清晰的阶段。因此只有在对需求了解得好,而且在系统开发过程中不太可能发生重大改变的时候,适合使用瀑布模型。
增量式开发
思想是先开发出一个初始的实现,给用户使用并听取用户的使用意见和建议,通过对多个版本的不断修改直到产生一个充分的系统。描述、开发和有效性验证等活动不是分离的而是交织在一起。同时让这些活动之间都能得到快速的反馈信息传递。
增量式开发反映了我们解决问题的方法,系统的每一个增量或版本包括用户需要的一部分功能。通常,系统的早期增量包括最重要或最紧急的功能需求。这就意味着在早期开发阶段,用户可以相对早地评估系统,看它是否满足需要。若不满足需要,就只需要改变当前的增量即可,又或许有新的功能被发现并为下个增量做准备,因此可以大幅度地减少成本。
增量式开发相比于瀑布模型的一些重要优点:
- 降低了适应用户需求变更的成本。重新分析和修改文档的工作量较之瀑布模型要少很多。
- 在开发过程中更容易得到用户对于已做的开发工作的反馈意见。用户可以评价软件的现实版本,并可以看到已经实现了多少。这比让用户从软件设计文档中判断工程进度要好很多。
- 使更快地交付和部署有用的软件到客户方变成了可能,虽然不是所有的功能都已经包含在内。相比于瀑布模型,用户可以更早地使用软件并创造商业价值。
从管理的角度看,增量式方法存在的问题:
- 过程不可见。管理者需要通过经常性的可交付文档来把握进度,若系统开发速度太快,要产生反映系统每个版本的文档就很不划算。
- 伴随着新的增量的添加,系统结构在逐渐退化。除非投入时间和金钱用在重构系统结构上以改善软件,否则定期的变更会损坏系统的结构。随着时间的推移,越往后变更系统越困难,而且成本也将逐渐上升。
增量开发与迭代开发的区别
增量开发:
每个阶段都完成一个高质量的发布版本,后一阶段不对前一阶段的内容进行任何修改,只在前一阶段的基础上增加新的业务功能实现,称为增量,直至最后一个阶段,形成最终的软件产品。
增量开发只是在原有的基础上增加新的东西。
迭代开发:
第一个阶段就覆盖了项目整体范围,以后每个阶段都是在前一阶段的基础上改进、完善,没有业务范围的扩展。
迭代开发每一次都是在原有的基础上进行改进和完善。
面向复用的软件工程
在大多数的软件项目中,都存在一定程度的软件复用。
主要阶段:
- 组件分析:给出需求描述,然后搜寻能满足需求的组件。通常情况是,没有正好合适的组件以供选择,能得到的组件往往只提供所需要的部分功能。
- 需求修改:在这个阶段,根据得到的组件信息分析需求,然后修改需求以反映可得到的组件。当需求修改无法做到的时候,就需要重新进入组件分析活动以搜索其他可能的替代方案。
- 使用复用的系统设计:在这个阶段,设计系统的框架或重复使用一个已存在的框架。设计者分析那些将被重复使用的组件,并组织框架使之适应这些组件。当某些可复用的组件不能得到时,必须重新设计一些新的软件。
- 开发和集成:当组件不能买到时就需要自己开发,然后集成这些自己开发的组件和现货组件,使之成为一个整体。在这个模型中,系统集成与其说是一个独立的活动,不如说已经成为开发过程的一个部分。
3种类型的软件组件可能用于面向复用的过程:
- 通过标准服务开发的Web服务,可用于远程调用
- 对象的集合,作为一个包和组件框架,如.NET或者J2EE等集成在一起
- 独立的软件系统,通过配置在特定的环境下使用
优势:
- 减少了需要开发的软件数量,从而降低了软件开发成本,也降低了开发中的风险
- 可使软件快速地交付