有人做了一个总结:一个J2EE项目组通常会有怎样的人员结构,或者说,一个J2EE项目通常需要怎样一组代表不同的工作性质及内容的角色。实际情况中,一个人可能同时承担多个不同的角色,一个角色也可以有很多不同的人来分担。这些角色包括:
- 项目经理
- 架构师
- 领域专家
- 美工
- 前端开发人员
- 后端开发人员
- 数据库设计师
- 数据库管理员
- 数据移植专员
- 系统管理员
- 测试人员
其中,项目经理负责安排和协调整个开发小组的任务和进度,向决策层和用户代表反馈项目进展和状态,以及负责保证项目组或者其成员所需的所有资源足够完成项目开发并及时到位;架构师负责项目的总体技术选择、系统设计和指定具体的技术标准和细节,通常也需要跟整个小组紧密协调;领域专家负责采集和分析用户需求,在整个项目开发过程中了解和确保产品能够符合最终用户的要求;美工设计用户界面;前端开发人员按照美工的蓝图增加具体的前端处理逻辑;后端开发人员实现具体的业务逻辑,通常包括持久层的操作;数据库设计师负责通过领域专家提供的需求设计数据库的表结构和表关系,如ER图;数据库管理员根据ER图生成实际的数据表,并对数据库进行维护,以及协助优化数据库和SQL查询语句性能等;数据移植专员负责编写移植脚本,帮助客户将原有系统数据导入新的系统;系统管理员负责维护开发工作中需要的所有开发、测试、产品环境,以及进行产品发布;测试人员负责测试,保证开发出来的产品满足需求文档并没有bug,测试人员应该具备一定的领域知识。
拿一个具体的项目组来说:
这是一个J2EE外包项目的开发组,共有人员30名,1个项目经理、2个领域专家、22个开发人员开发人员、1个数据库管理员、以及4个测试人员。由于设计部分是由甲方做好,项目组没有专职的架构师和数据库设计师。项目采用EJB+Struts的总体结构。
项目经理负责同甲方的项目经理确认任务安排和进度,以及协调项目组内部各成员的工作进展,并提供必要的行政和软硬件支持,同时执行项目经理的其他日常工作,如配置管理等。2个领域专家参与同甲方领域专家的沟通,确保拿到的需求文档和设计文档充足且合理,并参与SIT,确保最终的产品符合文档的需求。数据库管理员负责维护并同步甲方提供的数据库,同时协助开发人员优化SQL。测试人员负责在不同模块完成后进行功能测试以及最后的SIT。开发人员按照不同的模块分成5个组,每个组又进一步细分为1个后端开发人员和多个前端开发人员,后端开发人员同时是该组组长。所有组长统一向项目经理汇报。
由此可见,上面总结出的那个J2EE项目组成员角色清单还是相当有说服力。总体上,在这个项目组中,项目经理是其协调和沟通作用的单点,项目组的主体由开发人员构成(这不奇怪,本身就是要开发产品嘛),领域专家和数据库管理员主要还是配合开发人员的工作,而测试人员则除了一般意义上的测试和配合之外,因为相对独立于开发,也起到一定的对项目开发流程的监督作用。
J2EE这个东东(可以理解为一组规范)本身就强调角色分工,当这些分工不同的角色都尽心尽力做好自己的工作,文档齐备,并且各个不同的角色之间保持足够的沟通,加上确定的流程,面向企业的Java项目就会更倾向于朝着健康可控的方向发展。