前言
这是初学者对软件测试学习的记录博客,如有错误,欢迎指正,如有同行者,希望共同探讨进步。
<以下所使用的图片大部分源自互联网,如有侵权,联系删除,谢谢>
一、软件工程
IEEE定义:将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。
软件工程主要解决的就是软件质量问题。
软件工程包括两方面的内容:
- 软件开发技术:软件开发方法学、软件工具和软件开发环境。
- 软件项目管理:软件质量、项目估算、进度控制、人员组织、配置管理、项目计划。
二、软件生命周期
软件生命周期又称为软件生存周期或系统开发生命周期,是指从软件定义、开发、使用、维护到报废为止的整个过程,一般包括问题定义、可行性分析、需求分析、总体设计、详细设计、编码、测试和维护。
三、软件开发模型
1、瀑布模型
定义:瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。1970年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。
核心思想瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
瀑布模型提供了软件开发的基本框架。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。
2、快速原型模型
快速原型模型是在开发真实系统之前,迅速建造一个可以运行的软件原型,以便理解和澄清问题,在该原型的基础上,逐渐完成整个系统的开发工作,它允许在阶段对软件的震求进行初步而非完全的分析和定义。快速设计开发出软佚系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。
3、螺旋模型
螺旋模型是在快速原型模型和瀑布模型的基础上,增加风险分析策略,结合多种方法尽量降低风险,保证项目的产品质量。当产品交付出去以后,在定制新需求前,评估之前的工作成果,然后进行新需求的风险分析,接着瀑布模型方式开发,直到交付出去产品,螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:
- 制定计划:确定软件功能,理清限制条件,制定研发方案
- 风险分析:评估研发方案,考虑如何识别和消除风险
- 实施工程:软件开发、测试和部署
- 客户评估:工作复盘,提出修正建议,制定下一步计划。
4、迭代模型
迭代模型是RUP推荐的周期模型。被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。
5、增量模型
增量模型是一种分步开发的模型。它集成了瀑布模型的顺序特征和迭代模型的迭代特性。一般情况下,先针对一个大型的产品进行精细化设计,将复杂项目进行合理的阶段性功能拆分,然后每一个阶段的功能产品都使用瀑布模型开发,并且交付的子功能产品成果。每个阶段(B)都在前一个阶段(A)实现的功能基础上进行迭代开发,多个功能阶段迭代完毕后,就可以将最终完善的产品交付给用户了。
6、敏捷开发模型
敏捷模型主要旨在帮助项目快速适应变更请求。因此,敏捷模型的主要目的是促进项目的快速完成。要完成这项任务,需要敏捷。敏捷性是通过使过程适应项目,删除对特定项目可能不是必需的活动来实现的。此外,避免任何浪费时间和精力的事情。
实际上敏捷模型是指一组开发过程。这些过程共享一些基本特征,但它们之间确实存在某些细微差别。下面给出了一些敏捷 SDLC 模型:
- Crystal Agile Framework
- DSDM Atern (a vendor-independent implementation of the agile project delivery framework Dynamic Systems Development Method (DSDM))
- 功能驱动开发 Feature-driven development
- Scrum
- 极限编程 Extreme programming(XP)
- 精益开发 Lean development
- 统一流程 Unified process
在敏捷模型中,需求被分解成许多可以增量开发的小部分。敏捷模型采用迭代开发。每个增量部分都是在迭代中开发的。每次迭代都旨在小而易于管理,并且只能在几周内完成。一次为客户计划、开发和部署一个迭代。没有制定长期计划。
敏捷模型是迭代和增量过程模型的组合。