挨踢项目求生法则-需求篇

摘要

知道什么是挨踢项目吧?什么!不知道?那IT项目知道了吧?为了不让客户踢、不让老板踢、项目组成员之间不互相踢,俺为大家分享一些减少被踢机会的心得体会。就算不能让项目成功,也至少不会死得那么惨吧!我将分战略篇、团队建设篇、需求篇、设计篇、编码篇、测试篇、实施篇和计划篇为你分享。

 

作者:张传波
www.umlonline.org/school/

 

由“我要吃饭”的故事想到的

某天某客户跟你说:“我要吃饭!”

你非常关注客户这个需求:“请问您要吃中餐还是西餐呢?您想吃什么呢?”

客户非常开心,一下子说出了很多想吃的:
“西餐嘛,不错,听说那个菲力牛排很不错,配上红酒更加美味!”
“不过听说某某路的那个潮汕牛肉丸火锅,牛味很浓,牛气冲天……”
“哎呀,最近上火,还是不吃这些上火的东西了,吃日本寿司吧,听说那里有日本菜自助餐,有生蚝,正啊!”
“啊,不行哦,最近日本核辐射,海鲜还是不吃了”
……

最后客户说:
“你还是先弄一顿给我尝尝吧,见到菜才能提出具体需求啊!”

遇到这样的客户,你可能想找10个馒头塞到他嘴里面,让他撑饱,搞定!

以上故事纯属虚构,如有雷同实属不幸!

这个故事是软件项目需求工作的缩影,客户的表面需求似乎很多,而且变来变去,很可能是因为我们没有抓住“我很饿”这个根本需求。客户可能提出很多匪夷所思的需求,提出一些超出自己预算范围的需求,如果我们能抓住客户的根本需求,让客户认识到自己的预算限制,再加上我们高水平的发挥,我们是有可能做出能满足客户根本需求,并且符合预算的软件系统。 

 

需求分析需求管理

我们可能经常听到一些关于需求方面的说词,如:需求开发、需求分析、需求调研、需求管理等等,下面将这些概念稍微梳理一下。
1)需求分析:
其他说法:需求调研、需求开发
关注点:如何获取和确认需求?
2)需求管理:
“双赢”:客户能赢,我们也能赢!在“双赢”的基础上,处理以下问题:
    a)如何签署需求?
    b)如何处理需求变更?
需求驱动地工作。
    a)用需求指导计划、设计、编码、测试、实施等工作。
    b)不做或少做与需求无关的事情。
需求分析和需求管理的工作,我统称为需求工作。需求工作中的问题有些是需求分析的问题,有些是需求管理的问题,或者是两者兼而有之。

法则1:搞清楚需要

解决肚子饿的问题,是客户的根本需求,客户的根本需求或者说需求之源泉,我称之为需要!如果客户是公费吃喝的,嘴馋想吃东西,那么满足这个需要的做法又不太一样了。
客户一般不会直接说出需要,往往提出的是他自认为能解决这个需要的某种解决方案。“我要吃饭”只是表面需求,透过这个表面需求,找到需要是需求工作的根本!我们需要思考:客户为什么有这样的要求?客户希望解决什么问题?如果找到客户的真正需要了,那么我们需要进一步思考:有什么简单的方法可以满足客户的这个需要?
客户的需要其实很少会变的,变的是那些表面需求,多问问我们自己:我们抓住了客户的需要没有?有些客户对自己的需要很清楚,但有些客户可能只有朦胧的想法,我们需要总结出客户真正想要的东西并与客户确认。

法则2:搞清楚限制条件

10块钱解决肚子饿的问题,和100元解决肚子饿的问题,差异可以很大,所谓的看钱吃饭!
如果我们能搞清楚客户的需要,其实10块钱也可以有比较完美的解决方案的,可以去大排档吃个面、炒粉之类的,不是不可以的。某牛筋丸汤粉,才10块钱,但有8个牛筋丸,味道好极了,而且可以饱肚子!
除了预算,系统的技术条件限制,需要与第三方系统接口等其他限制条件,也需要事先搞清楚。需要、限制条件要和客户高层达成共识,一起努力找出在限制条件下可以满足需要的需求解决方案。

法则3:持续确认

曾经有人问我,几十页甚至上百页的需求规格说明书,如何让客户确认?
我反问:这几十上百页的需求文档是闭门造车写了n天后,才给客户确认的吗?对于客户来说,该文档是从天而降,他之前没有见过其中任何的内容吗?
需求不是等全部写出来才去确认的,要持续地逐步地确认。我曾经做过一个项目,连续5天进行需求调研的工作,第5天几十页的需求文档写出来了,给客户签字确认,客户很快就签字了!这份文档的绝大部分内容,在之前的4天他都曾经确认过,第5天只是一个最终的确认而已。
持续确认好处:
1.能尽快发现问题,能帮助我们尽早确认需要,避免后期可能的需求变更。
2.客户能逐步消化需求。

法则4:不要“二手需求”

曾经有一个某政府部门的项目,系统是各业务部门使用的,但需求只能从信息科那里获取。信息科的人自认为很牛,对项目组说:“需求向我们要就可以了!”而这个项目上线后,具体使用系统的部门就是不买帐,最后这个系统由信息科验收了。
信息科提供的是“二手需求”,向客户调研需求时,一定要避免“二手需求”!

上述案例你可能会觉得有点好笑,其实“二手需求”在项目组内也经常会发生。
某测试人员问为什么要做这个功能?开发说:这个你不用管,你这样这样测就可以了……
某实施人员觉得某功能看上去不太符合逻辑,提出疑问。开发说了一大通实施人员听不懂的技术用语,然后实施人员只能憋着不说话了。
项目组的测试人员、实施人员应该接触第一手的需求,最好能直接面对客户,而不是通过开发人员转述需求。

法则5:成为业务专家

你可能遇到过这样的情况,客户经常抱怨软件不好用,然后我们问:如何不好用?客户好容易说出了一些要求,我们按照这些要求修改了系统,但客户总是不满意,总是说不好用。诸如此类,不断重复。
客户说啥,我们做啥,是比较落后的一种层次。我们应该处在客户的利益,提出超出客户想法的解决方案。要打造有竞争力的产品或项目,成为业务专家是必须的,不能偷这个懒,不要仅停留在需求调研这样的层次,而是要引领需求,给客户带来更先进的知识和管理办法。

法则6:需求是“设计”出来的

手机订餐系统的故事我经常拿出来举例子,大意是:
某公司有一个订餐系统,但高层要求在这个基础上做一个手机订餐系统,让外出工作或请假的同事可以方便定午餐。手机订餐项目组花了九牛二虎之力,终于弄出这个系统,但问题多多。高层领导很不高兴:这点小事都折腾这么久!后来有人说:外出工作或请假的同事,打电话回公司,让前台帮忙订餐不就可以了?
“解决不方便订餐的问题”是需要,而“手机订餐系统”只是可以满足该需要的某种解决方案,我们完全可以通过其他更加简单的方法来满足需要。我个人观点:除了需要是来自客户的想法外,系统要具体做什么功能之类的需求,不是通过问客户问出来的,而是我们根据客户的需要,理解了客户的业务流程后,并根据限制条件,设计出来的!当然客户提出来的想法,会给我们带来很多启发,但我们不应该仅停留在需求调研的层次,而是提供一个高性价比的需求解决方案。

法则7:七分需求分析,三分需求管理

遇到客户变来变去的情况,我们可能第一反应是:有没有搞错!当初就应该让他签字!最好就是录音!
如果我们连客户的需要都搞不清楚,就去抱怨客户需求变来变去,那我们的水平未免有点低了。其实真正很难缠的客户、不讲道理的客户很少的,只是我们水平未够,不能理解或找出客户真正想要什么,才让我们误以为客户变来变去。
需求工作可能有很多问题,应该以做好需求分析工作为主,而需求管理为辅,两者比例大概是七三开。需求分析工作做好了,需求的问题可以减少很多,而且客户也会非常认可你的专业水平,这样后续的工作就比较容易处理了。
当然也可能会遇到很难缠又不能绕过的客户,遇到这样的情况,建议你看看“挨踢项目管理求生法则-战略篇”,如果从战略上判断该项目有很大问题,那么最好不要做这个项目,如果不幸要负责这样的项目,那么记住其中一个法则“输少当赢”。 

 

如果本文对你有帮助,麻烦点击一下“推荐”,谢谢!

 

作者:张传波
www.umlonline.org

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值