Peoplesoft项目开发过程规范标准.docx
- 文档编号:27073790
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:31
- 大小:358.90KB
Peoplesoft项目开发过程规范标准.docx
《Peoplesoft项目开发过程规范标准.docx》由会员分享,可在线阅读,更多相关《Peoplesoft项目开发过程规范标准.docx(31页珍藏版)》请在冰豆网上搜索。
Peoplesoft项目开发过程规范标准
Peoplesoft项目开发过程规
1.1目的
系统设计编码的目的在于开发、设计和实现关于需求的解决方案。
本过程规定了项目开发设计工作应遵循的步骤和原则,保证《需求规格说明书》中的各
项要求在设计时都能够得到满足;对项目的编码实现进行质量控制,保证编码实现活动按计
划顺利完成并与设计相一致。
1.2适用围
适用于公司所有产品研发类、产品开发类、维护开发类项目。
1.3参考文件
《决策分析控制程序》
《评审过程实施细则》
《变更控制程序》
《软件测试控制程序》
1.4定义
无
1.5职责
角色/部门
职责
项目经理
提请、组织、参与设计评审,批准设计结果,协调项目组各角色之间的协同合作关系。
设计师
根据《需求规格说明书》进行系统整体架构的分析和设计。
编写
《概要设计说明书》或《详细设计说明书》,参加设计评审,参
与代码走查。
开发工程师
根据《概要设计说明书》或《详细设计说明书》,完成代码编写以
及单兀测试或指疋的详细设计,参与代码走查,参加设计评审。
设计组
参与设计评审。
文献工程师
制作用户文档。
1.6入口
1.6.1入口准则
《需求规格说明书》通过评审
1.6.2输入
《需求规格说明书》
1.7流程图
图1.设计编码过程示意图
1.8主要活动
系统设计编码过程包括系统设计、系统实现。
系统设计是指设计软件系统的体系结构、数据库、模块等,在需求和代码之间建立桥梁,一般分概要设计和详细设计两个阶段;系统
实现是指开发工程师按照系统设计去编码开发,并鼓励进行单元测试、代码走查;在设计编
码过程中同时进行用户文档的编制。
2.5.8.1设计原则
设计工作应正确、完整地反映《需求规格说明书》的各项要求,充分考虑其功能、性能、安全、出错处理及其它需求。
保证设计的易理解性、可追踪性、可测试性、接口的开放性和
兼容性,考虑健壮性(易修改、可扩充、可移植)、重用性。
考虑选用合适的编程语言和开
发工具,制定编码规和系统约定等。
对于PS开发,需要在实现难度,代码维护,系统集成方面考虑,在对需求处理时需要定义好任务的技术边界,比如该方案哪部分由java处理,哪部分由peoplesoft处理,是否
需要引入第三方组件等。
3.582设计方法
设计时要使用有效的方法进行软件设计。
软件设计方法一般采用面向结构设计方法、面
向对象设计方法或其他方法。
4.583多方案选择
系统设计过程进行多方案选择时,按照《决策分析控制程序》进行系统架构选择和关键
技术方案的确定。
5.5.8.4概要设计
概要设计是分析各种设计方案和定义软件体系结构的过程。
设计师在充分了解需求的基
础上,依据《需求规格说明书》选用适当的设计方法,分析与设计软件的结构、模块功能。
通过系统分解,确定子系统的功能和子系统之间的关系,以及模块的功能和模块之间的关系,
编写《概要设计说明书》。
《概要设计说明书》必须经过技术评审。
概要设计评审通过后,概要设计说明书及其评审记录纳入受控库管理。
负责概要设计的系统分析师填写《需求跟踪矩
阵》的相关设计项。
概要设计检查表
#
检查项
是/否/不适用
1
类设计、文档中有没有类设计?
有没有对类图进行描述?
2
类层次结构是否表达清晰,准确,完全,合理(便于开发)?
3
如果有重要类或者复杂类,有没有用具体的例子描述?
有没有对类的方法,
属性等进行约定?
4
类(对象)之间关系如果侧重时序关系,则需要绘制时序图;
类(对象)之间关系如果侧重之间的接口交互,则需要绘制协作图;文档中有没有上述容?
或者有没有对类(对象)之间的关系进行描述?
5
类之间的消息传递次数是否是有限的,传递的容、传递的方式是否是合理的?
6
数据库设计数据库设计是否考虑了项目的硬件环境和软件环境?
是否考虑了可能承载的最大负荷,或者突发负荷么?
7
数据库设计时候是否采用了ER图?
表结构设计的考虑是什么,文档中是否有描述?
表中的主键,外键,索引是否需要定义,是否恰当的定义了?
表中的每个字段名称,含义,所取的数据类型和有效值围是什么?
是否合理?
这些字段的设计是否能满足需求分析的要求?
8
数据库设计时候是否考虑了便于将来对表结构或者记录结构进行修改?
9
数据库的设计是否还遵循《软件开发部数据库开发规》文档的约定?
10
模块设计如果项目中使用独立的可重用模块或者开发框架,需要描述在项目中使用它们中的哪部分功能,并且说明为何采用?
11
文档中有没有描述项目和外部系统的接口交互?
如果有接口,则文档中是否描述了它们之间定义的’协议’?
交互的数据是否会在输岀设备上显示?
是否和用户相关?
12
模块的详细设计应该完成,或者优先级高的模块详细设计必须完成。
13
是否将需求分析得岀的系统各部分间的通讯连接、依存关系正确的转换为适当
的接口、模块(子系统)?
模块是否按照高聚,低外部耦合进行划分?
14
有没有描述模块部的处理流程?
有没有描述模块部采用的算法?
这些处理流程,算法是否经过论证?
15
有没有描述模块之间的接口,如果接口之间有数据交互,有没有描述数据格式?
有没有描述每个模块输出是什么,输入是什么?
项目中的各个模块的输岀或者输入是否准确,一致,必要?
16
其他设计如果有多个模块共享的数据,则文档中是否对此进行描述?
文档中建立了数据字典了么?
17
如果项目需要使用’并发’、’分布式’或者其它特殊要求,那么文档中是否对此的具体实现有描述?
18
如果需求获取时候明确了性能要求,那么设计中需要描述达到这个性能指标的具体实现方法。
设计中有没有考虑出现性能瓶颈时候,系统会做出怎样的应对?
19
项目中如果有特殊需求,那么文档中是否具有对此实现的描述?
概要设计中总结的约束条件是否与需求分析产生的约束一致
6.585详细设计
概要设计评审通过后,依据《需求规格说明书》,根据《概要设计说明书》,开发工程
师进一步细化系统的设计。
针对每个子系统从功能、性能、输入输出、流程、接口、用户界面等方面实施具体的详细设计,编写《详细设计说明书》。
《详细设计说明书》必须经过技术
评审。
详细设计评审通过后,详细设计说明书及其评审记录纳入受控库管理。
负责详细设计的人员填写《需求跟踪矩阵》的相关设计项。
另外,详细设计需包含用户界面设计,用户界面原则需要界面直观,对用户透明;界面
风格统一和布局合理划。
详细设计检查表
#
检查项
是/否/不适用
清晰性、完整性
1
是否清晰的描述了单元设计信息,包括数据流程、控制流程、接口?
2
文档结构是否清晰、组织是否合理?
3
文档结构是否便于维护和修改?
4
设计是否易于理解?
5
每个单元模块是否都有相应的标识?
6
是否对单元模块的目的和功能进行了描述?
7
每个单元模块的输入/输出是否进行了描述?
8
是否说明了用于实现该单元模块的算法?
9
是否提供了一致的错误处理机制?
10
系统结构是否合理、清晰?
11
各子系统、模块之间的关系是否描述得清楚?
12
系统的设计是否考虑了系统的可扩展性?
13
设计是否考虑了重用性?
14
重用构件是否进行了标识?
15
是否说明了重用模块的获得方式和相关的文档?
16
系统的设计是否考虑了系统的易移植性?
17
设计是否使用标准的技术,避免使用怪异的、不易理解的方式和方法?
18
是否列岀了所有的调用?
19
对变量、指针和常量进行了定义和初始化吗?
20
设计能实现特定的需求和目标吗?
21
是否对程序的注释进行了设计?
22
是否对程序的限制和约束进行了说明?
23
所有设计是否是可测试的?
一致性、正确性
24
文档是否符合项目标准?
25
是否用要求的方法或工具进行设计的?
26
数据兀素的名称在整个单兀中保持一致吗?
27
所有的设计接口相互间是一致的吗?
28
是否存在逻辑上的问题?
29
是否对各种情况都进行了处理?
(如大于、等于、小于0,switch/case情况)
30
是否为开发和维护代码提供了充分的基础?
31
所有的设计单元都可追溯回需求吗?
接口
32
参数的数量、类型和顺序是否匹配?
33
是否正确的定义了输入输岀数据?
34
是否清晰的描述了传递参数的顺序?
35
是否识别了传递参数的机制?
可维护性、可靠性
36
设计单元是否具有高聚度低耦合度?
(即该单元的变化不会对本单元造成不可预料的影响,对其他单元的影响达到最小)
37
设计的复杂度已经最小了吗?
38
是否具有清晰性、可读性、可修改性,满足维护需求?
39
是否设定了正确的初始化缺省值?
40
是否对输入、输出、接口和结果进行了错误检查?
41
是否对错误情况给出了有意义的信息提示?
42
是否考虑了意外情况?
43
是否符合相关的法律法规
7.586数据库设计
当进行与数据库相关软件系统的设计时必须进行数据库设计,同时编写《数据库设计说
明书》建立整个软件的数据库方面的设计,在概要设计说明书完成后及详细设计说明书后需
进行数据库设计说明书的完善及细化。
8.5.8.7建立开发环境
进入编码阶段前,项目经理需进行项目组级开发环境等方面的搭建和规划、策划。
9.5.8.8编码
系统设计完成后,进入编码阶段。
项目经理在进入编码阶段之前,必须确定项目的编码规,编码是把系统设计转换为程序代码的过程。
开发工程师依据设计说明书,开展具体的程序代
码的编写,严格按照设计文档、编程规及系统约定。
10.5.8.9单元测试
编码完成的系统各模块由项目经理决定是否做单元测试。
鼓励做单元测试,若做单元测
试则须提供《单元测试报告》,纳入配置管理。
完成各模块的单元测试后,负责编码的开发工程师填写《需求跟踪矩阵》的相关编码模块。
11.5.8.10代码走查
由项目经理在进度计划中策划并安排开发工程师进行程序代码走查。
代码走查具体过程参见《评审过程实施细则》。
检查发现的问题纳入缺陷管理(参见《软
件测试控制程序》),直到问题解决。
代码走查通过后代码纳入测试库管理。
JAVA代码走杳规
分类
重要性
检查项
备注
命名
重要
命名规则是否与所采用的规保持一
致?
成员变量,方法参数等需要使用首字母小写,其余单词首字母大写的命名方式,禁止使用下划线(_)数字等方式命名
不要岀现局部变量,成员变量大写字母开头等问题
一般
是否遵循了最小长度最多信息原则?
各种命名尽可能短,表意准确,除2
代替‘to',4代替’for'夕卜,不建议使用数字在命名中
重要
has/can/is前缀的函数是否返回布
尔型?
成员变量,方法参数,局部变量等为
布尔型时,如果出现has/can/is开
头,则将这些词去掉
重要
类名是否存在重名问题?
自己实现的类尽量不要和别人的类重名,尽管不在同一个包下,特别是子类和父类重名的情况
注释
重要
注释是否较清晰且必要?
方法JAVADO注释中需要说明各参
数、返回值及异常说明,参数说明需
按照参数名称及用意对应标注
重要
复杂的分支流程是否已经被注释?
一般
距离较远的}是否已经被注释?
重要
函数是否已经有文档注释?
(功能、输入、返回及其他可选)
文件,类(含接口,枚举等),成员变量,方法前需要有JAVADO(的注释
一般
特殊用法是否被注释?
声明、空
白、缩进
一般
每行是否只声明了一个变量?
(特别是那些可能岀错的类型)
重要
变量是否已经在定义的同时初始化?
重要
类属性是否都执行了初始化?
一般
代码段落是否被合适地以空行分隔?
一般
是否合理地使用了空格使程序更清
晰?
基本代码格式中的空格符不可缺少,
这些空格岀现
及各种括号附近
提示
代码行长度是否在要求之?
每行不得超过120个字符
重要
controller,service,dao中不
要声明有状态的变量。
此变量不能被修改。
如果要进行修改,必须通过锁进行控制。
一般
折行是否恰当?
一般
集合是否被定义为泛型类型?
定义集合时,建议定义其泛型类型,
减少类型转换和警告错误
语句/功能分布/规模
一般
包含复合语句的{}是否成对岀现并符合规?
重要
是否给单个的循环、条件语句也加了
{}?
if,else,elseif,while,for,case
等代码块必须用{}包围
一般
单个变量是否只做单个用途?
重要
单行是否只有单个功能?
(不要使用;进行多行合并)
重要
单个函数是否执行了单个功能并与其
命名相符?
一般
操作符++和一一操作符的应用是
否符合规?
规模
重要
单个函数不超过规定行数?
重要
缩进层数是否不超过规定?
可靠性(总则/变量和语句)
重要
是否已经消除了所有警告?
开发工具的警告
重要
常数变量是否声明为final?
重要
对象使用前是否进行了检查?
重要
成员变量,局部变量是否在使用前被赋值?
对象初始化为null的对象被调用前必须被重新赋值,如果赋值语句在try
块中,调用操作必须在try块中
一般
局部对象变量使用后是否被复位为
NULL?
特别是数组集合Map
重要
对数组的访问是否是安全的?
(合法的index取值为[0,MAX_SIZE-1])。
重要
是否确认没有同名变量局部重复定义
问题?
严禁局部变量名称和类或对象成员变
量同名
一般
程序中是否只使用了简单的表达式?
重要
是否已经用()使操作符优先级明确
化?
重要
所有判断是否都使用了(常量==变
量或者常量.equals(变量))的
形式?
常量放在比较符前可以有效降低比较符写成赋值语句,减少空指针异常
重要
是否每个if-elseif-else语句都
有最后一个else以确保处理了全
集?
重要
是否每个switch-case语句都有最后
一个default以确保处理了全集?
一般
for循环是否都使用了包含下限不包
含上限的形式?
(k=0;k 重要 XML标记书写是否完整,字符串的拼写是否正确? 重要 对于流操作代码的异常捕获是否有 finally操作以关闭流对象? 关闭前需要判断流对象是否为空 提示 退岀代码段时是否对临时对象做了释 放处理? 重要 对浮点数值的相等判断是否是恰当 的? 严禁使用==直接判断浮点数值。 提 供通用方法 重要 是否对象比较都使用了equals? 对象(包括包装类)比较必须使用 equals,而不是使用==或! =操作 重要 使用equals进行比较时是否确保比较的两个对象类型一致? equals方法比较的对象在对象类型确定的前提下,建议是同一类型的,例 如Integer和""使用equals是不提倡的 一般 操作Map或Properties结构对象, 用于传值时是否将Key定义为常量? Session,Request等对象的setAttribute,getAttribute方法的key建议使用常量,不得手工输入字符串 重要 是否在类型转换前确保了类型的兼 容? 除非明确保证对象类型 重要 包装类做简单预算前是否保证非 空? 建议都使用包装类。 包装类进行操作前,建议进行非空 (null! =xx)判断,防止发生空 指针异常 重要 对象属性在使用前是否确保被准确赋 值? 只读属性(只提供get方法的成员变量)除非特意返回固定值,否则必须提供set方法或在其他方法调用时将其赋值 重要 方法调用前是否有非空判断? 对参数的非空判断必须出现在方法调用之前,否则说明前面可能导致空指针或者后者判断是没有必要的,非空判断,默认由调用者提供 重要 非线程安全的对象是否被正确保证线 程安全? DateFormat实例的format方法调用不是线程安全,类似的情况不适合使用static定义,建议使用 ThreadLocal方式实现,参看 UnifiedCodeGenerator 一般 相同用意的成员变量是否使用了相同的命名? 不同实体Entity、VOB0之间表示同 一含义的成员变量,建议使用相同的名称,尽量不要出现,有的地方用username,有的地方用userName这样的情况 可靠性(函 数) 重要 入口对象是否都被进行了判断不为 空? 重要 入口数据的合法围是否都被进行了判 断? 重要 是否对有异常抛岀的方法都执行了 try...catch保护? 重要 是否函数的所有分支都有返回值? 重要 int的返回值是否合理? (负值为失败,非负值成功) 一般 对于反复进行了int返回值判断是否 定义了函数来处理? 一般 关键代码是否做了捕获异常处理? 一般 字典表定义是否用枚举,或者有一个统一的定义? 重要 是否对方法返回值对象做了null检查,该返回值定义时是否被初始化? 重要 是否对同步对象的遍历访问做了代码 同步? 重要 是否确认在对Map对象使用迭代遍历过程中没有做增减元素操作? Map遍历时执行增减元素操作将抛岀 ConcurrentModificationException, 对集合对象遍历时建议都不要进行增减元素操作。 重要 线程处理函数循环部是否有异常捕获处理,防止线程抛岀异常而退岀? 重要 原子操作代码异常中断,使用的相关 外部变量是否恢复先前状态? 重要 函数对错误的处理是恰当的? 重要 异常捕获后是否进行了日志记录或异 常继续抛岀? 异常捕获后如果无法处理需要继续抛岀,如果可以处理,建议将异常日志进行记录 重要 是否构造方法中不调用当前对象的构造方法 严禁在构造方法中new—个当前对象 可维护性 重要 实现代码中是否消除了直接常数? (用于计数起点的简单常数例外) 重要 是否消除了导致结构模糊的连续赋 值? (如a=(b=d+c)) 重要 是否正确使用了日志记录? 一般 是否有冗余判断语句? (如: if(b)returntrue;elsere turnfalse;) “if(b)returntrue;elser eturnfalse;”==》 “returnb;”;禁止使用类似 “if/while(表达式==true)或if/while(表达式==false)”的判断 重要 是否把方法中的重复代码抽象成私有 函数? 代码警告 一般 是否清除了多余导入的包或类? 重要 是否清除了只定义未使用的局部变 量? 严禁局部变量被定义或者初始化而未被使用,这种情况需要删除该局部变量 一般 是否将魔鬼数字修改为常量使用? 不允许直接使用除-2,- 1,0,1,2,3,4,5,6,7,8,9,10夕卜的数 字,除此外的数字需要定义常量使用 提示 常量定义是否为staticfinal格 式? 常量定义格式为 public/protected//privatestatic finalTypeTYPEstatic和 final顺序要保持一致 提示 实现序列化的对象是否定义了 serialVersionUID? 建议实现Serializable的类需要增加 “privatestaticfinallongs erialVersionUID=1L;” 可读性 一般 是否用ifelse结构替换了三元运 算符? 表达式复杂情况下不要使用 (flag? exp1: exp2)语句,该语句需要 修改为ifelse结构 一般 代码注释率是否结余30%〜60之间? 代码注释率应落在30%〜60之间 性能 重要 日志记录的Log,Logger对象是否定 义为常量? 用于记录日志的Log,Logger对象在类中定义必须是staticfinal的,建 议定义为private的,因为这类对象初始化比较耗时,不利系统运行 日志 重要 打印信息是否都用日志管理? 代码中建议不要使用 System.out.println打印信息,只有 在系统启动或系统即将退岀时使用,其余部分全部用日志记录 圈复杂度 重要 单个类行数是否不大于500行? 单个类建议行数小于500行,最多不 超过1000行 重要 方法参数个数是否在7个以? 方法参数个数建议不大于5个,最多 不超过7个 重要 单个方法函数是否不大于30行? 单个方法建议函数不大于30行,做多 不超过60行 重要 单方法中try/for/while/switch/if 最深深度是否不大于5? 单方法中try/for/while/switch/if 最深深度不允许大于5 重要 方法调用最深深度是否不大于15? 方法部+部调用累计深度不允许大于 15 SQL空格 一般 连接符or、in、and、以及=、 <=、>=等前后加上一个空格。 一般 逗号之后必须接一个空格。 一般 关键字、保留字和左括号之间必须有一个空格。 SQL注释 重要 对较为复杂的SQL语句加上注释,说明算法、功能。 注释风格: 注释单独成行、放在语句前面。 重要 对重要的计算应说明其功能。 SQL中尽量少涉及业务逻辑 一般 可采用单行/多行注释。 (- -或/**/方式)。 SQL优化
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Peoplesoft 项目 开发 过程 规范 标准
![提示](https://static.bdocx.com/images/bang_tan.gif)