# XXX软件特性提案模板

## 1 简介

> REPLACE ME:对本文档进行简单描述，涉及什么子系统、组件，要解决什么需求或问题等。

## 2 需求分析

### 2.1 需求描述

> REPLACE ME:对本提案的需求进行描述，实现什么需求，解决什么问题。如有需求Issue链接，请提供Issue链接。

### 2.2 需求分析

> REPLACE ME:使用用例(Use Case)以及场景分析需求。 利用Use Case图描述功能需求，并给出每个用例的文字说明。用例的Actor可以是用户，也可以是本文档描述的对象外部周边模块。对于用户Actor，需要从给用户带来的价值角度识别用例，不能把实现一个完整功能的中间步骤当作用例。对于外部模块Actor，可以从功能接口角度识别用例。

### 2.3 需求规格

> REPLACE ME:描述需求涉及的关键技术指标，性能，功耗和内存等指标。

## 3 软件系统设计

> REPLACE ME:本章节描述系统功能如何被分解到模块或子系统中，各个模块如何协调工作实现系统功能（必要时可以描述其它系统分解方法为何没有被采纳）。

### 3.1 现有技术

> REPLACE ME:描述分析现有技术，例如：相同领域中其他解决方案是如何解决这个问题？是否有任何已发表的论文或重要的帖子讨论过这个问题？如果你有一些相关的论文可以参考，这可以作为更详细的理论背景。本节旨在鼓励您洞察其他平台的经验知识，为审核者提供更全面的了解。如果没有现有技术，无论它们是全新的还是从其他业务改造而产生，那说明您的想法很有创新性。

### 3.2 设计思路

> REPLACE ME:若针对具体问题的方案设计存在多套解决方案，则在此处一一描述，并比较优劣，给出最后选择的原因。

### 3.3 系统架构

#### 3.3.1 软件系统上下文关系

> REPLACE ME:明确对外部的依赖，以及[组件、部件、模块](https://gitee.com/openharmony/docs/blob/master/zh-cn/design/OpenHarmony%E9%83%A8%E4%BB%B6%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.md)间的依赖关系，描述本软件系统在对应架构设计框图、在系统中的位置。描述本软件系统如何与周边系统一起组成一个完整系统，重点在于描述本设计牵涉的软件子系统在系统中的位置（可以用软件结构框图描述）。描述待开发软件系统与周边系统的交互，只需要画出与本模块有交互关系的模块即可，也需要体现各软件模块所属的层次，并使用连线表示模块间的交互关系。

#### 3.3.2 系统架构说明

> REPLACE ME:描述系统的主要业务处理流程，系统实现架构的逻辑视图。可以使用UML交互图描述各子系统/模块间是如何交互协作完成本软件系统功能的。

#### 3.3.3 模块划分

> REPLACE ME:使用逻辑模型将本文的设计对象划分为几个大的子系统或模块，是一种软件结构的静态视图。可以使用软件框图或者UML组件图描述系统结构，要体现各模块所属的软件层次。需要有文字说明设计思路，并描述每个子模块的功能。

### 3.4 模块功能描述

> REPLACE ME: 本节描述系统中的子系统和模块或者类。

#### 3.4.1 模块/子系统1功能描述

> REPLACE ME: 针对划分好的子系统或模块，进一步做分解描述。使用类图说明各个子模块分解，并使用文字描述每个类的主要功能。对于复杂的子系统/模块，可使用UML交互图描述各个类之间是如何交互协作完成本子系统/模块功能的。

#### 3.4.2 模块/子系统2功能描述

> REPLACE ME: 同上。

### 3.5 业务/实现流程说明

> REPLACE ME: 这里使用顺序图针对Use Case图中的每个用例，说明其业务处理流程。 顺序图中的参与对象使用类，不使用子系统/模块。

### 3.6 接口描述

> REPLACE ME:本节描述软件系统中子系统，模块接口，接口描述可以使用接口文件，参数表等。 变更或新增接口此项必选。

#### 3.6.1 调用接口

> REPLACE ME:描述本模块使用到的周边模块的关键业务接口，可以不写模块内部的接口。如涉及HDI等外部标准接口，提供相关说明。

> | 编号             | 接口函数   | 输入                           | 输出                           | 返回值         | 接口具体描述           | 接口范围        |
> | -------------- | ------ | ---------------------------- | ---------------------------- | ----------- | ---------------- | ----------- |
> | 本提案自定义编号_00001 | 具体接口函数 | 具体输入参数及类型、使用方法，若涉及多个输入，可分列给出 | 具体输出参数及类型、使用方法，若涉及多个输出，可分列给出 | 函数返回类型、使用方法 | 总体描述接口的实现目的和使用方法 | 跨模块/跨子系统/…… |
> | 本提案自定义编号_00001 |        |                              |                              |             |                  |             |

#### 3.6.2 提供接口

> REPLACE ME:描述本模块提供给周边模块的关键业务接口，可以不写模块内部的接口。

> | 编号             | 接口函数   | 输入                           | 输出                           | 返回值         | 接口具体描述           | 接口范围        |
> | -------------- | ------ | ---------------------------- | ---------------------------- | ----------- | ---------------- | ----------- |
> | 本提案自定义编号_00001 | 具体接口函数 | 具体输入参数及类型、使用方法，若涉及多个输入，可分列给出 | 具体输出参数及类型、使用方法，若涉及多个输出，可分列给出 | 函数返回类型、使用方法 | 总体描述接口的实现目的和使用方法 | 跨模块/跨子系统/…… |
> | 本提案自定义编号_00001 |        |                              |                              |             |                  |             |

## 4 非功能设计

### 4.1 可靠性设计

> REPLACE ME: 需明确回答以下问题：

> 1、 该提案对应模块产生的故障分类（包括：模块内故障、模块间故障、外部输入故障）及对用户造成的影响；

> 2、 针对不同的故障类型，给出对应的检测方案、维测方案、特征日志采集和大小；

> 3、 考虑故障的容错和恢复机制；

> 4、 如何测试以确保可靠性设计生效。

### 4.2 兼容性设计

> REPLACE ME:

> 1. 保证整个设计不破坏原有架构和接口；

> 2. 版本间前后兼容，补充升级场景设计，分析设计升级兼容性；

> 3. 兼容各种芯片平台。

### 4.3 可测试性设计

> REPLACE ME:针对本提案提供测试方法，如：使用业界成熟或自行开发工具进行测试。 自动化测试设计，此部分为新方案的必须选项，不可省略。

### 4.4 安全设计

> REPLACE ME: 此部分为新方案的必须选项，不可省略。针对该提案进行安全设计时，请排查如下安全相关的检查项：
> 
> | 检查项                                                                        | 是否涉及 | 如涉及，给出详细信息 |
> | -------------------------------------------------------------------------- | ---- | ---------- |
> | 是否涉及新增服务？如果是，需要给出服务整体权限管控和API权限管控设计信息（包含但不限于AccessToken校验、UID校验、selinux校验等） |      |            |
> | 是否涉及新增跨进程API？如果是，需要给出API权限管控设计信息（包含但不限于AccessToken校验、UID校验、selinux校验等）      |      |            |
> | 是否涉及新增文件或内核节点？如果是，需要给出文件的权限信息（UGO和selinux）                                 |      |            |
> | 是否使用了加密算法？如果是，需要给出详细加密算法规格和相关秘钥信息                                          |      |            |
> | 是否涉及分布式场景？如果是，需要给出相关安全能力是完全依赖系统原有能力，还是有独立设计                                |      |            |
> | 是否涉及系统安全能力变更？如果是，需要到安全SIG评审                                                |      |            |
> | 是否涉及个人数据处理或云端交互逻辑？如果是，需要到安全SIG评审                                           |      |            |
