《火球——UML大战需求分析》(第2章 耗尽脑汁的需求分析工作)——2.2 持续进化的客户需求

本文主要是介绍《火球——UML大战需求分析》(第2章 耗尽脑汁的需求分析工作)——2.2 持续进化的客户需求,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说明:

《火球——UML大战需求分析》是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张。欢迎你按文章的序号顺序阅读,谢谢!本书已经在各大网上书城及书店销售,欢迎你的关注。


------------------------------------------------------------------------------------------------------------------------------


第2章 耗尽脑汁的需求分析工作


摘要:怎么又变了?当初就应该让客户书面签字确认!你可能会经常发这样的牢骚,可是就算客户书面确认,客户还是会“赖账”的!软件项目的其中一项不变真理:人是会死的,需求是会变的!本章将会和你一起来体验软件需求分析工作的风风雨雨,找出需求分析工作的根本之道,了解UML如何帮助我们提升需求分析的水平。


2.2 持续进化的客户需求


你可能曾遇到过这样的情况:客户今天想要一个苹果,明天改变主意要一条香蕉,但后天突然又说还是苹果好,到最后他想要一个西瓜!遇到这样的情况,你会抱怨客户吗?你会后悔当初没有让客户签字确认吗?

楚国有人坐船渡河时,不慎把剑掉入江中,他在舟上刻下记号,说:“这是我把剑掉下的地方。”当舟停驶时,他才沿着记号跳入河中找剑,遍寻不获。这就是刻舟求剑的故事。
客户的想法总是在变化的,但总体来说是螺旋前进的,客户需求总是持续进化的,不要对此有任何抱怨,否则我们就是“刻舟求剑”之人了!

某系统已经上线了,以下三种情况,你会更喜欢哪种情况呢?
A. 客户一直没有提出过任何问题。
B. 客户开始提了一些问题,但很快就没有其他问题了。
C. 客户一直在提问题,项目组解决这些问题后,新的问题又来了,如此不断重复。

情况A,估计客户没有怎样用过这套系统,所以没有提出什么问题。对于项目组来说,似乎不用再被麻烦的需求变更所纠缠,可以爽快地脱离此项目了。但对于客户来说,此系统白白花了他们的钱,对他们没有任何实际价值。而对于你所在的软件公司来说,你们项目组花费很大工作来做出来的软件系统,客户居然没有能用上,而你们公司很可能收不到项目的验收款项,此项目完全实现不了公司的战略。情况A的最终结果就是“双输”。

情况B,有两种可能:第一种可能,客户试用了一段时间系统,后来由于客户方面的某些原因(原因可能有:更换领导、上了另外一个更重要的系统等)不再使用本系统了;第二种可能,客户试用一段时间,提出了很多问题,而你们项目组不能很好地解决这些问题,甚至认为客户“无理取闹”,所以客户干脆就不再使用本系统了。出现情况B,本项目估计也很难能通过最终验收,软件公司最终也收不到项目验收款项,而最终结果很可能也是“双输”。

情况C,我曾经比较厌烦这样的情况,每天被客户的各式各样的小问题纠缠。其实这是相当理想的情况,说明客户在不断使用该软件。这些问题最开始会比较多,最开始项目组解决问题的速度会低于问题的产生速度,但后来问题会逐步减少,直到基本消失,软件和用户的“磨合”过程终于完成,系统成为客户日常工作中的一部分。出现情况C,我们项目组千万不要产生厌烦情绪,客户要真正用上软件,项目才算真正成功。软件只有对客户的工作真正有帮助,客户才算“赢”,而在客户能“赢”的基础上,我们软件公司才可能实现自己的“赢”。达致“双赢”是我们每个项目应追求的目标。

从某种角度来说,需求变更其实是好事,说明客户对需求的理解更进一步,而我们觉得不适应,往往是因为我们对需求理解的进步程度不如客户。请看下图:
图2.1 客户VS项目组对需求的理解1.jpg

图 2.1 客户VS项目组对需求的理解1

此图表示项目开始后随着时间的发展,客户和项目组对需求理解程度的上升趋势。
在时间=0时,客户的曲线并不是从零开始的,而是有一定起点的。这表明,客户在项目刚开始的时候,对需求是有一定认识的。而项目组在项目最开始时,对需求的理解几乎是零。
随着时间的发展,客户对需求的理解越来越强,尽管项目组对需求的理解同样也变强,但项目组对需求的认识总是落后于客户,这样 需求分析工作肯定陷于被动,总会被客户“牵着鼻子走”,很容易出现互相责怪的局面:客户责怪项目组水平太差,而项目组责怪客户需求变来变去!
要打破这样的局面,项目组需要做到下图的效果:
图2.2 客户VS项目组对需求的理解2.jpg
图 2.2 客户VS项目组对需求的理解2

项目刚开始时,客户对需求的理解确实比项目组强,但项目组在很短时间内对需求的认识超越了客户。从图中的“交点”打后,项目组对需求的认识总领先于客户。项目组应具备超强的业务学习能力,切实理解客户的真正需要,为客户规划出真正符合其需要的软件系统。




请看下一节……




作者:张传波

创新工场创业课堂讲师

华为某团队高级顾问

《火球——UML大战需求分析》作者

www.umlonline.org 创办人

这篇关于《火球——UML大战需求分析》(第2章 耗尽脑汁的需求分析工作)——2.2 持续进化的客户需求的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/606866

相关文章

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致