1软件的生命周期
1.1软件生命周期的含义
所谓软件生命周期,也被成为软件生存周期,是指软件来产生到生命终结的整个过程,在软件的生命周期中,包含很多的阶段,比如问题定义、总体描述、系统设计、调试与测试等,这些阶段的划分依据为时间段,通过逐步推进的方式来保证软件的正常运行。此外,为了提高软件的质量,在不同的阶段中,都需要开展审查工作、定义工作等,同时,还要建立相应的文档保存下来,以便于交流和备查。不过,随着科学技术的发展,在进行软件设计时直接面向对象,这样一来,在生命周期的每个子周期中,都具有固定的任务,在执行任务的过程中会形成相关的资料,上一个周期的资料作为下一个周期任务的依据。基于此,在进行软件开发的过程中,软件的生命周期不再局限于编码阶段,而是整个开发的过程。在软件生命周期中,当下一个阶段的任务想展开时,必须要保证上一个阶段的任务已经圆满的完成,因此,对于任何一个周期阶段的工作来说,工作的模式都是“活动——结果——审核——再活动——直至结果正确”。
1.2软件生命周期的阶段
任何的事物都具有一定的生命周期,都要经历孕育、诞生、成长、成熟、衰亡的阶段,软件也属于一种事物,同样具有生命周期,也需要经历多个发展的阶段,最终走向衰亡,通常来说,软件的生命周期主要包含六个阶段:第一阶段:问题的定义与规划,在进行软件开发之前,需要与用户进行深入的交流,明确用户利用软件解决的问题类型,从而根据问题的类型来确定软件开发的目标与范围,最终,用户同意之后,才能进行下一阶段的工作;第二阶段,需求分析,上一阶段工作的主要目的就是确定软件开发的可行性,当具有较强的可行性之后,就需要对分析软件所需具备的各项功能,要保证分析的详细性,在软件生命周期的所有阶段中,需求分析阶段是一个比较重要的阶段,对下面阶段起着基础性的作用,为了更好的满足软件开发过程中不断变化的实际,需求分析阶段要制定需求变更计划,这样才能保证软件开发的顺利进行;第三阶段,软件设计,需求分析完成之后,软件所具备的的各项功能就确定下来,以此为依据,对整个软件系统进行设计,一般来说,在软件设计阶段,包含两种设计,一种为总体设计,一种为详细设计,通过合理的软件设计,为程序编码打下良好的基础;第四阶段,程序编码,软件设计完成之后,计算机是无法直接运行的,只有通过程序编码工作,才能将软件转化为计算机可识别的程序代码,在进行程序编码工作时,要严格的按照编写规范来进行,这样开发出来的软件才能具有良好的性能,同时也便于维护;第五阶段,软件测试,进行软件测试的目的是检查软件设计是否存在问题,如果有,及时的进行改正,软件测试包含三个阶段,分别为单元测试、组装测试、系统测试,测试时,可以采取白盒测试或者黑盒测试;第六阶段,运行维护,软件经过测试保证无任何问题之后,就会投入使用,在软件运行的过程中,要对其运行状态进行维护,以便于延长软件的使用寿命,同时,更好的满足用户的要求。
2软件开发范式类型
2.1瀑布模型
在软件开发范式类型中,瀑布模型是最为经典的模型,早在1970年,该模型就已经被提出,随后,瀑布模型得到了广泛的应用,在进行软件开发时,该模型起到了很重要的作用。对于软件的生命周期,瀑布模型将其划分为六个阶段,分别为制定计划、需求分析、软件设计、程序编写、软件测试以及运行维护,对于这六个阶段的前后衔接顺序,瀑布模型进行了严格的规定,就好似瀑布流水一般,自上而上的降落,这也是瀑布模型名字的由来。在利用瀑布模型开发软件时,采取的方式为线性方式,也就是说,在进行当前阶段的工作时,上一阶段的工作结果也会被接受,不过,在接受时需要进行验证,只有验证通过之后,当前阶段的输入工作才会开始,如果结果未通过验证,需要返回到上一阶段,将不符合要求的地方进行合理的修改。不过,随着软件开发技术的发展,瀑布模型的理想化线性过程已经无法满足软件开发的要求,其落后的地方主要体现在三个方面,一是各个阶段的划分过于固定,工作量也比较大;二是软件开发的过程中,用户无法看见开发的成果,只有全部阶段的开发完成之后,用户才能看见,这使得开发过程中蕴含的风险过大,很容易发生用户不满意的情况;三是无法及时的发现早期存在的开发错误。
2.2螺旋模型
螺旋模型是在1988年出现的,由BarryBoehm发表,螺旋模型建立在瀑布模型及快速原型模型的基础上,通过二者的有效结合,将二者的优点集于一身,同时,在螺旋模型中,还增加了风险分析,这是其他模型都不具备的,因此,在一些大型的,比较复杂的系统中,实行软件开发时,可以利用螺旋模型。在螺旋模型中,拥有四个象限,不同的象限具有不同的功能,沿着螺线进行若干次迭代。四个象限为制定计划象限,主要完成软件开发目标确定、实施方案制定等工作;风险分析象限,分析和评估方案中存在的风险,并考虑识别风险及消除风险的措施;实施工程象限,实施软件开发和验证;客户评估象限,客户针对软件开发提出相关的建议和意见,保证软件开发的正确性。通过螺旋模型,软件开发的质量可以得到有效的提高,不过螺旋模型尚还存在一定的缺陷,模型具有风险分析的功能,在执行风险分析的过程中,需要花费一定的成本,如果成本过高,就会使得软件开发的利润受到影响,因此,只有大型系统才能应用此种模型,限制了应用范围的扩大。
2.3增量模型
增量模型又被称为演化模型,是一层一层建造起来的。在增量模型中,包含多个增量构件,每个构件是由多种相互作用的模块所形成的提供特定功能的代码片段工程。在增量模型的各个阶段中,用户可以直接查看每个阶段的开发成果,开发人员在交付软件开发产品时,并不交付整个产品,而是将增量构件分别交付。实际上,用户的需求是不断变化的,利用增量模型进行软件开发可以比较好的适应用户实际的需求,降低了软件开发过程中所具备的风险。然而,在利用增量模型开发软件时,还是会存在着一定的缺陷,一是增量模型中包含大量的增量构件,当构件开发完成时需要并入到软件的总结构中,在并入的过程中,必须要保证软件原有的系统不被破坏,因此,并入的难度比较大;二是在实际软件开发的过程中,软件开发过程比较不易控制,模型很容易发生退化。
2.4喷泉模型
喷泉模型,又被称为面向对象的生存期模型,与传统的结构化生存期相比,喷泉模型中所蕴含的增量比较多,同时,所具有的迭代性质更加的优化,喷泉模型中具备五个阶段,分别为分析、设计、实现、维护以及演化,在各个阶段中,可以实现相互重叠及多次反复,而且,利用喷泉模型开发软件时,软件的整个生命周期中还可以嵌入子生存期。喷泉模型之所以取名为“喷泉”,利用的是喷泉的特点,喷泉喷出来的水在落下时,可以落在中间,也可以落在底部,喷泉模型的命名就是以此为依据,并具备喷泉的此项特点。在喷泉模型中,各个阶段的界限比较模糊,因此,并没有严格意义上的前后阶段的承接顺序,各个阶段的开发与设计工作可以同时进行,这使得软件开发的时间大大缩短,不过,在软件开发的过程中,所需要用到的设计人员数量比较多,管理起来比较困难。
2.5智能模型
在智能模型中,拥有专家系统,并且在建立的过程中,充分的结合了瀑布模型的优点,通过二者的结合,软件开发的质量得到了显著的提高。在实际的应用中,基于规则的系统应用智能模型比较多,在进行软件开发时,具有一定的系统规格。在一些特定的领域中,软件开发会遇到大量的专业知识,由于开发人员并非专业人员,就会导致开发受到一定的限制,而智能模型中的专家系统可以为开发人员提供指导及帮助,从而顺利的完成软件开发工作。
3软件开发范式选用原则
3.1软件架构设计有利性原则
软件开发并不是盲目进行的,而是要根据用户的具体需求,进行有针对性的设计,因此,在选择软件开发范式模型时,就需要充分的考虑软件的架构,只有有利于软件架构设计的模型才是最为合理的选择。软件架构设计是软件开发中比较重要的部分,架构设计的合理才能保证软件功能的合理,因此,一定要合理的选择软件开发范式,提高软件架构设计的科学性。
3.2风险控制原则
软件开发的最终目的是满足用户的所有需求,因此,软件开发与设计的基础就是用户要求,由于软件开发需要一定的周期,在这个周期中,用户的需求存在发生变化的可能,这时,软件开发过程就会存在一定的风险,需要对风险进行合理的控制,在选择软件开发范式时,如果模型选择的合理,就可以对风险进行良好的控制,因此,选择模型时要充分的考虑风险的控制因素。
3.3软件的可维护性原则
软件在运行的过程中,用户的需求可能会发生变化,或者软件发生运行故障,这都需要软件能够具备可修改及可维护性。在选用软件开发范式时,要根据实际软件的需求,充分的考虑软件运行后的维护工作,科学的选择相应的软件开发范式,保证最终开发出来的软件具有较高的可维护性,从而有效地提升软件运行的效率以及使用寿命。随着软件开发范式的发展,当前比较常见的软件开发范式主要有五种,分别为瀑布模型、螺旋模型、增量模型、喷泉模型、智能模型,不过,除了提及的这几种之外,还有许多其他的范式类型。在进行软件开发时,范式类型的选择非常重要,合理的选用能够有效地提升软件开发的质量,提高软件的运行效率,延长软件的使用寿命。
作者:张经瑜 单位:上海核工程研究设计院