当前位置: 首页 > news >正文

再谈“敏捷”与“瀑布”在产品开发过程中的反思

作为一家专注于软件开发的公司《智创有术》,我们致力于为客户提供创新、高效和可靠的解决方案。通过多年的经验和专业知识,我们已经在行业内建立了良好的声誉,并赢得了客户的信任和支持。

支持各种源码,网站搭建,APP,小程序,小游戏所有开发!

我们的团队由一群充满激情和技术专长的专业人士组成,他们不断追求卓越,并始终保持对新技术的敏锐洞察力。我们深知每个项目都是独一无二的,因此我们采用个性化的方法来满足客户的需求,确保项目的成功实施。

在我们的全网营销中,我们将利用各种数字渠道和策略来提高品牌知名度、吸引潜在客户并促进销售增长。无论是通过搜索引擎优化(SEO)、社交媒体营销还是内容营销,我们都将努力为您提供最佳的网络营销解决方案。

成本、时间和质量是项目管理的铁三角,项目管理的核心目标是平衡好这三者之间的关系,尽量确保软件项目能够在可控的成本范围之内,符合质量要求地按期交付。

这里的质量我觉得包含了两方面:

  1. 功能的完成度与稳定性;
  2. 用户需求的满足程度。

在一些大型项目的交付过程中,面对交付过程中频繁变化的需求,按照既定合同内的需求以瀑布模式开发,虽然能发挥瀑布开发的优势,但在用户需求满意度方面肯定会有所损失,更严重的会导致返工改造、验收不通过。

相对“瀑布”模式的重,“敏捷开发”是一种应对频繁需求变化、快速响应的轻量开发模式,在以“瀑布模式”开发的项目中,将“敏捷”的理念引入,发挥各自优势,会对整个项目顺利的交付起到积极的作用。

本篇先讲下“敏捷开发”与“瀑布开发”的工作流程、适用场景、各自优缺点,然后将二者融合,谈一下在实际项目交付过程中的应用思考。

一、瀑布模式

瀑布模式是一种经典的线性开发模式,在传统的软件项目交付过程中被大量使用。

瀑布模式的整个项目周期是确定的,按照项目开发的时间可以分为规划阶段、需求分析阶段、软件设计阶段、编码阶段、测试验收阶段、上线阶段运维阶段等若干里程碑。

下面这张图生动地描述了瀑布开发的模式:

客户需要一辆代步工具,需要按照事先规划的方案,经过漫长的研发,最终给客户交付一辆汽车。

B端究竟需要什么样的产品经理?

B端产品经理都是以提升供应侧的工作效率为目的,所以B端需求主要是以业务问题为导向。 这个是B端产品比较重要的一点,B端产品是服务于一个主体 ...

查看详情 >

前期的方案是足够好,但在此过程中客户无法尽早体验产品,最终交付后产品可能不是客户实际想要的,从这个角度看风险很高。

一个典型的瀑布模式的产品研发流程

适用场景:

瀑布模式比较适合需求比较清晰的项目开发,比如签订合同的项目制交付,一般情况下合同内的需求都是确定的,乙方按照合同内的需求,按时交付即可。

理论上需求和设计方案确定后,在开发过程中需要严格执行,需求变动需要执行变更流程,或者另签一个补充协议。

优点

  1. 由于需求相对比较明确,在前期可以对系统整体架构、扩展性进行整体、全面的设计;
  2. 团队的目标相对明确,按照里程碑节点顺序推进,向目标前进的效率会比较高,易于管理和监督;
  3. 每个阶段投入的人力不同,不同岗位的人员可以分批投入项目。

缺点

  • 对业务需求的快速变化,灵活性不足,尤其是对于处于摸索阶段的新业务,这种变化是不可避免。
  • 比如系统试运行、业务推进过程中会产生很多新的需求,我们之前按照合同内需求规划的设计可能要推翻或者有较大的修改,尤其在项目中后期,很可能将会导致项目延期,超出合同成本预算。
  • 由于产品从研发到上线是一个线性的推进过程,在此期间客户没有真正看到过、体验过产品,最后上线,客户很可能对最终的产品不满意,重新改造的成本较高。

二、敏捷模式

敏捷模式是针对瀑布模式太重提出的一种小步迭代、快速反馈的开发模式,能有效的提高软件的开发效率,应对市场的快速变化。

下面这张图生动地描述了瀑布开发的模式。

客户想要一辆代步工具,为了快速满足可以出行的需求,按照敏捷的理念会先提供滑板、然后通过快速迭代逐步提供自行车、摩托车、小汽车。

在此过程中将产品快速投入市场,根据市场反馈,调整方向,虽然一开始提供的不是最优解决方案,但是一直在正确的方向上前进,不至于跑偏。

敏捷的核心关键词包括快速响应、迭代、增量交付、渐进式、面对面沟通、快速反馈与调整等。

敏捷项目管理通常采用Scrum敏捷框架进行实施,以固定时间盒的方式快速迭代,在实践中比较常用的是双周迭代的模式,在一个冲刺内完成增量开发的交付。

“增量开发主要是一块接着一块地构建一个系统。一部分功能先被开发出来,然后另一部分功能被加入前一部分功能,以此类推。”

《敏捷宣言》中的价值观:

个体和互动高于流程和工具;

工作的软件高于详尽的文档;

客户合作高于合同谈判;

响应变化高于遵循计划。

Scrum作为一个轻量级的团队协同工作方式,一个冲刺从开始准备到完成主要由以下几个关键活动组成:

1. 需求梳理,挑选需求并编写需求说明

一般由产品经理在冲刺开始之前从Product Backlog(类似需求池,Scrum中叫Product Backlog)中按照优先级挑选在本次冲刺(Sprint)内需求(这些需求可能为特性、用户故事、缺陷等,在Scrum中被称为PBI)。

产品负责人和开发团队要对当前冲刺准备实现的需求及冲刺目标达成一致意见,在此期间产品负责人需要完成产品方案、编写需求说明,并与需求方确认。

2. 需求澄清会(冲刺计划)

产品经理将当前Sprint中的需求向研发团队澄清,在澄清的过程中可以根据实际情况对需求的范围、方案进行调整。

每个需求澄清完毕,具体模块的研发人员可对需求的进行工作量的估算(故事点、规划扑克牌具体的估算方法这里不再具体说明)。

如估算的工作量过高,研发人员需要说明原因,最终会议结束确定本冲刺内交付范围,正式开启冲刺。

3. 任务分解

一般需求澄清回后,开发人员会将每个需要完成的需求(特性)分解成一组任务,这组任务及相关的PBI组成了“冲刺列表”,开发团队给出完成每项任务所需工作量的估算值(通常以小时计)。

4. 冲刺执行(开发实施与测试)

在团队冲刺的内容达成一致意见后,研发团队需要根据产品方案进行技术方案的设计,执行为了完成特性而所需的所有任务开发的工作。

5. 每日例会

在冲刺开始的每一天,研发团队会每天早上进行站会(通常不会超过15分钟)。

团队成员每天轮流回答下面三个问题,昨天我完成了什么?今天计划做什么工作?有什么障碍让我无法取得进展?

通过每日站会,每个人都能了解全局,知道发生了什么,冲刺目标的进展如何,是否需要帮助团队解决一些问题,实现一个冲刺内快速、流动的工作流。

6. 冲刺评审

冲刺周期的后期,团队给产品负责人和其他业务需求干系人、客户演示完成的成果,让各方了解已经交付的增量,检视和调整产品,同时业务互相交流,收集反馈并及时调整。

7. 冲刺回顾会

冲刺回顾会是检视并调整过程的时机,开发团队、产品负责人、ScrumMaste一起讨论,在上个冲刺中哪些过程是需要改进的。

需要注意的是冲刺回顾会不是吐槽、追责的会议,目的是帮助Scrum团队成长、下一个冲刺能够持续的改进。

适用场景

敏捷项目管理适用于业务需求变化频繁、比较适合创新型项目、市场需求变化快速的项目,主打一个“快速迭代”,在一些互联网公司、自研产品的公司比较常用。

优点

能够快速响应变化、提高客户满意度、减少项目风险,同时还能提高团队协作能力、加快产品上市时间。

缺点

对于一些成熟业务,由于追求快速响应,前期在系统架构设计上并不一定那么完美,另外对团队协作能力、敏捷理念的认可度要求比较高。

三、在项目交付过程中的思考

在实际的项目交付过程中甲乙双方立场的不一样,甲方期望乙方能在合同周期内尽可能多的满足需求,解决更多问题,而乙方期望能控制成本,如期交付,迫于甲方交付验收的压力,又不得不接受频繁的需求变更。

从实际经验来看,有如下原因将导致成本、质量、时间陷入三难的境地。

外部原因:

  • 甲方业务比较新,存在边用边发现新问题的情况,合同外的、变更需求时有发生;
  • 甲方不配合,如不配合调研、系统使用不积极、不提供数据等等;
  • 实施过程中非研发类工作耗费太多时间,如数据处理、甲方汇报文件、配合业务开展等临时性工作安排、业务代运营等。

内部原因:

  1. 合同签订前销售的对需求的过渡承诺,初设方案的不完善;
  2. 系统规划设计阶段对整体应用架构、技术架构设计的不合理;
  3. 需求分析不合格,设计出来的系统未能彻底解决甲方的问题,导致重复返工、打补丁;
  4. 缺乏有效的项目管理流程,多人协作变得混乱失控,缺少风险跟踪,研发过程变得脆弱,导致研发效率和质量不高。

原因很多,本篇仅从项目管理的角度探讨,如何平衡成本、质量、时间的矛盾,达到甲乙双方共赢的目的。

有一种方式我叫做“大瀑布下的小敏捷”,将“敏捷开发”与“瀑布开发”相结合,发挥各自的优势,是一个实际可用的手段。

“大瀑布下的小敏捷”既能够按照“瀑布模式”的里程碑节点,交付目标相对明确,又能发挥“敏捷开发”快速响应需求的变化、持续交付的优势,提升客户满意度。

在大的项目周期内有明确的启动、需求调研、系统设计、编码开发、上线交付的里程碑节点,整体上看是瀑布模式的开发。

对于实际交付过程中频繁变更的新需求和合同内的老需求统一放进“产品代办清单”(Product Backlog),按照敏捷开发的模式拆分成一个个固定时间盒的冲刺,当下的冲刺内为优先级最高的需求,通过一个个冲刺完成增量产品的交付,直至项目交付。

敏捷开发是为了让团队达成一种在固定时间内持续交付的共识,一般一个冲刺开始时,该冲刺内的需求一般不允许变更。

但有些特殊情况,为了配合甲方汇报(一些G端项目常见),这些临时需求优先级会变得非常高。

此时研发团队可能正处在当前冲刺的开发中,不得不将主要精力投入配合汇报。

无论“敏捷开发”还是“瀑布开发”,流程是死的,人是活的,不同的公司、不同的业务可以根据实际情况灵活调整,切不可生搬硬套。

相关文章:

再谈“敏捷”与“瀑布”在产品开发过程中的反思

作为一家专注于软件开发的公司《智创有术》,我们致力于为客户提供创新、高效和可靠的解决方案。通过多年的经验和专业知识,我们已经在行业内建立了良好的声誉,并赢得了客户的信任和支持。 支持各种源码,网站搭建,APP&a…...

设计模式② :交给子类

文章目录 一、前言二、Template Method 模式1. 介绍2. 应用3. 总结 三、Factory Method 模式1. 介绍2. 应用3. 总结 参考内容 一、前言 有时候不想动脑子,就懒得看源码又不像浪费时间所以会看看书,但是又记不住,所以决定开始写"抄书&qu…...

Hive 源码

hive 编译 issue Failed to execute goal com.github.os72:protoc-jar-maven-plugin:3.5.1.1:run (default) on project hive-standalone-metastore: Error resolving artifact: com.google.protobuf:protoc:2.5.0: The following artifacts could not be resolved: com.goog…...

调整几行代码,接口吞吐提升 10 倍,性能调优妙啊!

景 分析过程 总结 背景 公司的一个ToB系统,因为客户使用的也不多,没啥并发要求,就一直没有经过压测。这两天来了一个“大客户”,对并发量提出了要求:核心接口与几个重点使用场景单节点吞吐量要满足最低500/s的要求。 当时一想,500/s吞吐量还不简单。Tomcat按照100个线程…...

MACOS Atrust服务异常

MAC版Atrust服务异常 点击进入办公后出现提示其一: 核心服务未启动,部分功能存在异常,确定重新启动吗? 可能的原因: 1.上次已完全退出客户端 2.核心服务被其他程序优化禁用 点击重新启动后,出现提示&#x…...

LLM大语言模型(四):在ChatGLM3-6B中使用langchain

目录 背景准备工作工具添加LangChain 已实现工具Calculator、Weather Tool配置 自定义工具自定义kuakuawo Agent 多工具使用参考 背景 LangChain是一个用于开发由语言模型驱动的应用程序的框架。它使应用程序能够: 具有上下文意识:将语言模型与上下文源(提示指令&…...

Dubbo入门介绍和实战

1. 引言 Dubbo是一款开源的高性能、轻量级的Java RPC(远程过程调用)框架,旨在解决分布式服务之间的通信问题。本文将介绍Dubbo的基础概念、核心特性以及使用场景,包括实际示例演示。 2. 什么是Dubbo? Dubbo是阿里巴…...

如何实现无人机识别功能

无人机识别算法可以基于不同的传感器和技术,结合多种方法进行实现。以下是一些常见的无人机识别算法和技术: 视觉识别: 图像处理: 使用计算机视觉技术对无人机图像进行处理,包括特征提取、目标检测和跟踪等。深度学习&…...

Python学习笔记(四)流程控制方法

流程控制有三种方法:分支、循环、跳出 流程的控制通过布尔值来实现,分支和循环都需要对一定的条件进行判断,根据判断结果(布尔值)决定下一步要做什么 布尔值通过比较运算符、逻辑运算符来进行判断是True还是False 不…...

【Qt- C++ Qml 交互】

Qt编程指南 VX:hao541022348 ■ 将C对象注册到 QML中,在QML使用C对象■ C对象注册到元对象系统■ Q_INVOKABLE 宏定义是将C 的 函数(方法)声明为元对象系统可调用的函数■ 演示步骤 ■ 将 C类注册到 QML,并在QML声明一…...

ubuntu 20.04 自由切换 python 的版本

问题描述 当前 ubuntu 20.04 默认安装了多个 python 的版本,执行 python 时,默认版本是 Python 2.7.18 zhangszzhangsz:~$ python Python 2.7.18 (default, Jul 1 2022, 12:27:04) [GCC 9.4.0] on linux2 Type "help", "copyright&quo…...

程序性能优化全能手册

本文聊一个程序员都会关注的问题:性能。 当大家谈到“性能”时,你首先想到的会是什么? 是每次请求需要多长时间才能返回? 是每秒钟能够处理多少次请求? 还是程序的CPU和内存使用率高不高? 这些问题基本上…...

LiveSIPB流媒体国网B接口功能-国网B接口服务安装使用说明

LiveSIPB 国网B接口服务安装使用说明 1、服务说明1.1、安装包说明1.2、国网B接口信令服务1.3、国网B接口流媒体服务1.4、配置信令服务(LiveCMS)1.5、配置流媒体服务(LiveSMS) 2、服务运行2.1、Windows2.2、Linux 3、配置设备接入3.1、海康STATE_GRID接入示例 4、平台使用4.1、管…...

利用小红书笔记详情API:为内容运营提供强大的支持

利用小红书笔记详情API,内容运营者可以获得对小红书平台上的笔记内容的深入洞察,从而为其运营工作提供强大的支持。以下是该API如何支持内容运营的几个关键方面: 获取笔记内容与数据: API允许内容运营者直接获取小红书平台上的笔记…...

地理空间分析1——入门Python地理空间分析

写在开头 地理空间分析是一门涉及地球表面数据处理和解释的科学,通过对地理现象的研究,我们可以更深入地了解地球各个角落的关系。Python作为一种功能强大的编程语言,在地理空间分析领域展现了强大的潜力。本文将带您深入了解入门级别的Pyth…...

哈尔滨爆火的背后有什么值得我们学习的,2024普通人如何创业/2024风口行业

这个冬天,“南方小土豆”带火东北冰雪游。“冰城”黑龙江哈尔滨的文旅市场异常火爆,元旦假期3天,哈尔滨市累计接待游客304.79万人次,实现旅游总收入59.14亿元。旅游总收入达到历史峰值。哈尔滨旅游怎么就爆火了?背后究…...

element中Tree 树形控件实现多选、展开折叠、全选全不选、父子联动、默认展开、默认选中、默认禁用、自定义节点内容、可拖拽节点、手风琴模式

目录 1.代码实现2. 效果图3. 使用到的部分属性说明4. 更多属性配置查看element官网 1.代码实现 <template><div class"TreePage"><el-checkboxv-model"menuExpand"change"handleCheckedTreeExpand($event, menu)">展开/折叠&l…...

数据结构OJ实验15-插入排序与交换排序

A. DS内排—直插排序 题目描述 给定一组数据&#xff0c;使用直插排序完成数据的升序排序。 --程序要求-- 若使用C只能include一个头文件iostream&#xff1b;若使用C语言只能include一个头文件stdio 程序中若include多过一个头文件&#xff0c;不看代码&#xff0c;作0分…...

鹿目标检测数据集VOC格式500张

鹿&#xff0c;一种优雅而神秘的哺乳动物&#xff0c;以其优美的外形和独特的生态习性而备受人们的喜爱。 鹿的体型通常中等&#xff0c;四肢细长&#xff0c;身体线条流畅。它们的头部较小&#xff0c;耳朵大而直立&#xff0c;眼睛明亮有神。鹿的毛色因品种而异&#xff0c;…...

静态网页设计——电影推荐网(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1NK411x7oK/?vd_source5f425e0074a7f92921f53ab87712357b 使用技术&#xff1a;HTMLCSSJS&#xff08;…...

ARM CCA机密计算架构软件栈简介

本博客描述了Arm机密计算架构(Arm CCA)的固件和软件组件。 在这篇博客中,您将学到如何: 列出组成Arm CCA软件栈的组件集了解Arm CCA引入新软件组件的原因了解监视器和领域管理监视器(RMM)的角色了解如何创建和管理领域1.1 开始之前 我们假设您熟悉AArch64异常模型、AAr…...

C#编程-使用集合

使用集合 您学习了如何使用数组来有效地存储和操作相似类型额数据。但是,以下限制于数组的使用相关联: 您必须在声明时定义数组的大小。您必须编写代码以对数组执行标准操作,如排序。让我们思考一个示例。假设您想要存储在组织工作的五个雇员的姓名。您可以使用以下语句来声…...

linux 设备模型之设备

在最低层, Linux 系统中的每个设备由一个 struct device 代表: struct device { struct device *parent; struct kobject kobj; char bus_id[BUS_ID_SIZE]; struct bus_type *bus; struct device_driver *driver; void *driver_data; void (*release)(struct device *dev); /* …...

电源滤波可采用 RC、LC、π 型滤波。电源滤波建议优选磁珠,然后才是电感。同时电阻、电感和磁珠必须考虑其电阻产生的压降。

电源滤波是为了减少电源中的噪声和干扰,确保电子设备正常工作。RC、LC、π 型滤波是常用的电源滤波器结构,其选择主要取决于需要滤波的频率范围和所需的滤波效果。 RC滤波器是由电阻和电容组成,适用于高频噪声的滤波。当电流通过电容时,电容会阻止高频噪声信号的通过,起到…...

STM32通用定时器-输入捕获-脉冲计数

一、知识点 编码器   两相编码器&#xff08;正交编码器&#xff09;&#xff1a;两相编码器由 A 相和 B 相组成&#xff0c;相位差为 90 度。当旋转方向为顺时针时&#xff0c;A 相先变化&#xff0c;然后 B 相变化&#xff1b;当旋转方向为逆时针时&#xff0c;B 相先变化…...

Flutter GetX 之 路由管理

路由管理是插件GetX常用功能之一&#xff0c;为什么说之一呢&#xff1f;因为GetX的功能远不止路由管理这么简单。 GetX的重要功能如下&#xff1a; 1、路由管理2、状态管理3、国际化4、主题5、GetUtil工具6、dialog 弹框7、snackbar 其实上面功能介绍的还是不够详细&#xff…...

基于单片机的农田灌溉系统(论文+源码)

1.系统设计 本系统主要实现如下目标&#xff1a; 1&#xff0e;可以实时监测土壤湿度&#xff1b; 2&#xff0e;土壤湿度太低时&#xff0c;进行浇水操作&#xff1b; 3&#xff0e;可以按键设置湿度的触发阈值&#xff1b; 4. 可以实现远程操控 5&#xff0e;可以实现手…...

分布式缓存 -- 基础

负载均衡 Ribbon 服务间通信的负载均衡工具&#xff0c;提供完善的超时重试机制 客户端的负载均衡器&#xff1a;在客户端将各个服务的信息拿到&#xff0c;在客户端本地做到请求的均衡分配 Ribbon 提供 LoadBalanced 注解&#xff0c;外搭配RestTemplate来做客户端的负载均衡…...

云计算复习笔记--期末

1、云计算的定义和本质&#xff1a; 云计算是一种按使用量付费的模式。云计算是分布式计算的一种。通过计算机网络&#xff08;多指因特网&#xff09;形成的计算能力极强的系统&#xff0c;可存储、集合相关资源并可按需配置&#xff0c;向用户提供个性化服务。 2、云计算服…...

【WPF.NET开发】WPF中的焦点

本文内容 键盘焦点逻辑焦点键盘导航以编程方式导航焦点焦点事件 在 WPF 中&#xff0c;有两个与焦点有关的主要概念&#xff1a;键盘焦点和逻辑焦点。 键盘焦点指接收键盘输入的元素&#xff0c;而逻辑焦点指焦点范围中具有焦点的元素。 本概述详细介绍了这些概念。 对于创建…...

公司管理系统网站模板下载/百度青岛代理公司

1 --1.通过RAISE弹出框&#xff08;调试时使用&#xff09; 2 --2.通过sqlcode , sqlerrm 这两个内置变量来查看&#xff0c;例如&#xff1a; 3 4 DECLARE 5 --声明异常 6 some_kinds_of_err EXCEPTION; -- Exception to indicate an error…...

能自己做效果图的网站/新手如何自己做网站

1、技术不只是使用技巧2、技术不只是API3、技术不只是拥有葵花宝典4、技术不只是做出没有BUG的程序 5、…………就我个人看法应该是更高层次的抽象&#xff0c;换句说就是应用的理论支持,或者说是元元模型的驱动机制应该是解决问题的敏捷性,面对意想不到的BUG和突如其来的需求能…...

wordpress 主页 导航/武汉百度推广seo

所谓的组件就是指封装了一些代码进行复用&#xff0c;以减少代码冗余性&#xff0c;使代码更加简洁优雅注意&#xff1a;若js注册组件名时采用了驼峰命名法&#xff0c;则在html中要加横线&#xff0c;否则无法解析不论是哪种方式创建出来的组件&#xff0c;必须只有一个根元素…...

郑州做网站设计的公司/东莞网站制作公司联系方式

混入、插件、scoped 混入 1.功能&#xff1a;可以把多个组件共用的配置提取成一个混入对象 2.使用方式&#xff1a; 第一步定义混合&#xff1a; {data(){....},methods:{....}.... } 第二步使用混入&#xff1a;​ 全局混入&#xff1a;Vue.mixin(xxx) ​ 局部混入&#x…...

苏州新区做网站公司/seochinaz查询

为什么80%的码农都做不了架构师&#xff1f;>>> 1. ldap服务相关软件安装 用命令rpm -qa |grep ldap&#xff0c;可以发现系统中已经默认安装如下和ldap相关软件&#xff1a; openldap-2.3.43-12.el5 python-ldap-2.2.0-2.1 nss_ldap-253-25.el5 第一个为open…...

岳阳网站建设推广/免费做网站的平台

1.前向传播 引用一个网站的图&#xff1a; 具体来说&#xff0c;就是2行代码&#xff0c;图片中的f为激活函数&#xff0c;这里用sigmoid作为激活函数&#xff0c;事实上有很多其它的套路&#xff0c;这里只讲神经网络的数学原理及初级使用&#xff0c;不会做任何深入扩展&…...