软件开发流程是时候要改变了

上个世纪四五十年代计算机诞生之初,因为采用机器码编制程序,所以并不存在独立的软件概念。1947年,冯诺依曼首先提出用流程描述计算机的运行过程,人们才意识到程序设计是不同于硬件研制的另一项工作。20世纪70年代开始,随着信息技术的迅速发展,以及人们对于软件的需求变大,“工程化”思维开始进入软件开发流程。至此,软件生产走向规模化。

那么,软件开发流程是怎样的?这些年,软件开发流程发生了哪些变化?数字时代下,数字技术的发展和迭代打破了千行百业的生产范式,面对这些变化,软件开发流程又会经历什么呢?

一、常见的软件开发流程

1、需求评估

任何项目的第一步都是清楚地确定要解决的需求。对于大型项目,这可能涉及市场研究和与利益相关者会面。一个较小的项目可能只需要列出必备功能。

这是该过程中最重要的一步。如果没有清楚地了解解决问题所需的条件,就很难设计出合适的解决方案。对产品有一个清晰的愿景也可以帮助项目保持在正轨上。往往开始设计项目时,开发者可能会很想添加一些实际不需要但看上去需要的功能。这称为范围蔓延,它可能会使项目脱轨。

2、设计

花时间设计软件将会使项目运行得更顺畅。这一步类似于写论文之前写大纲。它有助于组织开发者的想法。而在数字化转型的大背景下,随着企业软件开发需求的激增,很多IT技术团队疲于交付,往往并没有进行架构设计就直接进入下一步编码了。

3、 编码

通过编写代码来创建软件。在明确定义项目需求并概述设计之后,这一步应该很简单——至少在理论上是这样。而实际上,这个阶段可能会出现很多问题,另开发者苦不堪言的996、007、祖传代码“屎山”也多半拜它所赐。

4、 测试

编写代码后,必须对其进行测试。需要验证代码是否按预期工作并满足其旨在满足的需求。在较小的项目中,此步骤可能相当简单,主要涉及调试软件。在较大的项目中,这可能涉及与焦点小组一起测试软件,以改进软件的设计和要求。

此步骤的顺序可能会有所不同。例如,测试驱动开发首先创建一个脚本来测试软件。当它通过测试时,编码被认为是完整的。相反,如果使用迭代设计方法,测试将被集成到几个设计阶段。

5、实施

一旦软件通过测试,就可以部署了。在这个阶段,软件应该功能齐全,可以发布和/或使用。大型项目可能会分阶段发布,称为交错发布。

当软件交到用户手中时,他们经常会发现在测试过程中没有发现的问题和错误。交错发布使对这些问题的响应变得易于管理。

6、维护

维护步骤是另一个关键阶段。一旦使用该软件,它可能无法完全满足其设计的需求,可能会发布新功能,或者可能会发现新的错误。所有这些都需要监控和修改软件。

二、软件开发方法:从瀑布式、敏捷到DevOps

上述线性的软件开发步骤是目前比较常规的开发流程,而在软件开发发展的过程中,基于不同的需求,也衍生了许多不同的方法来处理软件开发。行业内讨论度较高的包括瀑布式、敏捷开发和DevOps开发运维一体化。

1、师从工业的瀑布式开发

瀑布式开发是管理项目的传统方式,师从福特的 “流水线” 概念,大多数观点认为,传统瀑布式开发有不少于 30 年的历史。温斯顿?罗伊斯在论文《管理大型软件系统开发》中提出,将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。也就是我们上文中分享的常见的软件开发流程。

这种方法适用于目标明确、需求易于理解的小型软件项目。因为过程简单明了,每一步都有明确的目标,所以很容易管理。

而当项目复杂或需求不明确时,瀑布方法则无法很好地工作。使用这种方法可能很难更改软件的设计。由于这些步骤是按顺序执行的,因此很难返回一个步骤,这使得难以响应出现的问题或调整设计。有观点认为,瀑布式的主要问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变化难以调整,代价高昂。

因此,在需求不明并且在项目进行过程中可能发生变化的情况下,瀑布式基本是不可行的

2、向客户倾斜的敏捷开发

敏捷旨在解决瀑布方法的许多缺点。上个世纪 90 年代,一批轻量的软件工程方法和框架相继诞生,相对传统软件工程,都遵循演进和迭代的模型,过程更加轻量灵活,敏捷开发应运而生。

敏捷开发过程不是从一个步骤移动到下一步直到完成,而是循环的。项目是在一系列开发周期中逐步创建的。测试是该过程的核心,每个周期都包含从测试中吸取的教训。这种循环方法将重新设计构建到软件开发过程中。

敏捷的好处是它允许项目发展以解决测试期间发现的问题。这是以用户为中心的设计的好方法。尽管开发过程更加复杂,但对于大型项目来说也更具成本效益。问题出现时可以快速解决,并且更容易更改设计以响应出现的问题。

3、DevOps开发运维一体化,是时候改变的软件开发流程

显然,敏捷并没有将 “运维” 作为关注的重点。实际上,光有系统开发是不够的,开发完的系统必须即时顺利部署,并连续稳定运行才能够实现价值。而传统上,这部分是由运维负责的。

《阿里巴巴 DevOps 实践》认为,从价值的角度,开发加运维才构成相对完整的 IT 价值链。而 DevOps 的诞生,正是为了解决 IT 价值链的最突出问题 —— 开发和运维之间的问题。根据微软云计算 Azure,DevOps 的独特之处在于开发、IT 运营、质量工程和安全团队协同工作,在发布新产品、版本或更新所涉及的所有任务中创造效率。其中,DevOps 的主要表现形式包括持续集成、持续交付和连续部署。

除了SoFlu 软件机器人,帮助 DevOps 实现组织落地的工具不在少数,其中还包括开源的 CI/CD 服务器 Jenkins、容器平台 Docker 等等。

结语

从瀑布式开发、到敏捷,再到目前最流行的 DevOps,不难发现,相对传统的软件开发模式,软件开发流程正在向自动化、便捷化和智能化的方向发展。软件开发流程是时候要改变了,因为这样的改变可以大大加快开发效率、降低开发门槛,让未来的开发流程呈现出全然不同的样貌,帮助更多的企业在软件研发上实现降本增效提质,推进数字化转型进程。

现在可申请免费试用 SoFlu 软件机器人 30 天,申请链接:

http://feisuanyz.mikecrm.com/9dW4GeZ

了解更多软件开发信息,可添加微信: feisuan123,备注 “加群”,入群讨论

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

上一篇 2022年10月27日
下一篇 2022年10月27日

相关推荐