软件开发过程

软件开发过程或软件过程,又称软件开发生命周期,其包括软件的需求定义与分析、设计、实现、测试、交付和维护等几个阶段。软件过程为软件的开发定义了一个框架,该框架创建了一个环境,将软件开发方法、自动化工具和质量管理等紧密结合在一起,方便采用最新的技术和方法、生成各种工作产品(模型、文档、 告、表格等)、进行产品管理和软件项目管理,等等。在软件工程的范畴里,软件开发过程更多体现的是软件生命周期,适配不同软件形态和软件开发方法的软件生命周期则被总结抽象为不同类型的软件生命周期模型,如早期的瀑布模型、螺旋模型,以及近些年开始兴起的敏捷和DevOps,一系列的软件开发过程模型和软件生命周期模型被总结抽象固化下来。

  敏捷的价值体现在:及时响应需求变化,强调开发个体之间以及开发与客户之间的交互,快速交付可以工作的软件而不是面面俱到的文档[1]。DevOps的价值体现在:维护与开发统一节奏,将开发交付的软件或版本及时部署获得回 。敏捷侧重于开发与客户间的配合,DevOps则注重开发与运维间的无缝衔接。二者的结合非常适用于当今的互联 企业:以客户需求为导向,强调开发过程中端到端的协作,消除开发、测试、运维之间的部门墙,降低内耗,降低成本,快速回 [2]。

  不论是敏捷还是DevOps,其优点是轻量级、快速响应需求变化、快速交付,但是不够系统。而传统瀑布型开发模型的优点在于系统性和可预见性,系统性导致了其重量级开发方式,过程中需要输出大量文档。这样固定的流程式开发,带来的一个很大缺点即是难以快速响应多变的客户需求。有效的做法是将具有系统性和预见性的软件架构部件化,并嵌套到敏捷开发的每次轻量级的迭代中,使软件工程兼具软件架构的预见性和敏捷开发的适应性,根据项目的大小来调整嵌套的程度,根据每次迭代项目的大小来选择不同的架构,实现敏捷开发与软件架构融合的双赢。

  软件是智力密集型创新团队中个体认知过程的直接产品,因此,许多用于软件过程管理的方法和技术旨在促进从事密切合作、智力密集型工作的组织成员之间的沟通和协调。尤其在当前越来越多的互联 应用和服务情形下,互联 开发模式,是针对互联 本质上是一个“服务”而发展起来的。因为是服务而不是产品,所以该服务最高的技术标准和评价标准是应对快速变化的能力。因此,在互联 开发模式下,开发人员更倾向于采用自动化的开发工具和方法来提高效率,如自动化测试、构建、集成、部署等;重视原型迭代,并且将开发和运营视为一个整体,不断完善互联 服务,让开发和运维在同一个生命周期里生长。这就是为何敏捷、DevOps等在互联 模式下更受欢迎的原因。

  即便如此,我们依然关注到,由于软件所具有的复杂性、易变性、不可见性等特点,使得软件开发面临各种各样的困难。诸如,软件是一种无形的可塑的产品,在大多数情况下,软件开发团队需要生成和修改共享文档,而软件开发往往是作为一个学习的过程,知识的获得和信息的形成是在项目中进行的,因此,需要关注软件开发组织的有效性。又如,软件产品的复杂性,使得软件需求随着产品需求范围、知识的获得而改变;软件开发人员使用的过程、方法和工具也在持续不断地更新。再如,软件的无形性,使得目标量化和软件质量度量非常困难

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年4月10日
下一篇 2020年4月10日

相关推荐