从面向对象的角度看需求变更

99 阅读4分钟

从面向对象的角度看需求变更

早上按照产品经理和UI/UE给的设计图开发完了一个登录页面,拿给老板看。 老板说......。 中午之前按照老板说的,产品经理和UI/UE修正后的交互和设计图调整完了。 中午拿给老板看。老板看了看,......。 下午一起调整好了,拿给老板看,老板仔细对比了前几个,说还是早上的那一版吧。......

(这里不讨论需求管理、研发流程)

为什么有"需求变更"

上面的示例中如果把老板提出的转化为产品的需求,为什么会出现?

什么是需求

需要解决上面的问题,先讨论下什么需求?

需求,字面的意思“由需要而产生的要求”。

到此一句话,就理解了“需求”吗?根据编程中面向对象的思想要对“对象”进行分析,分析什么?首先要讨论概念“是什么?”“在什么维度上由什么组成?”“与什么有什么样的关系?”

还要从字面的意思进行展开:谁在什么场景下有什么样的需要,产生了什么的要求,要求什么(谁做什么,什么要变成什么样...)。这样解决了“是什么?”这个问题。

从“是什么?”到“在什么维度上有什么组成?”。 继续理解上面的语句。 提前出 “谁” 与需求的关系, 谁是需求的提出者。 .... 需求是由需求的提出者、需求的提出场景、需求提出的时间、需求的解决问题.....等等组成。

“与什么有什么样的关系?” 找到“组成”的答案中的名称(对象)。根据面向对象的思想中的对象之间的关系进行分析,分析出各个名称与“需求”之间的关系。

以上是面向对象的思想。

需求的影响因素

理解了什么是需求,那么如何解决“需求的影响因素”?

在解决“什么是需求”这个问题上,上面使用了面向对象的思想。 这个是方法。 学过编程的小伙伴都知道,方法是固定的,但是方法的输出不是固定的,因为入参不一定相同。 也就是即使大家都知道面向对象的思想方法,但是设计的软件也是不一样的。 那么入参包括什么呢?

整个的过程是在每个人的大脑中完成的,因此入参包括知识、经验、事物的认知...。

讨论完以上内容,回归“需求的影响因素”, 需求最后的落到的是“要求”上。这个是一个系列之后的一个结果。那么要讨论产生这个结果的方法是什么, 这个会影响到这个结果。

然后要考虑“谁在什么场景下有什么样的需要”这个是“要求”的目标。这里面有三个词“谁”“场景”“需要”。“谁”这个要了解到他的“知识、经验、事物的认知...” 这样才能站在他的角度去理解“场景”“需要”以及后面的“要求”。

为什么要“变”

如果方法不变、入参不变那么结果也不会变。在这里也就是说如果需求变化了一定是要么方法变了、要么入参(需求相关的事物)变了。方法的变化是不容易的,也可以说在很短的一段时间内可以看出是不变的。 那么入参的变化是主要的因素,那么也就是“知识、经验、事物的认知...”产生了变化。从大的趋势看,“知识、经验、事物的认知...” 每个个体、人类、都是朝着正向趋近的。那么如何理解“正向趋近”?就是与离客观世界趋近。

那么“变” 是向正确的方向趋近的过程。所以需求一定是“变”的,需要不断的拥抱“变化”。

如何控制“变化“产生的成本最小

从上面讨论从看到了“变化”的根本原因“知识、经验、事物的认知...”这些在不断的演变。但是“知识、经验、事物的认知...”一定不是翻天覆地的、完全的推翻的。如果是那样的“变革”成本一定是很大的,因为可以说“它不是它了”这种就不在这里讨论了。 所以软件设计中遵循着“知识、经验、事物的认知...”的结构,顺应“知识、经验、事物的认知...”的逻辑进行设计。 那么再“知识、经验、事物的认知...”变化的时候随着进行变化,成本是最小的。