你不了解的软件开发过程

简介: 你不了解的软件开发过程

中国 IT 从业人员中对软件研发过程有系统认识的少之又少,甚至在工作中遇到的科班出身的研发同学同样不例外。相反,大家对于追求热点概念(例如:DDD,领域驱动设计)倒是不遗余力,满怀热情。

软件开发刚开始的时候,并没有很好的经验或思想来指导项目研发。从研发的各种名词中可以看出来,软件行业从建筑行业借鉴了许多经验。

  • 建筑行业涉及到不同角色协作:设计师、开发商(工人、电工和水暖工)、质量监理、等等。

软件工程类似的角色:产品经理、研发(后端、前端、客户端)、测试、QA

  • 建筑行业遵循的流程:把端到端的项目分成不同的阶段,每个流程阶段由不同角色负责

每个阶段赋予角色的做法,有利于充分利用成本高昂的人力资源。在借鉴的基础的产生了第一个标准的软件开发流程

事实上,如同力学三大定律为物理学奠基一样,瀑布模型在软件行业的地位同样不可动摇。虽然随着历史的车轮滚滚向前,软件研发方法论的研究重点从瀑布模型的 “流程”,过渡到以交付速度和成功率为目标的敏捷开发、持续集成、持续交付、持续部署。但研发过程的核心步骤从未改变:分析、设计、开发

然而,不幸的是,因为追求交付速度、成功率,国内研发不仅丢掉了瀑布模型,也丢掉了核心过程。太多的研发以敏捷为理论核武,把设计完全抛掉,更遑论分析。如果系统确实太过复杂,抑或领导要求,那就装模作样加入一个设计阶段,设计一个看起来能够跑的通的架构。一旦软件进入实现阶段,所有的设计文档就被雪藏起来吃灰。

重视开发多于设计,不知分析为何物。架构凭经验和感觉,就像无根之水,即使再美也经不起业务变化和迭代的侵蚀,最终走向腐朽。最后不得不亮出终极武器:重构(其实,是“重做”)。

意识到需要做分析、设计,到知道如何做分析设计,中间有着不小的鸿沟。软件开发不是玄学,有着系统的方法论,以及完善的表达工具。需求分析从业务开始,层层剥开,直至实现。如果把软件想象成建筑,那么各种图就是从某一个特定的视角(viewpoint)表达软件的设计图纸,因此RUP C4+1 称之为 View model 也大抵表达该含义吧。选择合适的图表述,把软件表述清楚也能体现出工程人员的软件设计能力。

各个层级的分析对象

各分析阶段用于表达的图

具体使用细节,不再使用例子详细描述,可以参考:

本文作者 : cyningsun

本文地址https://www.cyningsun.com/07-22-2020/software-development-methodology.html

版权声明 :本博客所有文章除特别声明外,均采用 CC BY-NC-ND 3.0 CN 许可协议。转载请注明出处!

目录
相关文章
|
3月前
|
前端开发 算法 安全
软件开发过程详解
【8月更文第20天】在当今数字化时代,软件开发已成为企业和组织获取竞争优势的关键。一个高效的软件开发过程不仅能够确保最终产品的质量,还能有效控制成本和时间。本文将详细介绍软件开发的各个阶段,包括需求分析、设计、编码与实现、测试与质量保证以及维护与升级,并通过实例帮助读者更好地理解这些概念。
376 0
|
1天前
|
敏捷开发 测试技术 持续交付
探索自动化测试在软件开发中的重要性
【10月更文挑战第21天】 在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将深入探讨自动化测试的概念、优势以及实施策略,旨在为软件开发团队提供有效的测试解决方案,从而提高软件的可靠性和性能。
2 0
|
1月前
|
安全 数据挖掘 测试技术
提升软件质量:探索高效测试策略
在软件开发过程中,测试是一个关键步骤,它决定了产品能否满足用户需求并保持高性能和安全性。本文将探讨几种有效的测试策略,包括自动化测试、性能测试和安全测试,以帮助开发团队提高软件质量。我们将分析每种方法的优势、实施步骤及面临的挑战,并提供实用的建议。
23 1
|
3月前
|
大数据 测试技术
自动化测试在软件开发中的重要性
【8月更文挑战第6天】自动化测试作为软件开发过程中不可或缺的一环,能够显著提高软件质量,缩短交付周期,降低整体成本。随着技术的不断发展,自动化测试在各类软件项目中的应用也必将越来越广泛和深入。合理规划和实施自动化测试,将成为软件开发团队提升竞争力的关键所在。
|
5月前
|
人工智能 安全 测试技术
现代软件测试方法及其在质量保证中的应用
在当今快节奏的软件开发环境中,软件测试作为确保产品质量的关键环节变得越发重要。本文探讨了现代软件测试方法的发展趋势及其在提升质量保证方面的应用。通过分析各种测试方法的优势和适用场景,可以帮助开发团队更有效地管理和提高软件产品的质量,以满足不断增长的用户需求。
61 3
|
5月前
|
敏捷开发 jenkins 测试技术
软件测试中的自动化与持续集成:提高开发效率和产品质量
在软件开发的生命周期中,测试阶段扮演着至关重要的角色。随着敏捷开发模式的普及,自动化测试和持续集成(CI)已成为确保软件质量和加快交付速度的关键策略。本文深入探讨了自动化测试和持续集成的概念、实施步骤及其对软件开发流程的影响。通过引用最新的行业研究和案例分析,文章揭示了这些技术如何帮助团队减少人为错误,缩短反馈循环,并最终提升产品的稳定性和用户体验。
|
6月前
|
Java 测试技术 开发者
深入理解与应用单元测试:软件质量的守护者
【4月更文挑战第30天】 在现代软件开发过程中,单元测试作为保障代码健康的重要环节,其地位日益凸显。本文将探讨单元测试的核心概念、实施单元测试的重要性以及如何高效地设计并执行单元测试。通过实例分析,我们将揭示单元测试在确保软件产品质量和加速开发周期中的关键作用。
|
6月前
|
机器学习/深度学习 人工智能 大数据
自动化测试在软件开发中的重要性与应用
自动化测试是软件开发过程中不可或缺的一环,它通过编写脚本和工具来执行测试用例,提高了软件测试的效率和准确性。本文将探讨自动化测试在软件开发中的重要性、应用场景以及未来发展方向。
54 0
|
6月前
|
Java 测试技术 持续交付
自动化测试在软件开发中的重要性和应用
随着软件开发的迅速发展,自动化测试技术在软件开发生命周期中发挥着越来越重要的作用。本文将探讨自动化测试在软件开发中的重要性和应用,并介绍了一些常见的自动化测试工具和最佳实践。
|
6月前
|
测试技术 数据库
【软件测试学习】—软件质量需求(四)
【软件测试学习】—软件质量需求(四)