目录
1、瀑布模型
2、抛弃型原型
3、演化式-增量模型
4、螺旋模型
5、统一软件开发过程RUP
6、设计验证和确认
6.1、软件质量保证
6.2、软件设计的性能分析
7、软件生存周期的活动
7.1、需求分析和规约
7.2、体系结构设计
7.3、详细设计
7.4、编码
8、软件测试
8.1、单元测试
8.2、集成测试
8.3、系统测试
8.4、验收测试
1、瀑布模型
瀑布模型是一个理想化的过程模型,它规定每一阶段完成后才能启动下一阶段,另外,一个项目在没有迭代和重复的情况下从一个阶段移动到下一个阶段。
存在的问题:
1)无法进行合适的测试,直至一个工作系统被开发出来并能演示给最终用户。
2)只有在生存周期的后期才能得到一个工作的系统。
2、抛弃型原型
对从用户界面上获得反馈非常有用,并且能够应用于具有复杂用户界面的系统。
一个抛弃型原型能够在一个初步的需求规约被制定之后就被开发出来。
抛弃型原型也能被用于构造设计的实验性原型。这个原型能用于确定特定的算法是否逻辑正确,或者用于确定它们是否满足性能目标。
3、演化式-增量模型
在增量开发中,原型从几个中间步骤的可运行系统逐步演化为可交付系统。该方法可用于确定系统是否满足性能目标,并用于测试设计中所涵盖的关键构件。
演化式原型方法的一个目标是得到早期运行的系统子集,随后在该子集上逐步构造。如果系统的第一个增量版本对一条从外部输人到外部输出的路径进行了完整的测试,那么使用增量式原型方式是有优势的。
4、螺旋模型
螺旋模型是一个风险驱动的过程模型,涵盖其他生存周期模型,例如瀑布模型、增量开发模型以及抛弃型原型模型。
1)定义目标、候选方法和约束。此次循环的详细计划:确定目标以及用来实现目标的各种候选方法。
2)分析风险。对当前项目风险进行详细评估;为了减轻风险,计划待执行的活动,
3)开发产品。进行产品开发,例如需求分析、设计或者编码。
4)计划下一次循环。对此次循环的成果进行评估,并开始计划下一次循环。
5、统一软件开发过程RUP
包含5个工作流和4个阶段
制品(artifact)被定义为由一个过程生产、修改或使用的信息。
工作流(workfow)被定义为生产可观测结果的一系列活动。
阶段(phase)被定义为两个里程碑之间的一段时间,在此过程中一组事先定义的开发目标得到了满足,完成了一些制品,同时做出了是否进入下一阶段的决定。
RUP中一个阶段迭代与螺旋模型中的一次循环是相对应的。
每一次循环历经所有的四个阶段,并且指明了每一个核心工作流中的开发工作。每一个工作流及其产物如下所述:
1)需求。需求工作流的产物是用例模型。
2)分析。分析工作流的产物是分析模型。
3)设计。设计工作流的产物是设计模型和部署模型。
4)实现。实现工作流的产物是实现模型。
5)测试。测试工作流的产物是测试模型。
与螺旋模型类似,RUP是一个风险驱动的过程。生存周期阶段如下所述:
1)初始。在初始阶段,制定出达到足够水平的初步想法,用以证明有能力进入细化阶段。
2)细化。在细化阶段,定义软件体系结构。
3)构造。在构造阶段,:开发出能够发布给用户的软件产品。
4)交付。在交付阶段,软件被交付给用户。
6、设计验证和确认
软件确认(validation)的目标是要确保软件开发团队“构建了正确的系统”,确保系统符合用户的需求。
软件验证(verification)的目标是要确保软件开发团队“正确地构建系统”,确保软件系统在每一个阶段中的构造与前一个阶段所定义的规约相符合。
6.1、软件质量保证
软件质量保证是指一系列确保软件产品质量的活动。
软件验证和确认是软件质量保证的重要目标。
根据用户需求,抛弃型原型能够用于对系统的确认(在开发系统之前),有助于确保开发团队“构建了正确的系统”,即系统确实符合用户的需求。抛弃型原型也能够用于构造设计的实验原型。
软件技术评审(sofware technicalreview)能够为软件验证和确认带来很大的帮助。在软件验证中,确保设计符合软件需求规约是非常重要的。需求追踪和软件设计的技术评审能够有助于该活动的开展。
6.2、软件设计的性能分析
在系统实现之前分析软件设计的性能来评估设计是否满足性能目标是十分有必要的。
使用排队模型、模拟模型
在并行系统中使用Petri网,进行建模和分析并行设计
7、软件生存周期的活动
7.1、需求分析和规约
识别和分析用户的需求。软件需求规约(SRS)详细叙述了需要开发出的系统的需求。
SRS是软件的一类外部规约,它的目的是提供完整的关于系统外部行为是什么的描述,而不描述系统内部是如何进行工作的。
7.2、体系结构设计
一个软件体系结构通过描述构件及其连接的方式,将系统的整体结构与单个构件的内部实现细节进行分离。
7.3、详细设计
在详细设计阶段,定义每一个系统构件的算法细节。这项工作经常使用程序设计语言(PDL)来完成,并且包含内部数据结构设计
7.4、编码
在编码阶段,使用为这个项目所选择的编程语言对每一个构件进行编码。
8、软件测试
8.1、单元测试
单元测试表示在单个构件与其他构件进行组合之前对其进行单独的测试。
单元测试的方法使用测试覆盖准则,经常使用的测试覆盖准则包括
1)语句覆盖需要达到每一个语句应至少被执行一次。
2)分支覆盖则需要达到每一个分支的可能结果应至少被测试一次。
8.2、集成测试
集成测试表示将已测试的单个构件逐步地组合为更复杂的构件组,然后对这些构件组进行测试,直到组合成完整的软件系统,同时构件间的接口都已经被测试过。
8.3、系统测试
系统测试是测试一个经过集成的硬件和软件系统来验证系统是否满足特定需求的一个过程。
测试人员测试整个系统或主要的子系统来判定它们是否与需求规约保持一致。
为了使测试更加客观,推荐让一个独立的测试团队来执行系统测试。
在系统测试过程中,需要测试软件系统的几个特征。
1)功能测试。判定系统执行了需求规约中所描述的功能。
2)负载(压力)测试。判定当系统运行时是否能够处理计划中的大量的和变化的负载。
3)性能测试。测试系统满足响应时间的需求。
8.4、验收测试
在验收系统之前,通常在用户安装阶段,用户组织或其代表都会进行验收测试。与系统测试相关的大多数问题也应用于验收测试。