华为开发文档
- 格式:doc
- 大小:325.50 KB
- 文档页数:25
华为的项目策划书华为的项目策划书华为技术有限公司是一家生产销售通信设备的民营通信科技公司,总部位于中国广东省深圳市龙岗区坂田华为基地。
华为的产品主要涉及通信网络中的交换网络、传输网络、无线及有线固定接入网络和数据通信网络及无线终端产品,为世界各地通信运营商及专业网络拥有者提供硬件设备、软件、服务和解决方案。
华为于1987年在中国深圳正式注册成立。
一、产品品牌1、华为品牌:全球领先的电信解决方案供应商,专注于与电信运营商建立长期的合作伙伴的关系。
拥有热诚的员工和强大的研发能力,快速响应客户需求,提供客户化的产品和端到端的服务。
2、华为品牌的命名:华为手机目前的子品牌有三类,致力于低端市场的华为品牌,着眼中低端市场的荣耀以及放眼中高端市场的Ascend。
产品市场定位明确。
二、产品的定位1、商务型消费者的市场定位:商务型消费者需要处理的信息相对较多,而且手机的外显性比较强,所以既注重产品的功能,也注重产品的造型、外观。
还有商务人员出差的时间比较多,所以对电池的续航时间也要求比较高。
因此,华为手机在商务型消费者的市场定位要主要考虑功能、外观、续航三个方面。
2、大学生消费者的市场定位:大学生具有年轻人喜欢娱乐、交流、追求时尚的个性,在娱乐功能上比较注重一些技术含量高的功能,比如说个性化的铃声、图片处理、游戏、音乐等;大学生喜欢交流,所以需要超强的信息功能;大学生的主要任务还是学习,他们对一些学习方面的功能还是有所需求的,例如金山词霸、英汉互译词典、计算器、文档、公示等等;还有大学生喜欢运动、外出游玩,所以他们对手机防尘、防水、防摔有一定的要求。
因此,华为手机在大学生消费者的市场定位主要是根据大学生的需求,定制专业性的手机。
二、产品的包装1、承重抗摔、防水、防尘2、个性、时尚三、产品的售后服务1、提供保修:①售后网点维修②快递返厂维修③上门现场维修(维修人员上门维修时,携带一部备用机,如果无法现场修复手机而需要带回售后代理维修时,这部备用机可以暂时提供给用户作为临时手机使用,以免耽误用户用机)④提供包换(十五天包换)⑤提供包退(七天包退)⑥手机在售后服务中的期间费用有华为公司承担.(二)价格即根据不同的市场定位,制定不同的价格策略,产品的定价依据是企业的品牌战略,注重品牌的含金量。
华为Eudemon配置文档Eudemon防火墙的双机热备份需要三个协议的支持:VRRP(Virtual Router Redundancy Protocol)是由RFC2338定义的一种容错协议,通过实现物理设备和逻辑设备的分离,实现在多个出口网关之间进行选路。
VGMP(VRRP Group Management Protocol)是华为公司为防止VRRP状态不一致现象的发生,在VRRP的基础上自主开发出的扩展协议。
该协议负责统一管理加入其中的各备份组VRRP的状态。
HRP(Huawei Redundancy Protocol)协议用来进行防火墙的动态状态数据的实时备份。
此配置文档适用于不支持VGMP的Eudemon系统版本,该系统默认有master 和slave两个管理组,master用于管理主防火墙VRRP备份组,slave用于管理备防火墙VRRP备份组,主要区别体现在它们的优先级上。
一、Eudemon双机配置的二个步骤如下:1、接口划分和VRRP备份组配置[Eudemon]firewall zone trust[Eudemon-zone-untrust] add interface GigabitEthernet0/0/0[Eudemon]firewall zone untrust[Eudemon-zone-untrust] add interface GigabitEthernet5/0/0[Eudemon]firewall zone dmz[Eudemon-zone-dmz] add interface GigabitEthernet0/0/1[Eudemon-zone-dmz] add interface GigabitEthernet6/0/0注:Eudemon防火墙默认有四个区域,local(本机)、untrust(连接外网)、trust (连接内网)、dmz(中立区),安全级别系数分别是100、5、85、50,这四个默认区域不能删除,也不能修改安全级别系数;并且四个区域默认是不允许所有IP 进行互访的。
数据仓库服务(DWS) 8.1.3.310API参考文档版本01发布日期2023-03-30版权所有 © 华为云计算技术有限公司 2023。
保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
商标声明和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意您购买的产品、服务或特性等应受华为云计算技术有限公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。
除非合同另有约定,华为云计算技术有限公司对本文档内容不做任何明示或暗示的声明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。
除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
目录1 使用前必读 (1)1.1 概述 (1)1.2 调用说明 (1)1.3 终端节点 (1)1.4 基本概念 (1)2 API概述 (3)3 如何调用API (5)3.1 构造请求 (5)3.2 认证鉴权 (8)3.3 返回结果 (9)4 快速入门 (11)5 API说明 (17)5.1 集群管理接口 (17)5.1.1 创建集群 (17)5.1.2 查询集群列表 (22)5.1.3 查询集群详情 (29)5.1.4 查询节点类型 (37)5.1.5 删除集群 (39)5.1.6 重启集群 (41)5.1.7 扩容集群 (42)5.1.8 重置密码 (44)5.1.9 集群工作负载管理 (46)5.1.9.1 查询工作负载管理计划列表 (46)5.1.9.2 查询工作负载管理计划 (49)5.1.9.3 切换工作负载计划阶段 (52)5.1.9.4 启动工作负载计划 (53)5.1.9.5 停止工作负载计划 (55)5.2 快照管理接口 (56)5.2.1 创建快照 (56)5.2.2 查询快照列表 (58)5.2.3 查询快照详情 (60)5.2.4 删除手动快照 (63)5.2.5 恢复集群 (64)5.3 数据库监控管理接口 (67)5.3.1 查询DWS集群状态 (67)5.3.2 查询DWS集群中数据库使用情况 (72)5.3.3 查询DWS集群各节点磁盘IO使用情况 (74)5.3.4 查询DWS集群各节点磁盘IO使用情况(聚合类型) (77)5.3.5 查询DWS集群各节点文件系统使用情况 (81)5.3.6 查询DWS集群各节点文件系统使用情况(聚合类型) (83)5.3.7 查询DWS集群节点各网卡流量 (87)5.3.8 查询DWS集群查询执行情况 (90)5.3.9 查询DWS集群会话执行情况 (94)5.3.10 查询DWS硬件资源使用情况 (96)5.3.11 查询DWS集群硬件资源使用情况(聚合类型) (99)6 附录 (103)6.1 状态码 (103)6.2 错误码 (105)6.3 创建VPC (113)6.4 获取资源集ID (113)6.5 获取租户ID (114)6.6 获取集群ID (114)6.7 获取Endpoint (115)1使用前必读1.1 概述欢迎使用数据仓库服务GaussDB(DWS)。
软件开发行为规范第一版深圳市华为技术有限公司版权所有不得复制软件开发行为规范(第一版)为了把公司已经发布的软件开发过程规范有效地运作于产品开发活动中,把各种规范“逐步形成工程师的作业规范”,特制定本软件开发行为规范,以达到过程控制的目的。
与软件开发相关的所有人员,包括各级经理和工程师都必须遵守本软件开发行为规范。
对违反规范的开发行为,必须按照有关管理规定进行处罚。
本软件开发行为规范的内容包括:软件需求分析、软件项目计划、概要设计、详细设计、编码、需求管理、配置管理、软件质量保证、数据度量和分析等。
本软件开发行为规范,采用以下的术语描述:★规则:在软件开发过程中强制必须遵守的行为规范。
★建议:软件开发过程中必须加以考虑的行为规范。
★说明:对此规则或建议进行必要的解释。
★示例:对此规则或建议从正或反两个方面给出例子。
本软件开发过程行为规范由研究技术管理处负责解释和维护。
研究技术管理处目录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:采用以下检查表检查软件需求规格文档中需求的完备性。
华为TD模块Linux第三方集成指导文档Catalog 目录1 目的 (2)2 范围 (2)3 简介 (2)4 Linux系统支持华为TD模块设备的集成步骤 (2)4.1 USB cdc-acm内核驱动模块集成步骤 (2)4.2 Linux PPP拨号工具集成步骤 (3)5 在Linux系统上的modem拨号 (4)6 附录 (4)6.1 获取单板当前的端口映射情况信息 (4)1 目的本文档主要针对华为TD模块设备基于Linux系统的集成开发活动进行相关的指导说明。
主要面向第三方软件开发商的集成开发人员。
2 范围本文档主要说明了在Linux系统上支持华为TD模块设备的相关开发工作,及其注意事项。
3 简介要在Linux系统中支持华为TD模块设备,则要求Linux系统必须存在内核驱动模块cdc-acm.ko,PPP协议模块和PPP拨号相关的工具程序。
对于通用的PC Linux系统,如果Ubuntu、RedHat、Fedora、OpenSUSE等系统,其内核系统中默认已经内置有对应的cdc-acm.ko驱动模块和相关的PPP模块文件了,至于拨号管理的功能,建议直接集成华为提供的Linux后台软件来支持。
本文不再作详细说明。
本文将主要说明定制的Linux系统或嵌入式的Linux系统支持华为TD模块设备的集成操作。
4 Linux系统支持华为TD模块设备的集成步骤4.1 USB cdc-acm内核驱动模块集成步骤USB cdc-acm驱动模块,是Linux内核内置的标准的驱动模块。
其源文件在Linux内核代码中的位置为drivers/usb/class/cdc-acm.c,编译后,生成名称为cdc-acm.ko的模块文件,该文件存放于Linux系统/lib/modules/$(uname -r)/kernel/drivers/usb/class目录下。
其具体的集成步骤如下:1、Linux内核编译配置时,需要选中下面蓝色的配置项。
华为代码规范目录1 概述 (5)1.1 编写目的 (5)1.2 文档约定 (5)1.3 预期的读者和阅读建议 (5)1.4 参考文献 (5)2 排版要求 (5)2.1 程序块缩进 (5)2.2 程序块之间空行 (5)2.3 长语句和长表达式 (6)2.4 循环、判断等长表达式或语句 (7)2.5 长参数 (7)2.6 短语句 (8)2.7 条件、循环语句 (8)2.8 语句对齐 (8)2.9 函数、过程和结构等语句块 (9)2.10 程序块分界符 (9)2.11 操作符前后空格 (10)2.12 其他 (11)3 注释 (11)3.1 有效注释量 (11)3.2 公司标识 (11)3.3 说明性文件 (12)3.4 源文件头 (13)3.5 函数头部说明 (13)3.6 注释与代码一致 (14)3.7 注释内容 (14)3.8 注释缩写 (14)3.9 注释位置 (14)3.10 变量、常量注释 (15)3.11 数据结构的注释 (15)3.12 全局变量 (16)3.13 注释缩排 (16)3.14 注释与代码之间空行 (17)3.15 变量定义、分支语句 (17)3.16 其他 (19)4 标识符命名 (20)4.1 命名清晰 (20)4.2 特殊命名需注释 (21)4.3 命名风格保持一致 (21)4.4 变量命名 (21)4.5 命名规范与系统风格一致 (21)4.6 其他 (22)5 可读性 (23)5.1 运算符优先级 (23)5.2 避免直接使用数字作为标识符 (23)5.3 其他 (24)6 变量、结构 (25)6.1 公共变量 (25)6.2 公共变量说明 (25)6.3 公共变量访问说明 (25)6.4 公共变量赋值 (26)6.5 防止局部变量与公共变量同名。
(26)6.6 严禁使用未经初始化的变量作为右值。
(26)6.7 其他 (26)7 函数、过程 (34)7.1 对所调用函数的错误返回码要仔细、全面地处理。
1.1 C++编程规范总则 (5)1.1.1 资料来源 (5)1.1.2 C++编程规范总则 (6)1. 原则:编程时必须坚持的指导思想。
(6)2. 规则:编程时强制必须遵守的约定。
(6)3. 建议:编程时必须加以考虑的约定。
(6)4. 说明:对此原则/规则/建议进行必要的解释。
(6)5. 示例:对此原则/规则/建议从好、不好两个方面给出例子。
(6)6. 延伸阅读材料:建议进一步阅读的参考材料。
(6)1.2 C++ 编程规范1 常量 (6)1.2.1 资料来源 (6)1.2.2 C++ 编程规范1 常量 (6)1. 规则1.1 使用const常量取代宏 (6)2. 规则1.2 一组相关的整型常量应定义为枚举 (6)3. 规则1.3 不相关的常量,即使取值一样,也必须分别定义 (7)4. 建议1.1 尽可能使用const (8)1.3 C++编程规范2 初始化和类型转换 (8)1.3.1 2.1 声明、定义与初始化 (8)1. 规则2.1 禁止用memcpy、memset初始化非POD对象 (8)2. 建议2.1 变量使用时才声明并初始化 (8)3. 建议2.2 避免构造函数做复杂的初始化,可以使用“init”函数 (9)4. 建议2.3 初始化列表要严格按照成员声明顺序来初始化它们 (9)5. 建议2.4 明确有外部依赖关系的全局与静态对象的初始化顺序 (10)1.3.2 2.2 类型转换 (10)1. 规则2.2 使用C++风格的类型转换,不要使用C风格的类型转换 (10)2. 建议2.5 避免使用reinterpret_cast (11)3. 建议2.6 避免使用const_cast (11)4. 建议2.7 使用虚函数替换dynamic_cast (11)1.4 C++编程规范3 函数 (11)1.4.1 3.1 内联函数 (11)1. 规则3.1 内联函数(inline function)小于10行 (12)2. 规则3.2 使用内联函数代替函数宏 (12)3. 建议3.1 内联函数应该放在头文件中声明,而且在函数前添加inline关键字 (12)4. 建议3.2 内联函数的实现放在独立的文件 (12)1.4.2 3.2 函数参数 (13)1. 建议3.3 入参尽量用const引用取代指针 (13)2. 建议3.4 消除未使用函数参数 (13)3. 建议3.5 尽量少用缺省参数 (13)1.4.3 3.3 函数指针 (13)1. 建议3.6 尽量少用函数指针 (13)1.5 C++编程规范4 类 (13)1.5.1 4.1 类的设计 (13)1. 原则4.1 类职责单一 (14)2. 原则4.2 隐藏信息 (14)3. 原则4.3 尽量使类的接口正交、少而完备 (14)4. 规则4.1 模块间对外接口类不要暴露私有和保护成员 (14)5. 规则4.2 避免成员函数返回成员可写的引用或者指针 (15)6. 规则4.3 禁止类之间循环依赖 (15)7. 建议4.1 将数据成员设为私有的(struct除外),并提供相关存取函数 (16)8.建议4.2 使用PIMPL模式,确保私有成员真正不可见 (16)1.5.2 4.2 构造、赋值和析构 (16)1.规则4.4 包含成员变量的类,须定义构造函数或者默认构造函数 (16)2. 规则4.5 为避免隐式转换,将单参数构造函数声明为explicit (17)3. 规则4.6 包含资源管理的类应自定义拷贝构造函数、赋值操作符和析构函数 (17)4. 规则4.7 让operator=返回*this的引用 (18)5. 规则4.8 在operator=中检查给自己赋值的情况 (18)6. 规则4.9 在拷贝构造函数、赋值操作符中对所有数据成员赋值 (19)7. 规则4.10 通过基类指针来执行删除操作时,基类的析构函数设为公有且虚拟的 (19)8. 规则4.11 避免在构造函数和析构函数中调用虚函数 (20)9. 建议4.3 拷贝构造函数和赋值操作符的参数定义成const引用类型 (20)10. 建议4.4 在析构函数中集中释放资源 (20)1.5.3 4.3 继承 (20)1. 原则4.4 用组合代替继承 (21)2. 原则4.5 避免使用多重继承 (21)3. 规则4.12 使用public继承而不是protected/private继承 (21)4. 规则4.13 继承层次不超过4层 (21)5. 规则4.14 虚函数绝不使用缺省参数值 (22)6. 规则4.15 绝不重新定义继承而来的非虚函数 (22)7. 建议4.5 避免派生类中定义与基类同名但参数类型不同的函数 (23)8. 建议4.6 派生类重定义的虚函数也要声明virtual关键字 (23)1.5.4 4.4 重载 (23)1. 原则4.6 尽量不重载操作符,保持重载操作符的自然语义 (23)2. 规则4.16 仅在输入参数类型不同、功能相同时重载函数 (24)3. 建议4.7 使用重载以避免隐式类型转换 (24)4. 建议4.8 C/C++混用时,避免重载接口函数 (24)1.6 C++编程规范5 作用域、模板和C++其他特性 (24)1.6.1 5.1 作用域 (25)1. 原则5.1 使用名字空间进行归类,避免符号冲突 (25)2. 规则5.1 不要在头文件中或者#include之前使用using指示符 (25)3. 建议5.1 尽量少使用嵌套类(成员类) (26)4. 建议5.2 尽可能不使用局部类 (26)5. 建议5.3 使用静态成员函数或名字空间内的非成员函数,避免使用全局函数 (26)6. 建议5.4 避免class类型的全局变量,尽量用单件模式 (26)1.6.2 5.2 模板 (26)1. 建议5.5 谨慎使用模板,只使用模板的基础特性 (27)2. 建议5.6 注意使用模板的代码膨胀 (27)3. 建议5.7 模板类型应该使用引用或指针 (27)4. 建议5.8 模板如果有约束条件,请在模板定义处显式说明 (27)5. 建议5.9 两个模块之间接口中尽量不要暴露模板 (27)1.6.3 5.3 其他 (27)1. 规则5.2 不要在extern "C"内部使用#include包含其他头文件 (27)2. 建议5.10 避免使用友元 (27)3. 建议5.11 避免使用RTTI (27)4. 建议5.12 使用sizeof(变量)而不是sizeof(类型) (27)1.7 C++ 6 资源分配和释放 (28)1.7.1 资料来源: (28)1.7.2 C++ 6 资源分配和释放 (28)1. 原则6.1 明确产品动态内存的申请与释放原则 (28)2. 规则6.1 明确operator new的行为和检查策略 (28)3. 规则6.2 释放内存后,要立即将指针设置为NULL,防止产生野指针 (29)4. 规则6.3 new单个对象删除使用delete,new[n]数组对象删除使用delete [] (29)5. 规则6.4 释放结构(类)指针时,必须从底层向上层顺序删除 (29)6. 规则6.5 释放指针数组时,首先释放数组每个元素指针所指向的内存 (30)7. 规则6.6 不要返回局部对象指针 (31)8. 规则6.7 不要强制关闭线程 (31)9. 建议6.1 使用new, delete的封装方式来分配与释放内存 (31)10. 建议6.2 避免在不同的模块中分配和释放内存 (32)11.建议6.3 使用RAII 特性来帮助追踪动态分配 (32)1.8 C++ 编程规范7 异常与错误处理 (33)1.8.1 7.1 异常 (33)1. 原则7.1 减少不必要的异常 (34)2. 规则7.1 构造和析构函数不能抛出异常 (34)3. 规则7.2 通过传值的方式抛出,通过引用的方式捕获 (34)4. 规则7.3 确保抛出的异常一定能被捕捉到 (34)5. 规则7.4 确保异常发生后资源不泄漏 (34)6. 规则7.5 独立编译模块或子系统的外部接口禁止抛异常 (35)1.8.2 7.2 错误处理策略 (35)1. 原则7.2 建立合理的错误处理策略 (35)2. 原则7.3 离错误最近的地方处理错误或转换错误 (35)3. 规则7.6 错误发生时,至少确保符合基本保证;对于事务处理,至少符合强保证;对于原子操作,符合无错误保证 (35)1.9 C++编程规范8 标准库 (36)1.9.1 资料来源 (36)1.9.2 C++编程规范8 标准库 (36)1. 规则8.1 避免使用auto_ptr (36)2. 规则8.2 仅将scoped_ptr、shared_ptr和unique_ptr用于管理单个对象 (37)3. 规则8.3 如果涉及循环引用,使用weak_ptr解开循环 (37)4. 规则8.4 使用make_shared代替new生成shared_ptr (39)5. 规则8.5 对于同一个对象一旦使用shared_ptr,后续就要处处使用shared_ptr (40)6. 规则8.6 对于返回自身的shared_ptr指针的对象,要从enable_shared_from_this类派生407. 规则8.7 不要将使用不同版本stl、boost等模板库编译的模块连接在一起 (40)8. 规则8.8 不要保存string::c_str()指针 (41)9. 建议8.1 不要将stl、boost等模板库中的数据类型传递到动态链接库或者其它进程中 (41)10. 建议8.2 使用容器时要评估大量插入删除是否会生成大量内存碎片 (41)11. 建议8.3 使用string代替char* (41)12. 建议8.4 使用stl、boost等知名模板库提供的容器,而不要自己实现容器 (41)13. 建议8.5 使用新的标准库头文件 (41)1.10 C++编程规范9 程序效率 (41)1.10.1 9.1 C++语言特性的性能分级 (42)1.10.2 9.2 C++语言的性能优化指导 (42)1. 原则9.1 先测量再优化,避免不成熟的优化 (42)2. 原则9.2 选用合适的算法和数据结构 (42)3. 建议9.1 在构造函数中用初始化(定义时赋值)代替定义后赋值 (43)4. 建议9.2 当心空的构造函数或析构函数的开销 (43)5. 建议9.3 对象参数尽量传递引用(优先)或指针而不是传值 (43)6. 建议9.4 尽量减少临时对象 (44)7. 建议9.5 优先采用前置自增/自减 (44)8. 建议9.6 简单访问方法尽量采用内联函数 (44)9. 建议9.7 要审视标准库的性能规格 (44)10. 建议9.8 用对象池重载动态内存管理器 (45)11. 建议9.9 注意大尺寸数组的初始化效率 (45)12. 建议9.10 避免在函数内部的小块内存分配 (45)1.11 C++编程规范10并发 (45)1.11.1 资料来源 (45)1.11.2 C++编程规范10并发 (45)1. 规则10.1 多线程、多进程并行访问共享资源时,一定要加锁保护 (45)2. 规则10.2 锁的职责单一 (46)3. 规则10.3 锁范围尽量小,只锁对应资源操作代码 (46)4. 规则10.4 避免嵌套加锁;如果必须加锁,务必保证不同地方的加锁顺序是一样的 (46)5. 建议10.1进程间通讯,使用自己保证互斥的数据库系统、共享内存,或socket消息机制;尽量避免使用文件等进程无法管理的资源 (46)6. 建议10.2 可重入函数尽量只使用局部变量和函数参数,少用全局变量、静态变量 (47)7. 建议10.3 锁中避免调用函数;如果必须调用函数,务必保证不会造成死锁 (47)8. 建议10.4 锁中避免使用跳转语句 (48)1.12 C++编程规范11风格 (48)1.12.1 11.1 标示符命名与定义 (48)1. 建议11.1 类命名以大写字母开头,中间单词也以大写开头 (48)1.12.2 11.2 排版 (48)1. 建议11.2 类的声明按照一定的次序进行,关键字不缩进 (48)2. 建议11.3 构造函数初始化列表在同一行或按4格缩进并排几行 (48)1.12.3 11.3 注释 (49)1. 建议11.4 使用‘//’注释方式,而不是‘/* */’ (49)2. 建议11.5 为重要的类或结构体作注释,注释格式支持工具自动生成 (49)3. 建议11.6 为所有重要的成员函数作注释 (49)4. 建议11.7 正式发布的代码不能使用TODO 注释 (49)1.12.4 11.4 文件组织 (49)1. 建议11.8 整个项目需要的公共头文件应放在一个单独的目录下 (49)2. 建议11.9 一个模块的目录层次不宜太深,以1~2层为宜,接口文件放在最外层 (49)3. 建议11.10 保持文件前言的简洁性 (49)1.13 12可移植性(兼容性) (49)1.13.1 资料来源: (49)1.13.2 12可移植性(兼容性) (49)1.移植中一些关键问题如下: (50)2. 建议12.1 不直接使用C++的基本数据类型,不要假定其存储尺寸长度 (50)3. 建议12.2 避免指针截断 (50)4. 建议12.3 注意数据类型对齐问题 (50)5. 建议12.4 在涉及网络字节序处理时,要注意进行网络字节序与本地字节序的转换 (50)6. 建议12.5 避免无符号数与有符号数的转换 (51)7. 建议12.6 创建64 位常量时使用LL 或ULL 作为后缀 (51)8. 建议12.7 区分sizeof(void *)和sizeof(int) (51)9. 建议12.8 编译器、操作系统相关的代码独立出来 (51)1.14 13全球化 (52)1.14.1 13.1 多语言输入输出 (52)1. 原则13.1 使用正确的数据类型和类处理多语言字符和字符串 (52)2. 原则13.2 对字符进行处理时,需分配足够的内存空间并确保字符完整 (52)3. 规则13.1 使用标准库函数判断字符属性,使应用能够支持多区域 (52)4. 规则13.2 对字符串进行本地化排序、比较和查找时,使用有区域参数的locale::collate<>函数 (52)5. 建议13.1 处理Unicode数据时,注意检测BOM是否存在,避免产生多余字符或解码错误 (53)1.14.2 13.2 单一版本 (53)1. 规则13.3 资源与程序逻辑代码分离 (53)2. 规则13.4 保持资源的语义完整性,不要拼接字符串资源 (53)3. 建议13.2 资源的键名中包含该资源的应用场景信息 (54)1.14.3 13.3 时区夏令时 (54)1. 规则13.5 确保本地时间中时区夏令时信息完整 (54)2. 规则13.6 避免使用本地时间直接进行时间计算 (54)1.15 14业界编程规范和书籍 (55)1.15.1 14.1 业界编程规范 (55)1. 14.1.1 《google C++ code style》(google C++编程指南) (55)2. 14.1.2 《C++编程规范101条规则、准则与最佳实践》 (55)3. 14.1.3 Microsoft All-In-One Code Framework 《微软一站式示例代码库》 (55)1.15.2 14.2 扩展学习材料 (56)1. 14.2.1 C++ primer (56)2. 14.2.2 effective C++ / more effective C++ (56)3. 14.2.3 Effective STL (56)4. 14.2.4 inside the C++ object model (56)1.1 C++编程规范总则1.1.1 资料来源/xiyoulele/article/details/7987123分类:编码规范C/C++ 2012-09-17 12:49 101人阅读评论(0) 收藏举报编程c++C++编程规范专辑:/xiyoulele/article/category/12139831.1.2 C++编程规范总则1. 原则:编程时必须坚持的指导思想。
华为ipd产品开发流程
华为ipd产品开发流程是一个全面的流程,它涵盖了产品规划、
设计、开发、测试和实施等过程,以确保最终产品的成功交付。
以下
是华为ipd产品开发流程的详细介绍:
1、产品规划阶段
在产品规划阶段,我们需要确定产品的市场需求、竞争对手和目
标用户。
这些信息将有助于确定产品的功能和特性。
此外,产品规划
还需要确定时间表、资源和预算。
2、设计阶段
在设计阶段,我们需要制定详细的产品规格,包括硬件、软件、
网络、安全和用户体验等方面。
设计阶段的输出是产品原型,这是下
一步开发的基础。
3、开发阶段
开发阶段是将设计转化为功能的过程。
在这个阶段,开发团队需
要实现产品的各种功能,包括软件开发、硬件设计和网络配置等方面。
此外,为确保产品的质量,开发阶段还需要进行软件和硬件的验证和
测试。
4、测试阶段
测试阶段是确保产品质量的关键步骤。
在测试阶段,我们需要测
试产品的各种方面,包括功能、性能、兼容性和安全等方面。
如果测
试过程中发现了问题,将需要对其进行修复并重新进行测试,直到满
足预期的质量要求。
5、实施阶段
在实施阶段,产品将被交付给最终用户。
在此之前还会有一个上
线前的准备工作,包括培训、文档编写和用户反馈机制的建立等方面。
用户反馈将帮助我们了解产品质量,并在需要的时候进行修复和改进。
以上是华为ipd产品开发流程的主要步骤,一旦完成整个流程,
我们会收获一个能够满足用户需求的高质量产品。
Java语言编码规范Prepared by拟制Date日期yyyy-mm-ddReviewed by 评审人Date日期yyyy-mm-ddApproved by批准Date日期yyyy-mm-ddRevision Record 修订记录Table of Contents 目录1.范围 (4)2.规范性引用文件 (4)3.术语和定义 (4)4.排版规范 (5)4.1.规则 (5)4.2.建议 (7)5.注释规范 (9)5.1.规则 (9)5.2.建议 (14)6.命名规范 (17)6.1.规则 (17)6.2.建议 (18)7.编码规范 (20)7.1.规则 (20)7.2.建议 (24)8.JTEST规范 (26)8.1.规则 (26)8.2.建议 (27)1.范围本规范规定了使用Java语言编程时排版、注释、命名、编码和JTEST的规则和建议。
本规范适用于使用Java语言编程的产品和项目。
2.规范性引用文件下列文件中的条款通过本规范的引用而成为本规范的条款。
凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本规范,然而,鼓励根据本规范达成协议的各方研究是否可使用这些文件的最新版本。
凡是不注日期的引用文件,其最新版本适用于本规范。
3.术语和定义规则:编程时强制必须遵守的原则。
建议:编程时必须加以考虑的原则。
格式:对此规范格式的说明。
说明:对此规范或建议进行必要的解释。
示例:对此规范或建议从正、反两个方面给出例子。
4.排版规范4.1.规则4.1.1.*程序块要采用缩进风格编写,缩进的空格数为4个。
说明:对于由开发工具自动生成的代码可以有不一致。
4.1.2.*分界符(如大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。
在函数体的开始、类和接口的定义、以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。
华为接口说明文档1 登录页面设计登录接口(已完成)登出接口(已完成)上传接口(已完成)修改密码接口(已完成)修改手机号和邮箱接口(已完成)文件上传下载上传接口(已完成)参数:DefaultUpload");URLConnection urlConnection = url.openConnection();HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;httpURLConnection.setDoInput(true);httpURLConnection.setDoOutput(true);httpURLConnection.setUseCaches(false);httpURLConnection.setRequestMethod("POST");httpURLConnection.setRequestProperty("Connection", "Keep-Alive");httpURLConnection.setRequestProperty("Charset", "UTF-8");httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary= " + boundary);//文件路径String[] uploadFilePaths = new String[]{"/dm/xxx/XXX.txt"};ds = new DataOutputStream(httpURLConnection.getOutputStream());for (int i = 0; i < uploadFilePaths.length; i++) {String uploadFile = uploadFilePaths[i];String filename = uploadFile.substring(stIndexOf("/") + 1);ds.writeBytes(twoHyphens + boundary + end);//不能使用writebytes,否则会丢失高位导致中文乱码ds.write(("Content-Disposition: form-data; " + "name=\"file" + i + "\";filename=\"" + filen ame + "\"" + end).getBytes());ds.writeBytes(end);FileInputStream fStream = new FileInputStream(uploadFile);int bufferSize = 1024;byte[] buffer = new byte[bufferSize];int length = -1;while ((length = fStream.read(buffer)) != -1) {ds.write(buffer, 0, length);}ds.writeBytes(end);fStream.close();}//拼接成一个多文件多分割符ds.writeBytes(twoHyphens + boundary + twoHyphens + end);ds.flush();下载接口(已完成)返回值:文件流用户管理查询用户(已完成)返回结果:{ "createdBy": null, "creationDate": null, "lastUpdatedBy": null, "lastUpdateDate": null, "description": null, "current": 1, "rowCount": 15, "totalPages": 1, "total": 6,"offset": 0,"resultMode": 0,"startIndex": 0,"endIndex": 0,"rows": [{"createdBy": null,"creationDate": null,"lastUpdatedBy": -1,"lastUpdateDate": "2018-01-30T09:59:40.000+0800", "description": null,"userId": 55,"userAccount": "guest","password": null,"phone": null,"email": null,"lang": null,"userName": null,"userType": "1","currentRole": null,"currentProgramIds": null,"validRoleList": null,"defaultRole": null,"endDate": null,"personalConfigList": null,"roleList": null,"programList": null,"language": null,"scope": "hwla","appName": "hwla","currentUserId": 50},{"createdBy": -1,"creationDate": "2018-01-10T12:10:05.000+0800", "lastUpdatedBy": -1,"lastUpdateDate": "2018-01-10T12:10:05.000+0800", "description": null,"userId": 88,"userAccount": "jay","password": null,"phone": null,"email": null,"lang": null,"userName": null,"userType": "1","currentRole": null,"currentProgramIds": null,"validRoleList": null,"defaultRole": null,"endDate": null,"personalConfigList": null,"roleList": null,"programList": null,"language": null,"scope": "hwla","appName": "hwla","currentUserId": 50},{"createdBy": -1,"creationDate": "2017-12-11T23:00:27.000+0800", "lastUpdatedBy": -1,"lastUpdateDate": "2017-12-11T23:00:27.000+0800", "description": null,"userId": 87,"userAccount": "zhenglong","password": null,"phone": null,"email": null,"lang": null,"userName": null,"userType": "1","currentRole": null,"currentProgramIds": null,"validRoleList": null,"defaultRole": null,"endDate": null,"personalConfigList": null,"roleList": null,"programList": null,"language": null,"scope": "hwla","appName": "hwla","currentUserId": 50},{"createdBy": 50,"creationDate": "2017-11-25T14:44:10.000+0800", "lastUpdatedBy": 50,"lastUpdateDate": "2017-11-25T14:44:10.000+0800", "description": null,"userId": 85,"userAccount": "hwla","password": null,"phone": null,"email": null,"lang": null,"userName": "华为项目虚拟用户","userType": "2","currentRole": null,"currentProgramIds": null,"validRoleList": null,"defaultRole": null,"endDate": null,"personalConfigList": null,"roleList": null,"programList": null,"language": null,"scope": "hwla","appName": "hwla","currentUserId": 50},{"createdBy": -1,"creationDate": "2017-08-03T21:44:52.000+0800", "lastUpdatedBy": 84,"lastUpdateDate": "2017-10-01T01:00:00.000+0800", "description": null,"userId": 50,"userAccount": "iori","password": null,"phone": "158********","email":"****************","lang": null,"userName": "测试用户","userType": "1","currentRole": null,"currentProgramIds": null,"validRoleList": null,"defaultRole": null,"endDate": null,"personalConfigList": null,"roleList": null,"programList": null,"language": null,"scope": "hwla","appName": "hwla","currentUserId": 50},{"createdBy": 50,"creationDate": "2017-08-21T19:42:50.000+0800", "lastUpdatedBy": 50,"lastUpdateDate": "2017-08-21T19:42:50.000+0800", "description": null,"userId": 84,"userAccount": "iJob","password": null,"phone": null,"email": null,"lang": null,"userName": null,"userType": "2","currentRole": null,"currentProgramIds": null,"validRoleList": null,"defaultRole": null,"endDate": null,"personalConfigList": null,"roleList": null,"programList": null,"language": null,"scope": "hwla", "appName": "hwla", "currentUserId": 50}],"sortStr": null, "searchPhrase": null, "language": "zh-CN", "scope": "hwla", "appName": "hwla", "currentUserId": 50 }创建用户(已完成)返回值:删除用户(已完成)更新用户(已完成)查询指定用户(已完成)返回值:。
IoT平台基础版(IoT Hub)产品介绍文档版本02发布日期2019-05-20版权所有 © 华为技术有限公司 2019。
保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
商标声明和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。
除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。
除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
产品介绍目录目录1 平台简介 (1)2 功能对比 (4)3 使用限制 (7)4 名词解释 (9)1平台简介IoT平台提供海量设备的接入和管理,配合华为云其他产品同时使用,帮助快速构筑物联网应用。
设备接入IoT平台支持终端设备直接接入,也可以通过工业网关或者家庭网关接入。
同时,支持多网络接入、多协议接入、多Agent接入和云端协议解析,解决设备接入复杂多样化和碎片化难题,实现设备的快速接入。
l多网络接入:支持有线和无线的接入方式,如固定宽带、2G/3G/4G/5G、NB-IoT、Z-Wave、ZigBee、eLTE等。
l多协议接入:支持HTTP/S、MQTTS、LWM2M/CoAP原生协议接入。
l多Agent接入:支持Agent Rich、Agent Lite和Agent Tiny,覆盖的语言包括C、Java、Python。
Agent与海思、高通主流芯片、模组预集成,缩短TTM。
SDK下载地址:SDK下载。
l云端协议解析:支持在云端对接入协议和设备数据进行解析,无需变更设备端数据上报格式,在云端开发插件灵活解析。
Web应用防火墙(WAF) 1.2.1API参考文档版本01发布日期2023-03-30版权所有 © 华为云计算技术有限公司 2023。
保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
商标声明和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意您购买的产品、服务或特性等应受华为云计算技术有限公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。
除非合同另有约定,华为云计算技术有限公司对本文档内容不做任何明示或暗示的声明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。
除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
华为云计算技术有限公司地址:贵州省贵安新区黔中大道交兴功路华为云数据中心邮编:550029网址:https:///目录1 使用前必读 (1)1.1 概述 (1)1.2 调用说明 (1)1.3 终端节点 (1)1.4 基本概念 (1)2 API概览 (3)3 如何调用API (4)3.1 构造请求 (4)3.2 认证鉴权 (6)3.3 返回结果 (10)4 API (13)4.1 独享模式防护网站管理 (13)4.1.1 独享模式域名列表 (13)4.1.2 创建独享模式域名 (18)4.1.3 修改独享模式域名配置 (27)4.1.4 查看独享模式域名配置 (40)4.1.5 删除独享模式域名 (48)4.1.6 修改独享模式域名防护状态 (53)4.2 防护策略管理 (55)4.2.1 查询防护策略列表 (55)4.2.2 创建防护策略 (63)4.2.3 根据Id查询防护策略 (70)4.2.4 更新防护策略 (77)4.2.5 删除防护策略 (89)4.2.6 更新防护策略的域名 (96)4.3 策略规则管理 (103)4.3.1 修改单条规则的状态 (104)4.3.2 查询全局白名单(原误报屏蔽)规则列表 (107)4.3.3 创建全局白名单(原误报屏蔽)规则 (112)4.3.4 删除全局白名单(原误报屏蔽)防护规则 (119)4.3.5 查询黑白名单规则列表 (124)4.3.6 创建黑白名单规则 (127)4.3.7 更新黑白名单防护规则 (131)4.3.8 删除黑白名单防护规则 (135)4.3.9 查询隐私屏蔽防护规则 (138)4.3.10 创建隐私屏蔽防护规则 (142)4.3.11 更新隐私屏蔽防护规则 (146)4.3.12 删除隐私屏蔽防护规则 (150)4.3.13 查询地理位置访问控制规则列表 (153)4.3.14 创建地理位置控制规则 (156)4.3.15 更新地理位置控制防护规则 (161)4.3.16 删除地理位置控制防护规则 (164)4.3.17 查询防篡改规则列表 (168)4.3.18 创建防篡改规则 (171)4.3.19 删除防篡改防护规则 (174)4.3.20 查询引用表列表 (177)4.3.21 创建引用表 (180)4.3.22 修改引用表 (184)4.3.23 删除引用表 (188)4.4 证书管理 (190)4.4.1 查询证书列表 (191)4.4.2 创建证书 (194)4.4.3 查询证书 (198)4.4.4 修改证书 (202)4.4.5 删除证书 (205)4.4.6 绑定证书到域名 (208)4.5 防护事件管理 (211)4.5.1 查询攻击事件列表 (211)4.5.2 查询指定事件id的防护事件详情 (217)4.6 租户域名查询 (221)4.6.1 查询全部防护域名列表 (221)4.6.2 根据Id查询防护域名 (227)A 附录 (233)A.1 状态码 (233)A.2 错误码 (234)A.3 获取服务的endpoint信息 (239)1使用前必读1.1 概述Web应用防火墙(Web Application Firewall,WAF),通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等攻击,保护Web服务安全稳定。
【专家视角】华为IPD流程的专业解读1. 引言华为IPD流程,全称为华为集成产品开发流程,是华为公司为了实现产品的高质量、高效率而自主研发的一套产品开发管理体系。
本篇文档将深入解读华为IPD流程的各个环节,带您了解这一套被华为视为核心竞争力之一的管理体系。
2. IPD流程概述2.1 IPD流程的定义集成产品开发(Integrated Product Development,简称IPD)是一种以市场需求为导向,以产品为中心,整合企业内部各环节资源,通过跨部门协作,实现产品从概念到退市的全方位管理流程。
2.2 IPD流程的目标- 提高产品质量和客户满意度- 缩短产品开发周期- 降低产品开发成本- 提升企业竞争力3. IPD流程的核心环节华为IPD流程分为六个核心环节,分别是:需求分析、产品规划、系统设计、详细设计、开发与测试、上市管理。
3.1 需求分析需求分析是IPD流程的起点,主要包括市场调研、客户需求收集与分析、竞争分析等内容。
此阶段的目标是明确产品需求,为后续的产品规划提供依据。
3.2 产品规划产品规划主要包括产品愿景、目标市场、产品策略等内容。
此阶段需要结合公司战略,对产品进行全生命周期的规划。
3.3 系统设计系统设计阶段主要包括总体设计、架构设计、模块划分等内容。
此阶段的目标是明确产品的技术方案和架构,为详细设计提供基础。
3.4 详细设计详细设计阶段主要包括模块设计、接口定义、算法设计等内容。
此阶段需要细化到每个模块的具体实现,确保开发阶段的顺利进行。
3.5 开发与测试开发与测试阶段主要包括编码、单元测试、集成测试、系统测试等内容。
此阶段需要保证产品的功能性、稳定性和性能要求。
3.6 上市管理上市管理阶段主要包括产品发布、市场推广、售后服务等内容。
此阶段需要确保产品能够顺利进入市场,并取得良好的市场表现。
4. IPD流程的实施与优化4.1 IPD流程的实施华为通过建立跨部门团队、制定详细的流程文档、开展培训和监督等方式,确保IPD流程在企业内部顺利实施。
软件开发及文档培训(仅供内部使用)深圳市华为技术有限公司版权所有侵权必究1 软件开发过程介绍华为公司的软件开发过程基本上由以下几个开发过程组成: •系统需求分析过程•系统设计过程•软件需求分析过程•软件概要设计过程•软件详细设计过程•软件编码和单元测试过程•软件集成与集成测试过程•系统集成和系统集成测试过程•系统验收测试过程•软件维护过程图一. 软件开发相关的过程示意图:各软件开发过程中应该输出的文档如下软件开发过程输出文档名称文档模板系统需求分析操作概念文档OCD系统/子系统需求规格书SSSIRS系统/子系统接口需求规格书系统结构设计系统/子系统设计描述SSDDIDD系统/子系统接口设计描述软件需求分析软件需求规格书SRS接口需求规格书IRS软件概要设计软件设计描述SDD接口设计描述IDD数据库设计描述DBDD 软件详细设计2. 软件开发过程详细要求2.1系统需求分析开发者应该根据以下要求参与系统需求分析。
注:如果一个系统分成多个版本开发,可能直到最后一个版本需求才能完全定义。
开发者的计划中应该定义在每个版本中确定的需求子集,每个版本中实现的需求子集。
某个版本的需求分析应该理解为定义那个版本的系统需求。
2.1.1 分析用户的输入开发者应该通过分析用户的输入来理解用户的需求。
这个输入的形式可能是需求报告单、调查、问题/修改报告,原型的反馈,访谈或其他用户或反馈。
2.1.2 操作概念开发者应该参与定义和记录系统的操作概念。
结果应该包括在《操作概念描述(OCD)》文档模板中的所有条目。
2.1.3 系统需求开发者应该参与定义和记录系统应该满足的需求以及验证每个需求已经被满足的方法。
结果应在包括《系统/子系统规格说明书(SSS)》中的所有可能的条目。
根据实际情况,有关系统接口的需求可以在SSS中规定或者在《接口需求规格说明书(IRSs)》中规定。
注:如果一个系统由子系统组成,系统需求分析)中的活动应该同系统设计中的活动叠代进行。
定义系统的需求,设计系统并定义它的子系统,定义这些子系统的需求,设计子系统并定义他们的部件,如此下去。
2.2系统的设计开发者应该按照下列要求参与系统的设计。
注:如果系统分成多个版本开发,系统的设计可能要等到最后一个版本才完成。
开发者的计划中应该定义每个版本中所要完成的设计。
一个特定版本的设计应理解为那个版本中应完成的设计内容。
2.2.1 系统范围的设计决定(System-wide design decisions)开发者应该参与定义和记录系统范围的设计决定(这就是,有关系统运行设计和其它影响到系统部件选择、设计的决定)。
结果应该包括《系统/子系统设计说明书(SSDD)》模板中有关系统范围设计决定的所有内容。
根据实际情况,有关接口的设计可以包括在SSDD中或者《接口设计说明书》中,有关数据库的设计可以包括在SSDD或者《数据库设计说明书(DBDDs)》中。
注:除非在需求中有明确的规定,设计一般由开发者负责。
开发要满足所有的需求并通过系统集成测试来证明需求得到了满足。
2.1.2系统结构设计(System architectural design)开发者应该参与定义和记录系统的结构设计(定义系统的部件,它们的接口,以及它们之间的运行概念)以及系统部件同系统需求之间的跟踪关系。
结果应该包括《系统/子系统设计说明书(SSDD)》中有关结构设计及跟踪性的部分的所有条目。
根据需要,有关接口的设计可以包括在SSDDs或《接口设计说明书》中。
2.3 软件需求分析(Software requirements analysis)开发者应该定义和记录每个CSCI应该满足的软件需求,验证每个需求是否完成的方法,以及CSCI需求同系统需求之间的跟踪关系。
结果应该包括《软件需求规格说明书(SRS)》中所有的条目。
根据需要,CSCIs接口的需求可以包括在SRS中或《接口需求规格说明书(IRSs)》中。
注:如果一个CSCI分成多个版本开发,需求可能要到最后一个版本才能完全定义。
开发者的计划中应该说明每个版本中每个CSCI需求的子集。
2.4 软件设计开发者应该根据以下要求进行软件的设计。
注意:如果一个CSCI分成多个版本开发,可能需要等到最后一个版本才能完全设计完毕。
每个版本的软件设计应该理解为为了实现这个版本的需求而进行的设计。
2.4.1 CSCI范围的设计决定(CSCI-wide design decision).开发者应该定义和记录CSCI范围的设计决定(这就是,有关CSCI的运行设计和其它影响到构成CSCI的软件单元选择和设计的设计决定)。
结果应该包括《软件设计说明书(SDD)》中有关CSCI范围设计决定的所有项目。
根据需要,有关接口的设计内容可以包括在SDD中,也可以安排在《接口设计说明书》中。
有关数据库的设计可以安排在《数据库设计说明书》中。
2.4.2 CSCI结构设计(CSCI architectural design)。
开发者应该定义和记录每个CSCI的结构设计(定义构成CSCI的软件单元,它们的接口,它们之间的运行概念)以及软件单元CSCI需求的跟踪关系。
结果应该包括《软件设计说明书》中有关结构设计及跟踪性的所有项目.根据实际需要,有关接口的设计内容可以包括在《接口设计说明书》中。
注意:如果软件单元又有其它软件单元组成,则CSCI的结构可以根据需要组成多个层次。
例如。
一个CSCI可以被分成三个软件单元,上述每个软件单元又可以分成其他的软件单元,如此下去。
2.4.2 CSCI的详细设计(CSCI detailed design)开发者应该开发和记录每个软件单元的设计描述。
结果应该包括《软件设计说明书》模板的所有项目。
根据需要,接口的内容可以在《接口设计说明书》中,有关数据库访问和操作的软件单元可以安排在《数据库设计说明书》中。
2.5 软件编码与单元测试开发者应根据以下要求进行软件单元实现和测试。
注意:“软件”的含义即包括计算机程序也包括计算机数据库。
“实现"的含义为将软件实现转换为计算机程序和计算机数据库。
如果一个CSCI的开发分成多个版本,软件实现、和单元测试可能要到最后一个版本才能完成。
每个版本的软件实现和单元测试指在那个版本中需要实现的软件单元或部分软件单元。
2.5.1 软件实现开发者应该开发和记录CSCI设计中的每个软件单元。
这些活动应该包括,编码、数据定义、构造数据库,给数据库或其他数据文件赋值以及其他实现设计所需要的活动。
注意:设计中的软件单元不一定与实现它们的代码和数据实体有一一对应的关系。
2.5.2 单元测试准备开发者应该建立测试用例(按照输入、预期输出和评价标准)、测试过程和测试数据来测试每个软件单元。
测试用例应该覆盖单元详细设计的所有方面。
开发者应该将这些信息记录在相应的软件开发文件中。
2.5.3 进行单元测试开发者应该测试每个软件单元对应的软件。
这些测试应该按照单元测试用例和测试过程进行。
2.5.4 修正和回归测试开发者应该根据单元测试的结果进行所需的修正并进行回归测试,更新相关的软件开发文件。
2.5.5 分析和记录单元测试的结果开发者应该分析单元测试的结果并将测试和分析结果记录在相应的软件开发文件中。
2.6 单元集成和测试开发者应该根据以下要求进行单元集成和测试。
注意1:单元集成和测试指将两个或多个软件单元集成起来,通过测试保证它们在一起工作正常,继续这个过程直到每个CSCI中的软件单元都集成和测试过。
因为一个软件单元可能由其它单元组成,一些集成测试在单元测试过程中就可以完成,这里不要求重复这些测试活动。
如果一个CSCI分成多个版本开发,CSCI的单元集成和测试可能要等到最后一个版本才能完成。
2.6.1 单元集成和测试的准备开发者应该建立单元集成和测试的测试用例、测试过程和测试数据(按照输入、预期结果和评价标准)。
测试用例应该覆盖CSCI范围和CSCI结构设计的所有方面。
开发者应该将这些信息记录在相应的软件开发文件中。
2.6.2 进行单元集成和测试开发者应该进行单元集成和测试,测试应该按照单元集成测试用例和过程进行。
2.6.3 修正和回归测试开发者应该根据单元集成和测试的结果修正软件并进行回归测试,更新软件开发文件及其他所需的软件产品。
2.6.4 分析、记录单元集成和测试的结果开发者应该分析单元集成和测试的结果并记录在相应的软件开发文件中。
2.7 CSCI/HWCI的集成和测试开发者应该根据以下要求参加CSCI/HWCI(软件配置项/硬件配置项)的集成和测试活动。
注意1:CSCI/HWCI集成和测试的含义是将CSCI和与之有接口的HWCI、CSCI结合,通过测试来验证它们在一起工作是否正常。
连续进行这个过程,直到系统中所有CSCI和HWCI都已经集成并进行测试过。
这个集成测试的最后阶段是开发者内部的系统测试。
注意2:如果一个系统CSCI分成多个版本开发,CSCI/HWCI集成和测试可能要到最后一个版本才完成。
某个版本的CSCI/HWCI的含义为此版本中的CSCI和此版本中HWCI进行测试以保证这个版本的系统需求得到了实现。
2.7.1 准备CSCI/HWCI的集成和测试开发者应该参与开发和记录CSCI/HWCI集成和测试的测试用例(根据输入、预期输出和评价标准)、测试过程。
测试用例应该覆盖系统范围设计和系统结构设计的所有方面。
开发者应该将软件相关信息记录在软件开发文件中。
2.7.2 进行CSCI/HWCI集成和测试开发者应该参加CSCI/HWCI的集成和测试。
测试应该按照CSCI/HWCI集成测试用例和测试过程进行。
2.7.3 修正和重新测试根据CSCI/HWCI集成和测试的结果,开发者应该做所需要的修正,参加所有需要的重新测试,更新相应的软件开发文件和其他软件产品。
2.7.4 分析和记录CSCI/HWCI集成和测试的结果开发者应该参加分析CSCI/HWCI集成测试的结果。
软件相关的分析和测试结果应该记录在相应的软件开发文件中。
2.8 系统测试开发者应该根据以下要求参加系统测试。
注意1:系统测试用来给用户演示系统需求已经得到满足。
它覆盖《系统/子系统规格说明书(SSS)》中的系统需求和相关的接口需求。
这个测试和集成测试的最后阶段在开发者内部进行的系统测试不同。
注意2:如果系统分成多个版本开发,完整的系统测试可能在最后一个版本才遇到。
每个版本的质量测试应该理解为为了验证此版本的需求已经得到满足而进行的测试。
2.8.1 系统测试中的独立性负责系统测试的人不应该是进行详细设计或软件实现的人。
这并不排除负责详细设计或实现的人对这个过程作出贡献,例如:提供需要了解系统内部实现的测试用例。
2.8.2 在目标计算机上的测试开发者的系统测试应该包括在目标计算机(或其它用户同意的系统)上的测试。