本文为《软件方法-业务建模和需求》的读后感系列,可在线试读
认知红海时代
俗话说的好:人无我有,人有我优,人优我廉,人廉我走。
上大学用DreamWeaver学网页,老师说过:2000年那时候,40张图文的HTML静态页,可以要价2万RMB。现在么,建站服务几千块就能搞定。国内某个电商建站服务商,现在转型做小程序去了。
在这片红海之中获取竞争优势,是每个企业努力的目标。
解读利润公式
企业一般是指以盈利为目的,运用各种生产要素(土地、劳动力、资本、技术和企业家才能等),向市场提供商品或服务,实行自主经营、自负盈亏、独立核算的法人或其他社会经济组织。 –百度百科
会计学上的定义, 营业利润=营业收入-营业成本-税金及附加-销售费用-管理费用-财务费用-资产减值损失+公允价值变动收益(-公允价值变动损失)+投资收益(-投资损失)+资产处置收益(-资产处置损失)+其他收益。
简化一下,简单理解为:利润=收入-成本-费用。
现在较为通用的SaaS模式,客户一般会持续的租赁软件。续费客户的费用几乎可以忽略,即利润 = 收入 – 成本。
成本,主要是场地费+研发相关费用。一个良构的设计,可以显著降低开发成本和实施改动成本。客户规模到一定量级,可以有效的摊低研发费用。
收入,基本是由研发部给指导价格,营销部根据市场去调整的。最核心的,还是软件功能丰富体验良好,匹配客户的需求。所以,需求的好坏直接决定了软件的收入。
综上,利润=需求-设计。
“需求”和“设计”两个术语有两种用途:
- 用于表达建模得到的结果,例如“需求和设计不是一一对应的”
- 另一种用于表达建模的工作流,即需求工作流和设计工作流,例如“我正在做需求”。
为了得到需求,需要做的建模工作流有业务建模和需求。为了得到设计,需要做的建模工作流有分析和设计。
分离需求设计
如果需求和设计不分,利润就会缩水
需求映射设计
如果直接从需求映射设计,就会带来重复的代码。举个例子:
需求描述 | 设计 |
---|---|
A部门需要管理铺货,制定铺货标准,让下面的人按标准执行 | A部门铺货管理 |
B部门需要管理铺货,制定铺货标准,让下面的人按标准执行 | B部门铺货管理 |
C部门需要管理铺货,制定铺货标准,让下面的人按标准执行 | C部门铺货管理 |
D部门需要管理铺货,制定铺货标准,让下面的人按标准执行 | D部门铺货管理 |
由于各部门管理理念有一定差异以及一些其他因素,我真见过系统是这样设计的。
设计映射需求
如果直接从设计映射需求,就会出现假的“需求”。好多人觉得不可思议,设计怎么会映射到需求?就B端产品,做个分析:
一般B端是以项目交付为主的,早年没有PaaS的时候更是各种二次开发。项目积累够了,就会想要抽取共性做成产品,基本上是这样操作的:
- 一线客户基于自己的角度给出功能
- 项目基于已有零碎场景,直接进行设计
- 项目成功上线,形成解决方案
- 由于人员流动,且为了可落地,产品方案大量参考项目方案
- 产品设计参照项目设计,进行整合以及体验的优化
举个具体的例子:
项目功能点 | 实际场景 | 设计倒推需求 | 真实需求 |
---|---|---|---|
城市等级管理,可以定义城市的等级,如直辖市、副省级市、地级市、县级市、镇级市、特别行政区等,还能额外定义国家中心城市、省会城市等 | 某类活动费用的投放上限,根据城市的等级(国家规定的城市等级划分)有所不同 | 需要有城市等级的功能,费用控制需要用到 | 同步国家最新行政区域,以及对应的城市划分,并且能够为城市打上自定义的标签。 |
需求设计分离
需求 | 设计 |
---|---|
一个人,可以走路、跑步、跳跃;他还会举重、投掷、游泳; | 运动系统子、神经子系统、呼吸子系统、内分泌子系统、循环子系统 |
他会进食,也会排泄; | 消化子系统、泌尿子系统 |
极端情况,迅速反应,避免受到伤害; | 神经子系统-反射 |
他可以繁衍后代。 | 生殖子系统 |
整体如图:
建模没有借口
借口 | 实质 |
---|---|
“敏捷”、“迭代” ,放弃建模 | “迭代”只是一个底线,确实,再高明的大夫也没有把握一个疗程就治好患者,所以要按疗程试试看,但是每一个疗程中,依然要尽力检查、诊断、拟治疗方案。检查、诊断等技能越精湛,所需要的疗程就越少。 |
“项目时间太紧” | 有了计划,才能更好的应对变化 |
“试错大法” | 反客为主,成本过高。 |
“软件开发是艺术” | 艺术也是有迹可循才行 |
“系统比较特别”,“小系统” | 没有什么特别的系统,不同形态的系统各自有各自的复杂性 |