Peoplesoft项目开发过程规范标准.docx

上传人:小飞机 文档编号:4197173 上传时间:2023-04-09 格式:DOCX 页数:14 大小:237.88KB
返回 下载 相关 举报
Peoplesoft项目开发过程规范标准.docx_第1页
第1页 / 共14页
Peoplesoft项目开发过程规范标准.docx_第2页
第2页 / 共14页
Peoplesoft项目开发过程规范标准.docx_第3页
第3页 / 共14页
Peoplesoft项目开发过程规范标准.docx_第4页
第4页 / 共14页
Peoplesoft项目开发过程规范标准.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《Peoplesoft项目开发过程规范标准.docx》由会员分享,可在线阅读,更多相关《Peoplesoft项目开发过程规范标准.docx(14页珍藏版)》请在三一办公上搜索。

1、 Peoplesoft项目开发过程规1.1 目的系统设计编码的目的在于开发、设计和实现关于需求的解决方案。本过程规定了项目开发设计工作应遵循的步骤和原则,保证需求规格说明书中的各项要求在设计时都能够得到满足;对项目的编码实现进行质量控制,保证编码实现活动按计划顺利完成并与设计相一致。1.2 适用围适用于公司所有产品研发类、产品开发类、维护开发类项目。1.3 参考文件l 决策分析控制程序l 评审过程实施细则l 变更控制程序l 软件测试控制程序1.4 定义无1.5 职责角色/部门职责项目经理提请、组织、参与设计评审,批准设计结果,协调项目组各角色之间的协同合作关系。设 计 师根据需求规格说明书进行

2、系统整体架构的分析和设计。编写概要设计说明书或详细设计说明书, 参加设计评审,参与代码走查。开发工程师根据概要设计说明书或详细设计说明书,完成代码编写以及单元测试或指定的详细设计,参与代码走查,参加设计评审。设 计 组参与设计评审。文献工程师制作用户文档。1.6 入口1.6.1 入口准则需求规格说明书通过评审1.6.2 输入需求规格说明书1.7 流程图图1. 设计编码过程示意图图2:软件设计编码过程示意图1.8 主要活动系统设计编码过程包括系统设计、系统实现。系统设计是指设计软件系统的体系结构、数据库、模块等,在需求和代码之间建立桥梁,一般分概要设计和详细设计两个阶段;系统实现是指开发工程师按

3、照系统设计去编码开发,并鼓励进行单元测试、代码走查;在设计编码过程中同时进行用户文档的编制。2. 5.8.1 设计原则设计工作应正确、完整地反映需求规格说明书的各项要求,充分考虑其功能、性能、安全、出错处理及其它需求。保证设计的易理解性、可追踪性、可测试性、接口的开放性和兼容性,考虑健壮性(易修改、可扩充、可移植)、重用性。考虑选用合适的编程语言和开发工具,制定编码规和系统约定等。对于PS开发,需要在实现难度,代码维护,系统集成方面考虑,在对需求处理时需要定义好任务的技术边界,比如该方案哪部分由java处理,哪部分由peoplesoft处理,是否需 要引入第三方组件等。3. 5.8.2 设计方

4、法设计时要使用有效的方法进行软件设计。软件设计方法一般采用面向结构设计方法、面向对象设计方法或其他方法。4. 5.8.3 多方案选择系统设计过程进行多方案选择时,按照决策分析控制程序进行系统架构选择和关键技术方案的确定。5. 5.8.4 概要设计概要设计是分析各种设计方案和定义软件体系结构的过程。设计师在充分了解需求的基础上,依据需求规格说明书选用适当的设计方法,分析与设计软件的结构、模块功能。通过系统分解,确定子系统的功能和子系统之间的关系,以及模块的功能和模块之间的关系,编写概要设计说明书。概要设计说明书必须经过技术评审。概要设计评审通过后,概要设计说明书及其评审记录纳入受控库管理。负责概

5、要设计的系统分析师填写需求跟踪矩阵的相关设计项。概要设计检查表#检查项是/否/不适用1类设计、文档中有没有类设计?有没有对类图进行描述?2类层次结构是否表达清晰,准确,完全,合理(便于开发)?3如果有重要类或者复杂类,有没有用具体的例子描述? 有没有对类的方法,属性等进行约定?4类(对象)之间关系如果侧重时序关系,则需要绘制时序图;类(对象)之间关系如果侧重之间的接口交互,则需要绘制协作图;文档中有没有上述容?或者有没有对类(对象)之间的关系进行描述?5类之间的消息传递次数是否是有限的,传递的容、传递的方式是否是合理的?6数据库设计 数据库设计是否考虑了项目的硬件环境和软件环境?是否考虑了可能

6、承载的最大负荷,或者突发负荷么?7数据库设计时候是否采用了图?表结构设计的考虑是什么,文档中是否有描述?表中的主键,外键,索引是否需要定义,是否恰当的定义了?表中的每个字段名称,含义,所取的数据类型和有效值围是什么?是否合理?这些字段的设计是否能满足需求分析的要求?8数据库设计时候是否考虑了便于将来对表结构或者记录结构进行修改?9数据库的设计是否还遵循软件开发部数据库开发规文档的约定?10模块设计 如果项目中使用独立的可重用模块或者开发框架,需要描述在项目中使用它们中的哪部分功能,并且说明为何采用?11文档中有没有描述项目和外部系统的接口交互?如果有接口,则文档中是否描述了它们之间定义的协议?

7、交互的数据是否会在输出设备上显示?是否和用户相关?12模块的详细设计应该完成,或者优先级高的模块详细设计必须完成。13是否将需求分析得出的系统各部分间的通讯连接、依存关系正确的转换为适当的接口、模块(子系统)?模块是否按照高聚,低外部耦合进行划分?14有没有描述模块部的处理流程?有没有描述模块部采用的算法?这些处理流程,算法是否经过论证?15有没有描述模块之间的接口,如果接口之间有数据交互,有没有描述数据格式?有没有描述每个模块输出是什么,输入是什么?项目中的各个模块的输出或者输入是否准确,一致,必要?16其他设计 如果有多个模块共享的数据,则文档中是否对此进行描述?文档中建立了数据字典了么?

8、17如果项目需要使用并发、分布式或者其它特殊要求,那么文档中是否对此的具体实现有描述?18如果需求获取时候明确了性能要求,那么设计中需要描述达到这个性能指标的具体实现方法。设计中有没有考虑出现性能瓶颈时候,系统会做出怎样的应对?19项目中如果有特殊需求,那么文档中是否具有对此实现的描述?概要设计中总结的约束条件是否与需求分析产生的约束一致6. 5.8.5 详细设计概要设计评审通过后,依据需求规格说明书 ,根据概要设计说明书,开发工程师进一步细化系统的设计。针对每个子系统从功能、性能、输入输出、流程、接口、用户界面等方面实施具体的详细设计,编写详细设计说明书。详细设计说明书必须经过技术评审。 详

9、细设计评审通过后,详细设计说明书及其评审记录纳入受控库管理。负责详细设计的人员填写需求跟踪矩阵的相关设计项。另外,详细设计需包含用户界面设计,用户界面原则需要界面直观,对用户透明;界面风格统一和布局合理划。详细设计检查表#检查项是/否/不适用清晰性、完整性1是否清晰的描述了单元设计信息,包括数据流程、控制流程、接口?2文档结构是否清晰、组织是否合理?3文档结构是否便于维护和修改?4设计是否易于理解?5每个单元模块是否都有相应的标识?6是否对单元模块的目的和功能进行了描述?7每个单元模块的输入/输出是否进行了描述?8是否说明了用于实现该单元模块的算法?9是否提供了一致的错误处理机制?10系统结构

10、是否合理、清晰?11各子系统、模块之间的关系是否描述得清楚?12系统的设计是否考虑了系统的可扩展性?13设计是否考虑了重用性?14重用构件是否进行了标识?15是否说明了重用模块的获得方式和相关的文档?16系统的设计是否考虑了系统的易移植性?17设计是否使用标准的技术,避免使用怪异的、不易理解的方式和方法?18是否列出了所有的调用?19对变量、指针和常量进行了定义和初始化吗?20设计能实现特定的需求和目标吗?21是否对程序的注释进行了设计?22是否对程序的限制和约束进行了说明?23所有设计是否是可测试的?一致性、正确性24文档是否符合项目标准?25是否用要求的方法或工具进行设计的?26数据元素的

11、名称在整个单元中保持一致吗?27所有的设计接口相互间是一致的吗?28是否存在逻辑上的问题?29是否对各种情况都进行了处理?(如大于、等于、小于0,switch/case情况)30是否为开发和维护代码提供了充分的基础?31所有的设计单元都可追溯回需求吗?接口32参数的数量、类型和顺序是否匹配?33是否正确的定义了输入输出数据?34是否清晰的描述了传递参数的顺序?35是否识别了传递参数的机制?可维护性、可靠性36设计单元是否具有高聚度低耦合度?(即该单元的变化不会对本单元造成不可预料的影响,对其他单元的影响达到最小)37设计的复杂度已经最小了吗?38是否具有清晰性、可读性、可修改性,满足维护需求?

12、39是否设定了正确的初始化缺省值?40是否对输入、输出、接口和结果进行了错误检查?41是否对错误情况给出了有意义的信息提示?42是否考虑了意外情况?43是否符合相关的法律法规7. 5.8.6 数据库设计当进行与数据库相关软件系统的设计时必须进行数据库设计,同时编写数据库设计说明书建立整个软件的数据库方面的设计,在概要设计说明书完成后及详细设计说明书后需进行数据库设计说明书的完善及细化。8. 5.8.7 建立开发环境进入编码阶段前,项目经理需进行项目组级开发环境等方面的搭建和规划、策划。9. 5.8.8 编码系统设计完成后,进入编码阶段。项目经理在进入编码阶段之前,必须确定项目的编码规,编码是把

13、系统设计转换为程序代码的过程。开发工程师依据设计说明书,开展具体的程序代码的编写,严格按照设计文档、编程规及系统约定。10. 5.8.9 单元测试编码完成的系统各模块由项目经理决定是否做单元测试。鼓励做单元测试,若做单元测试则须提供单元测试报告,纳入配置管理。完成各模块的单元测试后,负责编码的开发工程师填写需求跟踪矩阵的相关编码模块。11. 5.8.10 代码走查由项目经理在进度计划中策划并安排开发工程师进行程序代码走查。代码走查具体过程参见评审过程实施细则。检查发现的问题纳入缺陷管理(参见软件测试控制程序),直到问题解决。代码走查通过后代码纳入测试库管理。JAVA代码走查规分类重要性检查项备

14、注命名重要命名规则是否与所采用的规保持一致?成员变量,方法参数等需要使用首字母小写,其余单词首字母大写的命名方式,禁止使用下划线(_)数字等方式命名不要出现局部变量,成员变量大写字母开头等问题一般是否遵循了最小长度最多信息原则?各种命名尽可能短,表意准确,除2代替to,4代替for外,不建议使用数字在命名中重要has/can/is前缀的函数是否返回布尔型?成员变量,方法参数,局部变量等为布尔型时,如果出现has/can/is开头,则将这些词去掉重要类名是否存在重名问题?自己实现的类尽量不要和别人的类重名,尽管不在同一个包下,特别是子类和父类重名的情况注释重要注释是否较清晰且必要?方法JAVAD

15、OC注释中需要说明各参数、返回值及异常说明,参数说明需按照参数名称及用意对应标注重要复杂的分支流程是否已经被注释?一般距离较远的是否已经被注释?重要函数是否已经有文档注释?(功能、输入、返回及其他可选)文件,类(含接口,枚举等),成员变量,方法前需要有JAVADOC的注释一般特殊用法是否被注释?声明、空白、缩进一般每行是否只声明了一个变量?(特别是那些可能出错的类型)重要变量是否已经在定义的同时初始化?重要类属性是否都执行了初始化?一般代码段落是否被合适地以空行分隔?一般是否合理地使用了空格使程序更清晰?基本代码格式中的空格符不可缺少,这些空格出现在?,:,+,-,*,/,=,=,=,=,!=

16、,及各种括号附近提示代码行长度是否在要求之?每行不得超过120个字符重要controller,service,dao中不要声明有状态的变量。此变量不能被修改。如果要进行修改,必须通过锁进行控制。一般折行是否恰当?一般集合是否被定义为泛型类型?定义集合时,建议定义其泛型类型,减少类型转换和警告错误语句/功能分布/规模一般包含复合语句的是否成对出现并符合规?重要是否给单个的循环、条件语句也加了?if,else,elseif,while,for,case等代码块必须用包围一般单个变量是否只做单个用途?重要单行是否只有单个功能?(不要使用;进行多行合并)重要单个函数是否执行了单个功能并与其命名相符?一

17、般操作符和操作符的应用是否符合规?规模重要单个函数不超过规定行数?重要缩进层数是否不超过规定?可靠性(总则/变量和语句)重要是否已经消除了所有警告?开发工具的警告重要常数变量是否声明为final?重要对象使用前是否进行了检查?重要成员变量,局部变量是否在使用前被赋值?对象初始化为null的对象被调用前必须被重新赋值,如果赋值语句在try块中,调用操作必须在try块中一般局部对象变量使用后是否被复位为NULL?特别是数组集合Map重要对数组的访问是否是安全的?(合法的index取值为0,MAX_SIZE-1)。重要是否确认没有同名变量局部重复定义问题?严禁局部变量名称和类或对象成员变量同名一般程

18、序中是否只使用了简单的表达式?重要是否已经用()使操作符优先级明确化?重要所有判断是否都使用了(常量=变量或者常量.equals(变量))的形式?常量放在比较符前可以有效降低比较符写成赋值语句,减少空指针异常重要是否每个if-elseif-else语句都有最后一个else以确保处理了全集?重要是否每个switch-case语句都有最后一个default以确保处理了全集?一般for循环是否都使用了包含下限不包含上限的形式?(k=0;kMAX)重要XML标记书写是否完整,字符串的拼写是否正确?重要对于流操作代码的异常捕获是否有finally操作以关闭流对象?关闭前需要判断流对象是否为空提示退出代码

19、段时是否对临时对象做了释放处理?重要对浮点数值的相等判断是否是恰当的?严禁使用=直接判断浮点数值。提供通用方法重要是否对象比较都使用了equals?对象(包括包装类)比较必须使用equals,而不是使用=或!=操作重要使用equals进行比较时是否确保比较的两个对象类型一致?equals方法比较的对象在对象类型确定的前提下,建议是同一类型的,例如Integer和使用equals是不提倡的一般操作Map或Properties结构对象,用于传值时是否将Key定义为常量?Session,Request等对象的setAttribute,getAttribute方法的key建议使用常量,不得手工输入字符

20、串重要是否在类型转换前确保了类型的兼容?除非明确保证对象类型重要包装类做简单预算前是否保证非空?建议都使用包装类。包装类进行操作前,建议进行非空(null!=xx)判断,防止发生空指针异常重要对象属性在使用前是否确保被准确赋值?只读属性(只提供get方法的成员变量)除非特意返回固定值,否则必须提供set方法或在其他方法调用时将其赋值重要方法调用前是否有非空判断?对参数的非空判断必须出现在方法调用之前,否则说明前面可能导致空指针或者后者判断是没有必要的,非空判断,默认由调用者提供重要非线程安全的对象是否被正确保证线程安全?DateFormat实例的format方法调用不是线程安全,类似的情况不适

21、合使用static定义,建议使用ThreadLocal方式实现,参看UnifiedCodeGenerator一般相同用意的成员变量是否使用了相同的命名?不同实体Entity、VO、BO之间表示同一含义的成员变量,建议使用相同的名称,尽量不要出现,有的地方用username,有的地方用userName这样的情况可靠性(函数)重要入口对象是否都被进行了判断不为空?重要入口数据的合法围是否都被进行了判断?重要是否对有异常抛出的方法都执行了try.catch保护?重要是否函数的所有分支都有返回值?重要int的返回值是否合理?(负值为失败,非负值成功)一般对于反复进行了int返回值判断是否定义了函数来处

22、理?一般关键代码是否做了捕获异常处理?一般字典表定义是否用枚举,或者有一个统一的定义?重要是否对方法返回值对象做了null检查,该返回值定义时是否被初始化?重要是否对同步对象的遍历访问做了代码同步?重要是否确认在对Map对象使用迭代遍历过程中没有做增减元素操作?Map遍历时执行增减元素操作将抛出ConcurrentModificationException,对集合对象遍历时建议都不要进行增减元素操作。重要线程处理函数循环部是否有异常捕获处理,防止线程抛出异常而退出?重要原子操作代码异常中断,使用的相关外部变量是否恢复先前状态?重要函数对错误的处理是恰当的?重要异常捕获后是否进行了日志记录或异常

23、继续抛出?异常捕获后如果无法处理需要继续抛出,如果可以处理,建议将异常日志进行记录重要是否构造方法中不调用当前对象的构造方法严禁在构造方法中new一个当前对象可维护性重要实现代码中是否消除了直接常数?(用于计数起点的简单常数例外)重要是否消除了导致结构模糊的连续赋值?(如a=(b=d+c))重要是否正确使用了日志记录?一般是否有冗余判断语句?(如:if(b)returntrue;elsereturnfalse;)“if(b)returntrue;elsereturnfalse;”=“returnb;”;禁止使用类似“if/while(表达式=true)或if/while(表达式=false)”

24、的判断重要是否把方法中的重复代码抽象成私有函数?代码警告一般是否清除了多余导入的包或类?重要是否清除了只定义未使用的局部变量?严禁局部变量被定义或者初始化而未被使用,这种情况需要删除该局部变量一般是否将魔鬼数字修改为常量使用?不允许直接使用除-2,-1,0,1,2,3,4,5,6,7,8,9,10外的数字,除此外的数字需要定义常量使用提示常量定义是否为staticfinal格式?常量定义格式为public/protected/privatestaticfinalTypeTYPE,static和final顺序要保持一致提示实现序列化的对象是否定义了serialVersionUID?建议实现Ser

25、ializable的类需要增加“privatestaticfinallongserialVersionUID=1L;”可读性一般是否用ifelse结构替换了三元运算符?表达式复杂情况下不要使用(flag?exp1:exp2)语句,该语句需要修改为ifelse结构一般代码注释率是否结余30%60%之间?代码注释率应落在30%60%之间性能重要日志记录的Log,Logger对象是否定义为常量?用于记录日志的Log,Logger对象在类中定义必须是staticfinal的,建议定义为private的,因为这类对象初始化比较耗时,不利系统运行日志重要打印信息是否都用日志管理?代码中建议不要使用Syst

26、em.out.println打印信息,只有在系统启动或系统即将退出时使用,其余部分全部用日志记录圈复杂度重要单个类行数是否不大于500行?单个类建议行数小于500行,最多不超过1000行重要方法参数个数是否在7个以?方法参数个数建议不大于5个,最多不超过7个重要单个方法函数是否不大于30行?单个方法建议函数不大于30行,做多不超过60行重要单方法中try/for/while/switch/if最深深度是否不大于5?单方法中try/for/while/switch/if最深深度不允许大于5重要方法调用最深深度是否不大于15?方法部+部调用累计深度不允许大于15SQL空格一般连接符or、in、an

27、d、以及、=等前后加上一个空格。一般逗号之后必须接一个空格。一般关键字、保留字和左括号之间必须有一个空格。SQL注释重要对较为复杂的SQL语句加上注释,说明算法、功能。注释风格:注释单独成行、放在语句前面。重要对重要的计算应说明其功能。SQL中尽量少涉及业务逻辑一般可采用单行/多行注释。(-或/*/方式)。SQL优化性能建议1书写SQL语句优化细则重要1)尽量避免相同语句由于书写格式的不同,而导致多次语法分析。重要2)多表连接时,使用表的别名来引用列。建议最多5个连接重要3)不要在任何代码中使用SELECT*。重要4)where条件中尽量减少使用常量比较,改用参数变量。重要5)尽量少用嵌套查询

28、。如必须,请用notexist代替notin子句。重要6)用多表连接代替EXISTS子句。重要7)使用UNIONALL提高性能。重要8)in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。2排序注意事项重要1)大量的排序操作影响系统性能,所以尽量减少orderby和groupby排序操作。如必须使用排序操作,请遵循如下规则:重要a.排序尽量建立在有索引的列上。重要b.如结果集不需唯一,使用unionall代替union。3选用索引注意事项重要1)对于复合索引,SQL语句必须使用主索引列。重要2)索引中,尽量避免使用NULL。重要3)对于

29、索引的比较,尽量避免使用NOT=(!=)。重要4)查询列和排序列与索引列次序保持一致。4其他经验性规则重要1)任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。12. 5.8.11 制作用户文档系统设计与实现过程中还须输出用户操作手册、用户安装手册等用户文档。由项目经理指定人员,在系统测试之前完成编写。用户文档经过系统测试纳入受控库管理。13. 5.8.12 变更对进入受控库的设计、编码及用户文档的变更,按变更控制程序执行。13.1 出口14. 5.9.1 输出l 概要设计说明书l 详细设计说明书l 数据库设计说明书l 源代码l 用户操作手册l 用户安装手册15. 5.9.2 出口准则l 设计文档评审通过l 代码开发完成,测试任务提交单完成l 完成用户文档15.1 记录模板l 概要设计说明书l 概要设计检查单l 详细设计说明书l 详细设计检查单l 数据库设计说明书l 用户操作手册l 用户安装手册l 测试问题报告l 代码检查单l 单元测试报告

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号