《软件方法》2025版 第2章 业务建模之愿景 Part1(20250908更新)
《软件方法-全流程引领AI》2025-第1章 ABCD工作流(全文)
这城市已摊开她孤独的地图 我怎么能找到你等我的地方
《模范情书》;词:高晓松,曲:高晓松,唱:老狼;1996
前些年,互联网产品经理圈子流行这样的口号“我们只做最重要的需求”、“砍掉80%的功能,专注于剩下的20%”。哇,这个道理真棒!那怎么判断哪条需求最重要?砍掉哪80%? 没有愿景的支持,这些将沦为空话,愿景就是需求排序的主要依据。
以一个目标系统为研究对象,其愿景(Vision)的定义是:
从目标组织负责人的视角看,目标系统最应该给目标组织带来的改进。
但要理解好这个定义并不容易,我们从头来理清一些概念。
2.1 系统
2.1.1 “系统”的历史
关于“系统”的研究,在计算机诞生之前就已经有了。
Arthur D. Hall在1962所著的“A Methodology for Systems Engineering”一书中提到,贝尔实验室从1940年代开始使用“Systems Engineering(系统工程)”一词,见图2-1。
图2-1 贝尔实验室和系统工程,摘自A Methodology for Systems Engineering,Arthur D. Hall,1962
Arthur D. Hall的书还出现了object、attribute、relationship等词,如图2-2。这似乎在说面向对象软件开发,但实际上当时软件开发中的“面向对象”还没有诞生。仔细看文中的atom、star等词,可以知道此处说的“系统”并非我们现在当作缺省选项的信息系统,而是广义的“系统——对外能够提供某些服务,内部由若干部件组成的东西,从整个宇宙到一家企业、一个软件系统甚至一个细胞,都可以称为“系统”。
图2-2 Arthur D. Hall书中的“面向对象”
★“面向对象编程(object-oriented programming)”的说法由Alan Kay在1967年首先使用(http://www.purl.org/stefan_ram/pub/doc_kay_oop_en)。Simula-67是第一门面向对象编程语言。
2.1.2 系统和容器
本书第1章在讲到UML和SysML在建模中的区别时,谈到了处理信息的系统以及处理物质、能量的系统的区别。
信息系统接收输入的信息,使用其内部所封装的逻辑计算得到输出的信息。不属于信息系统的其他系统,本书统称非信息系统。非人生命体(从大猩猩到病毒)以及各种机械(从老式的汽车到算盘)都归为非信息系统,不再细究其分类。
根据以上内容,系统初步分类如图2-3。
图2-3 系统的初步分类
★虽然本书到第8章才开始讲解类图的建模,但第2到7章也会用类图来表达概念以及概念之间的关系,目的不是要建模类图,而是帮助理解。如果读者之前没有类图的基本知识,可先阅读本书第8章或其他UML书籍中的相关章节。其他UML书籍推荐《UML和模式应用》(Larman)或《UML精粹》(Fowler)。
根据所驻留的位置,信息系统又可以分为驻留人脑的信息系统(简称人脑系统)以及驻留计算机的信息系统(简称软件系统)。
此处的“计算机”是广义的,是支撑软件系统的基础设施的统称,而不单指某一台计算机的硬件。即使在单机时代,像“浑元太极学员管理系统”这样的软件也已经离计算机硬件有一定距离,更不用说现在的云计算和虚拟化了。
★选择用“软件系统”这个词和“人脑系统”对应,是一个折衷的选择。和“(驻留在)人脑(的)系统”对应的,最直接是“(驻留在)电脑(的)系统”。如果觉得“电脑”港台味浓或者不能用在学术场合,可以改为“(驻留在)计算机(的)系统”,但“计算机系统”一直以来被认为指计算机本身——类似于《深入理解计算机系统(CSAPP)》所讲解的内容。如果不使用“人脑系统”这个称呼,可能不会有这些问题,但目前先这样使用,特此说明。
图2-4表达了进一步的分类。
图2-4 系统根据驻留位置进一步分类
其实,像图2-4这样进一步泛化意义并不大,我们更在意的是系统的能力而不是驻留位置。同样能力的信息系统可以驻留在人脑中,也可以驻留在计算机中,人脑中的信息系统可以复刻到计算机,计算机中的信息系统也可以复刻到人脑。哪一个系统能力强,我们就用哪一个。
“人脑”和“计算机”可以看作两个容器类型,如图2-5。
图2-5 把人脑和计算机看作两个容器类型
把人脑看作容器,人担任的角色或职位看作驻留在人脑中的系统。例如,马宝国是一名.NET程序员,人称阿宝,同时也是一名浑元太极教练,人称马老师,这可以看作马宝国这个人脑中安装了“.NET程序员”和“浑元太极教练”两个系统。
同样,我们把计算机看作容器,上面可以驻留很多软件系统。例如,马宝国所使用的计算机安装了“Visual Studio 2022”和“浑元太极学员管理系统”。
我们把“时间”想象成运行在驻留在上帝中的信息系统,至于它是人脑系统还是软件系统,就要看我们把上帝看作是人还是计算机了。“时间”不停地向其他人脑系统或软件系统发送时间信号,这些系统收到时间信号后,可能会做一些事情。从物理学的角度,这个想象是有问题的,但对于本书的内容来说,这个想象够用了。
这里顺便谈一下面向对象初学者的一个常见错误(包括不久前刚批评的一个领域驱动设计创新“宏论”)。例如,研究一个烹调软件系统,这个系统里面有哪些类呢?有的人会认为系统里有一个“厨师”类,封装了烹调的逻辑。他这样想的理由是,如果没有这样的烹调软件系统,烹调的逻辑是放在厨师的人脑里。
根据上面的剖析,厨师对应的这个人只是一个容器。这个人之所以会烹调,不是因为他是人(我也是人,我就不会烹调),而是因为他的人脑里安装了“厨师”系统,这个“厨师”系统和以计算机为容器的“烹调软件”是对等的。
输入一个信息“宫保鸡丁”,人脑中的“厨师”系统为什么能想到一个烹调的流程,然后按照流程指挥他的手脚以及各种设备烹调?回答“因为系统里有一个厨师类”、“因为他是厨师”虽然很有投资少、见效快、产量高的领域驱动设计风味,却是没有意义的,有意义的回答是“因为系统(即厨师)知道菜品-制作步骤-食材之间的关系”。
同理,输入一个信息“宫保鸡丁”,计算机上的“烹调软件”系统为什么能输出一个烹调的流程,甚至能按照流程指挥电子烹调设备来烹调?回答“因为系统里有一个厨师类(烹调软件类)”也是没有意义的。有意义的回答是“因为系统(即厨师)知道菜品-制作步骤-食材之间的关系”。
实际上,人脑中的“厨师”系统中可以没有“厨师”类。厨师只要记得菜品-制作步骤-食材,忘了自己姓甚名谁并不妨碍烹调。同理,“烹调软件”也可以不需要厨师类,因为它不记住厨师的信息,不影响它输出烹调的流程。
注意:
(1)是“可以没有”。如果有需要,“厨师”或“烹调软件”当然可以记住厨师以及他和其他几个概念之间的关系。
(2)注意区分“厨师”和“(供)厨师(使用的)界面”。
第8章还会探讨这些问题。
2.1.3 系统和系统规格
由于本书只深入讨论信息系统相关的建模,因此从以下内容开始,我们说到信息系统时只说“系统”,这样可以在称呼上减少一半字数。也许后续讨论的内容其中一部分也适用于非信息系统,但本书就不加以鉴别了。
目前为止,我们对“系统”的定义其实是模糊的。
如果有两名.NET程序员马宝国和张雪风,他们的电脑都安装了Visual Studio 2022,这到底算几个系统?如果认为是多个系统,那就会出现多个“系统”对象属性值完全相同的情况。例如,很多系统的名称都叫“Visual Studio 2022”,其厂商都是“Microsoft”(如果关注这些属性的话)。
因此,需要区分“系统规格”和“系统”。我们把“Visual Studio 2022”看作一个“系统规格”,某个人脑或计算机容器中安装的“Visual Studio 2022”是一个“系统”。添加上“系统规格”后,类图如2-6。
图2-6 系统和系统规格
用上面的马宝国、张雪风数据实例化图2-6,得到的对象图如图2-7。
图2-7 对象图
如果更严谨地追问,上面的模型还是存在模糊。
我们把“.NET程序员”和“Visual Studio 2022”看作是对等的,但马宝国后面可能会使用“Visual Studio 2026”,或者改用另一个厂商出品的.NET集成开发环境“Rider”。那么,“.NET程序员”最合适的对应应该是“Visual Studio 2022”、“Visual Studio”还是“.NET集成开发环境”?
这个模糊的根源可能是:我们比较清楚 “Visual Studio”和“Rider”的差别、“Visual Studio 2022”和“Visual Studio 2026”的差别、“Visual Studio 2022社区版”和“Visual Studio 2022专业版”的差别,但是不清楚“.NET程序员”之间的差别。
这个问题我们暂时搁置,以上所提炼的概念对于本书的建模够用了。
后续的建模过程中,我们在研究系统时会有意忽略容器。我们只要知道有两个人脑系统“.NET程序员”和“浑元太极教练”就够了,它们是不是驻留在同一个人脑中,或者说这两个岗位(角色)是不是指向同一个人,是无所谓的。软件系统也是如此。
所以,在描述系统之间的协作时,我们可能会像图2-8这样建模:
图2-8 “.NET程序员”和“Visual Studio 2022”的协作
“.NET程序员”和“Visual Studio 2022”安装在容器(人脑或计算机)中,这两个系统事实上并不直接接触。如图2-8左侧的场景,两者的接触点是人的手指和键盘。人的大脑指挥手指去敲击键盘,键位的变化被捕获并翻译成相应键的编码……但这些都属于容器相关的行为,图2-8右侧的序列图不用表达。
容器类型也不会经常被提到,因为从系统规格的名称就可以判断,例如,“.NET程序员”是人脑系统,“Visual Studio 2022”是软件系统。
2.2 组织
2.2.1 组织和组织规格
和系统一样,我们区分“组织规格”和“组织”。
例如,“县区教育局”是组织规格,“天火市稻积区教育局”是该组织规格的一个组织;“企业人力资源部”是组织规格,“大米公司人力资源部”是该组织规格的一个组织。
一个组织规格由若干系统规格组成,其中至少有一个系统规格是人脑系统(可以只有一个)。也就是说,如果没有人,就算堆满了机器人,都不算我们这里说的组织。
可以给“组织规格”加约束来体现这个规则:
系统规格s->exists(s | s.容器类型 = 容器类型::人脑)
用类图表达如图2-9:
图2-9 组织和组织规格
从组织价值的视角看,当前组织里面的系统,有的是合适的,有的是应该更换的。更换人脑系统,就是裁员和招聘,更换软件系统,就是……大家熟悉的场景。组织里面还有非信息系统,也要更换,但这部分本书就不涉及了。
2.2.2 组织规格的分类
可以对组织规格做一些分类,像图2-10这样用泛化关系表达:
图2-10 泛化关系表达组织规格分类,空间有限,只表达一部分
在图2-10的子类中,有一个“个人组织”。我们把“人以群分”视角下的个人看作一个组织,该组织的部件包括一个人脑系统和若干非人系统。
例如,“程序员”可以看作一个个人组织规格,该组织规格的部件包括一个“程序员”人脑系统规格,还有“编码工具”、“UML建模工具”、“版本控制工具”、“AI工具”等非人系统规格,如图2-11所示。
图2-11 程序员个人组织和程序员人脑系统
这个地方的阐述和以前的《软件方法》版本有了根本的不同。以前的《软件方法》版本把“人群”和“机构”看作对等,可以说是《软件方法》方法学的一个大缺陷。漏了“机构群”这个抽象级别无法对应,同时,生硬地把“人”看作“人群”中的业务工人,也不合理。
这个版本的阐述通过把个人及其所利用的其他工具看作是一个“个人组织”,应该补上了这个漏洞。法律上也有类似的做法,通过“法人”的概念,把自然人和机构拉平,成为对等的民事主体。
注意区分个人组织和只有一个人的机构。有的部门在某个时间点只有一名人类成员,甚至有的企业在某个时间点只有一名人类成员,例如暂时没有另外增加雇员的“一人有限公司”或“个体工商户”,但这样的组织并非人群视角下的“个人组织”。
图2-10所示子类的上面和下面还可以加泛化层次。
往上走,企业、党政军单位、事业单位(以及社会团体、民办非企业单位)等,可以泛化出“正式组织”,它们都有“信用码”属性;部门、团队、家庭、人群视角的个人等可以泛化出“非正式组织”。
往下走,“企业”、“党政军单位”等等,下面还可以分为更细的子类。
泛化的用处是体现行为的变化。本书无意探讨不同子类的组织规格在行为上有什么不同,所以我们把泛化结构取消,用“组织类型”代替,如图2-12:
图2-12 用组织类型代替组织的泛化结构
2.2.3 开发组织和目标组织
在图2-10和2-12中,“组织”和“系统”之间只有一个关联,所以我们没有给关联或关联端的角色命名。如果要命名,应该如图2-13中的某一个:
图2-13 给图2-10和2-12中“组织”和“系统”的关联添加细节
除了“系统正在担任组织的部件”之外,系统(或系统规格)和组织可能还有其他关系。
山东枣庄有一家“武德物业”,总经理为房竹韧。“武德物业”服务的楼盘有“中原裕府花园”、“拉斐公馆”等。“武德物业”目前使用 “银蝶物业管理系统”来协助各项工作。“银蝶物业管理系统”由“银蝶软件”开发。
软件公司“浑元科技”的总经理马宝国看到了商机。他认为,类似“武德物业”的组织目前还有很多可以通过信息化来改进的地方,这些组织中,以“武德物业”最为典型。
于是,他想要做一个“以和为贵物业管理系统”,取代“银蝶物业管理系统”为“武德物业”服务。“浑元科技”有开发团队,但资金不足,马宝国拉来了“五连鞭资本”加入。
从上述内容看,系统(或系统规格)和组织有以下关系:
图2-14 组织和系统的更多关系
用刚才举例的内容实例化图2-14,得到图2-15的对象图:
图2-15 实例化图2-14得到的对象图
图2-15中,有两个系统规格的实例名称同为“总经理”,这两个不是同一个系统规格。一个对应武德物业总经理的职位,一个对应浑元科技总经理的职位。
有了以上的建模作为铺垫,我们可以定义以下概念:
(1)开发组织和开发组织负责人
负责构思和生产某个系统规格的组织,称为该系统规格的开发组织;该组织的负责人就是开发组织负责人。
我们不进一步区分出钱、出力、出**资源的组织,如果资源来自多个组织的合力,可以把开发组织视为这多个组织合并而成的一个大组织。上面描述的例子中,可以把“以和为贵物业管理系统”的开发组织看作“浑元科技+五连鞭资本”。
不过,大多数情况下不需要考虑“五连鞭资本”。做事需要钱,钱投进来是为了赚更多钱,这是一个和特定领域无关的普遍道理。如果出资方不是直接指引关于目标系统规格的各种决策,可以当作不存在或者普遍存在,否则很容易变成批量刷废话。其他和特定领域无关的普遍资源也是如此考虑。
所以,如果马宝国没有被资本架空,“以和为贵物业管理系统”的开发组织设为“浑元科技”即可,马宝国是“以和为贵物业管理系统”的开发组织负责人。
(2)目标组织和目标组织负责人
最适合用某个系统规格的系统来改进其组织流程的组织,称为该系统规格的目标组织。
上面描述的例子中,“武德物业”就是“以和为贵物业管理系统”的目标组织,总经理房竹韧是“以和为贵物业管理系统”的目标组织负责人。
在《软件方法(上)》的前两版中,目标组织负责人也被称为“老大”。从这一版开始,我们将尽量使用“目标组织负责人”,不使用多余的词汇。
**********
某个系统规格的开发组织和目标组织可以是同一个组织。
组织A里有部门A1(通常是IT部门),A1开发了系统规格x,用于改进A1自身的流程。这时,系统规格x的开发组织和目标组织都是A1。
组织A里有部门A1,A1开发了系统规格x,用于改进组织A的流程。这时,系统规格x的开发组织是A1,目标组织是A。A1属于A,也可以认为开发组织和目标组织都是A。
下面这个就不一样了:组织A里有部门A1,A1开发了系统规格x,用于改进部门A2的流程。这时,系统规格x的开发组织是A1,目标组织是A2,开发组织和目标组织是不同的,不能说它们都是组织A的部门,所以是同一个。
用医学来类比,看看是否可以帮助理解:
一名心脏内科医生自己检查自己的心脏;
一名心脏内科医生请另一名心脏内科医生帮自己检查心脏;
一名心脏内科在医院院长的命令下给全院员工检查心脏;
一名骨科医生觉得自己心脏不舒服,挂了本院一名心脏内科医生的号。
不过,心脏长在谁身上,心脏当前状态好不好,怎样才会对心脏好,这是有医学事实和医学规律的,不以谁给谁看病而变化——这一点后面还会不断强调。
开发组织和目标组织是组织和特定系统规格关联时所扮演的角色,所以在提到开发组织和目标组织时,务必要指明是哪一个系统规格的开发组织和目标组织,除非已经有一致的认识。
平时我们说的甲方、乙方、客户等,是很含糊和简陋的说法,很多错误就是由这些含糊导致的。
很多开发人员和我说,我们这是一个内部项目,没有客户。噢,那你们可以为所欲为了?想想就不可能嘛。所以,在下面的内容中,除了描述某个开发组织的具体场景时可能会使用之外,我们在严谨叙述方法学时,会尽量避免用这些含糊的词汇。
2.3 建模步骤A-1定位目标组织(可选)
在定位系统规格的目标组织和愿景时,有两个思考的出发点:从开发组织负责人出发和从目标组织负责人出发。
在上面所举的“以和为贵物业管理系统”例子中,说“浑元科技”的总经理马宝国看到了商机,这是以开发组织负责人作为思考的出发点。
还有一个可能:“武德物业”的总经理对自己组织的现状不满意,打算引进信息系统来改进,这是以目标组织负责人作为思考的出发点。
平时所说的“做项目”,有一定概率出现第二个情况,而平时所说的“做产品”,都是第一个情况。
第二个情况可以不需要定位目标组织,直接快进到定位系统的愿景。当然,思考的起点必须来自真正的目标组织负责人。“武德物业”IT部门的经理可能会觉得“武德物业”需要引进信息系统来改进“武德物业”各方面的工作,但“武德物业”已经超出了IT部门经理的管辖范围,因此这样的“觉得”是不算数的。
定位目标组织和目标组织负责人(老大)的步骤如图2-16,我们缺省认为使用了AI来辅助,后文在描述接下来的建模步骤时也是如此。
图2-16 定位目标组织和目标组织负责人(老大)的步骤。注意,目标组织负责人(老大)的类型是“系统”。
2.3.1 步骤A-1-1 识别开发组织的能力
开发组织负责人就像军队的指挥官,他决定军队当前最应该开往哪个战场,和那里的敌人搏杀。A城富庶,打下来可得巨额钱粮,但敌人重兵布防,拿下来的概率很小;B城敌人力量薄弱,拿下来的概率很大,但B城很穷。
要做出最佳的决策,首先要开发组织负责人对自己组织的能力有清醒的认识。
下面是描述开发组织能力的一个例子:
接化发软件公司自评有以下能力:
*Java技术能力,能力等级为领袖等级。开发团队核心成员是Apache顶级项目的代码贡献者。公司有一个内部研发的框架“左正蹬(ZZD)”,水平处于业界前列。
*农业信息化能力,能力等级为卓越等级。做过十几个农业信息化的项目,在病虫害预警、精准灌溉和产量预测方面积累了丰富的经验,但业界还有体量更大、背景更深的竞争对手——耗子尾汁科技。
*烟草业人脉,能力等级为优秀等级。公司总经理马宝民的伯伯最近调任省烟草专卖局局长。
可以看到,能力不仅包括软件开发能力、行业知识能力,还包括人脉背景等。
可以用类图表达组织能力相关概念如图2-17:
图2-17 组织能力类图
注意,图2-17的类是“组织”,不是“开发组织”。组织有这些能力就有这些能力,即使它躺平不扮演开发组织,也有这些能力。
用接化发软件公司的数据实例化图2-17,得到对象图如图2-18:
图2-18 组织能力对象图
2.3.2 步骤A-1-2 定位目标组织规格
2.3.2.1 放下幻觉,尊重现实
识别开发组织能力之后,接下来就是从能力来定位目标组织规格。如果开发组织打算做一个系统来改进某个组织的流程,最合适的组织应该是什么样子?
以我接触各种各样开发组织的所见所闻,大多数开发人员,甚至有一部分挂着“产品经理”头衔的开发人员,头脑中根本没有定位的概念。
在给某团队剖析他们当前正在做的项目时,我问负责的产品经理,谁最适合用这个系统?
如果是目标系统为某个组织定制的系统,也就是所谓“做项目”,这个有现成答案的,产品经理还能回答得上来。
如果是非定制的系统,即所谓“做产品”,回答可能就是这样的:
对于有明显行业性质的产品,例如“医院信息系统”,产品经理回答:医院最适合用。
对于没有明显行业性质的产品,例如“通讯软件”,产品经理回答:谁都可以用。
这两个回答都是“正确无用的废话”,其中没有任何的思考。如果挂着“产品经理”头衔的人这样回答,而且丝毫没有觉得有什么不妥,问题就比较大了,很可能会造成大量的资源浪费。
如果这一点上不做任何思考的根源是偷懒摆烂,危害还不是最大的。
危害最大的是这个自大的心态:干嘛要想这个?我做产品,当然希望用的人越多越好了!
这是把幻觉当成了现实。
幻觉:所有组织、所有人都用他做的系统。这个幻觉不需要任何思考,傻子都知道这是好事来着。
现实:目前还没有人用他做的系统。这就需要思考怎样做才能挖到第一桶金,这个思考可不容易!
如果顾客的额头上贴着一份招标书,上面写着资质、评分标准等信息,产品经理会清醒过来,原来这里也是有门槛、有竞争的、有花销的。
也存在自卑的心态。
有的开发组织负责人以为,有资格和有必要考虑定位问题的开发组织,应该是有较强实力,有雄心壮志的组织。这些组织可能想做产品赚大钱,或者想精准地去投标大项目。自己的组织目前处于苟活状态,靠人脉接点小项目维持,有资格和有必要想这个吗?
只要以开发组织组织负责人作为思考出发点,这个思考都是有必要而且有资格的。
靠人脉接点小项目,也不是说谁的项目都接。为什么接了二舅舅的,不接大姨妈的?可能大姨妈的项目接不到,因为竞争者和大姨妈那边的关系更近;可能大姨妈的项目对自己这边来说很难,怕做得很烂大姨妈那边都说不过去;可能大姨妈那边太抠门;可能觉察到大姨妈的项目有陷阱……
就算是乞丐讨饭,也不是对所有的施舍都会感激涕零。
2.3.2.2 形成定位意识
在原始人眼里,喝水是很简单的事情,也没多少选择,靠着河就喝河水,靠着泉就喝泉水。随着社会的发展,“喝水”变得越来越复杂。
“我进超市去买几瓶水带在路上喝”,您猜会买什么?图2-19展示了超市里摆的各种“水”(严格来说应该叫:主要成分为H2O的可饮用物质),它们瞄准的目标顾客并不完全相同。
图2-19 超市里摆的各种“水”抢夺顾客的胃
62岁的秦大爷找到KK可乐公司,和公司负责人说“我喝你们家KK可乐几十年了,特别是夏天喝冰可乐,气泡在舌尖上破裂的感觉,那叫一个爽!不过现在我年纪大了,有胃病,还有糖尿病,所以我希望你们家产品在保持原有优点的同时,又不会加重胃病和糖尿病。你看啊,我这里有一个方案,用食品纳米技术把益生菌做成纳米胶囊,这些胶囊在口腔的温度和唾液作用下破裂,又有类似碳酸气带来的爽感,又不伤害肠胃……”
KK可乐公司负责人会不会很感动,哇,这么棒的老顾客,把要求提得那么具体,实现方案也给了,省下好多我们调研需求和研发实现的时间,好,下个版本就这么办!
我觉得KK可乐公司负责人大概率会先感谢秦大爷的精彩建议,然后置之不理。此时的秦大爷已经不属于KK可乐的目标顾客(用近几年的时髦词语说就是“基本盘”)。只要年轻的肥宅足够多,他们喝可乐时依然感到快乐,KK可乐公司就不会改。
如果秦大爷坚持冒着胃病和糖尿病加重的风险继续购买可乐享用,可乐公司依然会卖给他,只是不理睬他提的建议而已。
如果有一家A公司投入资金,按照秦大爷的思路研发一款“纳米可乐”,并以较高的价格卖给秦大爷这样的人(可以把这个人群称为“退休精致大爷”),那也是可以的。这时候这款“纳米可乐”和原来的KK可乐已经不是同一产品,面向的目标顾客也不同。A公司为什么乐意做?有可能是在争取原来的目标顾客时竞争不过可乐公司,只好换一个战场。
图2-20 不同的“可乐”面对不同的目标顾客
当然,KK可乐公司也可以考虑做这个“纳米可乐”留住老顾客,但要考虑可能的风险:做出讨好“退休精致大爷”的举动之后,“年轻肥宅”会不会对品牌心生反感。
甚至不用品牌方主动讨好,非目标顾客自己送上来可能也是灾难。试想一下,一个目标顾客设定为“年轻精英男性”的品牌,突然被老年暴走团的大爷大妈追捧,被最近因“女拳”出名的杨女士、王女士追捧,会有什么后果?近两年这样的例子有:某购物网站、某酒、某汽车……。
IT产品同样需要定位。下面几个看起来功能差不多的产品,小红书的目标人群是热衷于分享生活方式的都市精致女性,Bilibili 的目标人群是爱好二次元文化的Z世代,抖音的目标人群是从事非思考性事务工作的年轻上班族。
(以上只是作者的看法,可能是有偏差的。自家产品的目标人群是什么样的,厂商的负责人最有发言权。)
并不是说,秦大爷是男性,不能上小红书,秦大爷是老年人,不能上Bilibili,韦东奕是高校数学教师,不能上抖音。对于厂商来说,自然是来者不拒,多多益善,只不过不同的人所提的意见,被厂商采纳的概率和程度是不一样的,就像上面所举的秦大爷例子。
定位相当于对需求的源头做了排序,最终目的是推导出目标系统当前最重要的需求。如图2-21,A和B是两个不同的涉众类型,从他们的利益衍生的系统需求分别是A→x、y、z,B→z、m、-x。
图2-21 不同涉众类型衍生的系统需求
可以看到,需求中有相同的内容,例如需求z,不过,在不同涉众看来,需求z的排序不同;需求中有不同但可共存的内容,例如y和m;需求中还有不能共存的内容,例如x和-x。
如果有了定位的思考,就能确定需求x应该先实现。如果没有定位的思考,那就会出问题:
产品经理为图方便吃窝边草
产品经理刚好和B比较熟,认为反正B“也”可以用。注意这个“也”字,相当于秦大爷“也”也可以上小红书。
这时,产品经理认为可以交差了,于是就按B的来,需求z应该先实现。宝贵的时间、金钱和人力资源会被拿去优先实现需求z,而在战场上发挥更大作用的需求x,却迟迟实现不了,甚至因为在实现需求z时资源耗尽而且在战场上节节败退,再也没有实现的机会。
这个“吃窝边草”的问题,后面还会继续提到。
这还不是最糟糕的,至少产品经理还是从涉众的角度来决定需求的排序,只不过涉众找错了。下面这个更糟糕:
被程序员绑架
我们再看图2-22,加上了“程序员乐意实现”的干扰因素:
图2-22 加上“程序员乐意实现”的干扰因素
程序员最乐意实现的是需求-x,如果被这个因素绑架,需求x只能沉入海底了。
至于为什么程序员最乐意实现-x,可能是因为-x刚好在他的舒适区内,不用费脑子思考,也可能-x的实现刚好需要用到程序员最近感兴趣的某个“新技术”。为了学习“新技术”和美化自己的简历,程序员对-x充满热情。
二十年前,一位技术总监的话让我印象深刻:
“知道这两个(和愿景相关度最大的)功能实现难度太大做不下去,在我看来这个项目已经没有价值,但是开发人员还乐在其中,觉得还有其他功能可以做。”
由于开发团队中各方关注的利益不同,需求被迫对实现退让——或者说得严重一点——被实现绑架,这样的场景并不鲜见,毕竟领导不能所有事情都亲力亲为,最后还需要有人搬砖。就像电视剧《康熙王朝》里姚启圣所说:
图2-23 电视剧《康熙王朝》截图
幸运的是,AI的降临横扫搬砖职位,大大削弱了实现绑架需求的力量。前些年被嘲笑的“我有一个绝妙的创意,就差一个程序员了”,将来可能就没那么可笑了,因为连“差一个程序员”都没有了。
2.3.2.3 步骤A-1-2-1 思考候选目标组织规格和目标系统规格(AI辅助)
再看图2-22,凭什么涉众类型A排在B前面?根本的依据要追溯到开发组织的能力。
在“2.3.1 步骤A-1-1 识别开发组织的能力”,我们定义了接化发软件公司的能力。现在,接化发软件公司总经理马宝民需要思考,公司做的软件最应该为什么样的组织服务,最应该改善目标组织哪方面的工作?还有,这个软件应该叫什么?
马宝民可以根据之前所归纳的能力以及对当前竞争态势的了解来思考。现在,AI有了很大的进步,他也可以借助AI的力量,获得一些启发。
马宝民可以这样写提示词:
**********
#背景
我想利用我当前所在的软件开发组织的能力优势开发一个软件系统,并希望通过这个软件系统来获利。利益不一定是金钱,也可以是权力、名声。
我把这个想要开发的系统称为目标系统。目标系统是什么样的,有哪些功能,销售给什么样的人和组织,目前我没有确定的概念。我想请你和我一起,一步步推导出目标系统的这些信息。
#任务
请你根据我所提供的开发组织的能力集合,定位目标系统的目标组织规格以及目标系统可以给目标组织的哪些流程和哪些度量指标带来改进。
目标系统的目标组织规格的定义为:如果把目标系统向这样的组织推销,打败其他竞争对手被这样的组织接受的可能性最大,而且在竞争中获胜后会有一定的利益。
目标组织规格可以是机构(例如省级税务局),也可以是人群(例如福建茶农)。
#所输入信息的规范
提供给你的信息包含以下内容:
*某开发组织拥有的能力集合,每一个能力给出当前在业界中能力等级。等级从高到低依次为:领袖>卓越>优秀>普通。
#要求输出信息的规范
要求输出的信息应包含以下内容:
*系统名称
*目标组织规格
*所改进的组织流程
*所改进的组织指标
*为什么得到这个结果(如果我指定了知识库或者附件作为参考资料,应重点回答使用了参考资料中的哪些知识点来思考)
按照以上格式,返回至少3个结果。
#参考资料
附件“愿景文集.docx”
#例子:
附件“定位目标组织规格示例.txt”提供了一个示例,帮助你理解。
#真实输入信息
开发组织:接化发软件公司
能力集合:
*Java技术能力,能力等级为领袖等级。开发团队核心成员是Apache顶级项目的代码贡献者。公司有一个内部研发的框架“左正蹬(ZZD)”,水平处于业界前列。
*农业信息化能力,能力等级为卓越等级。做过十几个农业信息化的项目,在病虫害预警、精准灌溉和产量预测方面积累了丰富的经验,但业界还有体量更大、背景更深的竞争对手——耗子尾汁科技。
*烟草业人脉,,能力等级为优秀等级。公司总经理马宝民的伯伯最近调任省烟草专卖局局长。
请你根据真实的输入信息,按照以上要求思考并给出结果。
**********
读者替换“#真实输入信息”段落的内容,就可以把以上提示词用于自己的项目。
提示词中的“#参考资料”段落提到的“愿景文集”就是本章的知识。本章或本书将来可能会受到版权限制,不能直接提供。读者也可以到UMLChina公众号精选(umlchina.com/url/jingxuan.html)去摘录我所写的愿景相关的文章,形成文集。
Claude-4-Sonnet(非官网)针对以上提示词返回3个候选。第一个候选“智慧烟叶种植管理系统”见图2-24:
图2-24 Claude-4-Sonnet的回答
考虑到篇幅问题,就不完整复制回答的所有内容了,另外两个方案是:农业物联网数据中台系统,面向的目标组织规格为省级农业农村厅及大型农业集团企业;区域农产品溯源与品质保障平台,面向的目标组织规格为地市级农业主管部门及特色农产品产业协会。
使用UMLChina研发的AI智能建模工具“发糕2025”,可以轻松生成提示词并提交给AI,然后提炼AI的返回结果,放入软件模型中,如图2-25:
图2-25 通过“发糕2025”定位目标组织规格
图中所使用的大模型是DeepSeek R1,也返回了4个候选。关于“发糕2025”的更详细信息,可以到这个链接观看视频:umlchina.com/url/fagao01.html。
2.3.2.4 步骤A-1-2-2 定位目标组织规格
AI返回的候选结果只能作为决策的辅助,如果能够给我们“眼睛一亮”的启发,那自然是最好。如果感觉平平无奇,甚至感觉AI在胡说八道,也是正常的结果,毕竟这相当于在问:我这样一个人,做什么赚钱最快?要让答案带来价值,比做数学题和编代码难度大多了。
当然,可以多试几个不同品牌的AI,提高“眼睛一亮”的概率。
图2-24中的“智慧烟叶种植管理系统”(第1候选)和图2-25中的“智慧烟农助手”(第4候选),都是把烟草业人脉和农业信息化能力综合考虑得到的结果,有经验的建模人员应该也会这样来定位。或者说,这样的结果是符合建模人员的预期的。
全部符合预期也未必是好事,说明AI没有带来启发。建模人员也要提防先入为主:AI给出的结果,凡是和我预期的一致,就是好的,否则就是坏的。如果是这样,AI就白用了。
既要防止先入为主,又要不被AI的胡说八道迷惑,这个尺度如何把握,还得读者自己捉摸。