华为软件开发规范
- 格式:doc
- 大小:73.00 KB
- 文档页数:16
ipd—cmm_v30_designflow(华为软件简要研发流程管理体系)IPD-CMM V3.0 Design Flow华为软件质量管理部IPD—CMMV3。
0 BUILD20050330IPD-CMM V3。
0 SCOPE IPD-CMM V3。
0 Design Flow IPD IPD—CMM Design specification TR2 S/W HLD H/W HLD SRSTR3 HLD(0-2)LLD LLDLLD(3)CodingCoding Coding UT IT UT UTSTBBIBBIT Supporting TR4TldBBuild1 Build2 3 uiBuild1 Build2 共13页第2页Build3项目计划 IPD—CMM V3。
0 BEGIN Design Flow 注:软件开发项目在 IPD TR2之后启动 PJM03 PJM03 C。
O。
O。
SOW,AR PJM03 评审批准/签发PJM03 PJM05参加项目计划 SE 签署项目开工评审会 SOW,AR 签发组织签署批准估签发参加申请项 PPL,任命PL RDPDT 评审计结果 PHB 会议目ID SOW,AR 批准 QAM01 CMP,RMP PJM02 PJM04 项目计,WBS,DP PJM03 初始估计 P,TS 划评审 PJM05 准备签署组织制定项组织创建项目 SOW,AR 组织参加 TimeS 准备度量目计划评审文件夹会议 PL 估计评审 heet 表,PHB 批准 PPL 参加PPL,CMP 参加参加参加项目文件模板 QA 审核PHB 评审会议,RMP,WB 评审估计夹模板 S,DPP CMP TimeShe 参加模板项目度 SWE et表会议量表RMP 参加参加模板参加批准测参加 TC 工作日志 PHB 评审评审会议试策略估计 CMP01 WBS 电子流模板建立模板参加 Pert 参加基线化配置 CMO SOW Sizing 评审会议 PPL TS模库检查表估计表板项目计划参加配置状配置 QAM 任命QA 检查单态发布 DP模 Wideband 会议库表 Delphi 板参加批准项估计表批准PHB EPG 目ID 会议配置注:如果PM已 PHB检查确定项目的库参加项目表 CMO,则需要 CRMD 会议 ID列表参加评审参加 A TM 任命TC 会议项目开工会检查单共13页第3页需求分析 IPD-CMM V3.0 注:软件开发项目的需注:软件开发项目 Design Flow 求分析阶段结束会议在的需求分析在IPD A IPD PDCP之前完成注:SE需参TR3之前完成 PJM03 PJM05 加SRS评审 QAM01 C。
产品设计和开发
概念项目策划
批量生产
(
)
产品开发流程(V0.X)
◆决策评审点
▲里程碑■交付/更新
编号:XXX100 版本号:V0.X
产品开发流程(V0.X)
概念阶段详细流程
计划阶段详细流程
开发与测试阶段详细流程
LPDT-D40
执行对外合作计划
跟踪目标成本
原型机集成与测试
SE-D105
SE-LPDT-D80
SE-D95
工程样机BOM,在PCB
更新BOM,并在中试验证前向制造发布
SE-D130
更新BOM并发布最新版本给制造(试产验证和BETA
测试)用
SE-D160
参与中试验证测试(初始产品测试)
SWE-D60
编号:XXX204 版本号:V0.X
FPDT-V20
划和风险评估
LPDT-V40继续跟踪目标成本
(面向制造测试)
(面向制造测试)
LPDT-V20
LPDT-V50
准备发布决策评
审材料
编号:XXX205 版本号:V0.X。
华为软件编程规范和范例〔一〕=====[排版] ]=======.〔二〕======[注释]=======.〔三〕=====[标识符命名]=======.〔四〕=====[可读性]======.〔五〕=====[变量、结构]=====.〔六〕=====[函数、过程]=====.〔七〕=====[可测性]=====.〔八〕=====[程序效率]=====.〔九〕=====[质量保证]=====.〔十〕=====[代码编辑、编译、审查]=====.〔十一〕=====[代码测试、维护]=====.〔十二〕=====[宏]=====.〔一〕========[ 排版]========== ¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个说明:对于由开发工具自动生成的代码可以有不一致。
¹1-2:相对独立的程序块之间、变量说明之后必须加空行示例:如下例子不符合规范。
Int ni;if (!valid_ni(ni)){... // program code}repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;应如下书写Int ni;if (!valid_ni(ni)){... // program code}repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;¹1-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读示例:perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN+ STAT_SIZE_PER_FRAM * sizeof( _UL );act_task_table[frame_id * STAT_TASK_CHECK_NUMBER + index].occupied= stat_poi[index].occupied;act_task_table[taskno].duration_true_or_false= SYS_get_sccp_statistic_state( stat_item );report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER)&& (n7stat_stat_item_valid (stat_item))&& (act_task_table[taskno].result_data != 0));¹1-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首示例:if ((taskno < max_act_task_number)&& (n7stat_stat_item_valid (stat_item))){... // program code}for (i = 0, j = 0; (i < BufferKeyword[word_index].word_length)&& (j < NewKeyword.word_length); i++, j++){... // program code}for (i = 0, j = 0;(i < first_word_length) && (j < second_word_length);i++, j++){... // program code}¹1-5:若函数或过程中的参数较长,则要进行适当的划分示例:n7stat_str_compare((BYTE *) & stat_object,(BYTE *) & (act_task_table[taskno].stat_object),sizeof (_STAT_OBJECT));n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER+ index, stat_object );¹1-6:不允许把多个短语句写在一行中,即一行只写一条语句示例:如下例子不符合规范。
软件开发行为规范第一版深圳市华为技术有限公司版权所有不得复制软件开发行为规范(第一版)为了把公司已经发布的软件开发过程规范有效地运作于产品开发活动中,把各种规范“逐步形成工程师的作业规范”,特制定本软件开发行为规范,以达到过程控制的目的。
与软件开发相关的所有人员,包括各级经理和工程师都必须遵守本软件开发行为规范。
对违反规范的开发行为,必须按照有关管理规定进行处罚。
本软件开发行为规范的内容包括:软件需求分析、软件项目计划、概要设计、详细设计、编码、需求管理、配置管理、软件质量保证、数据度量和分析等。
本软件开发行为规范,采用以下的术语描述:★规则:在软件开发过程中强制必须遵守的行为规范。
★建议:软件开发过程中必须加以考虑的行为规范。
★说明:对此规则或建议进行必要的解释。
★示例:对此规则或建议从正或反两个方面给出例子。
本软件开发过程行为规范由研究技术管理处负责解释和维护。
研究技术管理处目录1 软件需求分析 52 软件项目计划93 概要设计114 详细设计145 编码186 需求管理197 软件配置管理218 软件质量保证239 数据度量和分析251 软件需求分析1-1:软件需求分析必须在产品需求规格的基础上进行,并保证完全实现产品需求规格的定义。
1-2:当产品的需求规格发生变更时,必须修订软件需求规格文档。
软件需求规格的变更必须经过评审,并保存评审记录。
1-3:必须对软件需求规格文档进行正规检视。
1-4:软件需求分析过程活动结束前,必须经过评审,并保存评审记录。
1-5:在对软件需求规格文档的正规检视或评审时,必须检查软件需求规格文档中需求的清晰性、完备性、兼容性、一致性、正确性、可行性、易修改性、健壮性、易追溯性、易理解性、易测试性和可验证性、性能、功能、接口、数据、可维护性等内容。
说明:参考建议1-1到1-16。
1-1:采用以下检查表检查软件需求规格文档中需求的清晰性。
1-2:采用以下检查表检查软件需求规格文档中需求的完备性。
华为编程规范华为编程规范是指在华为公司内部进行软件开发时所遵守的一套规范和标准,旨在提高代码的质量和可维护性。
下面是华为编程规范的主要内容。
一、命名规范:1. 变量和函数名应采用有意义的名称,尽量避免使用缩写或简写。
2. 变量名和函数名应使用小驼峰命名法,即首字母小写,后续单词首字母大写。
3. 常量名应使用大写字母和下划线,以增加可读性。
4. 类名应使用大驼峰命名法,即每个单词首字母大写。
5. 文件名应与其中的公共类名一致。
二、注释规范:1. 在每个函数的开头添加函数的功能说明,参数说明和返回值说明。
2. 在关键性代码部分添加注释,说明代码的逻辑。
3. 在需要修正或改进的代码部分添加TODO注释,以便后续修复。
三、代码风格:1. 缩进使用4个空格而不是Tab键。
2. 每行代码的长度不能超过80个字符。
3. 在二元操作符两边添加空格,例如 a + b。
4. 大括号应另起一行,不应与关键字在同一行。
5. 每个语句结束后都应该添加分号。
四、异常处理:1. 捕获异常时应尽量具体,不应捕获顶层异常。
2. 异常处理代码应与正常逻辑代码分离,以提高代码的可读性。
3. 异常处理代码块应添加注释,说明捕获的异常类型和处理的方法。
五、函数规范:1. 函数的长度应控制在100行以内,避免函数过长和复杂。
2. 函数的参数应尽量少,可以通过封装成结构体或类的方式来减少参数数量。
3. 函数应只完成一个功能,不应既完成数据处理又完成界面显示等功能。
六、代码复用:1. 尽量使用现有的类和框架来实现功能,避免重复造轮子。
2. 重复的代码应抽取成函数或方法来复用,提高代码的可维护性。
3. 提高代码的可移植性,使其可以在不同的平台和环境下复用。
七、测试规范:1. 添加单元测试用例,覆盖所有的代码分支,确保代码的正确性。
2. 针对不同的输入情况,测试代码的边界问题和异常情况。
3. 添加性能测试用例,确保代码在大数据量和高并发情况下的性能表现。
DKBA 华为技术有限公司内部技术规范DKBA 1606-XXXX.X Web应用安全开发规范 V1.52013年XX月XX日公布 2013年XX月XX日实施华为技术有限公司Huawei Technologies Co., Ltd.版权所有侵权必究All rights reserved修订声明Revision declaration本规范拟制与解释部门:网络安全能力中心&电信软件与核心网网络安全工程部本规范的相关系列规范或文件:《C&C++语言安全编程规范》《Java语言安全编程规范》相关国际规范或文件一致性:无替代或作废的其它规范或文件:无相关规范或文件的相互关系:《产品网络安全红线》和《电信软件与核心网业务部安全能力基线》中的Web安全要求引用了本规范的内容,假如存在冲突,以本规范为准。
目录 Table of Contents1概述 (9)1.1 背景简介 (9)1.2 技术框架 (10)1.3 使用对象 (12)1.4 适用范围 (12)1.5 用词约定 (13)2常见WEB安全漏洞 (13)3WEB设计安全规范 (15)3.1 W EB部署要求 (15)3.2 身份验证 (16)3.2.1 .................................. 口令163.2.2 .................................. 认证173.2.3 ................................ 验证码223.3 会话治理 (23)3.4 权限治理 (27)3.5 敏感数据爱护 (28)3.5.1 .......................... 敏感数据定义283.5.2 .......................... 敏感数据存储293.5.3 .......................... 敏感数据传输323.6 安全审计 (34)3.7 W EB S ERVICE (36)3.8 REST FUL W EB S ERVICE (37)3.9 DWR (39)4WEB编程安全规范 (41)4.1 输入校验 (41)4.2 输出编码 (48)4.3 上传下载 (49)4.4 异常处理 (50)4.5 代码注释 (50)4.6 归档要求 (52)4.7 其他 (53)4.8 PHP (58)5WEB安全配置规范 (61)6配套CBB介绍 (61)6.1 WAF CBB (61)6.2 验证码CBB (62)7附件 (63)7.1 附件1T OMCAT配置SSL指导 (63)7.2 附件2W EB S ERVICE 安全接入开发指导 (63)7.3 附件3客户端IP鉴权实施指导 (63)7.4 附件4口令安全要求 (63)7.5 附件5W EB权限治理设计规格讲明书 (64)Web应用安全开发规范 V1.51概述1.1背景简介在Internet大众化及Web技术飞速演变的今天,Web安全所面临的挑战日益严峻。
华为软件开发制度
华为软件开发制度是指华为公司在软件开发方面采取的一系列规范和流程。
以下是华为软件开发制度的一些主要内容:
1. 过程规范:华为软件开发采用CMMI(Capability Maturity Model Integration)五级成熟度模型,确保软件开发过程的可
控性和规范性。
2. 开发流程:华为软件开发采用统一的开发流程,包括需求分析、系统设计、编码测试等多个阶段,每个阶段都有相应的工作任务和交付物。
3. 质量管理:华为软件开发强调质量管理,每个阶段都有相应的质量标准和检查点,确保软件产品的质量。
4. 技术标准:华为软件开发制订了一系列的技术标准,包括编码规范、接口规范等,确保团队成员之间可以协同开发,并提高代码的可读性和可维护性。
5. 工具支持:华为软件开发提供了一系列的开发工具和平台,包括代码管理工具、自动化测试工具等,提高开发效率和质量。
6. 培训与培养:华为软件开发注重员工的培训和培养,定期组织软件开发技术培训,提升员工的技术水平和专业素养。
通过以上的软件开发制度,华为公司能够保证软件开发过程的规范性和高效性,提供高质量的软件产品。
华为ipd管理流程详细解读华为的IPD(Integrated Product Development)管理流程是华为公司在产品开发过程中采用的一种系统性的管理方法,旨在提高产品开发的效率和质量。
下面我将对华为的IPD管理流程进行详细解读。
IPD管理流程主要包括需求收集、概念设计、详细设计、开发测试、产品验证和上市投产六个阶段。
首先是需求收集阶段。
在这一阶段,华为通过市场调研、客户反馈和竞争对手分析等方式,收集并分析用户的需求,确定产品的功能和性能要求。
根据需求的重要性和紧急程度,进行优先级排序,并形成需求文档。
接下来是概念设计阶段。
在这一阶段,华为通过集思广益的方法,进行创意的产生和筛选,形成多个概念设计方案。
然后对每个方案进行评估,包括技术可行性、成本效益、市场竞争力等方面的考虑,最终确定一个或几个最优方案。
第三个阶段是详细设计。
在这一阶段,华为根据概念设计方案,进行详细的技术设计和规格制定。
包括硬件设计、软件设计、结构设计等。
同时,设计团队与采购团队和制造团队紧密合作,确保设计的可行性和生产的可执行性。
然后是开发测试阶段。
在这一阶段,华为根据详细设计方案,分解为多个开发任务,并分配给相应的开发团队。
开发团队进行代码开发、模块集成和系统集成,同时进行相关的测试,包括单元测试、功能测试、性能测试等。
通过测试的结果,及时进行问题修复和调整。
接下来是产品验证阶段。
在这一阶段,华为对开发完成的产品进行全面的验证,包括功能验证、性能验证、可靠性验证等。
通过验证的结果,评估产品的稳定性和符合度。
同时,还对用户文档进行审查,确保相关的产品信息准确无误。
最后是上市投产阶段。
在这一阶段,华为对产品进行批量生产和销售准备。
同时,组织相关的市场推广和销售培训活动,确保产品顺利上市。
另外,还对产品进行售后支持和维护,通过用户的反馈和问题解决,不断改进产品质量。
总结来说,华为的IPD管理流程是一个系统性、规范化的产品开发过程。
软件开发规范1 排版¹1-1:程序块要采用缩进风格编写,缩进的空格数为4个。
说明:对于由开发工具自动生成的代码可以有不一致。
¹1-2:相对独立的程序块之间、变量说明之后必须加空行。
示例:如下例子不符合规范。
if (!valid_ni(ni)){... epssn_index;repssn_ni = ssn_data[index].ni;应如下书写if (!valid_ni(ni)){... epssn_index;repssn_ni = ssn_data[index].ni;¹1-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
示例:= NO7_TO_STAT_PERM_COUNT_LEN+ STAT_SIZE_PER_FRAM * sizeof( _UL );act_task_table[frame_id * STAT_TASK_CHECK_NUMBER + index].occupied= stat_poi[index].occupied;act_task_table[taskno].duration_true_or_false= SYS_get_sccp_statistic_state( stat_item );report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER)&& (n7stat_stat_item_valid (stat_item))&& (act_task_table[taskno].result_data != 0));¹1-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
示例:if ((taskno < max_act_task_number)&& (n7stat_stat_item_valid (stat_item))){... ord_length)&& (j < ; i++, j++){... . tat_object),sizeof (_STAT_OBJECT));n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER+ index, stat_object );¹1-6:不允许把多个短语句写在一行中,即一行只写一条语句。
示例:如下例子不符合规范。
= 0; = 0;应如下书写= 0;= 0;¹1-7:if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。
示例:如下例子不符合规范。
if (pUserCR == NULL) return;应如下书写:if (pUserCR == NULL){return;}¹1-8:对齐只使用空格键,不使用TAB键。
说明:以免用不同的编辑器阅读程序时,因TAB键所设置的空格数目不同而造成程序布局不整齐,不要使用BC作为编辑器合版本,因为BC会自动将8个空格变为一个TAB键,因此使用BC合入的版本大多会将缩进变乱。
¹1-9:函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
¹1-10:程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。
在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。
示例:如下例子不符合规范。
for (...) {... .){... . .){... .){... . 前后不加空格。
¹p->id = pid; 文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。
示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。
/*************************************************Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.File name: ....History: Date:Author:Modification:2. ...*************************************************/¹2-3:源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。
示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。
/************************************************************Copyright (C), 1988-1999, Huawei Tech. Co., Ltd.FileName:Author: Version : Date:Description: -------History: 96/10/12epssn_index;repssn_ni = ssn_data[index].ni;例2:repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;/* get replicate sub system index and net indicator */应如下书写/* get replicate sub system index and net indicator */repssn_ind = ssn_data[index].repssn_index;repssn_ni = ssn_data[index].ni;¹2-9:对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。
变量、常量、宏的注释应放在其上方相邻位置或右方。
示例:/* active statistic task number */#define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */¹2-10:数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。
对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。
示例:可按如下形式说明枚举/数据/联合结构。
/* sccp interface with sccp user primitive message name */enum SCCP_USER_PRIMITIVE{N_UNITDATA_IND, /* sccp notify sccp user unit data come */N_NOTICE_IND, /* sccp notify user the network can not *//* transmission this message */N_UNITDATA_REQ, /* sccp user's unit data transmission request*/};¹2-11:全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
示例:/* The ErrorCode when SCCP translate *//* Global Title failure, as follows */ .){...break;}else{ProcessCFW_B(); .½2-1:避免在一行代码或表达式的中间插入注释。
说明:除非必要,不应在代码或表达中间插入注释,否则容易使代码可理解性变差。
½2-2:通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为自注释的。
说明:清晰准确的函数、变量等的命名,可增加代码可读性,并减少不必要的注释。
½2-3:在代码的功能、意图层次上进行注释,提供有用、额外的信息。
说明:注释的目的是解释代码的目的、功能和采用的方法,提供代码以外的信息,帮助读者理解代码,防止没必要的重复注释信息。
示例:如下注释意义不大。
/* if receive_flag is TRUE */if (receive_flag)而如下的注释则给出了额外有用的信息。
/* if mtp receive a message from links */if (receive_flag)½2-4:在程序块的结束行右方加注释标记,以表明某程序块的结束。
说明:当代码段较长,特别是多重嵌套时,这样做可以使代码更清晰,更便于阅读。
示例:参见如下例子。
if (...){¹ .)*/ .),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是允许的。
说明:变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了这个小小的错误而花费大量的查错时间。
示例:下面所示的局部变量名的定义方法可以借鉴。
int liv_Width其变量名解释如下:l 局部变量(Local)(其它:g 全局变量(Global)...)i 数据类型(Interger)v 变量(Variable)(其它:c 常量(Const)...)Width 变量含义这样可以防止局部变量与全局变量重名。
¹3-5:命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,比如采用UNIX 的全小写加下划线的风格或大小写混排的方式,不要使用大小写与下划线混排的方式,用作特殊标识如标识成员变量或全局变量的m_和g_,其后加上大小写混排的方式是允许的。
示例: Add_User不允许,add_user、AddUser、m_AddUser允许。