QG QG 湖南计算机股份有限公司管理
QG/PLA 07.02-2002 软件开发和文档编制管理程序 2005-03-25发布 2005-03-28实施 湖南计算机股份有限公司发布 l 范围 本标准规定了软件产品开发研制过程质量职责及控制要求。 本标准适用于本公司研制的计算机各类型软件的管理。 2 引用标准 GB8567—88 计算机软件产品开发文件编制指南 3 定义 不需用。 4 职责 4.1
部门负责人批准软件开发项目任务书。 4.2 技术发展部负责组织对公司下达的软件项目进行各阶段的评审。 4.3 物流部经理负责组织项目的最终检测。 4.4 项目负责人负责组织对软件项目的各阶段进行考核、质量控制、组织接口协调文档的发布批准及文档更改审批。 4.5 项目负责人(软件负责人)负责: a、制定软件课题开发计划和进度安排及资源需求; b、进行总体设计; c、提供阶段评审资料; d、协调技术接口。 4.6 标准档案室管理员负责文档的存贮、保管和处理。 5 工作程序与要求 5.1 公司下达的软件项目立项后,由技术发展部下达[新产品研制任务书]。 5.2 软件项目 5.2.1 公司立项项目由技术发展部负责组织评审。 a、项目负责人(软件负责人)于评审前3天填写[评审申请表],并备齐评审资料,交技术发展部。 b、技术发展部审批评审申请表,并将有关资料提前3-5天下发评审组成员以供分工审阅, c、评审组长主持评审会,并填写[评审报告];评审结束,技术发展部负责收回评审资料交项目组存档。 5.2.2 凡上级下达的项目,若上级部门(或系统组织单位)对评审另有要求时,则按其执行;否则,按5.2.1条执行。 5.2.4 若项目既有软件开发,又有硬件开发,其评审是分开(软件、硬件)还是合并进行,由设计部门负责人决定。 5.3 软件项目的检测 5. 3. 1 项目负责人负责组织完成下述工作。 a、测试阶段的检测; b、软件课题的系统检测; c、软件版本存档前的检测。 对以上测试发现的问题,由项目组填写[软件测试修改单],经分析原因和采取纠正措施及回归测试后,由项目负责人审批,方可列入正式版本。 5. 3. 2 物流部经理负责组织软件版本存档前的最终检测,并在[版本送检(启用)通知单]上签署检测结果。 5. 4 设计部门负责人批准软件项目开发计划。 5.5 设计部门负责人审批各项目负责人资格,并负责: a、考核各阶段的进度完成情况; b、及时协调开发中组织接口及计划修改; c、控制项目开发各阶段的设计输入、设计输出、技术状态和各阶段的验 证,并对软件的正确性、文档的完整性负责。 5.6 项目负责人(软件负责人)负责组织: a、制定项目开发计划,若软件、硬件相结合的,其计划也可合并制定。开发计划须明确划分各开发阶段,并可按开发阶段进行自主开发; b、总体设计; c、提供各阶段文档(包括评审文档),并于鉴定后一周内存入标准档案室; d、组织软件(版本)检测,并对检测结果负责; e、协调技术接口; f、定期填报工作进度,若进度计划需修改,应在报表中申述(进度报表既可按月也可按项目分阶段填报)。 5.7 软件的交付管理 按[版本启用/存档细则]执行。 5.8 软件版本管理 5.8.1 应顾客需要进行软件版本升级或修订时,设计部门负责人确定项目负责人,组织软件人员实施。 5.8.2 软件负责人发出[版本送检(启用)通知单]升级的版本由物流部组织检测合格后,由软件负责人将新版本存入标准档案室;并在[版本档案]中详细记录升级内容,存入项目档案中。 5.8.3 技术人员在为顾客服务的现场,遇到需要版本修订时,应先电告项目负责人,经认可后,回厂填写[用户服务档案],必要时项目负责人应组织评审和检测。 5.9 文档要求 5.9.1 各阶段需具备的基本文档及文档格式(见附录) 5.9.2 鉴定需具备的文档参见附录。 6 支持文件 7 记录 7.1 质量记录 7.1.1 JL/PLA10.05-2002 版本启用通知单 7.1.2 JL/PLA14.00-2002 用户服务档案 7.1.3 JL/PLA07.06-2002 软件测试修改单 以上记录由标准档案室保存三年。 7.2 工作记录 7.2.3 版本档案 以上记录由标准档案室保存三年。 7.3 附录 附录一:软件产品文件表 附录二:版本启用/存档实施细则 附录三:概要设计说明书 附录四:需求说明书 附录五:软件开发
附录六:程序设计若干规定 附录一: 软件产品文件表 序号 文 件 名 称 文件 简号 产 品 产品的组成部门 成套软件 整 件 整 件 软 件 1 任务委托书 RW ● ○ 2 可行性研究报告 KY ● ○ 3 软件需求说明 RX ● ○ ○ ○ 4 数据要求说明书 SY ○ ○ ○ 5 项目开发计划 XK ○ 6 概要设计说明书 GS ○ ○ ○ 7 详细设计说明书 QS ○ ○ ○ 8 数据库设计说明书 SG ○ ○ ○ 9 测试计划 CJ ○ ○ ○ 10 程序 CX ● ● ● 11 测试分析报告 CF ○ ○ 12 用户手册 YS ● ○ ○ 13 操作手册 CS ● ○ ○ 14 程序维护手册 CW ○ ○ ○ 15 项目开发总结报告 XZ ● ● 16 使用报告 SB ● ● 17 产品标准 — ● ● 18 媒体内程序/数据目录 MM ● ● ● 19 成套软件明细表 MX ● 20 整件明细表 MX ● ● 21 成套运用文件清单 YQ ● ○ 22 整件汇总表 ZH ○ ○ 23 鉴定报告 JB ● ● 24 用户反馈信息 YX ○ ○ 25 维护记录文件 WJ ○ ○ 26 版本更新通知 BT ○ ○ 注:●表示必须编制的文件;○表示可根据产品的需要制定。 湖南计算机股份有限公司 用户服务档案 JL/PLA14.00-2002 出 差 人 出差时间 出差地点 用户名称 产品名称 版 本 号 实际费用 (元) 使用的系统环境: 发现的问题: 解决情况: 改动的程序模块: 用户意见: 办事处意见: 处理结果(回厂后经协调或评审结论): 湖南计算机股份有限公司 版 本 档 案 (工作记录) 编号: 产品名称 版本号 版本适用范围 源 版 本 取代版本号 版本源程序压缩文件名 代 码 和 提 交 人 提交时间 存档日期 配备的输入方法: 修改记录: 备注: 软 件 测 试 修 改 单 JL/PLA07.06-2002 软件名称 测试人 日 期 测试问题: 测试人: 日 期: 原因分析: 签 字: 日 期: 纠正措施: 签 字: 日 期: 回归测试: 签 字: 日 期: 审批意见: 批准人: 日 期: 附录二: 版本启用/存档实施细则 为了规范版本的管理,减少版本的数量,文档资料的管理和保存,文档的及时更新,以及便于电子化的管理和规范工作流程,特制定该实施细则。 一、工作流程和任务: 说明: 1. 内部测试: 进行白盒测试,要求对源程序进行检查,分析出可能影响的模块,并对相应的模块进行测试。 2. 外部测试: 进行黑盒测试,对整个系统进行测试。 3. 审核: 检查文件的完整性和正确性。 4. 资料审查: 检查文件的完整性和格式的正确性。 5. 批准: 审查该版本是否可以发行。委派他人对提交的文档进行抽查,验证其正确性和完备性。 6. 编号、录入数据、刻盘: 光盘的卷标为8位数字的序列号,在根目录下建立以版本编号为名称的子目录,所有提交的文档资料存放在该子目录中。 版 本 启 用 通 知 单 JL/PLA10.05-2002 名称 编号 状态 配套版本 简要描述 日期 光盘编号 提交人 版本号 被取代的 版本编号 验证码 适用范围 编制人 测试人 资料审查 复制 要求 修 改 的 原 因 不能合并的原因 测 试 结 果 审核意见 批准意见 说明: 栏目 描述 填写人 备注 名称 要求填写产品的全称 提交人 编号 由项目编号+分模块编号+序列号构成 项目编号由4位数字构成,分模块编号由2位数字构成,序列号由4位构成 该版本批准后,编写编号 档案管理员 日期 提交的日期 提交人 版本号 提交人 资料审查 负责检查提交文件的完整性,并将版本启用单录入计算机 档案管理员 验证码 要求复制时能验证版本正确性的关键数据(代码和、文件长度等) 提交人 简要描述 对该版本的简单描述 提交人 光盘编号 由8位数字序列号构成 档案管理员 提交人 负责提交所有的文件 主要设计者 适应范围 描述适用的用户和机器的批次 提交人 状态 作废/使用 档案管理员 编制人 编写该程序的人员签名 审核意见 对提交的文件负责 对被取代版本已发行产品的处理意见和该版本的使用时效 项目负责人 批准意见 技术部经理 修改原因 写明改正了的错误或新增的功能 提交人 不能合并的原因 在原来的版本基础上产生了一个新版本时,但应又不能取代原来版本时,必须说明原因。 提交人 复制要求 说明发行版本的格式,版本载体的类型(介质),复制的设备,复制的特殊要求 提交人 配套版本 当一个产品需要几个软件构成,必须主要与该版本配套的版本的编号,或关系用“/”隔开,与关系用“,”隔开 提交人 测试人 不能少于两人 测试该版本的所有人员的名单,要求签名 附录三: 概 要 设 计 说 明 书 概述 介绍该项目的名称、任务提出者、提出的背景,应用的目标。 功能和性能 对照软件需求说明书,来说明系统是如何满足功能和性能需求的。 开发工具和平台 描述采用何种操作系统平台、何种编程语言、开发工具进行开发。 总体结构设计 用图表和文字方式说明该系统由几个模块构成,各模块的功能、各模块之间的关系。 用数据流图描述出数据在该系统中的流动过程,在各模块输入前和输出后数据的变换。 用程序流程图描述出主要功能的实现方式。 接口设计 外部接口 说明该系统同外部所有的接口安排,包括硬件接口、软件接口、用户接口。 内部接口 说明该系统内部各个模块之间的接口安排。 系统数据结构设计 逻辑数据结构设计 给出该系统内所使用的每个数据项、记录、文件的标识、定义、长度以及他们之间的相互关系。 物理数据结构设计 给出系统中的数据的存储要求和访问方式、和存储介质。 系统出错处理设计 出错信息 用表格形式列出每种可能的出错或故障情况出现时,系统输出信息的形式、含义及处理方法。 补救措施 说明故障出现后可能采取的变通措施,如后备技术、降效技术、恢复及再启动技术等。 系统维护设计 说明为了系统维护方便而在程序内部设计中作出的安排,如在程序中专门安排用于系统的检查与维护的检测点和专用模块。 关键的技术和难点 描述开发该系统采用的关键技术和难点,对关键技术和难点作出风险评估,要求作出相应的解决对策,或提出其他的解决
。 交付方式 交付的内容 全部的设计文件、发行版本、源程序 交付的媒体介质 纸质文件、电子文件、CD、FLASH、软盘 附录四: 需 求 说 明 书 简介 介绍该项目的名称、任务提出者、提出的背景,应用的目标 详细需求 环境需求 硬件环境 描述运行该软件需要的设备能力 处理器的速度、数量和内存容量 存储媒体的容量 输入、输出设备的种类和数量 通讯网络 软件环境 运行该软件需要的操作系统、数据库软件、以及相应的其他应用软件 人员环境 操作该软件对人员的要求,人员的素质、数量 功能需求 对系统中每一个功能,要求用图示或文字详细描述: 概述——叙述功能名称、目标和作用 输入——详述该功能输入的信息 处理——描述该功能作什么,如何对输入信息进行加工并转换成输出信息 输出——详述该功能输出的信息 内部生成数据——列出用户所关心的内部生成数据 性能需求 定量的描述该软件系统应满足的具体性能需求 精度 说明该软件系统的精度要求,如: 数据的精度要求 数字计算的精度要求 数据转送的误码率要求 时间特性 说明该软件系统的时间要求,如: 解题时间 询问和更新数据文件的响应时间 系统各项功能的顺序关系 由于输入类型的不同和操作方式的变化而引起的优先顺序 在峰值负载期,与所规定的响应时间的允许偏离范围 灵活性 说明当需求发生某些变化时该软件系统的适应能力,指出为适应这些变化而需要设计的软件成分和过程 输入和输出 描述输入和输出的每个数据元素,对每个数据元素可列出如下信息: 数据元素名 同义名 定义 格式 值域 度量单位 数据项名、缩写词和代码 对于输入数据,还要说明时间要求、优先顺序和输入媒体。对于输出数据,亦要说明时间要求、优先顺序和输出形式,并要描述对特殊输入输出项的保密要求和措施。 数据库特性 详细描述数据库中要用到的每个数据元素,对每个数据元素可列出如下信息: 数据元素名 同义名 定义 格式 值域 度量单位 数据项名、缩写词和代码 要根据记录的规模和数量来估计数据存储要求,并要预测数据的增长率。 故障处理 列出在该系统出现故障时,为满足信息处理要求而可能采取的技术措施,如: 后备技术 低效技术 再启动技术 接口 说明该软件系统与其他系统和子系统的接口 软件接口和硬件接口 安全和保密 说明该软件系统在安全和保密方面的要求 交付方式 交付的内容 全部的设计文件、发行版本、源程序 交付的媒体介质 纸质文件、电子文件、CD、FLASH、软盘 附录五: 软 件 开 发 规 范 软件开发的流程和需要的文档资料同项目开发类似,在第 章中有详细的描述,在这不再作介绍了,仅介绍与软件紧密相关的常用文档资料的格式模板,以及编程设计中的若干规定 常用文档的格式模板 流程图 概述 国家标准GB1526-89《信息处理—数据流程图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定》规定了信息处理文件使用的各种符号及其使用的具体约定。 要求采用VISIO或SMARTDRAW软件绘制流程图。 流程图所用符号及其简要说明 符号 符号名 简要说明备注 数据 表示数据,其中可注明数据名、来源、用途或其他的文字说明。此符号并不限定数据的媒体 处理 表示各种处理功能。符号内可注明处理名或其简要功能 既定处理 表示已命名的既定处理。该处理为在另外地方已得到详细说明的一个操作或一组操作。例如子程序、函数、模块。符号内可注明处理名或其简要功能 准备 表示修改一条指令或一组指令以影响随后的活动。例如:设置开关、修改变址寄存器、初始化例行程序 判断 表示判断或开关。符号内可注明判断的条件,它只有一个入口,但可以有若干可以选择的出口。在对符号内的条件求值后,有一个且只有一个出口被激活。求值结果可在表示出口路径的流线附近写出 并行处理 表示同步进行两个或两个以上并行方式的操作。 循环界限 循环界限由上界限和下界限构成,分别表示循环的开始和结束。 流线 表示控制流的流向 虚线 用于表明被注解的范围或连接被注解部分与注解正文 连接符 用于表明转向流程图的它处,或从它处转入。它是流线的断点。在圆内注明某一
符,表明该流线将在具有相同标志符的另一连接符处继续下去。 端点符 程序流程的起点或结束 注解符 表示注解的内容,虚线须连接到被注解的符号或符号组合上。 省略符 若流程图中有些部分无需给出符号的具体形式和数量,可用省略符。省略符应夹在流线符号之中。 使用约定 图的布局 流程图所用的符号应该均匀分布,连线保持合理的长度,并尽量少使用长线。 符号标志符 这是赋予某个符号的标志符,其作用是便于其他文件中引用该符号。符号标志符要写在符号的左上角。 符号描述符 它用于交叉引用,表达一个符号的特殊用途,或者进一步理解某个符号的功能。描述符要写在符号的右上角。 连接的约定 标准流向 从左至右,自上而下 箭头的使用 可随时在流线上使用箭头指示方向,当流程不是标准流向时,一定要采用箭头来指示方向。 流线的交叉 应当尽量避免流线的交叉,即使出现,交叉的流线之间没有任何逻辑关系,不对流向产生影响。 流线的汇集 两根或更多的进入线可以汇集为一根输出线,各连接点应相互错开以提高清晰度,并在必要时使用箭头表示流向。 互连 一般情况下,流线应从符号的左边或顶端进入,从右边或底端离开。它们都应对准符号的中心。 多出口 一个符号如有多个出口,应按下述方式表示,在每个出口都应标有适当的条件值,以反映它所表示的逻辑路径。 数据结构 结构名称 描述 名 称 定 义 描 述 使用特点 数据字典 数据字典和数据结构图可形成交互参照关系 名称 定义 描述 使用特点 项目计划表 要求采用PROJECT软件制作,大致格式如下: 项目名称 标识号 任务 工期 开始时间 完成时间 提交件 负责人 拟制: 校对: 审核: 批准: 第 页 函数/过程接口 函数名:必须与源程序中的一致,包括大小写 功能:简要说明该函数/过程实现的功能,以及主要的算法,对重要的函数/过程可采用伪语言进行描述 入口参数:对入口参数作简要的说明,利用全局变量,则也要说明 出口参数:对出口参数作简要的说明,改变了全局变量,则也要说明 返回值:对函数的返回值说明其类型和作用 程序设计的若干规定 这里例举了C语言和汇编语言的规定,其他编程语言应参照这些规定编写 C语言 见附录六 汇编语言 见附录六 附录六: 程 序 设 计 若 干 规 定 引言 本文档描述了项目开发中的编程标准,其目的是提供一个编程的严格规则,使得程序有统一的风格,以便于理解和维护,项目主要由C语言和汇编语言编写. C语言 产生新代码 图D-1描述了产生C语言新代码的格式,在写新代码之前,程序员必需首先将std.c拷贝到新文件中,然后编辑新文件以提供下列信息. 目的 提供一个关于程序的简要描述. 版本状态 给出当日的日期,程序员姓名,创建或修改. 输入 列出及描述所有该程序将输入的变量,描述应简要而完全,有必要要描述一个组中不同的元素,或者一个词的字节或位,如果没有输入变量,则键入"none". 输出 列出及描述所有该函数的输出变量,同时描述副作用,如果有的话. 限制 简要说明程序的限制,例如数组长度,算法等等,同时给出对未来版本的建议,如果没有限制,给出“none” 错误信息 描述出错信息或在出错时变量的置值,如果没有的话给出“none”. 方法 简单描述程序中所有调用的算法及方法,如果方法很明显,则删去这一项,如果应用了复杂的算法或方程式,请给出解释及参考. 外部变量描述 仅列出及描述那些一般不为人所知的变量,如果该函数不用任何外部变量,给出“none”. 局部、静态、寄存器变量描述 列出及描述局部,静态寄存器变量,如果一个变量的用途可从其它变量名中明显地看到,则不必给出解释,变量名按字典顺序列出. /*********************************************************** * 本程序属于XXXXXXXXX(公司名).作为商品机密 * * 版权所有,未经许可不得公布或使用. * ************************************************************ . 目的------ 函数的功能描述 . 版本状态---- 11-7-90(程序员姓名)新代码 . 输入----- 列出所有输入变量和解释 . 输出----- 列出所有输出变量/参数/返回值及解释 . 限制----- 给出使用的算法和处理方法 . 错误信息---- 描述错误信息 . 方法---- 该函数中用的算法和处理方法 . 函数调用---- 列出调用的函数 . 外部变量----- 描述所有使用的外部变量 . 局部变量---- 描述局部变量 . */ 图 D-1 C标准格式(in “std.c”) 改旧代码 在函数头上的所有必要的信息必须修改, 版本状态必须包含版本日期, 程序员姓名, 以及版本的简要描述, 这种描述必须规格化, 而且要包含足够的信息, 以便于对这些修改进行回溯. 版本状态列出的顺序必须使得最新的版本列在最上边. 所有其它的信息包括输入、输出、限制、以及函数调用等等, 必须与最新的版本保持一致. 编程常规 下面说明了C语言指令中的标准结构: 程序设计风格 通过空格和空行, 使程序有层次感, 便于阅读. 提倡使用C++的语法和程序结构. 所有代码必须是小写字符, 以下的例外: 1。常量或宏(用#define 或 #typedef 在include文件中定义的)必须用大写字母. 2。在编译或连接器中要求大写的标识符或库函数名. 3。该文本中说明的其它必须大写的字母. 代码尽可能写得简单、清晰、将复杂语句切成几个简单的语句以增加可读性. 一般将子程序限制在100行以内. 对于一个程序只允许一个入口和出口(在有出错处理等情况下可能允许有若干个出口). 设计的子程序必须有一个完整定义的输出、输入并且完成一个任务. 将密切相关的子程序存放在一个文件中. 程序中尽量不使用直接数, 即尽量不在源程序中出现某个具体的数值, 相应的数值最好用#define语句定义成宏, 以便于修改和维护. 使用统一的工作环境, 建立子目录, 各目录存放指定的内容: src (源程序存放目录) doc (文档存放目录) bin (可执行程序存放目录) lib (库函数存放目录) test (测试用目录) inc (引用文件存放目录) personal (各人自用目录) 使用make, Makefile进行编译, 更新目标文件和可执行文件. C 库函数 仅使用Unix System V、Microsoft C、Lattic C及Turbo C 编译器中的库函数. 在用"malloc"或"calloc"申请空间之后, 建议测试一下不为空指针,若使用空指针,通常会导致系统的崩溃,或莫名其妙的错误。 在用"malloc"或"calloc"申请空间之后, 必须牢记在不需要它们的时候调用free释放空间以便于将来使用空间. 类型说明 类型说明的顺序是由短到长: char short long float double 尽量不使用int, 用short或long取代, 以免不同硬件环境的影响. 仅仅使用var_style.h中用typedef定义的宏以便共享. 变量名 变量名的长度没有限制. 但各个变量的前31个字符必须唯一.(各系统的状态会有变化,尽可能在开始时区分变量名). 建议用英文语句的一般风格命名变量名, 英文单词的首字母大写,后面的字母小写。对于外部(公共)变量或函数名, 在第一个字符之前加"_", 对局部的变量名, 建议遵照下列格式: bxxx_或 xxxx_b 字节变量 cxxx_或 xxxx_c 字符变量 ixxx_或 xxxx_i 数变量 sxxx_或 xxxx_s 字变量 lxxx_或 xxxx_l 长变量 fxxx_或 xxxx_f 浮点变量 dxxx_或 xxxx_d 精变量 fpxxx 或 xxxx_fp 文件指针 xpxxx 或 xxxx_xp 指针变量(例:ipxxxx 或 xxxx_ip) 注意:变量名不应该和当前系统采用的编译器,以及与已知的其他编译器中已定义的函数名或C的库函数相同,也不应与同C的关键字相同。比如:class 不是C编译器的关键字,但是C++的关键字,在用C编译器开发的系统中,不能采用class作为变量名,否则将影响移植性。 寄存器变量 在程序中找一个频繁使用的变量(int或指针类型),将其定义成寄存器类以加快运行速度,特别适用于循环变量中。 外部变量 外部变量必须在函数中以extern语句说明 . 如果外部变量是数组,在外部说明中,第一维必须为空. 如果不同类型的变量要组在一起,用结构取代数组. 将外部变量说明成static类, 如果它们在一个文件中共享而不被其它文件访问. 常量 对公共使用的常量,引用com_cons.h中定义的宏. for 循环 对于数组的处理,循环的结束用"<"取代"<=".例: int a[9]; for (i=0;i<9;i++) ...; ...; if_else 有 else if的语句,应将if提上一行,例如: if( ) { ………. } else if { ………. } 标号 所有标号应在第一列开始 goto 除非绝对必要, 避免使用goto default 在switch语句中将default放在case的最后 break 在switch语句之外尽量少用break. 在某些循环中为减少代码层次可有限地使用break 和continue. 返回 return 即使不返回任何值, 也应在函数的出口处写上return以示函数出口 尽量在一个函数中使用一个return, 个别情况例外(如有多个错误处理时). 大括号 用大括号将一些语句组在一起 小括号 用"( )"避免操作顺序的混乱.特别要注意以下两点的应用(通过例子来说明),也是程序设计中经常不注意而犯的错误: 1、#define x y+3 (1) #define x (y+3) (2) 按(1)的定义 z=x/3---〉z=y+3/3=y+1 按(2)的定义 z=x/3---> z=(y+3)/3=y/3=1 2、char *buf; long *plong; plong=(long *)buf+2; (1) plong=(long *)(buf+2); (2) 如果buf=0;则在(1)中plong=8,(2)中plong=2; 注释 在需要明确程序含义的地方应勤于使用注释, 所有注释写成:/*... ...*/或 // 在语句后的注释必须与语句在同一行: statement /*..._ ..*/ statement /*..._ ..*/ 如果注释太长, 超出一行,应将其按如下格式放在语句之前: /*... ... ... ...*/ 如果变量需要注释, 它们必须一行行地进行说明, 例如: int i; /*... ...*/ 汇编语言 产生新模块代码 图D-2描述了产生汇编语言新模块代码的格式, 在写新代码之前,程序员必需首先将model.asm拷贝到新文件中.然后编辑新文件以提供下列信息. 目的 提供一个关于程序模块的简要描述. 版本状态 给出当日的日期,程序员姓名,版本号。 COMMENT % *********************************************************** * 本程序属于XXXXXXXXX(公司名).作为商品机密 * * 版权所有,未经许可不得公布或使用. * *********************************************************** . 目的------ 模块的功能描述 . 版本状态---- 11-7-90(程序员姓名)新代码 图 D-2 ASM标准格式(in “model.asm”) 产生新的子过程代码 图D-3描述了产生汇编语言新的子过程代码的格式,在写新子过程代码之前,程序员必需首先将Pro.asm拷贝到新子过程前.然后编辑新文件以提供下列信息. 子过程名称 给出子过程的名称 功能描述 用语言或伪C代码提供一个关于该子过程的简要描述,并且简要说明子过程的限制。 版本状态和历史 给出当日的日期,程序员姓名. 入口参数 列出及描述所有该子过程将输入的变量和寄存器,描述应简要而完全, 有必要描述一个组中不同的元素, 或者一个词的字节或位. 如果没有输入变量,则键入“none”. 出口参数 列出及描述所有该子过程的输出变量和寄存器, 同时描述对全局变量的影响和被破坏的寄存器, 如果有的话. 同时还要描述出错信息或在出错时变量的值, 如果没有的话给出“none”. 默认的段寄存器和段名 用ASSUME指出在该子过程中,默认的段寄存器和段名的关系。 COMMENT . 子过程名称---- 给出子过程的名称 . 功能描述---- 提供一个关于子过程的简要描述,并且简要说明子过程的限制. . 版本状态和历史---- 给出当日的日期,程序员姓名. . 入口参数---- 列出及描述所有该子过程将输入的变量和寄存器. . 出口参数---- 列出及描述所有该子过程的输出变量和寄存器, 并列出被破坏的寄存器. . 默认的段寄存器和段名---- 用ASSUME指出在该子过程中,默认的段寄存器和段名的关系。 % 图 D-3 标准格式(in “pro.asm”) 修改旧代码 在过程头上的所有必要的信息必须修改, 版本状态必须包含版本日期, 程序员姓名, 以及版本的简要描述, 这种描述必须规格化, 而且要包含足够的信息, 以便于对这些修改进行回溯. 版本状态列出的顺序必须使得最新的版本列在最上边. 所有其它的信息包括输入、输出、限制、以及过程调用等等, 必须与最新的版本保持一致. 编程常规 下面说明了汇编语言指令中的标准结构: 程序设计风格 应该遵照 MIRCOSOFT MASM 5.0~6.0和TURBO ASMBLE 2.0~3.0的语言规范。建议不用简写方式. 在同一子过程中所有代码必须是统一的小写字符和大写字母,以下的例外: (1) 宏必须用大写字母. (2) 在编译或连接器中要求大写的标识符或库函数名. (3) 该文本中说明的其它必须大写的字母. 对于一个程序只允许一个入口和出口(在有出错处理等情况下可能允许有若干个出口). 设计的子程序必须有一个完整定义的输出、输入并且完成一个任务. 将密切相关的子程序存放在一个文件中. 程序中尽量不使用直接数, 即尽量不在源程序中出现某个具体的数值, 相应的数值最好用EQU语句定义成宏, 以便于修改和维护. 使用统一的工作环境, 建立子目录, 各目录存放指定的内容: src (源程序存放目录) doc (文档存放目录) bin (可执行程序存放目录) lib (库函数存放目录) test (测试用目录) inc (引用文件存放目录) personal (各人自用目录) 使用统一的程序名后缀: .ASM (汇编源程序) .INC (公共的宏定义和结构定义) .DOC (文档) .LIB (函数库) .BAT (批处理文件) .DAT (数据文件) .ROM (烧入EPROM的数据,在前缀中应该指明芯片对应的插座) 使用make, Makefile 进行编译, 更新目标文件和可执行文件. 子过程名 子过程名的长度没有限制. 但各个名称的前31个字符必须唯一.(各系统的状态会有变化, 尽可能在开始时加以区分).建议用英文语句的一般风格命名过程名. 英文单词的首字母大写,后面的字母小写。对于外部(公共)子过程名,在第一个字符之前加"_". 变量名 变量名的长度没有限制. 但各个变量的前31个字符必须唯一.(各系统的状态会有变化, 尽可能在开始时加以区分).建议用英文语句的一般风格命名变量名. 英文单词的首字母大写,后面的字母小写。对于外部(公共)变量或函数名,在第一个字符之前加"_",对局部的变量名, 建议遵照下列格式: bxxx_ 或 xxxx_b 字节变量 wxxx_ 或 xxxx_w 字变量 dxxx_ 或 xxxx_d 双字变量 sbxxx 或 xxxx_sb 字节串变量 swxxx 或 xxxx_sw 字串变量 cxxx_ 或 xxxx_c 常量 外部变量 外部变量必须在模块中以extrn语句说明.所有的外部变量集中在一起放在文件的开始处. 如果不同类型的变量要组在一起, 用结构取代零散的变量. 过程 引用的外部过程必须在模块以extrn语句说明.所有的外部过程集中在一起放在外部变量之后, 两者之间有明显的界限。 常量 对公共使用的常量, 在com_cons.inc中定义. 标号 所有标号应在第一列开始. 标号名称由子过程名称的简写(用大写字母)加下划线加有具体含义的单词构成。 注释 在需要明确程序含义的地方应勤于使用注释, 所有注释写成: ;xxxxx 在语句后的注释必须与语句在同一行: statement ;..._ ... statement ;..._ ... 如果注释太长, 超出一行,应将其按如下格式放在语句之前: ;... ;... ;... ;... 每一个变量都应以注释, 对其用途、含义、可能的取值加以说明。它们必须一行行地进行说明,例如: bxxxx DB ? ;... ... 带注释的指令不得少于整个程序指令数的三分之一. 在同一个文件中, 尽量将注释对齐. 每实现一相对完整逻辑功能的一段指令前必须用注释给出该功能的描述, 且各个该类型指令段间用空行或注释行分隔.