2008年11月24日星期一

业务流程建模与软件项目需求


在软件开发的阶段定义中,以前一直不太分得清需求阶段内部的子阶段划分。
在以前的项目中,我们仅仅出具软件功能需求文档,并且认为这份文档就是全部的项目需求文档。文档的内容主要包括:功能性需求的用例分析,用例内部的流程图(活动图),用例内部的系统原型,如果需要的话,还要加入模块以及的流程图和系统的WHOLE PICTURE,其他内容(包括:非功能性需求,项目业务目标,名词解释,设计人员等等)。

到新的公司之后,刚刚进入了物流项目组大约一个月,发现软件需求中的业务需求和功能需求还是有所区别。
在项目的早期,我们需要对客户的应用系统所涉及的业务逻辑和业务流程进行分析,并形成业务需求文档。这一份文档的目的是能够是项目组的相关成员对客户的业务有更好的理解,或者是新进入项目组的成员能够对项目的业务背景有一个比较完整的认识。准确的定义客户的业务需求对后面的软件需求分析具有指导性的意义。在这份文档中,将主要使用业务流程建模工具,如数据流图、工作流程图、UML活动图等等。
在分析的业务需求之后,进入到软件功能需求阶段。在这个阶段,将根据将来的系统建设需要对业务需求中所涉及到的功能进行重新的拆分组合排序,并进行一些补充。使之更加贴近设计人员的需要。在这个阶段的产物软件功能需求文档中,将会更多的将用户业务的语言翻译成为软件开发专业的业务描述。这份文档的目的是直接作为系统设计的输入,并能够指导开发工作,所以其还需要能够比较容易的进行任务分解。在这份文档中,将会更多的使用用例分析和业务领域分析、原型设计等工具。

目前新公司的物流项目正处于早期的业务调研阶段。在这一段时间内,我目前正在了解有关业务流程建模的工具。以前一直是在使用UML的活动图,但是总觉的其表现力还是不够丰富,所以也经常在使用跨职能的流程图进行辅助。最近查阅了相关的资料发现,UML在业务流程建模领域的确是弱项。在这个领域现在有很多成熟的工具和理论。最典型的是BPMN和EPC
BPMN图是官方组织发布的专门用于业务流程建模的规范。目前的版本大约是2.0。图例非常丰富——不下50多个。也有很多专门的绘图工具,其中包括免费的产品BizAgi Process Modeler和很多基于Visio的图例插件。不过,对于如何规范的规制业务模型的资料,网上却少得可怜。
EPC图不是行业标准或者规范。但是由于能够绘制EPC图的软件ARIS被内嵌在了者名的SAP软件中,所以EPC图基本上是事实上的行业标准。EPC图例并不复杂,但却能组合起来清晰的表现业务流程。
所以在现在的项目中,我尝试的使用EPC图的方式进行了一些业务流程的说明。当然,在使用的过程中,我对EPC的图例进行了微小的扩展。
下面是我做的一个EPC图的例子。

2008年11月17日星期一

关于业务模型分析的绘图需求

在业务模型分析过程中,发现有以下的一些绘图需求:
  • 需要能够表达工作流程。
  • 需要能够表达系统的功能。
  • 需要能够表达工作流程中的动作。其中最好能够区分关联到系统功能的动作和系统外部的动作。
  • (系统功能和流程中的动作或许可以等同对待)
  • 需要能够表达系统功能的输入和输出,可能是:纸质的单据,电子数据或者业务对象。
  • 需要能够表达操作系统功能的系统角色以及其所属的组织结构。
  • 需要能够表示出发系统功能的事件。或者系统功能完成之后的流程状态。
  • 需要能够表达流程分支的情况,例如:and, or, xor,并行等等。
  • 需要能够对某一个系统功能或者动作进行扩展。例如某一个系统功能中可能会有其子流程。
  • 需要能够对上述的业务对象以及系统角色进行“引用”方式的绘图,以便统一管理。
  • 可以对业务对象进行详细设计(类图)。
  • 最好能够附带对某一节点关联系统页面原型的设计功能。

目前正在参考以下一些工具,但似乎都不能完全满足需求。当然也有可能是没有完全发掘以下一些工具的全部功能。
  • UML活动图+UML类图
  • EPC图(Event-drive Process Chain)
  • Serena Prototype Composer工具

2008年11月13日星期四

Google Chat可以Video

今天一早打开GMAIL主页,在左上角发现了一个新的链接:New! Video chat
点击之。
发现被自动引导至www.google.cn主页,奇怪。
于是重来一遍,在浏览器刷新的过程中使用ESC,遂看到video chat页面。再次使用该方法,终于下载了google video chat插件。

OK,现在在gmail主页中发现了video chat设置,成功。

2008年11月11日星期二

应用软件设计需要原型设计工具

依据ICONIX过程与AMDD方法,敏捷设计的过程可以大致总结为以下的几个步骤:
  1. 进行用例分析(或者用户故事),同时设计初步的域(domain)模型。
    输出:初步用例、领域模型
  2. 同时参照用例和领域模型进行系统健壮性分析(robust)。
    输出:健壮性分析图、更新的用例、初步细化的系统类图(由领域模型而来)。
  3. 参照健壮性分析图,进行系统详细设计——画出UML顺序图。
    输出:顺序图(针对每一个用例至少一个顺序图)、最终细化的系统类图。
以上过程比较清晰,其中robust分析过程是为了弥补用例分析用顺序图之间的GAP而加入的过程。
不过,在第二步与第三步之间,如果能够加入原型分析(界面草图与页面流程),则其输出文档显然比系统顺序图更加直观。系统原型分析的结果能够更加有助于编程人员对与系统需求的理解,而这一步也是AMDD方法建议的步骤。
所以建议加入一步:
2.5. 依据用例分析文档,健壮性分析进行系统原型设计
输出:原型分析文档(页面流程图、系统界面草稿)

你现在在使用什么工具进行系统原型设计?MS Visio, Powerpoint, yEd, Dreamwaver, Flash还是纸和笔?(Sparx EA中虽然集成了界面设计工具,但是毕竟太过简单了)
其实现在已经有很多专业的原型设计工具了,主要的有以下几种:
  1. Axure RP
  2. Caretta GUI Design Studio
  3. iRise Studio
  4. Elegance Lucid Spec
  5. Mockup Screens
  6. OmniGraffle (only for MAC)
  7. Balsamiq Mockups
    有免费版本,但是有功能限制(不能保存,只能其他工具进行抓图了)。但是画出来的图是手写风格的,真的非常漂亮。
  8. Serena Prototype Composer (free)
    免费版本,功能非常齐全(建立项目、多层次的流程设计、界面设计、数据流转设计等等)。
  9. Pencil (firefox addon)
    居然是作为firefox插件形式的产品。免费。虽然只有界面设计功能,但是已经足够令人惊奇的了。
以上产品功能各具特色,都是很成熟的产品,而且非常容易使用。但是值得提到的是Serena Prototype Composer,使我们可以免费的使用到高品质的产品,强烈建议使用。