之前,小编在《从瀑布式到 DevOps,开发流程经历了什么?》一文中,梳理了软件开发流程的大致演变过程。其实,在早期软件开发还是“小作坊”作业的时候,没有形成所谓的开发流程方法论,开发特别倚重个人能力,大多都杂乱无章,所以效率也不高。20 世纪 70 年代,从瀑布式开发开始,开发流程有了一套自己的方法论。一路发展演进,先后涌现了敏捷和 DevOps 等新兴理念。可以看出的是,软件开发规模越来越大,要求的速度却越来越快。01 开发流程正在“提效”路上一去不回头上世纪50年代,一种项目管理三角(也称的三重约束、铁三角或项目三角)的模型开始被人们广泛使用。三角模型被用来约束项目的发展过程,它认为:质量工作是由该项目的预算、时间和功能来限制;项目经理可以约束之间的平衡;一个约束的变化需要其他约束的变化来补偿,否则质量将受到影响。例如,可以通过增加预算或缩小范围来更快地完成项目。同样,增加范围可能需要相应增加预算和进度。削减预算而不调整时间表或范围会导致质量下降。也就是说,好、快、便宜(范围、时间和成本),只能选择两个。在早期,瀑布式开发与三角模型相关联,由此表明:软件开发可以由应用程序创建或构建所花费的时间长度来定义。然而,在当时,创建、测试和部署软件通常需要很长时间,因为在开发过程中没有制衡。结果是软件质量不佳,存在缺陷和错误以及未满足的时间表。因此,瀑布式开发的重点是软件项目的长期计划。这种思维方式来自制造和工程,其中线性过程是有意义的——你先建墙,再建屋顶。同样,软件开发问题被视为可以通过计划解决的问题。从开始到结束,开发过程都由路线图明确定义,路线图将导致产品的最终交付。但是,瀑布式被认为是对软件开发有害的,因为通常直到项目周期的最后阶段才能确定其价值,并且在许多情况下项目都失败了。此外,客户直到项目结束才能看到可运行的软件。事情在敏捷时代发生了改变。敏捷采取了一种不同的方法,不再规划整个项目,承诺预计日期,并对计划负责。而是假设并拥抱不确定性,改变被认为是满足客户需求的一种方式。它定义了以下12条原则:(引用)1.我们的首要任务是通过早期和持续交付有价值的软件来满足客户。2. 欢迎不断变化的需求,即使是在开发后期。3. 敏捷流程利用变化来获得客户的竞争优势。4. 频繁地交付可工作的软件,从几周到几个月不等,优先考虑较短的时间范围。5.业务人员和开发人员必须在整个项目中每天一起工作。6.围绕积极的个人建立项目。7. 为他们提供所需的环境和支持,并相信他们会完成工作。8. 向开发团队和在开发团队内部传达信息最有效的方法是面对面交谈。9. 工作软件是进度的主要衡量标准。10. 敏捷流程促进可持续发展。赞助商、开发者和用户应该能够无限期地保持恒定的步伐。11、对卓越技术和良好设计的持续关注可提高敏捷性。12、团队定期反思如何提高效率,然后相应地调整和调整其行为。详情可查看敏捷宣言网页:https://agilemanifesto.org/principles.html从敏捷开始,短时间和高效率成为开发理念中的一个重点。而 DevOps 则更进一步。某种程度上,DevOps 是一种文化、一种心态、一种软件开发或基础架构的方式,以及一种构建和部署软件和应用程序的方式。其中的精髓是:开发和运维之间没有墙;它们同时工作,没有孤岛。DevOps 正是基于精益和敏捷两个实践领域。虽然敏捷和 DevOps 有很多不同之处,但它们都寻求解决复杂问题、提高质量并围绕软件设计进行创新。与此同时,DevOps 加快了开发和运维人员之间的工作,还减少了Dev 和 Ops 之间的分工。这是因为DevOps 要求持续部署、交付和集成。团队合作是一体的;问题和故障由开发、运维和其他实体共同拥有,例如质量保证(QA)、测试、自动化等。敏捷与 DevOps 的区别总的来说,无论是敏捷还是DevOps,都旨在帮助团队更快、更高效地工作,更快地交付高质量产品和提高客户满意度。02 天下武功唯快不破!在敏捷时代,一批轻量的软件工程方法和框架相继诞生,它们共同的特点是,相对传统软件工程,都遵循演进和迭代的模型,过程更加轻量灵活,以 Scrum 和极限编程 (ExtremeProgramming) 为代表。早期的敏捷专注的是研发交付阶段,站在业务的角度,它的目标是帮助产品和研发团队提升敏捷响应能力。但在 DevOps 时代,IT 不仅要保证产品的开发和交付,系统部署和运行同样重要 。在敏捷开发的理念之上,又补上了运维的部分。目前,DevOps 仍处于高速发展阶段。南京大学软件研发效能实验室发布的DevOps ·云原生2021年度中国调查报告》显示,2021年国内企业的 DevOps 工具的普及程度较2019年有明显上升趋势。因此,为了达到更快更好的开发目标,不断有新式的开发工具涌现出来。一方面,不同工具在各领域全面开花,一起助推 DevOps 的落地。比如JIRA、Trello等敏捷开发工具,Maven、NPM、Gradle等持续交付工具,Zabbix、Elastic、Grafana、Kafka、Ansible、Logstash、Prometheus等自动运维工具等等。另一方面,一些集大成的工具也同时应用自动化、AI等技术,以更好地实现功能。其中,飞算SoFlu 全自动软件工程平台便是其中的一个代表。飞算SoFlu是近年发布的新一代 JAVA 开发工具,截至目前已在包括医疗、金融、制造、零售等在内的多个行业使用。全自动平台可以通过降低准入门槛、人力成本和沟通成本,来极大提升企业的开发效率。以工具为核心,制订好管理流程,利用科学的管理方法,让程序员在操作工具时有规可循,从而降低管理风险和沟通风险。以某大型国有企业开发的“百万人使用级别的电商平台”项目为例。此前,该企业组建数十人团队完成开发,上线后却在功能性、稳定性、安全性等方面问题不断,且无法在短期内修复。在使用飞算 SoFlu 全自动软件工程平台后,该企业仅投入 6 位研发人员 45 天就高效完成开发、测试、联调、上线全流程任务。具体来说,单就Excel表格文件解析这个高频开发功能,这在之前,即使是一个经验丰富的程序员,也至少需要花费半天时间。但是飞算能够将时间压缩到以分钟计算:1. 编程逻辑流程化,十分钟完成开发,完全不用敲代码,拖拉拽即可完成后端开发。2. 丰富的组件支持,涵盖数据库、redis、api、mongoDB、子流程组件等,支持循环、条件判断、函数调用,通过拖拉拽的方式以及参数配置实现等同编写复杂代码的业务逻辑。3.函数齐全,各种API函数应有尽有,快速解决业务及功能上的各种需求。 |