干货|如何控制软件需求变更

图片描述

本文作者:老吴 原文地址:猛戳这里

从主教花园望见的索尔兹伯里大教堂

上图是一副非常有名的画作,名为『从主教花园望见的索尔兹伯里大教堂』,作者康斯太勃尔,英国的著名油画家。某年某月的某一天,康斯太勃尔去他的金主大教堂的主教Fisher先生(后面简称大鱼)家里玩。大鱼主教跟画家先生说:“亲爱的画家,你帮我画一幅画吧。把我和我美丽的妻子以及我这大教堂一起画到画里。我要把画留在教堂,成为镇堂之宝。当然,我是给钱的,于是康斯太勃尔先生很高兴的接下这个项目。

画家开始了辛苦的工作,经过一段时间终于把这幅画完成了。画家画这幅画时可能心情不好,所以在教堂塔尖上方的天空有一片乌云。大鱼主教看到这幅画后,很不满意。虽然画家把主教大人、主教夫人和教堂都画进去了,但是两口子只在左下角露了个背影,这也就忍了。“下面那几头牛是怎么回事,为什么比我们占的镜头还多?”主教问。画家说:“你没看懂?我是在恭维您呢,是说您和您夫人好牛!”,大鱼先生没什么话说了,然后又找到了新的吐槽点:“为什么天空的云都是乌云?”。他邀请画家再去他家做客,重新观察,以便于修改画作。画家很不高兴了,就单独把画展出了。展出之后得到很多好评,于是回信给大鱼主教:“你看,大家都说很好看,不用改了。”,大鱼主教收到信后也怒了,回信就说了一句话:“给我改!!!”。

从回复文字的三个叹号上可以看出——主教很生气、后果很严重。这就是关于需求的故事,请您再看上图,看看教主和教主夫人被画到了哪里?您能找到吗?

从上面案例中您看到了哪些与需求相关的问题?为什么导致客户不满意并被要求重画?

1、需求表达不到位。大鱼教主想要一幅画,画里有他们夫妻二人和教堂,需求表达完后,并没有再对需求进行更具体的说明。除了以上要求外,画作里是否还可以加些其它元素?人物要求画正面还是背面?画作的背景是什么?需要表达什么样的情感?

2、没有与客户认真沟通需求。当主教让画家画一幅画时,最初只是一个想法,并没有太具体的要求。细节需要画家一点点的引导,从而勾勒出画作的轮廓,这个轮廓就相当于产品的原型。与客户沟通好需求并得到客户认可后再开始画作,需求变更的可能性就会大大的降低。

3、需求理解不正确。画家在画作里多画了一些牛,并认为这样会更好,寓意深刻,可以表达出大鱼主教和夫人“很牛”的意思,还根据自己情绪需要将天空画得“乌云密布”。这说明画家没有正确理解客户意图,把需求想当然化了。我们应该合理控制需求,合理规划需求,不能随意的增加或删减需求,这都是不正确的。需求的管理也不应该是一人堂,要有需求评审等需求审核流程,让相关人一同参与、共同把握需求。

4、没及时让客户参与。在画家进行创作的这段时间里,画家并没有邀请大鱼教主来看画作,这也就错过了最后弥补的机会。当整个作品完成后,客户才有机会看到作品,得不到客户认可的产品再努力也是徒劳。

5、不愿听取意见。当客户明确提出自己的意见后,画家还是一意孤行,将作品拿出来展览,这对客户来说是种伤害。即表现出对客户的不尊重,又表现出了自己的自大。这就相当于还没得到客户、相关领导认可时,私自发布产品,它所产生的后果可能是无法想像的。所以,难怪主教生气。

从上面故事可以看出,项目的成败与需求关联非常密切。如果想要做好一款产品,从需求调研、需求分析、文档梳理、需求评审每一步都要走的坚实,不可以走过场。一点的疏忽都可能导致产品的失败,需求变更,也就再所难免。有的需求变更是无法避免的,如客户、领导在产品开发阶段要求增减需求;有的需求变更是可以避免的,如需求调研的不够充分、分析的不到位、评审的不够严格。只要我们更虚心一点、更认真一点,需求管理流程更规范一点,许多变更都是可以避免的。

针对需求变更要早发现、早预防

需求变更避免不了,既然不能避免,那我们就要敢于直面惨淡的人生。引入需求变更管理机制,以降低需求变更带来的风险。需求变更管理的核心是减少变更所产生的影响,而非消灭变更。通过变更管理可以降低开发返工、重工的工作量,以减少项目风险。需求变更属于需求管理范围,同时也属于风险控制范围,对于产品经理要随时关注产品,定期对需求进行跟踪,做到“早发现、早治疗”,以防病入膏肓后才下手。那样,可能癌细胞已经扩散了。对已变更的需求要做到文档标记更新,编写需求变更说明,保证需求与开发工作一致,不要出现“两层皮”的现象。从技术角度考虑,技术架构要做到可扩展,以弹性的架构来解决变更的需求,把变更造成的影响降到最低。

需求变更流程

当发生变更时,正规的流程需要走变更申请,申请后组织人员对变更进行分析、评审,以判断变更是否必要,对项目的影响有多大。又必要又紧急的需求要排到开发计划中,尽快安排开发;对必要不紧急的需求要考虑是否可以放到下一版本安排开发;对紧急不必要的需求,要根据项目实际情况考虑,是否可以不要?对不紧急也不必要的需求应该直接砍掉,无须变更。评审完成后,对于需要安排开发的变更需求,先整理变更需求说明书,以帮助开发人员、测试人员了解变更内容,指导技术人员开发。

图片描述

如何分析需求变更的合理性?从哪些方面着手?

1、从业务方面分析。需求变更基本都是因业务变化而产生的,当发生变更时,我们也要从业务角度多思考,变更的是否合理,是否必要,与产品定位是否相符,能给产品带来哪些好处?如果不做变更是否可以?

2、从技术方面分析。变更会对开发有多大影响,需求变更的部分是否已经开发?开发到什么程度?工作量多少?是否可以通过技术框架的扩容性很好的解决变更?

3、从项目方面分析。从项目角度考虑,变更会使项目的时间、资源、费用上产生多大影响?影响是否能够承受?本次变更的需求必须本版本开发完,还是可以放到下一版本迭代开发?

从以上三方面分析清楚后,变更的需求脉络也就理清了,变与不变、现在变还是以后变也能分析得透彻。

总结:

需求变更对每一位产品人来说都会经常遇到,产生变更的原因很多,有外在的、有内在的,但不论是因为什么产生的变更,遇到了就要正确的、合理的分析、评估,给项目以正确的指导。如果项目前期进行了大量的调研、跟踪、分析、评审,并请客户尽早参与,许多变更是可以避免的。如果,技术框架设计的可扩展,程序设计的可扩容的话,当发生变更时也可以把变更对项目产生的影响控制到最小。防微杜渐、未雨绸缪,还是那句话:“早发现、早治疗”。最后,以“扁鹊见蔡桓公”的故事结尾。

扁鹊进见蔡桓公,(在蔡桓公面前)站了一会儿,扁鹊说:“您在肌肤纹理间有些小病,不医治恐怕会加重。”蔡桓公说:“我没有病。”扁鹊离开后,蔡桓公说:“医生喜欢 / 习惯给没病的人治病来当作自己医术的功效。” 过了十天,扁鹊再次进见蔡桓公,说:“您的病在肌肉里,不及时医治将会更加严重。”蔡桓公不理睬。扁鹊离开后,蔡桓公又不高兴。

过了十天,扁鹊再一次进见蔡桓公,说:“您的病在肠胃里了,不及时治疗将要更加严重。”蔡桓公又没有理睬。扁鹊离开后,蔡桓公又不高兴。

过了十天,扁鹊(远远地)看见桓侯,掉头就跑。蔡桓公于是/特意派人问他。扁鹊说:“小病在皮肤纹理(之间),汤熨(的力量)所能达到的;病在肌肉和皮肤里面,用针灸可以治好;病在肠胃里,用火剂汤可以治好;病在骨髓里,那是司命神管辖的事情了,(医生)是没有办法(医治)的。现在(病)在骨髓(里面),我因此不再请求(为他治病)了。”

过了五天,蔡桓公身体疼痛,派人寻找扁鹊,(扁鹊)已经逃到秦国了。蔡桓公于是病死了。

文章作者

产品人老吴,微信公众号:ChanPinLaoWu,产品壹佰专栏作家,北京金马甲产权网络公司产品总监,产品讲学堂自媒体人。十多年软件行业从业经验,做过软件开发、项目管理、产品经理,希望能够与大家分享更多产品经验和知识,欢迎关注更多老吴产品讲学堂的产品观点。

图片描述

### 回答1: Spark Streaming 和 Flink 都是流处理框架,但在一些方面有所不同。 1. 数据处理模型 Spark Streaming 基于批处理模型,将流数据分成一批批进行处理。而 Flink 则是基于流处理模型,可以实时处理数据流。 2. 窗口处理 Spark Streaming 的窗口处理是基于时间的,即将一段时间内的数据作为一个窗口进行处理。而 Flink 的窗口处理可以基于时间和数据量,可以更加灵活地进行窗口处理。 3. 状态管理 Spark Streaming 的状态管理是基于 RDD 的,需要将状态存储在内存中。而 Flink 的状态管理是基于内存和磁盘的,可以更加灵活地管理状态。 4. 容错性 Flink 的容错性比 Spark Streaming 更加强大,可以在节点故障时快速恢复,而 Spark Streaming 则需要重新计算整个批次的数据。 总的来说,Flink 在流处理方面更加强大和灵活,而 Spark Streaming 则更适合批处理和数据仓库等场景。 ### 回答2: Spark Streaming 和 Flink 都是流处理框架,它们都支持低延迟的流处理和高吞吐量的批处理。但是,它们在处理数据流的方式和性能上有许多不同之处。下面是它们的详细比较: 1. 处理模型 Spark Streaming 采用离散化流处理模型(DPM),将长周期的数据流划分为离散化的小批量,每个批次的数据被存储在 RDD 中进行处理,因此 Spark Streaming 具有较好的容错性和可靠性。而 Flink 采用连续流处理模型(CPM),能够在其流处理过程中进行事件时间处理和状态管理,因此 Flink 更适合处理需要精确时间戳和状态管理的应用场景。 2. 数据延迟 Spark Streaming 在处理数据流时会有一定的延迟,主要是由于对数据进行缓存和离散化处理的原因。而 Flink 的数据延迟比 Spark Streaming 更低,因为 Flink 的数据处理和计算过程是实时进行的,不需要缓存和离散化处理。 3. 机器资源和负载均衡 Spark Streaming 采用了 Spark 的机器资源调度和负载均衡机制,它们之间具有相同的容错和资源管理特性。而 Flink 使用 Yarn 和 Mesos 等分布式计算框架进行机器资源调度和负载均衡,因此 Flink 在大规模集群上的性能表现更好。 4. 数据窗口处理 Spark Streaming 提供了滑动、翻转和窗口操作等灵活的数据窗口处理功能,可以使用户更好地控制数据处理的逻辑。而 Flink 也提供了滚动窗口和滑动窗口处理功能,但相对于 Spark Streaming 更加灵活,可以在事件时间和处理时间上进行窗口处理,并且支持增量聚合和全量聚合两种方式。 5. 集成生态系统 Spark Streaming 作为 Apache Spark 的一部分,可以充分利用 Spark 的分布式计算和批处理生态系统,并且支持许多不同类型的数据源,包括Kafka、Flume和HDFS等。而 Flink 提供了完整的流处理生态系统,包括流SQL查询、流机器学习和流图形处理等功能,能够灵活地适应不同的业务场景。 总之,Spark Streaming 和 Flink 都是出色的流处理框架,在不同的场景下都能够发挥出很好的性能。选择哪种框架取决于实际需求和业务场景。 ### 回答3: Spark Streaming和Flink都是流处理引擎,但它们的设计和实现方式有所不同。在下面的对比中,我们将比较这两种流处理引擎的主要特点和差异。 1. 处理模型 Spark Streaming采用离散流处理模型,即将数据按时间间隔分割成一批一批数据进行处理。这种方式可以使得Spark Streaming具有高吞吐量和低延迟,但也会导致数据处理的粒度比较粗,难以应对大量实时事件的高吞吐量。 相比之下,Flink采用连续流处理模型,即数据的处理是连续的、实时的。与Spark Streaming不同,Flink的流处理引擎能够应对各种不同的实时场景。Flink的实时流处理能力更强,因此在某些特定的场景下,它的性能可能比Spark Streaming更好。 2. 窗口计算 Spark Streaming内置了许多的窗口计算支持,如滑动窗口、滚动窗口,但支持的窗口计算的灵活性较低,只适合于一些简单的窗口计算。而Flink的窗口计算支持非常灵活,可以支持任意窗口大小或滑动跨度。 3. 数据库支持 在处理大数据时,存储和读取数据是非常重要的。Spark Streaming通常使用HDFS作为其数据存储底层的系统。而Flink支持许多不同的数据存储形式,包括HDFS,以及许多其他开源和商业的数据存储,如Kafka、Cassandra和Elasticsearch等。 4. 处理性能 Spark Streaming的性能比Flink慢一些,尤其是在特定的情况下,例如在处理高吞吐量的数据时,在某些情况下可能受制于分批处理的架构。Flink通过其流处理模型和不同的调度器和优化器来支持更高效的实时数据处理。 5. 生态系统 Spark有着庞大的生态系统,具有成熟的ML库、图处理库、SQL框架等等。而Flink的生态系统相对较小,但它正在不断地发展壮大。 6. 规模性 Spark Streaming适用于规模小且不太复杂的项目。而Flink可扩展性更好,适用于更大、更复杂的项目。Flink也可以处理无限制的数据流。 综上所述,Spark Streaming和Flink都是流处理引擎,它们有各自的优缺点。在选择使用哪一个流处理引擎时,需要根据实际业务场景和需求进行选择。如果你的业务场景较为复杂,需要处理海量数据并且需要比较灵活的窗口计算支持,那么Flink可能是更好的选择;如果你只需要简单的流处理和一些通用的窗口计算,Spark Streaming是更为简单的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值