软件开发理论中有对象的概念。万物皆可以是对象,对象包含属性和方法。例如“门”这个对象,属性可以有颜色,长宽,材料等等;方法可以有开和关等等。任何涉及“门”这个对象的场景,都会有对应的属性及方法。另一方面,涉及到颜色,长宽这些属性,或者开和关这些方法时,我们也应该联想到“门”这个对象。
产品的流程是通过各个系统之间的信息交互实现的,而这些系统可以看作是一个个对象。通过合理系统分解,可以将系统组成我们想要的产品的各个功能。了解现有的系统设计后,产品经理就可以自行考虑规划中的功能是否能通过现有系统实现,或者需要改造现有系统。从而对产品实现的原理和难度有较为清晰的认识。
面向对象的流程设计可通过UML实现。UML全称是Unified Modeling Language(统一建模语言)。是需求分析及软件设计领域非常实用的工具。UML一般可分为结构型UML与行为型UML两类。结构型UML适用在对复杂系统的结构组成设计上。对于流程设计而言,我们使用的是行为型UML。我们产品实现流程中常看到的时序图就是一种行为型的UML。
以ATM的功能为例,设计一个时序图。时序图描述的是用例。那ATM的用例有哪些呢?大的方面来说,我觉得有两个:取现,转帐。其他的比如输入密码,查询余额,这些都只是实现这个两个例的功能。我们设计一下取现这个用例的时序图。
首先考虑下,取现这个用例涉及以下对象:
持卡人、读卡系统、密码校验系统、余额查询系统、余额管理系统、出款系统
每个对象都有各自的方法,见下图这张结构图。
通过系统结构分析,罗列出取现操作涉及到的所有系统。然后再进行时序图设计,这样可最大程度上确保设计不遗漏。同时,也可更加清晰的认识到信息流转的途径,及信息加工处理的节点。这对我们的产品设计非常有帮助的。
通过上图的分析,我们可以很清楚的知道一个取款的指令需要经过哪些系统处理,各个系统分别处理什么数据,怎么处理,如何反馈。这就是面向对象分析的好处,通过这么一个分析之后,流程中的每个节点我们都了如指掌。知道产品的难点在那里,很大程度上避免自以为是的提需求。
当然,上面这张图完全可以继续细化,比如密码连续错误三次后系统吞卡;比如出款后,要记录在用户的交易记录中等等。