1 软件生命周期
一,软件生命周期的6个阶段:
(1)制定计划
确定待开发系统的总体目标;可行性研究;制定开发计划
(2)需求分析
分析软件需求,编写软件需求规格说明
(3)软件设计
确定软件体系结构,设计软件模块
(4)程序编写
(5)软件测试
(6)运行和维护二,软件工程的传统途径
软件工程的传统途径是"生命周期法",强调"结构化分析,结构化设计".
1. "生命周期法"的起源
人类解决复杂问题时普遍采用的一个策略是"各个击破",也就是对问题进行分解,然后再分别解决各个子问题的策略.
软件工程采用的"生命周期法",就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后再逐步完成每个阶段的任务.2. 生命周期划分的原则
各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理.
3. 生命周期的划分
软件生命周期一般分为:软件定义(问题定义,可行性研究,需求分析),软件开发(总体设计,详细设计,编码和单元测试,综合测试),软件使用与维护等三个时期.
生命周期法各阶段的工作小结4. "生命周期法"的特点
阶段具有顺序性和依赖性
推迟实现的观点
质量保证的观点
每个阶段都必须完成规定的文档
每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误.
2 软件开发过程模型
一,瀑布模型
· 典型瀑布模型具有顺序性和依赖性问题定义
可行性研究
需求分析
软件设计
编 码
测 试
维 护
· 瀑布模型的特征
从上一项活动中接受该项活动的工作对象,作为输入. 利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,作为输出传给下一项活动 对该项活动实施的工作进行评审.若其工作得到确认,则继续下一项活动.
· 瀑布模型的缺点:
从认识论角度看,人的认识是一个多次反复循环的过程,不可能一次完成.但瀑布模型中划分的几个阶段,没有反映出这种认识过程的反复性.
软件开发是一个知识密集型的开发活动,需要相互合作完成,但瀑布模型没有体现这一点.
二,原型模型
1. 基本思想
在获取一组基本的需求定义后,利用高级软件工具的可开发环境,快速地建立一个目标系统的最初版本,并把它交给用户试用,补充和修改,再进行新的版本开发.反复进行这个过程,直到得出系统的"精确解",即用户满意为止.经过这样一个反复补充和修改的过程,应用系统的"最初版本"就逐步演变为系统的"最终版本".
原型:一个具体的可执行模型,它实现了系统的若干功能.
原型法:不断地运行系统"原型"来进行启发,揭示和判断的系统开发方法.
2. 原型模型
在"需求分析","原型设计"两个阶段中,开发者和用户一起为想象中的系统的某些主要部分定义需求和规格说明,并由开发者在规格说明级用原型描述语言构造一个系统原型,它代表了部分系统,包括那些为满足用户需求的必要属性.该原型可用来帮助分析和设计工作,而不是一个软件产品.
在演示原型期间,用户可以根据他所期望的系统行为来评价原型的实际行为.如果原型不能满意地运行,用户能立刻找出问题和不可接受的地方,并与开发者重新定义需求.该过程一直持续到用户认为该原型能成功地体现想象中的系统的主要部分功能为止.在这期间,用户和开发者都不要为程序算法或设计技巧等枝节问题分心,而是要确定开发者是否理解了用户的意思,同时试验实现它们的若干方法.
有了满意的系统原型,同时也积累了使用原型的经验,用户常会提出新目标,从而进一步重新原型周期.新目标的范围要比修改或补充不满意的原型大.
3. 原型特征
软件原型是软件的最初版本,以最少的费用,最短的时间开发出的,以反映最后软件的主要特征的系统.它具有以下特征:
(1)它是一个可实际运行的系统.
(2)它没有固定的生存期.一种极端是扔掉原型(以最简便方式大量借用已有软件,做出最后产品的模型,证实产品设想是成功的,但产品中并不使用);另一种极端是最终产品的一部分即增量原型(先做出最终产品的核心部分,逐步增加补充模块),演进原型居于其中(每一版本扔掉一点,增加一点,逐步完善至最终产品).
(3)从需求分析到最终产品都可作原型,即可为不同目标作原型.
(4)它必须快速,廉价.
(5)它是迭代过程的集成部分,即每次经用户评价后修改,运行,不断重复双方认可.
4. 原型法的评价
· 优点
1.原型法在得到良好的需求定义上比传统生存周期法好得多,可处理模糊需求,开发者和用户可充分通信.
2.原型系统可作为培训环境,有利于用户培训和开发同步,开发过程也是学习过程.
3.原型给用户以机会更改心中原先设想的,不尽合理的最终系统.
4.原型可低风险开发柔性较大的计算机系统.
5.原型增加使系统更易维护,对用户更友好的机会.
6.原型使总的开发费用降低,时间缩短.
· 缺点
1."模型效应"或"管中窥豹".对于开发者不熟悉的领域把次要部分当作主要框架,做出不切题的原型.
2.原型迭代不收敛于开发者预先的目标.即每次更改,为了消除错误,次要部分越来越大,"淹没"了主要部分.
3.原型过快收敛于需求集合,而忽略了一些基本点.
4.资源规划和管理较为困难,随时更新文档也带来麻烦.
5.长期在原型环境上开发,只注意得到满意的原型,容易"遗忘"用户环境和原型环境的差异.
· 适用范围:原型开发可以应用于软件生存周期的不同阶段,也可以替代生存期的部分或全部阶段,具体可以用于以下领域:
1.辅助分析和确定用户需求的任务.
2.作为软件设计的一种工具.例如:研究系统设计的可行性和适应性.
3.作为一种解决不确定性的工具.例如:研究一种新技术的效果,逐步使其适应预定的环境.
4.作为一种实验工具.
5.充作同步培训工具.
6."一次性"的应用.例如写一个能运行的程序,一旦得到答案,该程序将不再使用.
7.作为软件维护的辅助工具.特别是在用户需求不稳定,维护工作量很大的情况下,要求大量的重新设计工作.
· 不适用范围
1.嵌入式软件
2.实时控制软件
3.科技数值计算软件
三,喷泉模型
喷泉模型认为软件生命周期的各个阶段是相互重叠和多次反复的.主要用于面向对象方法中
四,螺旋模型
在原型基础上,进行多次原型反复并增加风险评估,形成螺旋模型.
·螺旋模型分析
在螺旋模型结构中,维护只是螺旋模型的另一个周期,在维护和开发之间本质上并没有区别,从而解决了做太多测试或未作足够测试所带来的风险.
·适用条件
内部的大规模软件的开发,不太适合合同软件.
一般只适用于大规模软件的开发
3 软件测试过程模型
·V模型
V模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系,从坐到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。单元和集成测试是验证的程序设计,开发人员和测试组应检测程序的执行是否满足软件设计的要求;系统测试应当验证系统设计,检测系统功能、性能的质量特性是否达到系统设计的指标;由测试人员和用户进行软件的确认测试和验收测试,追溯软件需求说明书进行测试,以确定软件的实现是否满足用户需求或合同的要求。
·W模型
W模型强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样需要测试。这样,只要相应的开发活动完成,我们就可以开始执行测试,可以说,测试与开发是同步进行的,从而有利于尽早的发现问题。这样做,使测试不仅仅是评定软件的质量,测试还可以尽可能早地找出缺陷所在,从而帮助改进项目内部的质量。根据W模型的要求,一旦有文档提供,就要及时确定测试条件,以及编写测试用例。
·H模型
H模型将测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。H模型揭示了:软件测试不仅仅指测试的执行,还包括很多其他的活动;软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行;软件测试要尽早准备,尽早执行;软件测试是根据被测物的不同而分层次进行的,不同层次的测试活动可以按照某个次序先后进行的,但也有可能是反复的。
测试模型的使用
V模型强调了在整个软件项目开发中需要经历的若干个测试级别,而且每一个级别都与一个开发级别相对应,但它忽略了测试的对象不应该仅仅包括程序,或者说它没有明确地指出应该对软件的需求、设计进行测试。
W模型强调了测试计划等工作的先行和对系统需求和系统设计的测试,但W模型和V模型一样也没有专门针对软件测试的流程予以说明。
H模型表现为测试是独立的,只要测试前提具备了,就可以开始进行测试,软件测试逐步发展成为一个独立于软件开发部的组织,就每一个软件城市的细节而言,它都有一个独立的操作流程。
原文:http://www.cnblogs.com/ws178/p/5103999.html