开发人员回顾项目时的观察与思考
作者:网络转载 发布时间:[ 2013/5/23 11:34:40 ] 推荐标签:
项目背景
这个项目的客户是欧洲一家人寿保险公司。该保险公司目前进行的一个计划是对现有的业务流程(business process)和IT系统进行较大规模的改造,以适应新的市场要求。我们的项目是这个计划的一个组成部分,它的目标是建立一个浏览系统与保险公司的后端保险管理系统相连。这个浏览系统用Web浏览器作为用户界面,以取代目前使用的字符终端界面。 2002年初,公司的有关部门(专门作金融服务)曾作了一些可行性研究工作。项目于2002年四月底正式启动,主要的开发工作于10月底结束。然后由另一组人马进行用户接收测试(user acceptance test)。
技术与系统构架
系统采用J2EE技术,系统基本上是三层(3-tier)结构,即Web接口(web presentation),应用逻辑(application logic)和后端服务器(backend)。
系统需求与规范
该项目主要有两种文档提供给开发人员:一种是系统功能描述,由一系列的模块组成。每个模块类似于一个use case,主要给出了该模块需实现的屏幕/窗口(screen shot),并一般地描述了这些屏幕上的操作以及它们之间的切换。这样的模块描述文件在项目中被称之为“故事板”(story board)。“故事板”由业务分析人员(business analyst)会同用户产生。另一种文档是与后端服务器接口的规范说明,如命令格式,数据格式等,由后端系统设计开发组提供。按照项目规定,两种文件都需要经过充分讨论并基本稳定下来之后,由相关负责人员签发(sign off),然后交给开发组。
项目团队与工作地点
项目组有14个开发人员,2个业务分析人员(business analyst),一个项目经理。主要开发组在英国(10个开发人员),项目经理和其余人员则在客户所在地(与英国有一小时的飞行的距离)。
工作笔记
由于工作习惯,我一般每天都作工作笔记。而在这个项目中前两个多月中,我也每周都写一篇小结,主要是对项目运行的观察(所计述的都是对我所在的公司本部开发组而言)以下便是稍作整理后的前十周的小结(略去了公司和人员的名字)。这些笔记可能显得有些杂乱和琐碎,列在这里的主要目的是想忠实地把我眼中的项目进展情况展现出来。
第一周
* 开发组成员逐步聚集到项目组所在地。我们十来个人都坐在一起,边上一个大白板。这种坐位设置非常利于交流,特别是Cockburn所称的“渗透”式交流。各成员的技能方面也各有所专,如Java,EJB,JSP等。
* 项目有个时间录入跟踪系统(time tracker/timesheet)。每人需录入每天所做的任务和时间。这主要用于项目管理,而这些历史数据也是对新任务进行规划评估的基础。
* 这周的主要工作是设置工作环境。每人一个Windows NT或XP 2000作为工作站。我们选用的 IDE(Integrated Development Environment)是NetBeans。选用NetBeans的主要原因是经费问题(NetBeans是开放式源码并免费)。源码控制是用的 Microsoft SourceSafe。源码库放在一个项目所用的专门服务器上。而项目的文档材料,如需求分析,系统架构以及开发管理文件,如时间进度表等。
* 虽然项目已决定使用J2EE技术,但具体的系统架构仍然需要建立。初步的选择是一个应用框架(application framework)。这个框架是由我以前参加的一个项目发展而来,我对它的起源和演化都相当了解,因此我也开始对这个框架进行评审(review)。
* 我注意到没有单元测试环境,便开始作一些这方面的工作,因为组里只有我有过建立及使用单元测试的经验。
第二周
* 我建立了一个基于JUnit的单元测试框架,并写了一份2页纸的简短介绍,包括单元测试的概念与实践,以及一种称之为“Mock Object”的技术,因为我认为我们的系统需用到这种技术。
* 本周有一次角色分配。一位精于JSP的同事将主要负责前端(front-end presentation),两位对项目所涉的后端有较多知识并参加过可行性研究的同事将更多地与在客户地点的business people (业务人员)打交道,一位对编码标准(coding standards)有浓厚兴趣的同事负责收集大家在编码方面的问题并执笔编码标准文档,还有一位精于Ant的同事主要做工具开发与配置管理(configuration management),等等。
* 我们的编码标准主要是以Sun Microsystem的“Java Code Conventions”为蓝本。另外,客户要求源码中所有的public and protected methods必须要有JavaDoc说明。一些与我们的特定系统有关的问题,如命名惯例(naming convention),将随着开发进程不断地编入文档中。
* 大家对现有的“故事板”进行的讨论分析,并分解出一些具体任务,然后大家根据自己的角色和兴趣sign up(“认购”)任务并开始设计与编码。
* 关于源码控制与源码库,大家同意每天早上更新自己的工作版本(working copy)。如果要修改或加入文件,在check in之前,一定要保证整个源码能通过编译。
第三周
* 大家继续上周的设计与编码工作。同事们似乎都是Cockburn所说的“good citizen”,工作中人人争先,个个奋勇。
* 随着编码的进展,一个问题开始出现了。我们这里没有后端系统,所以不能对开发的程序进行完整的测试与集成。
* 星期四,项目安排了一次电视会议(video conference),参加者是我们这边的成员与在客户那边的成员。两边的同事通过电视见见面,每人作一简短的自我介绍。然后主要是讨论了当前开发中的问题。严重的问题包括需求与规范文档没能按时签发(signoff),以及我们这边没有测试环境。

sales@spasvo.com