Project 2002使用要求
软件开发项目工作计划要求
1. 所有新建软件开发项目必须使用Project 2002进行项目管理,
2. 编写要求如下:
1.1 在甘特图视图中编写项目计划,其中任务内容、工期、开始时间、完成
时间和资源名称为必填内容;计划安排的内容要便于跟踪,工期不能太长。
1.2 使用【链接】功能,关联任务之间的先后关系。
1.3 计划输入完毕,使用菜单【工具】->【跟踪】->【保存比较基准】保存
计划的比较基准。
1.4 将计划发布到Project Server服务器上,具体发布方法见附件。
3. 计划更新周期
各项目必须至少每半个月更新一次计划的进度,并发布到Project Server服务器上。
4. 项目计划负责人
每个项目必须指定专人进行项目计划的管理,并上报到信息中心。工作内容有计划变更、计划跟踪和计划发布等。
Project 2002使用要求
附件:Project Server 2002 项目发布方法
2. 设置Project Server 的协作信息。 1. 在Project 2002中建立项目计划,设定任务名称、工时、工期和资源。
2.1 在【协作】->【选项】->
【常规】选项中输入项目经理的名字。
2.2 在菜单【协作】->【协作】选项中:
在【MS Project Server】中输入:http://172.16.1.252/projectserver 在【MS Project Server 标识】中选择 Project Server用户名。 单击按钮【测试连接】,如果成功则弹出对话框:
否则就说明URL地址输入错误,请确认。
Project 2002使用要求
3. 任务发布:
3.1.如果是第一次发布计划,选择【协作】->【发布】->【所有信息】,包
括建立资源信息等。
注意:在发布之前,必须将http://172.16.1.252/设置为可信任的站点,方法是:打开IE的属性设置
Project 2002使用要求
在【站点】中输入
http://172.16.1.252
3.2.如果删除了某个资源的工作分配,则选择【协作】->【发布】->【新建
或者更改的工作分配】。
3.3.如果更新了计划进度,则选择发布【协作】->【发布】->【项目计划】。
3.4.如果修改了任务内容,则选择【协作】->【发布】->【重新发布工作分
配】。
注意:Project文件的存放目录一旦发布之后就不要再修改了,否则Project Server在更新的时候找不到文件的存放位置,无法更新。
4. 项目经理的使用:
通过IE,登录到Web页面,输入自己的名字,初始是空密码,登陆成功后可以修改密码。
如果是第一次登录,系统会提示下载并安装Project Server的两个控件,在IE的安全设置中去掉对ActiveX的限制,否则会提示下载不成功。
在【项目】页面中就可以看到自己项目的进度情况。
按照信息中心的要求,定期更新项目的进度,并且发布到服务器上。
5. 项目分析、报表等功能,还是要在Project 2002中实现,Project Server
无法完成,所以要保证Web与Project文件的同步性。
第二篇:软件开发项目开发规范
JAVA语言编程格式规范
软件研发中心XX项目组
2013.03
V1.0
1
目录
1. 前言 ...................................................................................................................................... 4
2. 试用范围 .............................................................................................................................. 4
3. JAVA命名规范 ...................................................................................................................... 4
3.1 公共约定 ........................................................................................................................ 4
3.2 Java文件、包 ................................................................................................................. 4
3.3 类、接口命名规范 ........................................................................................................ 4
3.4 方法命名规范 ................................................................................................................ 4
3.5 常量 ................................................................................................................................ 5
3.6 变量和参数 .................................................................................................................... 5
3.7 组件/部件 ...................................................................................................................... 5
3.8 集合 ................................................................................................................................ 5
3.9 神秘的数 ........................................................................................................................ 6
3.10 其他 .............................................................................................................................. 6
3.11 Java异常 ....................................................................................................................... 6
3.12 数组命名 ...................................................................................................................... 6
4. 书写格式规范 ...................................................................................................................... 6
4.1 缩进 ................................................................................................................................ 6
4.2 空格 ................................................................................................................................ 6
4.3 对齐 ................................................................................................................................ 6
4.4 空行 ................................................................................................................................ 7
4.5 注释 ................................................................................................................................ 7
5. 代码文件风格 ...................................................................................................................... 7
5.1 文件生成 ........................................................................................................................ 7
5.2 package/import ............................................................................................................... 7
5.3 文件头部注释 ................................................................................................................ 7
5.4 存取方法 ........................................................................................................................ 8
5.5 构造函数 ........................................................................................................................ 9
5.6 克隆方法 ........................................................................................................................ 9
5.7 类方法 ............................................................................................................................ 9
2
5.8 main 方法 ..................................................................................................................... 10
6. 开发框架约定 .................................................................................................................... 10
6.1 视图层编码约定: ...................................................................................................... 10
6.2 控制层编码约定: ...................................................................................................... 13
6.3 实体层编码约定: ...................................................................................................... 14
6.4 服务层编码约定: ...................................................................................................... 14
6.5 通用编码约定: .......................................................................................................... 14
6.6 数据库约定: .............................................................................................................. 14
3
1. 前言
为确保系统源程序可读性,从而增强系统可维护性,兹制定下述编程规范,以规范系统各部分编程。系统继承的其它资源中的源程序也应按此规范作相应修改。
2. 试用范围
本文档将作为广州诚泰交通机电工程有限公司研发中心XX项目系统软件(JAVA语言)开发的编程格式规范。在系统的编码、测试及维护过程中,要求严格遵守。
3. JAVA命名规范
3.1 公共约定
命名指系统中对源文件名、方法、目录、包、数据库表名、数据库字段等的命名。
A. 系统所用的命名都使用英文缩写来表达。
B. 命名的组成方式为:前缀+{命名词素缩写},前缀表达出命名的用途,如数据库表等。
C. 命名的前缀由项目组确定。
D. 除系统公共维护对象外的其他对象,命名全部用小写。一种方式用“_”作连接符,另一种方式是词素的第一个字母大写直接连接在一起。在本规范中,数据库名、数据库字段名采用第一种方式,其余采用第二种方式。
E. 使用可以准确说明变量/字段/类/接口/包等的完整的英文描述符。例如,采用类似firstName,listAllUsers或CorporateCustomer这样的名字,严禁使用汉语拼音及不相关单词命名,虽然Java支持Unicode命名,但本规范规定对包、类、接口、方法、变量、字段等不得使用汉字等进行命名
F. 采用大小写混合,提高名字的可读性。一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。包名全部小写。
G. 尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等,如实现
(implement)可缩写成impl,经理(manager)可缩写成mgr等,具体参看下表,严禁滥用缩写。
H. 避免使用长名字(最好不超过35个字母)。
I. 避免使用数字,但可用2代替to,用4代替for等,如:go2Jsp。
3.2 Java文件、包
A. 文件名当与其类严格相同,所有单词首字母大写。
B. 包名一般以项目或模块名命名,少用缩写和长名,一律小写。
C. 基本包:com.czpost,所有包、文件都从属于此包。
包名按如下规则组成:
[基本包].[项目名].[模块名].[子模块名]...
如:com.czpost.eims;com.hepost.eims.until?
D. 不得将类直接定义在基本包下,所有项目中的类、接口等都当定义在各自的项目和模块包中。
3.3 类、接口命名规范
A. 所有单词首字母大写。使用能确切反应该类、接口含义、功能等的词。一般采用名词。
B. 接口可带I前缀。
3.4 方法命名规范
方法的命名应采用完整的英文描述符,大小写混合使用:所有中间单词的第一个字母
4
大写。法名称的第一个单词常常采用一个有强烈动作色彩的动词。
取值类使用get前缀,设值类使用set前缀,判断类使用is(has)前缀。
例:getName()
setSarry()
isLogon()
方法参数建议顺序:(被操作者,操作内容,操作标志,其他?)
例:public void replace(String sourceStr, String oldStr, String newStr)
{
........
}
3.5 常量
采用完整的英文大写单词,在词与词之间用下划线连接,如:DEFAULT_VALUE
3.6 变量和参数
采用 直接定义的方法,要做到清晰易懂的原则,如:
实体类 例如:Project project;直接把类型的首个大写字母变成小写字母就行了。 日期型 例如:Date createDate;
3.7 组件/部件
应采用完整的英文描述符命名组件(接口部件),遵循匈牙利命名法则 如:btnOK,lblName。
A. 按钮变量 btn+Xxxxxxx 例如:btnSave,btnExit,btnPrint等
B. 题标变量 lbl+Xxxxxxxx 例如:lblName,lblSex等
C.
对象类型 前缀
Canvas cvs
CheckBox chk
Image img
List list
Choice chc
Dialog dlg
Event evt
Frame frm
Menu menu
Panel pnl
TextArea txa
TextField txf
3.8 集合
采用变量+集合类型的方法一个集合定义,如果集合采用泛型的话就必须泛型化处理如:
Array userArray = new Array(); //用户列表
Map userMap = new Map();//用户Map
List<User> onLineUserList = new List< User >();//在线用户List
5
3.9 神秘的数
程序里经常会用到一些量,它是有特定的含义的,把神秘的数定义为一个常量。注意这个常量的命名应该能表达该数的意义,并且应该全部大写,以与对应于变量的标识符区别开来。例如50这个数,可以定义为一个名为NUM_OF_EMPLOYEES的常量来代替。
3.10 其他
命名时应使用复数来表示它们代表多值。如:orderItems。
3.11 Java异常
异常类名由表示该异常类型的单词和Exception组成,如ActionException。
异常实例一般使用e、ex等,在多个异常时使用该异常名或简写加E,Ex等组成,如: SQLEx;ActionEx
3.12 数组命名
数组应该总是用下面的方式来命名:
byte[] buffer;
而不是
byte buffer[];
4. 书写格式规范
严格要求书写格式是为了使程序整齐美观、易于阅读、风格统一,程序员对规范书写的必要性要有明确认识。建议源程序使用eclipse工具开发,格式规范预先在工具中设置。
4.1 缩进
缩进建议以4个空格为单位。预处理语句、全局数据、标题、附加说明、函数说明、标号等均顶格书写。语句块的"{"、"}"配对对齐,并与其前一行对齐,语句块类的语句缩进建议每个"{"、"}"单独占一行,便于匹对。Mysclipse 中的默认方式是开始的"{"不是单独一行,建议更改成上述格式。
4.2 空格
原则上变量、类、常量数据和函数在其类型,修饰名称之间适当空格并据情况对齐。关键字原则上空一格,如:if ( ... ) 等。运算符的空格规定如下:"::"、"->"、"["、"]"、"++"、"--"、"~"、"!"、"+"、"-"(指正负号)、"&"(引用)等几个运算符两边不加空格(其中单目运算符系指与操作数相连的一边),其它运算符(包括大多数二目运算符和三目运算符"?:"两边均加一空格,在作函数定义时还可据情况多空或不空格来对齐,但在函数实现时可以不用。","运算符只在其后空一格,需对齐时也可不空或多空格。不论是否有括号,对语句行后加的注释应用适当空格与语句隔开并尽可能对齐。个人认为此项可以依照个人习惯决定遵循与否。
4.3 对齐
原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在","处或运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“{”应与首行对齐。
变量定义最好通过添加空格或TAB键形成对齐,同一类型的变量最好放在一起。如下例所示:
6
int nValue;
int nResult;
int nLength;
4.4 空行
不得存在无规则的空行,比如说连续十个空行。程序文件结构各部分之间空一行,由于每个函数还要有函数说明注释,故通常只需空一行或不空,但对于没有函数说明的情况至少应再空一行。对自己写的函数,建议也加上“//------”做分隔。函数内部数据与代码之间应空至少一行,代码中适当处应以空行空开,建议在代码中出现变量声明时,在其前空一行。类中四个“p”之间至少空一行,在其中的数据与函数之间也应空行。
4.5 注释
注释是软件可读性的具体体现。程序注释量一般占程序编码量的20%,软件工程要求不少于20%。程序注释不能用抽象的语言,类似于"处理"、"循环"这样的计算机抽象语言,要精确表达出程序的处理说明。避免每行程序都使用注释,可以在一段程序的前面加一段注释,具有明确的处理逻辑。注释必不可少,但也不应过多,不要被动的为写注释而写注释。以下是四种必要的注释:
A. 标题、附加说明。
B. 函数、类等的说明。对几乎每个函数都应有适当的说明,通常加在函数实现之前,在
没有函数实现部分的情况下则加在函数原型前,其内容主要是函数的功能、目的、算法等说明,参数说明、返回值说明等,必要时还要有一些如特别的软硬件要求等说明。公用函数、公用类的声明必须由注解说明其使用方法和设计思路,当然选择恰当的命名格式能够帮助你把事情解释得更清楚。
C. 在代码不明晰或不可移植处必须有一定的说明。
D. 及少量的其它注释,如自定义变量的注释、代码书写时间等。
5. 代码文件风格
所有的 Java(*.java) 文件都必须遵守如下的样式规则:
5.1 文件生成
对于规范的 JAVA 派生类,尽量用 Myeclipse工具来生成文件格式,避免用手工制作的头文件/实现文件。
5.2 package/import
package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。用到什么就导入什么包。减少采用 import 行中包含了同一个包中的不同子目录 * 来处理。
packagehotlava.net.stats;
import java.io. InputStream;
import java.io. OutputStream;
importjava.util.Observable;
importhotlava.util.Application;
使用这里 import java.io. InputStream 和import java.io. OutputStream 来代替java.io.* 的。
5.3 文件头部注释
文件头部注释主要是表明该文件的一些信息,是程序的总体说明,可以增强程序的可
7
读性和可维护性。文件头部注释一般位于 package/imports 语句之后,Class 描述之前。要求至少写出文件名、创建者、创建时间和内容描述。其格式应该尽量约束如下:
/**
*Title: 确定鼠标位置类
* Description: 确定鼠标当前在哪个作业栏位中并返回作业号
* @Copyright: Copyright (c) 2002
* @Company: HIT
* @author: rivershan
* @version: 1.0
*/
Class
接下来的是类的注释,一般是用来解释类的。
/**
*A class representing a set of packet and byte counters
* It is observable to allow it to be watched, but only
* reports changes when the current set is complete
*/
接下来是类定义,包含了在不同的行的 extends 和 implements ,所有继承(扩展)全部写在一行,如:
public class CounterSet extends Observable implementsCloneable
Class Fields
接下来是类的成员变量:
/**
*Packet counters
*/
Protected int[] packets;
public 的成员变量必须生成文档(JavaDoc)。proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。
5.4 存取方法
接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。(个人认为尽量分行写)
/**
*Get the counters
* @return an array containing the statistical data. This array has been * freshly allocated and can be modified by the caller.
*/
Public int[] getPackets()
{
Return copyArray(packets, offset);
}
public void setPackets(int[] packets)
{
8
this.packets = packets;
}
其它的方法不要写在一行上
5.5 构造函数
接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。 Public CounterSet(int size)
{
this.size = size;
}
5.6 克隆方法
如果这个类是可以被克隆的,那么下一步就是 clone 方法:
Public Object clone()
{
try
{
CounterSet obj = (CounterSet)super.clone();
obj.packets = (int[])packets.clone();
obj.size = size;
return obj;
}
catch(CloneNotSupportedException e)
{
throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());
}
}
5.7 类方法
下面开始写类的方法:
/**
*Set the packet counters
* (such as when restoring from a database)
*/
protected final void setArray(int[] r1, int[] r2, int[] r3, int[] r4) throwsIllegalArgumentException
{
//
// Ensure the arrays are of equal size
//
if (r1.length != r2.length || r1.length != r3.length || r1.length
!= r4.length)
throw new IllegalArgumentException("Arrays must be of the same size"; System.arraycopy(r1, 0, r3, 0, r1.length);
9
System.arraycopy(r2, 0, r4, 0, r1.length);
}
5.8 main 方法
如果main(String[]) 方法已经定义了, 那么它应该写在类的底部。
6. 开发框架约定
6.1 视图层编码约定:
A.
B.
C.
D. 考虑以后多语言的支持,jsp页面采用统一的UTF-8编码,不允许使gbk/gb2312。 采用统一定义的CSS风格,不允许使用自创风格。 统一使用页面校验方法。 每一个模块统一命名jsp页面名称:
1) 首页:index.jsp
2) 列表:list+实体名.jsp
3) 显示:show+实体名.jsp
4) 添加编辑:addEdit+实体名.jsp
5) 提交:handle+实体名.jsp
6) 打印:print+实体名+of+关键字(例如按月打印,关键字就是month).jsp E. 页面内容提示信息分为两种统一的约定:信息提示和错误提示:<ww:property value=
“message”>和<ww:property value=“errors”>
F. 页面常用引入文件采用统一模版(由李煜慈统一规范)
a. 所有页面,必须包含:
1. <%@include file="/resources/include/taglib.jsp" %>【放在html标签外】
2. <jsp:include
page="/resources/include/common.jsp"></jsp:include>【放在
head标签中】
3. <jsp:include page="/resources/include/top.jsp"></jsp:include>
【放在body标签中的第一行】
b. List页面,包含ecside列表
1. <ec:table .../>标签外必须加上<jsp:include
page="/resources/include/ecsideTop.jsp"></jsp:include>和<jsp:include
page="/resources/include/ecsideBottom.jsp"></jsp:include>
10
2. 对于表格的编辑查看的权限必须加上标签,用于控制
<ct:privilege operate="view" ></ct:privilege>这个是查看权限的标签,其它的如edit,remove
3. 对于工具栏的操作权限,如:<ct:operatePrivilege operate="add" callBack="addFn" />这个是添加权限,必须写在jQuery(function(){....});之中,而且callBack的函数必须在页面定义,否则就会出错。
c. 左右结构带树形的页面(不能拖动)
1. 初始化页面的大小:subLayoutInit()可以设置参数,设置左边的宽
度,默认是250,
2. 定义加载树的函数:loadTree(),创建树:treeTool = new
TreeTool("subLeftTree",
"${ctxrms}/road/roadinfo/getTree.action");
3. 树的权限信息,
treeTool.setOperatePrivilege('<ct:treeOperatePrivilege
operates="add,remove" />');其中operates可以加入多个,但操作对应的处理函数必须定义,否则会出错,如addFn, 必须是fn来作为处理函数的后缀,可以参考ms/sys/constantdd/index.jsp页面
d. 左右结构带树形的页面(能拖动),跟不能拖动树的不同是创建的函数不一样:
var resourcesTree =
jQuery.fn.zTree.init(jQuery("#subLeftTree"),
getDragDropSetting("${ctxms}/sys/role/getTree.action"));
treeTool = new DragDropTreeTool(resourcesTree); treeTool.setOperatePrivilege('<ct:treeOperatePrivilege 11
operates="add,remove" />');//权限
treeTool.init("${ctxms}/sys/role/nodeDropTree.action");//定义拖
动请求的Action
e. 标签
1. 工具栏的操作权限标签
2. 操作权限标签
12
7. 取得select下拉框
G. 控件使用jquery等(由李煜慈提供,讨论后决定)
使用到js的全部使用jQuery关键字,不再使用${}
6.2 控制层编码约定:
A. Action相关:
1) Private static final Logger logger = Logger.getLogger(实
体名称+Action.class);
2) 必须继承
3) 在引入service时,不再使用setter方法,使用Spring的注释方式@Autowired
4) 如果索引页不是listXX.jsp,addEditXX.jsp的不需要写方法,默认调用
index.action,这个方法不需要写(在BaseAction),只需要在配置文件写上这个Action,index可以重写,如果有需要的话.
5) 如果需要生成树的信息的,用getTree.action
6) 树拖动节点的,用nodeDropTree.action
B. Action中方法的命名与server中的方法,Xwork中的action的name,成功转发后的jsp
页面的命名必须一致。例如:action中的listUsers();server中的listUsers();Xwork
13
中的actionname= listUsers;成功跳转jsp页面listUsers.jsp
C. 所有Action类扩展(继承)自BaseAction例如:public class
ProjInfoAction extends BaseAction
6.3 实体层编码约定:
A. 必须有无参数的构造方法
B. 所有的实体类继承BaseModel
C. 类属性命名与表字段名称相同、jsp页面表单域名字相同;如属性firstName
对应的数据库字段firstName;如果字段是实体类的话采用实体类名称+Id的方法。如属性project对象对应的数据库字段是projectId;表单域名字为project;采用第一个单词小写后面单词首字母大写的方法。
D. 命名:public class实体名 extends BaseModel
E. 在实体类文件和.hbp.xml文件里面都要添加注释说明。
6.4 服务层编码约定:
A. Server相关:
1) 所有Server类扩展(继承)自BaseServer类,所有的服务面向接口编程(即所有的服
务调用都是接口而不是实现类)
2) 命名:public class 实体名Service extends BaseService implements
I实体名Service
3) 需要生成树的,必须实现接口ITreeService
6.5 通用编码约定:
A. 约定
1) 在jsp页面上的title中对jsp添加注释,与jsp命名同义的汉字。
2) 屏蔽所有System.out调试输出,采用log4j.debug。
3) 注释所有的类。
B. 平台相关:
1) 在程序中不要硬性编码与平台相关的任何常量,比如行分隔符,文件分割符,路
径分割符等。请使用java.util.Properties中的getProperty
(“line.separator”)行分隔符;getProperty(“file.separator”)文件分隔符;getProperty(“path.separator”)路径分隔符。
2) 禁止调用与操作系统相关的类包。
6.6 数据库约定:
数据库统一命名为chengtechMS
A. 表名统一命名为项目代号(大写简称)_表名(实体类名称);
【使用包名来写,如:[项目名MS]_[模块名OA](_[子模块名])_user】
B. 前缀与命名词素间用下划线分隔。字段命名与类字段名称相同,如firstName
对应的数据库字段firstName;如果字段是实体类的话采用实体类名称+Id的方法。Project对象对应的数据库字段是projectId;
C. 在数据库字段的备注说明属性中添加备注说明。
14
6.7 工具类说明:
1. BlankUtil:判断对象是否为空,全部类型都可以,包括List,等 2. DateUtil: 日期工具类
3. JsonUtil:Json工具类
4. XMLUtil:xml工具类,主要是通过注释将对象转换成xml字符串 5. AppUtil:系统工具,如:getBean,取得当前用户,取得系统绝对路径
等。
15