软件公司项目研发管理制度附数据要求说明书36页.doc
下载文档
上传人:职z****i
编号:1152598
2024-09-08
35页
249.65KB
1、软件公司项目研发管理制度附数据要求说明书编 制: 审 核: 批 准: 版 本 号: ESZAQDGF001 编 制: 审 核: 批 准: 版 本 号: 目 录一、总述3二、项目计划3三、项目组织4四、项目管理54.1、软件开发规范5、命名体系5、编码风格5、界面风格5、版本控制6、通用约束6、开发方法6、开发流程6、交流制度7、代码标准化管理7、备份制度7、文档管理7、项目交付管理8、项目归档管理84.2、任务分解与分目标制定84.3、进度检查与绩效考评9、考评原则9、考评标准10、考评矩阵104.4、应对一些突发事件(协调与调整)134.5、与有利害关系的人共享信息13附录4-1项目开发计划2、14附录4-2软件需求说明书16附录4-3详细设计说明书18附录4-4 用户手册20附录4-5数据要求说明书23附录4-6项目开发总结报告25附录5-1 JAVA编码规范27附录5-2 应用结构定义与命名规范33附录5-3 数据库对象命名规范33一、总述项目管理覆盖整个项目生命周期,管理制度就是落实到管理过程中的一些基本要素,这里我们将其概括为三项基本业务: 、项目计划 指明要取得的各种结果 指定进度表 估计所需资源 、项目组织落实项目体系中的角色配置与角色的职责、项目管理 约束 任务分解与分目标制定 进度检查与质量评估 应对一些突发事件(协调与调整) 与有利害关系的人共享信息二、项目计划项目3、计划的结果体现为“项目开发计划”书面形式,其中要对开发过程中各项工作的负责人、开发进度、进度衡量的标准、完成进度所需经费预算以及所需软、硬件条件等问题详尽的罗列出来,以便根据本计划开展和检查本项目的开发工作。附录4-1给出计划书模板。三、项目组织项目组织包括项目角色定义、角色责任定义、角色间关系定义。角色定义是根据项目需求配置(调配、招聘)具备相应素质与能力的成员。角色责任定义就是将具体的任务分解到每个角色;角色间关系定义指明报告与检查体系;一般情况下为三级组织:业务与商务协调组(商务洽谈、目标与进度及资源定义与落实调整)项目经理开发组系统支持组负责主机、网络、应用支撑软件的安装调试开发经理系4、统架构组负责系统的体系结构与应用框架设计详细设计组落实到具体语言的功能实现质量控制组(负责功能、性能、可用性、可维护性、稳定性、压力测试)质量经理业务与商务协调组一般由客我双方成员共同组成,负责项目的总体需求、总体目标、里程碑,关键技术路径定义。在制定项目总体目标、里程碑定义与关键技术路径时候要与开发经理联合统筹,并以项目经理意见为主。开发组的责任人是开发经理,系统体系结构与框架由开发经理与开发组主力程序员联合统筹,并以开发经理意见为主,具体功能实现一般以主力程序员(系统分析员、高级程序员)意见为主。“系统支持”属于临时调配,很可能是外部资源,但工作质量由开发经理检查。质量控制由质量经理、开发5、经理、项目经理联合统筹,以质量经理意见为主。整个项目生命周期中一般角色责任定义如下:四、项目管理 4.1、软件开发规范这里只是给出我司软件开发必须遵从的原则,具体内容应该由项目经理或开发经理根据具体项目制定详尽约定。在罗列规范之前,开发组织(团队)必须遵从一个最基本的约定统一开发环境:OS:操作系统;IDE:集成开发工具;DEBUG:调试工具;SC:源代码控制器;IM:即时交流工具;DD:文档工具(计划,任务,报告);ASM:间接交流工具,一般以mail为主。另外还要为团队固定一些一些角色,builder / Server administrator(dba&osa)。严格区分开发平台与生产平6、台之间的界限(安全、测试、性能)、命名体系A) 数据库与数据库对象命名;B) 开发语言的元素命名(类、对象、文件、命名空间、组件、函数、方法等);C) 页面与页面元素命名.D) 文件目录体系、编码风格缩进、换行、块大小、文件大小、注释、界面风格组件类别、大小、前景、背景、字体、鼠标敏感、边框、布局、版本控制创建权限、创建分之权限、更新频度、提交准则。、通用约束向导设置、数据校验、提示信息、响应时间与响应方式、开发方法鉴于用户需求的不容易澄清性与变动频繁这一特点,所有项目均采用迭代开发方法。这就是说不要指望在明确的需求调研阶段能把问题搞清楚,弄清楚个大概即可,以不超过两周的迭代间隔快速的交互原型7、,以便反馈更进一步的需求、这样一步步逼近用户的真实想法。这里要特别强调的是多与用户交流,项目组内有关设计方法与策略也要频繁地交流。、开发流程纯粹从开发的角度我们将项目周期划分为两个阶段,每个阶段要完成的的如下:4.1.8、交流制度项目组每周至少要进行不少于两次的集体交流,否则就是开发经理或项目经理失职(交流不限制时间长短、方式、内容可以从需要到设计到实现、甚至是抱怨)。4.1.9、代码标准化管理小组内成员必须开展互测,项目经理要督促进行。如果一般性的缺陷被质量组测试发现,项目经理可以作出警告、取消休假、扣发奖金等处理措施。项目经理或开发经理可抽查成员代码,对比规范作出人员基本技术素养评测,计入8、期末(项目结束)考核(去留)。、备份制度应用系统的所有资料代码(程序、脚本块、数据库脚本)、文档、数据,除了数据以外,全部纳入源代码控制系统。数据每天备份一次媒介是磁盘,代码(程序脚本、数据库脚本)、文档每周一次媒介是磁盘,所有信息每月备份一次媒介是光盘。4.1.11、文档管理没有文档的软件是一种灾难。代码不是传达系统原理和结构的理想媒介;开发团队更需要编制易于阅读的文挡,来对系统及其设计决策的依据进行描述。 然而,过多的文档比过少的文档更糟。编制众多的文档需要花费大量的时间,并且要使这些文档和代码保持同步:就要花费更多的时间。如果文档和代码之间失去同步,那么文档就会变成庞大的、复杂的谎言会造9、成重大的误导; 对于团队来说,编写并维护一份系统原理和结构方而的文挡将总是一个好主慝,但是那份文档应该是短小、突出主题的。为此我们拟定所有项目都必须编制以下文档。1项目开发计划书,模板见附录4-12软件需求说明书,模板见附录4-23详细设计说明书,模板见附录4-34用户手册,模板见附录4-45数据库需求说明,模板见附录4-56项目开发总结报告,模板见附录4-6、项目交付管理软件交付应用,源代码文档交付视技术合同要求交付的内容而定运行维护技术交付:系统、数据库、应用的日常管理与维护。系统安全性交付:操作系统管理与应用账号、数据库管理与应用开发账号、应用服务器的管理与应用开发账号。、项目归档管理项10、目执行过程的所有资料程序、脚本、数据、文档以光盘作媒介,并附上资料清单,交给公司行政部。4.2、任务分解与分目标制定组织中的负责人负责具体的任务分解并落实到组织中的每个人。形式如下:软件开发任务单项目名称: 任务编号_子项名称按“子系统模块功能”最多三级划分功能描述技术要求复杂度(业务与技术两个层次)任务发出人任务承接人限时开始yyyy/MMdd限时结束yyyy/MMdd考核标准(百分制)分值考评项目301、时效性:(是否按时完成)402、客户关注点:(功能、可靠性、易用性、高效性、可维护性、可移植性)表现如何103、规范与标准54、复用与创新85、团队精神26、奉献精神57、沟通精神4.3、11、进度检查与绩效考评、考评原则软件开发人员的绩效考评是所有软件公司都深感棘手但又必须面对的问题。棘手的原因是既不能进行计时处理、也不能进行计件处理。计时会造成出工不出力,计件(一般按代码条数)会挫伤优秀软件人员的积极性(同样实现一个功能,差的软件人员成百上千行,而优秀软件人员只有几十行,且好用)。但是只要尊重一些必要的原则,还是能够加以评估的。这里提出六条原则:1、 被考核对象必须有明确的任务项目经理或开发经理必须发出明确的任务书:任务书中指定任务名称、任务内容、完成时限之、考核标准、向谁负责、任务的难易程度(业务与技术两个方面)。难易程度由项目组成员集体评价。没有明确的任务当然就无法考评(见表12、4-2)。2、 考评标准要综合计量量与非计量量。计量量如:完成时间、完成了对少功能、测试出多少缺陷等,非计量量如:用户接受程度如何、项目组合作情况如何等等,要将这些因素综合考虑。3、 要体现多劳多得、奖勤罚懒。高效、高质完成任务的人员必须得到区别对待(调资、休假、奖金)。4、 考评结果要及时与被考评对象沟通,容许争议协调。5、 考评时间不得跨度太大,一般为两周一次,不符合这种周期的,项目经理与开发经理需要适当对任务做进一步分解。6、 被考评要提供周报月报之类的内容,但不作为考评的依据。我们只注重结果,也就是说根据结果认定过程。、考评标准1、时效性:不管是承揽项目还是产品研发都有一定的时间限定,13、愈期就意味着成本增加甚至是失败。所以能否按时完成任务是绩效考评的一个重要标致。2、客户关注点客户关注点也就是软件的品质,涉及的内容很多,按国家标准分为六个层面,即:功能、可靠性、易用性、高效性、可维护性、可移植性。这六个项目的次序也就是我们考察的顺序,首先必须完成功能,然后再衡量功能是否可靠,再然后才其他几个方面,如果以百分制来衡量,这六个指标的比例大致是50,25,15,10,5,5。也就是说必须保证前四项。而功能、可靠性又是重中之重75%。3、规范与标准不以规矩不能成方园,不遵从标准的与规范的设计开发必将造成巨大的维护成本与技术积累成本,同时也给软件交流与究错设置障碍,所以必须强调规范化与14、标准化。4、复用与创新性这是软件开发人员设计与开发综合能力的一个集中体现。5、团队精神没有团队精神的软件开发人员坚决辞退:开发过程中团队精神主要表现在:一、对测试出的问题是互相推委,还是协商解决;二、接口设计各行其事还是共同制订;三、发现他人犯错是善意提醒还是沉默不语;四、不注重版本管理。6、奉献精神任务比较紧张时候,是否不计较个人得失主动加班加点赶任务。7、沟通精神不懂问题是拖延时间还是主动寻求帮助,技术经验是否主动分享。、考评矩阵开发人员当期任务评测表任务书编号:项目指标时效率按时未按时X%(X=100)完成未完成X%Y%客户关注点功能可靠易用性能维护移植功能可靠易用性能维护移植A50%B15、25%C15%D10%E5%F5%A50%B25%C15%D10%E5%F5%规范与标准好中差G6G4G=0复用与创新性好中差H3H2H=0团队精神好中差I5I4I02奉献精神好中差J1.52.0J=0.5J=0.0沟通精神好中差K3K2K=0.0记分(30 + (A+B+C+D+E+F)*40+G+H+I+J+K)*X%功能:实现的结果是否体现的客户的意图,与客户意图之间的差距(x%), 功能测评比例(1-x%)*50%可靠性:主要以测试出的缺陷多少来衡量,如果一个最低级功能被测出超过三个缺陷,可靠性为零。易用性:重要从数据校验与否、出错提示信息明细程度,输入数据量多少,是否符合输入习惯四个16、方面进行衡量;性能:主要是响应速度可维护性与可移植性要看与规范与标准的差距4.4、应对一些突发事件(协调与调整)项目可能造成的结果人员流动招聘、调配、项目延期突发性需求商务谈判、项目延期技术更新利润损失、技术积累损失、项目延期法律问题无法进展其它4.5、与有利害关系的人共享信息项目共享范围一般信息共享核心信息有限共享专有信息不共享 附录4-1项目开发计划 编制项目开发计划的目的是用文件的形式,把对于在开发过程中各项工作的负责人员、开发进度、 所需经费预算、所需软、硬件条件等问题作出的安排记载下来,以便根据本计划开展和检查本项目的开发工作。编制内容要求如下:1引言11编写目的 说明编写这份项目开17、发计划的目的,并指出预期的读者。12背景说明:a待开发的软件系统的名称;b本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络;C该软件系统同其他系统或其他机构的基本的相互来往关系。13定义 列出本文件中用到的专门术语的定义和外文首字母组词的原词组。14参考资料列出用得着的参考资料,如:a本项目的经核准的计划任务书或合同、上级机关的批文;b属于本项目的其他已发表的文件;C本文件中各处引用的文件、资料,包括所要用到的软件开发标准。 列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。2项目概述 21 工作内容简要地说明在本项目的开发中须进行的各项主18、要工作。22主要参加人员扼要说明参加本项目开发工作的主要人员的情况,包括他们的技术水平。23产品231程序列出需移交给用户的程序的名称、所用的编程语言及存储程序的媒体形式,并通过引用有关文件, 逐项说明其功能和能力。 232文件列出需移交给用户的每种文件的名称及内容要点。 233服务列出需向用户提供的各项服务,如培训安装、维护和运行支持等,应逐项规定开始日期、所提供支持 的级别和服务的期限。234非移交的产品 说明开发集体应向本单位交出但不必向用户移交的产品(文件甚至某些程序)。24验收标准 对于上述这些应交出的产品和服务,逐项说明或引用资料说明验收标准。25完成项目的员迟用限 26本计划的批19、准者和批准日期 3实施计划 31工作任务的分门与人员分工 对于项目开发中需完成的各项工作,从需求分析、设计、实现、测试直到维护,包括文件的编制、审批、打印、分发工作,用户培训工作,软件安装工作等,按层次进行分解,指明每项任务的负责人和参加人员。32 接口人员说明负责接口工作的人员及他们的职责,包括:a 负责本项目同用户的接口人员;b负责本项目同本单位各管理机构,如合同计划管理部门、财务部门、质量管理部门等的接口人员; c负责本项目同各分合同负责单位的接口人员等。 33进度 对于需求分析、设计、编码实现、测试、移交、培训和安装等工作,给出每项工作任务的预。定开始日期、完成日期及所需资源,规定各项20、工作任务完成的先后顺序以及表征每项工作任务完成的标志性事件(即所谓里程碑)。 34预算 逐项列出本开发项目所需要的劳务(包括人员的数量和时间)以及经费的预算(包括办公费、差旅费、机时费、资料费、通讯设备和专用设备的租金等)和来源。35关键问题逐项列出能够影响整个项目成败的关键问题、技术难点和风险,指出这些问题对项目的影响。4支持条件说明为支持本项目的开发所需要的各种条件和设施。41计算机系统支持逐项列出开发中和运行时所需的计算机系统支持,包括计算机、外围设备、通讯设备、模拟器、编译 (或 汇编)程序、操作系统、数据管理程序包、数据存储能力和测试支持能力等,逐项给出有关到货日期、 使用时间的要求21、。42需由用户承担的工作逐项列出需要用户承担的工作和完成期限。包括需由用户提供的条件及提供时间。43由外单位提供的条件 逐项列出需要外单位分合同承包者承担的工作和完成的时间,包括需要由外单位提供的条件和提 供的时间。 5专题计划要点说明本项目开发中需制订的各个专题计划(如分合同计划、开发人员培训计划、测试计划、安全保密 计划、质量保证计划、配置管理计划、用户培训计划、系统安装计划等)的要点。附录4-2软件需求说明书 软件需求说明书的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解, 使之成为整个开发工作的基础。编制软件需求说明书的内容要求如下:1引言11编写目的说明编写这份软22、件需求说明书的目的,指出预期的读者。12背景 说明: a待开发的软件系统的名称;b本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络;C该软件系统同其他系统或其他机构的基本的相互来往关系。 13定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。14参考资料 列出用得着的参考资料,如:a本项目的经核准的计划任务书或合同、上级机关的批文;b属于本项目的其他已发表的文件;c本文件中各处引用的文件、资料、包括所要用到的软件开发标准。 列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。2任务概述 21目标 叙述该项软件开发的意图、应用目标、23、作用范围以及其他应向读者说明的有关该软件开发的背景材料。解释被开发软件与其他有关软件之间的关系。如果本软件产品是一项独立的软件,而且全部内容自含,则说明这一点。如果所定义的产品是一个更大的系统的一个组成部分,则应说明本产品与该系统中其他各组成部分之间的关系,为此可使用一张方框图来说明该系统的组成和本产品同其他各部分的联系和接口。|22用户的特点 列出本软件的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长,以及本软件的预期使甩频度。这些是软件设计工作的重要约束23假定和约束列出进行本软件开发工作的假定和约束,例如经费限制、开发期限等。3需求规定 31对功能的规定用列表的方式(例如24、IPO表即输入、处理、输出表的形式),逐项定量和定性地叙述对软件所提出的功能要求,说明输入什么量、经怎样的处理、得到什么输出,说明软件应支持的终端数和应支持的并行操作的用户数。 32对性能的规定321精度 说明对该软件的输入、输出数据精度的要求,可能包括传输过程中的精度。322时间特性要求 说明对于该软件的时间特性要求,如对:a响应时间;b更新处理时间;c数据的转换和传送时间;d解题时间; 等的要求。323灵活性 说明对该软件的灵活性的要求,即当需求发生某些变化时,该软件对这些变化的适应能力,如:a操作方式上的变化;b运行环境的变化; c同其他软件的接口的变化;d精度和有效时限的变化; e计划25、的变化或改进。 对于为了提供这些灵活性而进行的专门设计的部分应该加以标明。33输人输出要求解释各输入输出数据类型,并逐项说明其媒体、格式、数值范围、精度等。对软件的数据输出及必须标明的控制输出量进行解释并举例,包括对硬拷贝报告(正常结果输出、状态输出及异常输出)以及图形或显示报告的描述。34数据管理能力要求 说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按可预见的增长对数据及其分量的存储要求作出估算。 35故障处理要求列出可能的软件、硬件故障以及对各项性能而言所产生的后果和对故障处理的要求。36其他专门要求如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性、可靠26、性、运行环境可转换性的特殊要求等。 4运行环境规定 41设备 列出运行该软件所需要的硬设备。说明其中的新型设备及其专门功能,包括:a处理器型号及内存容量;b外存容量、联机或脱机、媒体及其存储格式,设备的型号及数量;c输入及输出设备的型号和数量,联机或脱机; d数据通信设备的型号和数量;e功能键及其他专用硬件42支持软件 列出支持软件,包括要用到的操作系统、编译(或汇编)程序、测试支持软件等。43 接口说明该软件同其他软件之间的接口、数据通信协议等。44控制 说明控制该软件的运行的方法和控制信号,并说明这些控制信号的来源。 附录4-3详细设计说明书 1 引言 11编写目的说明编写这份详细设计说明27、书的目的,指出预期的读者。12背景 说明:a待开发软件系统的名称; b本项目的任务提出者、开发者、用户和运行该程序系统的计算中心。 13定义 列出本文件中用到专门术语的定义和外文首字母组词的原词组。14参考资料 列出有关的参考资料,如: a本项目的经核准的计划任务书或合同、上级机关的批文;b属于本项目的其他已发表的文件;c本文件中各处引用到的文件资料,包括所要用到的软件开发标准。 列出这些文件的标题、文件编号、发表日期和出版单位,说明能够取得这些文件的来源。2程序系统的结构用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符和它们之间 的层次结构关系。3程序1(标识符)28、设计说明 从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。 对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。 31程序描述 给出对该程序的简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本程序的特点(如 是常驻内存还是非常驻?是否子程序?是可重人的还是不可重人的?有无覆盖要求?是顺序处理还是并发 处理卜等)。32功能 说明该程序应具有的功能,可采用IPO图(即输入一处理一输出图)的形式。33性能说明对该程序的全部性能要求,包括对精度、灵活29、性和时间特性的要求。34输人项 给出对每一个输入项的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、输入的方式。 数量和频度、输入媒体、输入数据的来源和安全保密条件等等。3 5输出项 给出对每一个输出项的特性,包括名称、标识、数据的类型和格式,数据值的有效范围,输出的形式、 数量和频度,输出媒体、对输出图形及符号的说明、安全保密条件等等。36算法 详细说明本程序所选用的算法,具体的计算公式和计算步骤。37流程逻辑 用图表(例如流程图、判定表等)辅以必要的说明来表示本程序的逻辑流程。38接口用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一层模块、子程序,说明参数赋值和调用方式30、,说明与本程序相直接关联的数据结构(数据库、数据文卷)。 39存储分配 根据需要,说明本程序的存储分配。 310注释设计 说明准备在本程序中安排的注释,如:a 加在模块首部的注释;b加在各分枝点处的注释; 对各变量的功能、范围、缺省条件等所加的注释; d对使用的逻辑所加的注释等等。 311限制条件 说明本程序运行中所受到的限制条件。312测试计划 说明对本程序进行单体测试的计划,包括对测试的技术要求、输入数据、预期结果、进度安排、人员职责、设备条件驱动程序及桩模块等的规定。313尚未解决的问题说明在本程序的设计中尚未解决而设计者认为在软件完成之前应解决的问题。4程序2(标识符)设计说明用类似331、的方式,说明第2个程序乃至第N个程序的设计考虑。附录4-4 用户手册1引言 11编写目的说明编写这份用户手册的目的,指出预期的读者。 12背景说明:a这份用户手册所描述的软件系统的名称;b该软件项目的任务提出者、开发者、用户(或首批用户)及安装此软件的计算中心。13定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。14参考资料 列出有用的参考资料,如:a项目的经核准的计划任务书或合同、上级机关的批文;b属于本项目的其他已发表文件; c本文件中各处引用的文件、资料,包括所要用到的软件开发标准。 列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够取得这些文件资料的来源。2用32、途21功能结合本软件的开发目的逐项地说明本软件所具有各项功能以及它们的极限范围。22性能221精度 逐项说明对各项输入数据的精度要求和本软件输出数据达到的精度,包括传输中的精度要求。222时间特性 定量地说明本软件的时间特性,如响应时间,更新处理时间,数据传输、转换时间,计算时间等。 223灵活性 说明本软件所具有的灵活性,即当用户需求(如对操作方式、运行环境、结果精度、时间特性等的要求)有某些变化时,本软件的适应能力。 2 3 安 全保密说明本软件在安全、保密方面的设计考虑和实际达到的能力。3运行环境31 硬设备列出为运行本软件所要求的硬设备的最小配置,如: a处理机的型号、内存容量; b所33、要求的外存储器、媒体、记录格式、设备的型号和台数、联机脱机;c IO设备(联机脱机?); d数据传输设备和转换设备的型号、台数。32支持软件说明为运行本软件所需要的支持软件,如:a操作系统的名称、版本号;b程序语言的编译汇编系统的名称和版本号;c数据库管理系统的名称和版本号;d其他支持软件。33数据结构 列出为支持本软件的运行所需要的数据库或数据文卷。4使用过程 在本章,首先用图表的形式说明软件的功能同系统的输入源机构、输出接收机构之间的关系。4 1安装与初始化 一步一步地说明为使用本软件而需进行的安装与初始化过程,包括程序的存储形式、安装与初始化过程中的全部操作命令、系统对这些命令的反应与答34、复。表征安装工作完成的测试实例等。如果有的话,还应说明安装过程中所需用到的专用软件。42输入规定输入数据和参量的准备要求。421输入数据的现实背景说明输入数据的现实背景,主要是a情况-例如人员变动、库存缺货;b情况出现的频度-例如是周期性的、随机的、一项操作状态的函数c情况来源-一例如人事部门、仓库管理部门;d输入媒体-例如键盘、穿孔卡片、磁带;e限制-出于安全、保密考虑而对访问这些输入数据所加的限制;f质量管理-例如对输入数据合理性的检验以及当输入数据有错误时应采取的措施,如建立出错情况的记录等;g支配-例如如何确定输入数据是保留还是废弃,是否要分配给其他的接受者等。422输入格式 说明对初35、始输入数据和参量的格式要求,包括语法规则和有关约定,如:a长度-一例如字符数行,字符数项;b格式基准-例如以左面的边沿为基准;c标号-例如标记或标识符; d顺序-例如各个数据项的次序及位置;e标点-例如用来表示行、数据组等的开始或结束而使用的空格、斜线、星号、字符组等。f词汇表-给出允许使用的字符组合的列表,禁止使用的字符组合的列表等;g省略和重复-给出用来表示输人元素可省略或重复的表示方式; h控制-给出用来表示输入开始或结束的控制信息。 H423输入举例 为每个完整的输入形式提供样本,包括: a控制或首部-例如用来表示输入的种类和类型的信息,标识符输入日期,正文起点和对所用编码的规定; b36、主体-输入数据的主体,包括数据文卷的输入表述部分;c尾部-用来表示输入结束的控制信息,累计字符总数等; d省略-指出哪些输入数据是可省略的;e重复-指出哪些输入数据是重复的。43输出 对每项输出作出说明 431输出数据的现实背景,说明输出数据的现实背景,主要是:a使用-这些输出数据是给谁的,用来干什么; b使用频度-例如每周的、定期的或备查阅的;c媒体-打印、CRI显示、磁带、卡片、磁盘, d质量管理-一例如关于合理性检验、出错纠正的规定;e支配-例如如何确定输出数据是保留还是废弃,是否要分配给其他接受者等。432输出格式 给出对每一类输出信息的解释,主要是:a首部-如输出数据的标识符,输出日37、期和输出编号;b主体-输出信息的主体,包括分栏标题;c尾部-包括累计总数,结束标记。433输出举例 为每种输出类型提供例子。对例子中的每一项,说明:a定义-每项输出信息的意义和用途; b来源-是从特定的输入中抽出、从数据库文卷中取出、或从软件的计算过程中得到c特性-输出的值域、计量单位、在什么情况下可缺省等。44文卷查询 这一条的编写针对具有查询能力的软件,内容包括:同数据库查询有关的初始化、准备、及处理所需 要的详细规定,说明查询的能力、方式,所使用的命令和所要求的控制规定。 45出错处理和恢复 列出由软件产生的出错编码或条件以及应由用户承担的修改纠正工作。指出为了确保再启动和恢 复的能力,38、用户必须遵循的处理过程。46终端操作 当软件是在多终端系统上工作时,应编写本条,以说明终端的配置安排、连接步释、数据和参数输入 步骤以及控制规定说明通过终端操作进行查询、检索、修改数据文卷的能力、语言、过程以及辅助性程 序等。 附录4-5数据要求说明书 1引言 11编写目的说明编写这份数据要求说明书的目的,指出预期的读者。 12背景说明: a待开发软件系统的名称; b列出本项目的任务提出者、开发者、用户以及将运行该项软件的计算站(中心)或计算机网络系统。 13定义 列出本文件中用到的专门术语的定义和外文首字母组词的原词组。14参考资料列出有关的参考资料,如:a本项目的经核准的计划任务书或合同,39、上级机关的批文; b属于本项目的其他已发表文件;c本文件中各处引用的文件、资料,包括所要用到的软件开发标准。列出这些文件的标题、文件编号、发表日期和出版单位。说明能够得到这些文件资料的来源。2数据的逻辑描述 对数据进行逻辑描述时可把数据分为动态数据和静态数据。所谓静态数据,指在运行过程中主要作 为参考的数据,它们在很长的一段时间内不会变化,一般不随运行而改变。所谓动态数据包括所有在运 行中要发生变化的数据以及在运行中要输入、输出的数据。进行描述时应把各数据元素逻辑地分成若干 组,列如函数、源数据或对于其应用更为恰当的逻辑分组。给出每一数据元的名称(包括缩写和代码)、定 义(或物理意义)度量单位40、值域、格式和类型等有关信息。 21静态数据列出所有作为控制或参考用的静态数据元素。22动态输人数据列出动态输入数据元素(包括在常规运行中或联机操作中要改变的数据)。23动态输出数据 列出动态输出数据元素(包括在常规运行中或联机操作中要改变的数据)。24内部生成数据列出向用户或开发单位中的维护调试人员提供的内部生成数据。 25数据约定说明对数据要求的制约。逐条列出对进一步扩充或使用方面的考虑而提出的对数据要求的限制(容 量、文卷、记录和数据元的个数的最大值)。对于在设计和开发中确定是临界性的限制更要明确指出。 3数据的采集31要求和范围 按数据元的逻辑分组来说明数据采集的要求和范围,指明数据的41、采集方法,说明数据采集工作的承担者是用户还是开发者。具体的内容包括:a输入数据的来源,例如是单个操作员、数据输入站,专业的数据输入公司或它们的一个分组;b数据输入(指把数据输入处理系统内部)所用的媒体和硬设备。如果只有指定的输入点的输入才是合法的,则必须对此加以说明;c接受者说明输出数据的接受者; d输出数据的形式和设备列出输出数据的形式和硬设备。无论接受者将接收到的数据是打印输出,还是CRT上的一组字符、一帧图形,或一声警铃,或向开关线圈提供的一个电脉冲,或常用介质如磁盘、磁带、穿孔卡片等,均应具体说明;e数据值的范围给出每一个数据元的合法值的范围;f量纲给出数字的度量单位、增量的步长、零点42、的定标等。在数据是非数字量的情况下,要给出每一种合法值的形式和含意;g更新和处理的频度给出预定的对输入数据的更新和处理的频度。如果数据的输入是随机的,应给出更新处理的频度的平均值,或变化情况的某种其他度量。32输人的承担者 说明预定的对数据输入工作的承担者。如果输入数据同某一接口软件有关,还应说明该接口软件的来源。 33预处理对数据的采集和预处理过程提出专门的规定,包括适合应用的数据格式、预定的数据通信媒体和对输入的时间要求等。对于需经模拟转换或数字转换处理的数据量,要给出转换方法和转换因子等有关信息,以便软件系统使用这些数据。34 影响 说明这些数据要求对于设备、软件、用户、开发单位所可能产43、生的影响,例如要求用户单位增设某个机构等。附录4-6项目开发总结报告 I引言 11编写目的 说明编写这份项目开发总结报告的目的,指出预期的阅读范围。12背景 说明: a本项目的名称和所开发出来的软件系统的名称;b此软件的任务提出者、开发者、用户及安装此软件的计算中心。I3定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。14参考资料 列出要用到的参考资料,如:a本项目的已核准的计划任务书或合同、上级机关的批文;b属于本项目的其他已发表的文件;c本文件中各处所引用的文件、资料,包括所要用到的软件开发标准。 列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来44、源。2实际开发结果 21产品 说明最终制成的产品,包括:a程序系统中各个程序的名字,它们之间的层次关系,以千字节为单位的各个程序的程序量、存储媒体的形式和数量;b程序系统共有哪几个版本,各自的版本号及它们之间的区别;c每个文件的名称; d所建立的每个数据库。 如果开发中制订过配置管理计划,要同这个计划相比较。22主要功能和性能逐项列出本软件产品所实际具有的主要功能和性能,对照可行性研究报告、项目开发计划、功能需 求说明书的有关内容,说明原定的开发目标是达到了、未完全达到、或超过了。23基本流程 用图给出本程序系统的实际的基本的处理流程。24进度列出原定计划进度与实际进度的对比,明确说明,实际进45、度是提前了、还是延迟了,分析主要原因。 25费用列出原定计划费用与实际支出费用的对比,包括: a工时,以人月为单位,并按不同级别统计;b计算机的使用时间,区别CPU时间及其他设备时间; c物料消耗、出差费等其他支出。 明确说明,经费是超出了、还是节余了,分析其主要原因。3开发工作评价 31对生产效率的评价给出实际生产效率,包括:a程序的平均生产效率,即每人月生产的行数;b文件的平均生产效率,即每人月生产的千字数; 并列出原订计划数作为对比。32对产品质量的评价 说明在测试中检查出来的程序编制中的错误发生率,即每干条指令(或语句)中的错误指令数(或语句数)。如果开发中制订过质量保证计划或配置管理46、计划,要同这些计划相比较。33对技术方法的评价给出对在开发中所使用的技术、方法、工具、手段的评价。 34出错原因的分析 给出对于开发中出现的错误的原因分析。4经验与教训 列出从这项开发工作中所得到的最主要的经验与教训及对今后的项目开发工作的建议。附录5-1 JAVA编码规范1、命名规范定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。命名一般以简介单词构成。1、package 的命名package 的名字应该都是由一个小写单词组成。 2、class 的命名 class 的名字必须由大写字母开头而其他字母都小写的单词组成,对于所有标识符,其47、中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。 public class ThisAClassName3、 class 变量的命名 变量的名字必须用一个小写字母开头。后面的单词用大写字母开头 userName , thisAClassMethod 4、 static final 变量的命名 static final 变量的名字应该都大写,并且指出完整含义。 public static final String DB_CONFIG_FILE_PATH =com.neu.etrain.dbconfig;5、参数的命名 参数的名字必须和变量的命名规范一致。 6、数组的命名 数组应该总是用48、下面的方式来命名: byte buffer;而不是: byte buffer;7、方法的参数 使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字: setCounter(int size) this.size = size;2、注视规范 Java的注释有三种/ 注释一行/* . */ 注释若干行/* . */ 注释若干行,并写入javadoc文档 ,也叫java文档注释 注释要简单明了。String userName = null; /用户名边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止49、注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。对代码的注释应放在其上方相邻位置,不可放在下面。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐。变量、常量的注释应放在其上方相邻位置或右方。 全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。 在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。/* * Copy Righ50、t Information : stsoft * Project : jscbmis * JDK version used : jdk1.5.09 * Comments : config path * Version : 1.01 * Modification history :2007.5.1 * SrDate Modified By Why & What is modified * 1.2003.5.2 David Li new */在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等 /* * Description51、 :checkout 提款 * param Hashtable cart info * param OrderBean order info * return String */ public String checkout(Hashtable htCart, OrderBean orderBean) throws Exception javadoc注释标签语法author 对类的说明 标明开发该类模块的作者 version 对类的说明 标明该类模块的版本 see 对类、属性、方法的说明 参考转向,也就是相关主题 param 对方法的说明 对方法中某参数的说明 return 对方法的说明 对方52、法返回值的说明 exception 对方法的说明 对方法可能抛出的异常进行说明 3、排版规范1. 关键词和操作符之间加适当的空格。 2. 相对独立的程序块与块之间加空行 3. 较长的语句、表达式等要分成多行书写。 4. 划分出的新行要进行适应的缩进,使排版整齐,语句可读。 5. 长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 6. 循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。 7. 若函数或过程中的参数较长,则要进行适当的划分。 8. 不允许把多个短语句写在一行中,即一行只写一条语句。 9. 函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。53、 10. C/C+语言是用大括号和界定一段程序块的,编写程序块时和 应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体 的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、 switch、case语句中的程序都要采用如上的缩进方式。4、java文件样式所有的 Java(*.java) 文件都必须遵守如下的样式规则: 版权信息 版权信息必须在 java 文件的开头,比如: /* * Copyright ? 2000 nanjing XXX Co. Ltd. * All right reserved. */其他需要出现在 javadoc 的信息也可以包含在这里54、。package/imports package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。 package .stats;import java.io.*;import java.util.Observable;import hotlava.util.Application;这里 java.io.* 使用来代替InputStream and OutputStream 的。Class接下来的是类的注释,一般是用来解释类的。 /* * A class represe55、nting 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 CounterSetextends Observableimplements Cloneableclass fields 接下来是类的成员变量: /* * Packet counters */prot56、ected int packets;public 的成员变量必须生成文档(Javadoc)。proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。存取方法 接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。 /* * Get the counters * return an array containing the statistical data. This array has been * freshly allocated and can be modified by the caller. */p57、ublic int getPackets() return copyArray(packets, offset); public int getBytes() return copyArray(bytes, offset); public int getPackets() return packets; public void setPackets(int packets) this.packets = packets; 其它的方法不要写在一行上构造函数 接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。 访问类型 (public, private 等.) 和 任何 stati58、c, final 或 synchronized 应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读。 publicCounterSet(int size) this.size = size;clone,toString,main三个方法为可选,如果是bean,建议实现串行化、克隆两个接口,并完成toString(),hashCode()两个方法对基于MS平台开发的应用,C#编码规格等同于上述。附录5-2 应用结构定义与命名规范建立应用结构的原则:1、 前端与后端分离;2、 系统、子系统、模块分离;3、 页面、脚本、样式、图标分离4、 私有与通用分离;命名同样采用名词或动宾结构短语59、或缩写,每一级别名称不超过12个字符,全部有小些字母组成(26个字母)。前端业务功能1pagesscriptscssimages业务功能2业务功能ncommonscriptspages(err,warning,hint dialog)cssimages后端应用工具类 util(tools).sys.subsys框架类 framework.sys数据库视图存储过程函数表、索引、触发器、约束、缺省等脚本文档计划、报告、设计等等测试与修订纪录(Tyyyy-mm-dd.xsl Ryyyy-mm-dd.xsl)附录5-3 数据库对象命名规范命名原则:采用名词或动宾结构短语或缩写,名称不超过32个字符,名60、称由26英文字母,09及下划线组成,下划线与数字不能位于名称开始,创建数据库时候建议设置大小写敏感,命名采用大小写混合,不建议全部小写名称。命名原则:前缀+ _ + 子系统 + _ + 模块+ _ + 名称数据库对象有:表、视图、存储过程、函数、约束、缺省、触发器、索引、主外键等,这里通过缩写标识这些对象,也就是命名中的前缀:缩写含义Tb表Vw视图Sp存储过程Fn函数Rl约束Dft缺省Tg触发器Idx索引Pk主键Fk外键数据库对象名中的子系统与模块名是子系统与模块名的缩写(甚至编号)索引与主键外键命名不受32长度约束:索引命名: Idx_表名_列名1_列2_列3。外键命名: Fk_表名_列名主61、键命名Pk_表名_列名1_列2_列3。约束命名Rl_表名_列名缺省命名Dft_表名_列名标识列:id_xxxxx编号列:no_xxxxx编码列:code_xxxx常用的字典含义命名名称Name_xxxxx日期Date_xxxxx电话Tel_xxxxx地址Add_xxxxx邮编Zip_xxxxx部门Dept_xxxxx负责人Charge_of_xxxxx审批人Approval_xxxxx填报人Typer_申请人Applicant_xxxx单价Unit_price数量Quan_重量Wei_大小Dim_规格Spec_高度High_宽度Wid_长度Len_速度Vel_内容Cont_描述Descr所有表示状态的列,一律采用简明英文或英文缩写为其值:如好/确认/通过/合法:Ok/Yes/Pass 不好/否定/未通过:Cancel/No/Reject,未知状态为none等等,这样做一方面可以避免0/1的重码与解释问题,另一方面避免采用行字造成的编码问题。