相关文章推荐
含蓄的人字拖  ·  makefile 拷贝 - CSDN文库·  2 周前    · 
唠叨的石榴  ·  Getting random error ...·  1 月前    · 
有腹肌的小熊猫  ·  python - How to use ...·  1 年前    · 

软件开发流程大概分为需求阶段、设计阶段、编码阶段、测试阶段、运维阶段这五大阶段。

某项研究分析了63个软件开发项目,对于需求错误在软件开发项目的不同阶段,发现并改正所损失的成本进行了研究与评定,得到了如下表格:

由图表可以发现, 越在后面的阶段,因为需求错误而带来的损失成本也就越大 ,而在需求阶段发现并改正的损失成本是最低的。这是因为越到后面投入的人力资源与时间越多,如果在初期能准确分析好需求,便不会带来之后的损失,故需求分析在软件开发中处于关键地位。

需求分析三要素

那需求分析怎么做呢?凡是都是有规律可循,需求分析也不例外。说白了,就有点 像议论文写作 。来来来,我们看一下百度百科对议论文的定义:

议论文,是一种剖析事物,论述事理,发表意见,提出主张(论点)的文体。作者通过摆事实、讲道理、辨是非等方法,来确定其观点正确,树立某种主张。议论文应该观点明确、论据充分、语言精炼、论证合理、有严密的逻辑性。

移花接木一下:

需求分析,是一种 剖析参与者需求 (老板、用户、业务人员等等), 抽象事物,组织概念,建立业务模型的过程 。产品经理通过明目标、理业务、面向对象等方法,来确定需求,建立业务模型。需求分析应当目标明确,用例充分、语言精炼,论证合理,有严密的逻辑感。

嗯,有点感觉。

既然议论文有三要素:论点、论据、论证,那需求分析有三要素吗?

  • 论点 :提炼抽象后的 业务模型
  • 论据 :即论点的根据,业务模型的根据便是 宏观上 业务模型的整体结构,告诉你系统有什么。
  • 论证 :即用论据证明论点,从词性上判断,这是一个动词,同样证明业务模型其实就是 强调怎么把系统整体结构的元素联系起来,告诉你系统怎么做
  • 毫无违和感,有木有。

    开始bb!

    模型,即通过主观意识借助实体或者虚拟表现构成客观阐述形态结构的一种表达目的的物件 (物件并不等于物体,不局限于实体与虚拟、不限于平面与立体)。

    相似地,建立业务模型的目的就是为了 表示业务需求并获得对业务需求的理解,然后对业务需求进行便于理解的表达 。这是能证明你是否正确且完全理解业务需求的工具,也是你与开发人员表达说明业务需求的利器,切记不能让你的理解停留在脑海里!

    我们先来思考这么一个问题:某餐厅老板想要为其餐厅设计一个餐厅管理系统。面对老板如此抽象的需求,你会如何去分析呢?

    大部分的思路往往是先梳理大致的业务流程图,然后针对每一个步骤,进行用户访谈,询问业务中的细节。

    可你有没发现,如果一这么做,就会陷入细节的泥坑。技术的细节、咦这个能不能实现;交互的细节,咦这样交互肯定不行的;UI的细节,咦这里设计成下拉框?这样的结果便是,自己的思路越来越凌乱,最终往往就是靠直觉做决定了!直觉可不给你背锅啊!

    解决问题有这么一个方法:在面对问题的时候首先不要决定去通盘考虑,而是找出问题领域里包含的 抽象角度 。如果把抽象角度都找全了,并且这些角度都分析清楚了,问题也就解决了。

    抽象角度的理解就好比:当问你刀与叉的区别是什么的时候,感觉自己无从回答。而问你刀与叉在使用上的区别是什么,便豁然开朗,一个是切,一个是叉。这里的使用角度就是一个抽象角度。

    需求分析也是一样的,具体来说,做需求的时候,首要目的不是弄清楚业务是如何一步一步完成的,业务包含了哪些细节,而是要弄清楚有多少业务的参与者?每个参与者的目标是什么? 参与者的目标就是你的抽象角度

    (这里便用到了面向对象分析方法,面向对象的好处便是可以集中注意力在要分析的对象上,排除其他因素的干扰。这也就是为什么程序员拿到需求之后,不是直接码代码,而是先建表,厘清一个个实体对象与它们之间的关系,就是这个道理。)

    回过头来,首先找出系统的所有参与者,然后进行初步的用户访谈,明确业务目标,大致可以分为:

  • 顾客:提供用餐自动化服务,提高点餐效率,方便顾客。
  • 服务员:提供管理订单服务,记录每桌的点的菜品,检查每个订单的上菜、收费情况等。
  • 店长:提供财务管理服务,记录每日的收银。
  • 这里我们用数学简单的公式提炼一下,可得到这样一个公式: 需求分析=∑(1到无穷)业务目标 ,意思便是:要全面地分析需求需要找到所有的业务目标(抽象角度)。

    所谓的 用例 便是,参与者带着目的去做一件件事情,这些事情都围绕着目标,而这些事情可以有很多不同的方法或是遇到各种各样的意外情况,因此这件事情是由很多不同情况的集合构成的。

    这些不同情况便是场景。如图便是用例的构成:(小技巧:用例必须满足动宾结构)

    就拿第一个业务目标:为顾客提供用餐自动化服务,提高点餐效率,方便顾客,这一业务目标来说,可以定义的边界为“顾客用餐服务”。从名字就可以明确业务目标是为顾客用餐服务的。

    边界决定了系统首要的问题是解决顾客的期望,也就是说,系统首先要满足顾客的需求。用餐方式分为堂食和外卖,其用例便有点餐、下单、买单。如图所示:

    这里又可以得到一个公式: 业务目标=∑(1到无穷)用例

    那如何思考全场景呢?换句话说,我们需要思考全场景的抽象角度。 场景的构成要素: 时间,地点、人物、行为 可以帮助我们分析。

  • 时间:餐厅营业时下单,餐厅休息时下单
  • 地点:堂食,外面吃(外卖)
  • 人物:单人点,多人点
  • 行为:添加菜品、删除菜品、修改菜品、查询菜品(增删改查)
  • 以此类推,得到所有满足用例的场景。上公式: 用例=∑(1到无穷)场景

    这一篇讲解了需求分析的论点——业务模型,以及业务模型的建模思路,取其精华,可以用如下图所示的公式来表示如何建业务模型。下一篇将着重讲讲需求分析三要素的论据与论证。

    本文由 @泽 原创发布于人人都是产品经理。未经许可,禁止转载

    题图来自Unsplash,基于CC0协议

    人人都是产品经理(woshipm.com)是以产品经理、运营为核心的学习、交流、分享平台,集媒体、培训、社群为一体,全方位服务产品人和运营人,成立12年举办在线讲座1000+期,线下分享会500+场,产品经理大会、运营大会50+场,覆盖北上广深杭成都等20个城市,在行业有较高的影响力和知名度。平台聚集了众多BAT美团京东滴滴360小米网易等知名互联网公司产品总监和运营总监,他们在这里与你一起成长。 ©2010-2020 - 人人都是产品经理 - 粤ICP备14037330号 - 粤公网安备 44030502001309号 企业内训/课程咨询和合作: 18682011582 其他合作/投诉/意见反馈: 18123776760