定义项目小组各种角色的工作流程 如果每个小组成员都对即将开始的开发心中有数并跃跃欲试的时候,那么这就是一个很好的开头。 现在我们通过以下一份基本的角色及分工示例表2,把开发任务进行拆分,并定义每个角色的获得、处理、输出来表示各个角色之间的关联:
角色
| 主要职责
| 工作流程
| 获得
| 处理
| 输出
| 系统分析员
| 软件设计 系统建模 流程分析
| 获得需求(来源:商务工程师、项目经理) 获得(提取)系统相关的角色 获得(提取)系统相关的用例 | 数据映射分析 系统分析 流程分析 类分析 部署情况分析
| 输出系统模型工件文档(UML)
| 界面设计师
| 用户界面设计
| 得到项目流程描述工件文档(来源:商务工程师、项目经理、系统分析员)
| 理解项目界面控件类型及限制 理解项目受益人使用习惯 理解项目流程 设计通用界面规范 设计特定流程界面规范
| 输出界面描述工件文档
| 数据库设计师
| 数据库设计
| 得到项目数据对象工件文档(来源:商务工程师、项目经理、系统分析员)
| 理解数据库设计要求 理解选定数据库功能及限制 设计通用数据库采用标准 设计特定数据对象的结构
| 输出数据库定义工件文档
| 程序员
| 代码实现
| 获取界面描述工件文档HTML等)(来源:界面设计师) 获取数据库定义工件文档(UML)(来源:数据库设计师) 获取对象定义工件文档(UML)(来源:系统分析员) 获取项目开发进程计划(来源:项目经理)
| 理解工件意图 解读原型prototype(UML) 理解开发规范 编码 版本控制 建立版本控制环境(CVS) 获得项目初始工程文件(Java RAD工程,如Jbuilder) 获得最新工程源码(CVS update) 编码 保存工作结果(CVS commit) 模块调试 理解测试要点 ?? 测试 ?? 工作检查
| 输出程序源代码
| 美工
| 辅助VI企划设计 产品界面美工设计 美工设计
| 获取整体风格需求。(来源:项目经理) 获取特定流程风格需求。(来源:界面工程师)
| 美工设计 按要求做后期处理
| 输出界面模板
| 文档员
| 技术白皮书 使用手册 培训教材 演示文档
| 获得产品计划及功能描述。(来源:项目经理、界面工程师) 获得系统分析文档(来源:技术经理、系统分析员)
| 检测系统可操作性 编写技术白皮书 编写使用手册 编写培训教材 编写演示文档
| 输出各种文档
|
(表2) 在小组中,每个人的工作都是与其他相关联的,因此,小组成员除了保证自己担负的任务的质量的同时,还需要关注其他关联角色的任务,假使界面工程师迟迟无法定义产品流程,美工人员也许只能望纸生叹,而美工人员不能将产品界面文件及早完成而任由程序员随意定义界面的话,后期重新美化的工作量可能大到重写一遍代码的地步。
因此,项目经理需要时时掌握小组每个成员的工作进度,并进行监督和协调。有经验的管理人员都知道,项目的计划和进度在实施中必不可少地会进行调整,这种调整可能来自于: 客户的需求进行了补充或修改; 工作量估算不准,造成进度不平衡; 某个技术环节出现障碍,需要另外需求人员或帮助; 有人不遵从开发规范,导致产品缺陷; 在面对意料中的意外时,项目管理人员需要有应急解决的办法,从而保障开发持续稳定地向目标前进。 避免走向开发陷阱 一个成功的软件项目小组,需要时刻提防无时不在的陷阱,走出泥潭。 技术陷阱:技术是无止境的,开发人员往往热衷于追求新的技术而放弃了最擅长或最适用的技术,把项目当做练习新技术的试验田,造成产品的不成熟。 解决办法:想清楚是为技术而技术,还是为产品而技术?这不是个难以回答的问题。 需求陷阱:软件的功能的确越来越强大,虽然在开发前期制定了开发计划,但是开发过程中经常激发更多想象,从而试图不断增加新的功能,这种追求完美的心理可能导致的后果就是产品始终出不来,永远处于开发期。 解决办法:锁定需求,限制功能,需要的话,利用版本升级的原理,把功能分阶段实现,既保障产品的及时完成,又使小组产生成就感。 从程序员到项目小组 程序员除了坚持努力成为高级程序员以外,可以根据自身的性格、爱好和特长,并学习相关的技能,实现个人的提升,根据笔者个人的经验,对以上可能转换的角色做一些简要阐述: ===如何成为项目经理? 资深的开发经验并不一定能成为好的项目经理,项目经理对人员的管理、进度的掌握、质量的控制、成本的核算等等所做的工作已经远远超过代码本身,作为项目领导人,应随时能掌握先进的技术和方法并在适当的时机采用,管理整个项目小组往既定的目标前进。项目经理的角色不等于技术经理,也许项目经理实战开发能力并不是最优秀的,但却是小组的灵魂,所谓千军易得,一将难求。选择正确的人员、组织人员有效的工作是项目经理无法取代的价值。 ===如何成为系统分析员? 从获得需求分析开始建立合理健壮的系统模型将决定项目开发的成败与否,也可以说系统分析员做的是项目最基础的工作。系统分析员需要掌握科学的分析方法和工具,具有优秀的大局观和前瞻能力,对系统的稳定性、安全性、适应性和扩展升级的能力进行控制。 ===如何成为系统管理员? 从五月的红黑大战和种种报道来看,已经越来越多的人意识到了系统管理及网络安全的重要性,一个成熟的产品或项目只要是于网络相连就无法逃避安全的问题。系统管理员需要考虑服务器端的各种技术问题解决,管理不同的操作系统、数据库及服务,进行网络环境的架设和安全保障,系统管理员象卫士一样保障整个项目的顺利进行。 ===如何成为质量控制工程师? 质量控制工程师负责指定项目的测试计划与管理、编写测试方案、测试用例、执行测试计划;还需要负责与开发部门进行沟通与协调,确保软件测试的顺利进行;并对所测试的软件进行质量评估,并完成测试报告。随着项目的进行,质量控制工程师同时输出程序文档、课程文档和使用手册,因此需要更强的文字表达能力,同时为用户提供友好清晰的文档记录,使开发的质量得到有效的提高和保障。 ===如何成为数据库工程师? 数据库技术的不断提高和越来越多大型数据库的应用,使数据库工程师的角色日显重要,掌握数据库结构和建立数据库的方法,进行合理的安全性设置,数据备份和恢复,数据传输和数据复制,对很多程序员来说是个新的挑战,如果说今后是网络的社会,也可以大胆地说网络就是数据库,数据库工程师的重要性毋庸置疑。动态数据仓库、智能数据库等先进技术的深入研究和应用,在数据库领域的工作将越发重要。 ===如何成为商务工程师和技术支持工程师? 也许你已经厌倦了开发部门相对封闭的环境和紧张的工作,又不愿意放弃辛苦积累的经验,那么走出开发部,和市场部门一起从事售前售后的技术工作也许能让程序员重新焕发激情,利用自身的经验和技术实现客户的需求是件很美妙的感受。学会倾听和分析,准确把握重点和需求能使开发的工作事半功倍,有效提高用户的满意度,又何尝不是件快事?! 在互联网的时候,程序员是令人尊敬的,但是只有软件小组才能最大地发挥出潜力,只要认清方向,踏踏实实地坚持不懈,一定会大放光彩。
[此贴子已经被作者于2008-1-11 16:23:56编辑过] |