在小公司里,员工通常是一专多能,一人多用,...
在大公司里,通常是每个人专心干自己职责内的事,有专门的协调沟通...
在小软件里,一个程序完成各类任务,...
在大软件里,一个模块干特定的事情,有特定的接口...
一种设计思路:
先确定一种接口,规范所有模块间的通讯,
按需要编制特定的模块,从接口获取需求,完成一件简单的事,提供接口返回结果数据,其实这种手法早就被广泛应用了,各种基于消息机制的程序都是这样。
现在的问题是自己准备在未来的代码开发时引入此手法。
1) 需要一个公共的"秘书", 她不必会干什么事情, 但她要知道团队有哪些成员, 如何和那些成员通信, 谁擅长干什么事情, 每个人当前都在干什么事;
2) 每个成员加入团队时需要到秘书那里去报名(模块注册), 告诉她如何同自己联系(IP, Port), 自己可以干什么事(Functions);
3) 当某个需求提出时, 由秘书根据谁擅长干什么事及每个人当前所干事情的繁重程度将需求转交给特的的成员去干;
现在出现了几个问题,什么时候需要"秘书办"? “秘书办”如何工作?
当一个秘书不足以支撑全部的工作时, 或需要有备份人员保障秘书工作不中断时.
当多个节点可以完成同样的工作时, 就需要一个协调组织的管理者, 和一个公共的信息接口 -- 秘书办主任的角色.
如果仅仅是为了备份, 秘书办主任可以由首席秘书担任, 并指定工作接替者. 在各个成员加入团队时告知接替者是谁, 以便自己无法工作时, 团队的其他成员可以到接替者那里得到持续的秘书服务. 为保障秘书服务的持续性, 该首席秘书还应随时将手头获得的团队信息告知接替者。
如果秘书办是为大型团队服务, 秘书办主任的工作将不再是首席秘书. 的的首要职责是为秘书办的其他成员分配工作, 协调团队其他成员(维护模块注册信息)
现在,为大型的应用引入了一个新的结构: 模块群
每个模块群相当于原简单系统中的一个模块, 只是模块群的专业技能为一类, 而非单一模块的一种, 每组模块群有一个接口调度模块。
这种变化类似于企业规模扩大时,从一个专业人员扩充为一个专业部门,该部门有一个部门经理负责内部调度及外部协调。
一般而言,部门内部员工不直接和外部员工联系,通过部门经理分发任务,并限定任务与外部接口。当该任务结束后,接口交还给部门经理,等待下一个任务。这样可以由部门经理统一协调内部资源。
企业里面还有一种事物: 流程。流程是干什么的呢? 告诉企业员工, 在发生什么事件时, 根据什么条件,将什么数据,加工为什么信息,提供给什么角色. 这些说的是企业员工在流程当中的任务.
当企业员工遇到问题,想要得到某种结果时,通常是查找文档,或咨询专业人员,应该启用哪个流程,提供什么信息...
企业中,一个项目的运作是有一个项目经理负责,组织拥有特定资源,按特定的流程处理一系列的事务.
映射到在系统中,就是由一个模块按流程引擎指定的方式,从各个模块群中协调出特定的资源,完成一系列的动作.
企业的改进、提升(除去革命性的变化外),其实就是每个成员的技能提升、新引入拥有某种需要的技能的人、优化沟通渠道、优化流程...
对应到系统中就是优化模块、增加新模块、优化接口、改变流程引擎逻辑...
<script type="text/javascript"> file="/Best4cUserFiles/20080602/17143_1212375954578";showImage();</script>