软件过程
软件过程和软件过程模型的概念
软件过程
软件过程是一组引发软件产品生产的活动。可以是从头开始一步步开发,也可以是通过扩展和修改现有的系统,或通过配置和集成商业现货软件或系统组件获得。
虽然有着多种多样的软件过程,但所有软件过程都必须具有4种基本活动:
- 软件描述
- 软件设计和实现
- 软件有效性验证
- 软件进化
软件过程模型
软件过程模型是软件开发的指导思想和全局性框架,是从一个特定角度提出的软件过程的简化描述,是一种开发策略。简单来说,我习惯就把他理解成按照什么样的方式去开发,这个方式更多的是指的是按照什么样的步骤,比如是要从头一直做到尾(瀑布模型),还是选择先开发几个功能,再拼接起来,随后再开发几个功能,再集成到原先的代码中。(增量模型)。
软件过程的开发模型注意和面向对象以及面向过程的开发区分,笔者本身也不清楚会不会有人思考过软件过程的模型属于那种开发,是面向过程还是面向对象?反正我是有过这个困惑的曾经,但是实际上这是两个完全不同的概念,软件过程的开发模型我们习惯称为开发方法,但是面向对象和面向过程我们则习惯称为开发范式,简单来说,开发范式就是在进行软件开发前,先确定这是用面向过程还是面向对象,对整个软件开发的过程先定一个基调。比如说,可以叫面向过程的瀑布式开发,或者是面向对象的增量式开发。类似于我们在写曲子时要先定一个调,是用C调写还是G调?面向过程和面向对象同样是一个道理。无论你是用面向过程开发还是面向对象开发,最终都一定要经历同样的需求分析,软件设计和实现等等等的过程。
软件过程模型介绍
瀑布模型
也被称为线性顺序模型,也就是说将软件开发划分为几个阶段,包括需求分析,设计,实现,测试,维护等,下一个阶段的开始必须要上一个阶段的结束。这种设计方式多用于嵌入式系统或是关键性系统, 相当于我们考试做题,从第一题开始一直做到最后一题这样按顺序这样做下来。

图片来源:WiKi百科
增量模型
增量模型的软件过程更为灵活,他更像是一种拼图,把系统的功能拆解成一系列的小组件,最后再拼接集成起来,这就是他的整个步骤,这个步骤采用的是随着时间的进展而交错的线性序列,简单来说就是不同的功能可以同时刻进行分析,设计,编码和测试这一系列的过程,最后将其开发完成后的功能组装起来。

图片来源:https://www.guru99.com/what-is-incremental-model-in-sdlc-advantages-disadvantages.html
螺旋模型
螺旋模型是一种将瀑布模型和增量模型结合起来并加入了风险分析的产物。软件开发过程沿着螺旋线由内向外逐渐迭代,每转一圈就表示开发出一个更完善的新的软件版本。该模型将开发过程划分为沟通,指定计划,风险分析,实施工程,构造与发布和系统评估6个活动,如图所示。

图片来源:WiKi百科
快速原型开发方法
快速原型开发是利用原型辅助产品设计开发的一种新思想,简单来说,就是在做一个大的软件之前先做一个小软件,这个小软件也具有相同的完备的功能系统,但是这个系统只负责演示,且应该是比较简单的,但是通常也会有着用户界面等。
在这里比较一下螺旋模型和快速原型开发,二者都应用了迭代的思想,但是侧重点有着明显的不同,首先,螺旋模型更注重项目管理和风险管理,强调循序渐进;而快速原型开发更注重用户参与、快速构建原型和迅速反馈。其次螺旋模型明确强调风险管理,使其更适合大型项目或对风险敏感的项目;而原型开发方法更适合小型项目,尤其是那些需要快速验证概念或与用户互动频繁的项目。最后螺旋模型通常适用于大规模、复杂度高、风险敏感的项目;而原型开发更适用于对用户反馈要求较高、需求可能不稳定的项目。
如果硬要说开发上的差别,从我个人的理解角度上看:例如对于原型开发,我们更多的是按照需求开发了一个简陋的系统,这个系统的的功能已经基本包含了需求,而螺旋开发强调的迭代更多的是先将需求分解,在早期先开发一个框架,功能是不完善的,再逐渐的迭代过程中按照需求不断完善。
统一软件过程
统一软件过程是一个二维的软件开发模型,相比于瀑布模型和其他模型而言,他将时间轴和事件轴放在了一起,也就是说,在这个模型中,按照时间顺序推进,可以划分为初始阶段,细化阶段,构造阶段,交付阶段。在每个阶段都有一个目标,也就是里程碑,当我们完成了这个里程碑事件就表明了我们当前阶段的结束,可以进入了下一个阶段。但是我认为这个模型的灵活性高的地方则就体现在,他只是强调了目标而不是定义了每一个阶段必须做的事情。例如在细化阶段,我们更多的将重心放在了需求和分析设计这两项工作,但是并不代表我们就不能够进行实施测试以及部署软件的一些相关工作等等。他提供了一种开发的灵活性,以及若是在构造阶段,我们也可能需要不断重新的分析设计,以及更改需求等等,但是此时我们的阶段从时间轴上仍然属于构造阶段,因为此时我们的开发重心在实施测试方面。那么在这个阶段,不断地重新分析设计再构造模型这个过程就称作迭代,可能就产生了所谓地构造1,构造2,构造3等系列过程。

图片来源:https://www.researchgate.net/
下面简单地介绍一下各个时间阶段的目标,在初始阶段,目标是为系统建立业务用例和确定项目的边界。那么为了达成这个目标就需要构建用例,进行风险评估以及资金估计,同时建立里程碑事件以及它的ddl。细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划并淘汰项目中风险最高的元素,在这个阶段的主要工作就是需求分析和设计。再就是构造阶段,所有剩余的构件和应用程序功能被开发集成位产品,所有的功能都被详细地测试。最后的交付阶段的目的则就是将软件交付给用户群体。这时相当大的工作量消耗在开发面向用户的文档,培训用户,在初始产品使用时,支持用户并处理用户的反馈上。
参考教材: 《软件工程》 鄂大伟 主编
需要相关教材电子版联系:jiangdetutec@gmail.com

浙公网安备 33010602011771号