这是我在csdn博客的第2篇技术文章,本来按原计划是要介绍开源ajax框架buffalo的第2部分,即js<>java的序列化,这里面涉及不少设计模式的运用和JAVA SE知识,代码精简,比较精彩。但是由于个人时间有限,在抉择之后,打算先写一篇关于面向对象分析的文章,也算是对自己过去1年多在这方面学习的总结。我选了比较简单且大家也比较熟悉的案例来分析,案例虽然简单,但是基本的分析方法和推导过程还是一致的,我主要想讲的是原始需求是怎么通过层层分析和推导而形成最后可执行代码的,限于自己的个人能力,如果有谬论和错误之处,还望同行多指教和帮助,共同进步。
原始需求描述如下:某公司鉴于业务和员工的快速发展,为了提升整体工作效率,公司准备开发一套员工报账系统,取代原来的人工处理方式,更加方便的服务于员工日常的账务操作。财务部门能够通过账务系统定期向各部门负责人反映账务统计情况,并设置和维护相关额度准则。系统应该具有基于先进技术的操作界面。
这段描述里包含的业务目标大致有二:
1. 为员工提供账务的自动化办理,提高办事效率,方便员工。
2. 方便财务部门管理好账务信息。
这些业务目标一般在项目的招标书里都有相关的描述,也可以由开发方整理得出。之所以这里要把业务目标列出来,是因为我所采取的方法里,业务目标是进行需求分析的第一步,接下来的推导过程和业务模型的建立都是根据业务目标开始的。
整理出了业务目标后,接下来先不要一头扎进具体的业务流程和业务细节之中去,应该先把涉众找出来,整理出一份涉众分析报告,涉众就是和这个项目相关的人。也不要就去考虑技术实现细节,要用什么先进的技术,界面如何美观,性能如何优越等等,虽然这些确实重要,但是相比起来,忠实的实现涉众的期望,满足涉众的需求才是最为重要,也是一个项目成败的关键。在实际的项目中,我们可以通过需求调研找出相关的涉众,这里我就直接列出本案例的涉众分析报告:
员工:公司的正式录用雇员; 期望:通过网上办理账务业务申请,计算机控制流程。
部门经理:部门负责人,负责审核员工提交的申请;期望:方便审核操作,通过计算机代替原来的手工审核方式。
公司主任:公司负责人,负责2次审核员工提交的申请;期望:方便审核操作,通过计算机代替原来的手工审核方式,界面友好易用。