应对不明确的项目需求

2023-05-16

今天在Javaeye上看到一个抱怨客户的无底洞需求时,一个网友的回复,觉得不错,对以后自己接项目做个警示:

From: http://www.javaeye.com/topic/180477

==========================
问题
==========================
越来越像无底洞的需求


首先声明俺们是做项目的,每个项目都大多相同,但是有很多细小的地方是不一样的。
于是乎,每个项目的需求总会有些差异。。。
于是乎,需求就越来越无底洞了。。。

俺正在做的一个计费的程序,就是这样,从一个小蜗牛成长一只大乌龟(当然从遗传说角度来看这是不可能的)。

最开始的时候,这个计费是很简单的,只需要处理以下几个情况:
从数据库固定的域里面读取出用来计费的依据。
从数据库固定的域里面读取出用来筛选的域。
按照三个固定的计费规则去计费,固定的收费,按比例的收费,按区间固定的收费。

本来这不是特别重要的,也没有特别去重视。
但是这个需求开始慢慢鼓胀了。。。每个地方的项目总会有那么几个不一致的地方。。。总要改一下……
后来简直发展成每个地方一个版本了。

首先,计费的依据不再是从数据库固定的域里面去读取了,而是可以自由指定一个数据库的域。伤筋动骨啊。
然后,计费规则也发生变化了,固定的收费,按比例的收费,按区间固定的收费,按区间固定比例的收费,按区间固定比例累加的收费。
计费的方式也有了变化,有把要计费的依据加起来一起收费,也有把各个依据分别收费然后再总和起来。。。又是一个伤筋动骨。

于是在春节前后,趁着没啥事的时候把整个程序扔了,用了decorate模式。心想,这次完事了吧?

没想到……又有了更加BT的需求了。。。
痛苦啊!!!!

遇到这种情况的时候,大家有什么感想……

==========================
回复一:
==========================
    对项目的业务不清楚,光靠前期的调研只能知道大致要做的,实际上的细节用户自己也很难说清,等系统上线了,有了实际的原型,就是你认为开发完了不应该再变 动的系统,用户才会有具体的详细要求,当然也不是一次能给你,只会在碰到什么实际业务时突然想起,这是很常见的情况。

这种模式很常见,也就很合理,再做项目的时候,首先要考虑对用户的业务熟悉不熟悉,如果不熟悉,就要考虑好这种情况,换个角度来看,这种由于业务不熟悉导致的需求变更,是公司应该交的学费,怎么在前期做好项目策划,就非常重要。

对具体做事的程序员来说,首先要清楚,这类项目上线后,才是原型完成,后面将有一轮又一轮的详细需求,开发时间基本上和模块开发时间相当,要做好 持续修改的准备,业务等于在这个阶段才真正开始做测试。第二就是,用户的每个需求变更都是有原因的,要把原因找到。第三,把工时记下,提交给项目经理。

===========================
fight_bird 的回复
===========================
楼主遇到的需求变更、膨胀状态其实是国内定制化软件项目业务逻辑挖掘的一个正常过程,并非存在所谓的无底洞,本质问题还是需求调研没有做好、做细,却匆忙开始系统分析和编码,结果当然是不停的做炒冷饭的事情!

恕我直言,根子还是在项目管理的水准,这么粗的需求分析状态下不应该允许进入详细设计阶段,我怀疑你这个项目是几个人的小项目,你们公司的项目监理机制几乎不起作用。

说得上纲上线一点,你们公司在国内项目业务需求的调研上没有成熟的方法论指导,还处于客户“指哪打哪儿的状态”,这种状态长期下去会拖垮开发团队,这对于处于创业成长阶段的公司倒是可以理解,但对于想做大、做强的公司来说却是必须跨越的阶段,否则这样的公司长不大的。

===========================
一蓑烟雨任平生 说:
===========================

项目管理也许有些问题,但我觉得还是项目策划的问题,对一个业务不熟的项目要有一个策略,成本估算时要充分考虑到后期的反复,这个跟走不走需求管理的流程没有关系。需要清楚的是怎么做这个项目,如果不挣钱,以后能从这个项目中得到什么?

因为对业务不熟,到最后才能了解业务的细节,这里面有一个长期的学习过程,这个过程是要付出代价的,这个成本在项目的策划时就应该考虑到,同时要 考虑这代价在以后的项目中怎么逐步降下来,产品化不产品化不重要,重要的是业务的积累和团队的稳定,否则以后还会付出更大的代价。

===========================
RCFans 说:
===========================
这不是需求不清的问题,而是软件设计人员经验不多的原因。
我近来在和你做一个有点类似的项目
从多个源里面读取用来评分的依据
从...读取用来评分的标准
按照标准去计分,目前分四个:价格/交付/质量/服务

我们的源是多样的,数据库有,Web service也有,而且不断增长,关于数据处理的问题在一开始就了解必须设计得非常活;关于评分标准,在项目一开始我就给组员说这个项目的难点就是“标 准不标准”,提出必须使用“评估因子组装”的方案来构成标准,我们尝试参考了一下Enterprise Library的策略注入,最后在业务分析师的协助下学习了SAP Vendor Evaluation(发现该系统的打分原理和我设计的一样,但还增加了weight factor),现在设计出来的系统可以说满足OCP。

==========================
fight_bird 回复:
==========================
对于国内项目这种事情很常见,就看搞售前和商业策划的本事了,这时候就凸显行业经验的重要性和价值,这样的项目最合适的方式是分期完成,合约也分期签署,前期做好了,后期可能合作更深入,可以达到双赢,反之,可能双亏了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应对不明确的项目需求 的相关文章

随机推荐

  • 5680在网设备开启端口聚合不断网的方法----我测试不断网

    在5680T做双端口聚合上行的时候 xff0c 要先给正在使用的端口开启端口聚合 比如目前使用0 19 0 端口千兆上行 xff0c 计划将0 19 0 和0 19 1的2个端口做端口聚合 xff0c 然后双千兆上行 网上查的说是直接输入
  • 正则表达式:(?:) 或 .*? 或 .+?

    一 这个代表不捕获分组 比较 X 和 X xff0c 前者是捕获分组 xff0c 后者不捕获 xff0c 区别在于正则表达式匹配输入字符串之后所获得的匹配的 xff08 数 xff09 组当中没有 X 匹配的部分 xff1b 例如 xff1
  • Maven 多个war项目的引用关系 overlay配置实例

    在Maven项目中 xff0c 一般是jar文件的依赖 xff0c 但是也要考虑一种情况 xff0c 那就是war项目的依赖 比如说base war项目包含基本的网页 xff0c 但是需要为另外有一个定制的war项目有几个页面是需要特别定制
  • NVIDIA CUDA, CUDNN, MATLAB配置

    64 NVIDIA 深度学习环境配置 配置NVIDIA GPU以支持MATLAB等计算平台进行并行计算 NVIDIA NVIDIA 支持并行计算 xff0c 可提高深度学习的计算效率 从硬件到软件的链条是 xff1a NVIDIA GPU
  • OAuth2.0四种授权模式以及Oauth2.0实战

    OAuth2 0四种授权模式以及Oauth2 0实战 首先我们得了解什么是Oauth2 0 xff0c 简单来说Oauth2 0它是一个授权协议 我们可能会听说过 xff0c 使用Oauth2 0来实现单点登录SSO xff0c 以及第三方
  • firewalld-cmd简介

    firewalld是centos7的一大特性 xff0c 最大的好处有两个 xff1a 支持动态更新 xff0c 不用重启服务 xff1b 第二个就是加入了防火墙的 zone 概念 firewalld有图形界面和工具界面 xff0c 由于我
  • hdfs创建文件夹及目录

    span class token keyword import span java span class token punctuation span io span class token punctuation span IOExcep
  • auto.js 入门学习(参考GitHub文档)

    GitHub开发文档 input span class token punctuation span span class token punctuation span i span class token punctuation span
  • python-名片管理系统

    span class token builtin class name shift span 43 F6 重命名 当修改变量名或者函数名是十分实用 from learn card manage span class token functi
  • 【linux】清理pip空间缓存

    输入命令查看内存使用情况 xff1a df h 发现 dev sda6 这个目录下可使用内存基本上没有了 xff0c 先需要对其进行清理缓存 切换到pip目录下 cd cache pip 为了防止直接删除出错 xff0c 先将要删除的文件复
  • YOLOv5 - AssertionError: Image not Found

    出现上图原因是val 路径还有中文 xff0c cv imread 不能识别 解决方法 xff1a 1 修改还有中文的文件名 2 使用绝对路径 xff0c 把测试图片放在含有中文的文件里面 下图的名称也无法读取 xff0c 可能是含有 xf
  • 机器学习-猫狗识别(入门案例)

    案例分析 xff1a 下载猫狗图片 xff0c 进行分类 对数据进行分类 xff0c 训练集和测试集 训练集和测试集都进行命名规范 xff0c 把猫标记为1 xff0c 狗标记为0 处理流程 xff1a 数据处理 xff0c 把数据处理为6
  • 车牌识别之预处理(灰度化,去噪,二值化,分割)

    灰度化 灰度即R 61 G 61 B 二值化只取255 0 对图片进行灰度化处理 xff0c 目的是 1 减少数据量 xff08 减少不明显 xff09 2 为二值化准备 对数据进行灰度发现数据量减少并不明显 尤其是 最大 和 平均 灰度法
  • failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to do request

    问题描述 failed to solve with frontend dockerfile v0 failed to create LLB definition failed to span class token keyword do s
  • LeTeX 快速入门

    LeTeX 快速入门官方链接 什么是LeTeX LaTeX是一种用于排版专业外观文档的工具 然而 xff0c LaTeX的操作模式与您可能使用过的许多其他文档制作应用程序 xff08 如Microsoft Word或LibreOffice
  • 医学图像挑战

    标题标签不平衡挑战 方法一 xff1a 二元交叉熵损失函数 方法二 xff1a 重新采用达到类别平衡 过采样 欠采样 多任务挑战 设置不同任务的损失函数 数据集大小挑战 迁移学习 神经网络的早期层捕获可归一化的低级图像特征 xff08 图像
  • 医学图像数据集的挑战

    患者数据重叠 xff1a 当患者存在多个不同数据时划分数据集应避免随机划分 xff0c 避免同一个患者的数据出现在训练集 xff0c 验证集 xff0c 测试集 使用按患者划分数据集根据合理 集采用 xff1a 测试集或者验证出现数据不平衡
  • Ubuntu 查看磁盘空间大小命令

    http blog sina com cn s blog 6432901c0100w0tz html Df命令是linux系统以磁盘分区为单位查看文件系统 xff0c 可以加上参数查看磁盘剩余空间信息 xff0c 命令格式 xff1a df
  • 蜂鸣器发声音频率

    蜂鸣器发声音频率 蜂鸣器发声音频率 1 200Hz声音很小 200 300有声音 400嘟 500滴 600音调变高 700音调变高 800音调变高 2730Hz适合做滴的一声 3000最剌耳 声音大 转载 http blog ednchi
  • 应对不明确的项目需求

    今天在Javaeye上看到一个抱怨客户的无底洞需求时 xff0c 一个网友的回复 xff0c 觉得不错 xff0c 对以后自己接项目做个警示 xff1a From http www javaeye com topic 180477 61 6