项目初期-愉快的沟通、确定路线、统一思想
朋友F接到一个项目,开发一个地级市的人事管理信息系统。分布式的终端用户约100个,人员数据量约4万条,5年内数据增长后不会超过10万条。我们组建了一个四人小团队,X(就是我啦)、H和K,当然还有F。
X、H具有多年的程序开发经验,以前合作过,很愉快。X善长.NET,H善长Java。
K有一定开发基础,熟悉PHP/MySQL,经验略显不足。
H已经做了初步的系统功能设计,对用户需求较熟悉。
初次的团队会议(很自由的讨论)讨论技术路线问题。H主张用Delphi开发,关键是用户易操作开发快。我6年前与H一起开发过Delphi的人事管理信息系统,可是必竟过了那久了,我问他还经常用Delphi吗?他说没有。其实我们现在对Delphi都不是很熟悉,6年前的经验也很初级。我因为长期的ASP.NET开发经验所以力推B/S实现,其实一开始我对需求不是很熟悉,凭着经验和直觉力陈B/S及ASP.Net所有实现的类似C/S的功能,几乎要决定了。可是F提到了用户要求的安全性,考虑到未来安全性的扩展(比如为客户端配电子钥匙)、客户的易操作性等,我们觉得完全的B/S模式可能并不适合。那么只能是C/S模式。K提议了.Net Remoting技术,H担心安装打包的问题(需要客户单独安装.Net Framework)。基于对.NET的了解,虽然我并没开发过Remoting项目,但我觉得这可能是比较好的折中方案。当晚没有定下来。
第二天,我经过在网上的搜索,找到并实验了.Net Framework打包到程序安装包中自动安装的技术,同时利用一个晚上,通读了<C#高级编程>中关于Remoting技术的章节(看书时发现自己以前读过,只是不太深入,呵呵),与H进行了沟通(H八月份要去外地,所以技术只能以我所熟悉的为最好),基本确定了项目采用.Net Remoting技术。
第二次的团队会议,我们确定了.Net Remoting技术的开发方案,并进行了开发思想的统一和初步的分工,因为大家都有一定的开发经验,所以没有写很正规的文档,以下是本次讨论会的主要内容。
-----------------------------------------------------------------
项目技术要求及初步分工
夏春涛 2008-6-30
一、 项目采用的技术与运行环境
1. 项目核心技术:
考虑到项目的分布式要求、客户端操作易用性和安全性要求,以及团队技术经验,采用如下技术开发:
.NetRemoting(.Net Framework2.0),TCP通道
2. 运行环境:
(1) 服务端:Win2003Server Sp2,.NetFramework2.0,Oracle9.2
(2) 客户端:WinXP Pro,.Net Framework2.0,Office2003(Word/Excel)
3. 开发环境
VS2005/C#,.Net Framework2.0
二、 项目开发原则与代码编写要求
1. 项目开发原则
(1) 简单、简洁原则。界面不追求美观,但要直观、易用;尽量不用自己不熟悉的东西,尽量先不考虑第三方控件或库。
(2) 可扩展原则;程序将来可能需要调整或扩展的地方,尽量利用配置文件解决,不要硬编码在程序中。可扩展原则不要过度,“简单简洁”是我们首要考虑的。
(3) 分层开发原则;采用简单三层开发思想,实体层、数据访问层、业务层;另外,数据库中所有对表的操作通过存储过程实现;界面层中不允许出现直接调用SQL语句或存储过程的代码,必须通过业务层实现对数据的访问。
2. 代码编写要求
(1) 为便于使用代码自动生成工具,程序代码中的命名以及数据库中表、字段、存储过程的命名必须采用英文单词命名,禁止使用汉语或拼音形式。
(2) 代码要加适当的注释。每个文件要注释出:功能说明/作者/时间;每个函数要注释出:功能说明;要求采用.NET的”///”注释形式。
三、 预见的技术问题及解决方案
1. 字典表(代码表)频繁读取的问题
为避免从服务端频繁读取字典表,将字典表存储到客户端使用;为避免字典表更新造成的不一致,设计一个强制客户端自动升级的模块。
2. Office报表实现问题
两种备选方法:
(1) doc模板方法,编程替换doc模块中的自定义标签,需要利用Office开发接口,分析word/excel对象;
(2) xml模板方法,将Office报表模板存为xml文档,编程替换xml文档中的自定义标签,只需分析xml文档(当作文本字符串)即可;(注:word xml文档中的图片是采用base64编码存储的)
拟采用xml模板方法。
另外考虑利用配置文件将表中字段与模板中标签映射,自动化报表生成的技术,以解决报表量巨大的问题。
3. 数据集传输量问题
为提高效率,拟采用分页读取数据(分页存储过程)实现。
四、 项目实施与初步分工
1. 项目分为两个子系统:
(1)服务端子系统:
1)服务控制(启动、停止);
2)数据备份与恢复;
3)数据导出与上报;
2)客户端子系统:
除服务端之外的所有系统功能设计中定义的功能。
2. 初步分工(2008-07-01至2008-07-15):
阶段目标:为客户展示界面原型,再次确定功能需求
X:服务端子系统框架搭建及项目整体框架考虑与搭建;
H,K:客户端子系统。首先是客户端界面原型开发,根据界面原型同步进行数据库设计;H与K商讨后再进行细分。
F:文档,后勤保障。
本阶段完成后再进行更细的分工。
附:其它问题:
1. 给项目起一个正式的名称;
2. 讨论:各种数据修改需要提交审核的问题的处理机制。