zoukankan      html  css  js  c++  java
  • 需求的有序化和方案的系统化

    A 需求的管理需要有序化

    用户或业务方的需求可以认为是一个混沌状态,特别是对于B端和后端系统,需求与当前系统的能力匹配不一,有的需求可能只需要改文案即可,有的却要系统重构才能支持。

    根据需求的实现难度和与当前系统能力的匹配程度,进行分类过滤,排好优先级,有序进行实现。这样,才能依次实现更多的需求,避免系统主流程发生较大的变更。

    B 具体方案设计的系统化

    这与需求的有序化是前后呼应的,都是为了避免系统无序内容的增多。

    对于一个后端系统,当对多平台进行业务支撑时,会出现两种情况。

    情况一:不同平台的需求共性较少,差异点较多。

    这时候需要需要首先将其共性进行抽象。

    比如,一个需要向用户的微信公众号、APP、手机号发送触达的需求,三种触达的文案各不一样,但其中的用户昵称是相同的。更系统化的方案就是把用户昵称作为一个配置变量,注入到每个平台的触达文案中。

    情况二:共性较多,差异点较少。

    这时候也需要把差异点进行抽象,形成一个配置项,这个配置项可以直接对不同平台的需求进行设置,无需代码再来判断这个逻辑。

    比如,同样一个商品的详情页需要在A平台是红色背景,B平台是绿色背景。如果事先将这个变量做成配置项,只需要一个配置文件,或管理后台对不同平台勾选颜色即可。

    2. 系统的开放性

    对系统要实现的需求进行有序化归类,类比为做功;要抵抗系统的熵增还需要系统保持开放性,不能是孤立系统。

    对于软件系统来说,我认为它的开放性可以理解为系统的拓展性和兼容能力。

    比如今天我对系统提一个需求,需要将用户的订单从A状态变成B状态,而C状态是B状态的平行状态。在设计系统的时候,就要考虑直接从A状态到C状态的可能,虽然业务需求当时没有提,但说不准下次的需求就是从A直接到C。

    如果系统的兼容性好,设计之初状态机就满足这种情况,后续就不用面对改造系统状态机而带来的诸多麻烦了。

    因此,要保持系统的开放性,需要在设计之初多考虑异常流程,以及外部系统接入时预留措施。

    3. 保持系统的熵减

    从熵增原理我们知道,当一个系统熵增已经很大了,要降低熵是非常困难的。因此,需要时刻关注系统的熵增状态,及时控制、维持低熵状态。

    对应到互联网产品设计上,我总结以下两点:

    A 需求文档与线上系统的统一

    互联网产品迭代频繁,产品经理的需求文档一般是迭代一版单独写一个需求,这样可能会导致迭代太多版之后,线上在跑的方案对应着多份需求文档。这对问题追踪和定位很不利,也不利于产品经理工作的交接。

    因此,对于自己负责的较大的系统,一定要经常同步自己的需求文档,使之与线上的版本一样。这样有任何线上bug反馈也可以快速定位,避免需求文档走向熵增的不归路。

    B关注系统的冗余程度

    虽然系统在设计之初都希望有序有规则,但系统跑久了,总会有很多临时支持的特殊需求,或者当时没有想明白就直接接入系统的逻辑。

    这些没有得到很好收归的需求,会导致系统的冗余;时间一长就会量变引起质变,在某个时间点拖垮整个系统。

    时刻关注系统的冗余程度,在一定时间段来集中处理这些特殊逻辑是非常有必要的。

  • 相关阅读:
    我的开发板学习经验总结
    (大数据工程师学习路径)第四步 SQL基础课程----修改和删除
    稀疏矩阵
    (大数据工程师学习路径)第四步 SQL基础课程----select详解
    (大数据工程师学习路径)第四步 SQL基础课程----约束
    (大数据工程师学习路径)第四步 SQL基础课程----创建数据库并插入数据
    (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装
    (大数据工程师学习路径)第三步 Git Community Book----高级技能
    (大数据工程师学习路径)第三步 Git Community Book----中级技能(下)
    (大数据工程师学习路径)第三步 Git Community Book----中级技能(上)
  • 原文地址:https://www.cnblogs.com/wcLT/p/12184809.html
Copyright © 2011-2022 走看看