# RGCA 四步架构法

## RGCA <a href="#rgca" id="rgca"></a>

* Requirement：从利益相关者获取需求
* Goal：将需求转化为目标（功能意图）
* Concept：将目标扩展为完整概念
* Architecture：将概念扩展为架构

## 目录 <a href="#mu-lu" id="mu-lu"></a>

* 从利益相关者获取需求
* 将需求转化为目标
* 将目标扩展为完整概念

### 从利益相关者获取需求 <a href="#cong-li-yi-xiang-guan-zhe-huo-qu-xu-qiu" id="cong-li-yi-xiang-guan-zhe-huo-qu-xu-qiu"></a>

* 有哪些类型的利益相关者
* 利益相关者需求
* 需求分类与排序
* 需求的特征

#### 有哪些类型的利益相关者 <a href="#you-na-xie-lei-xing-de-li-yi-xiang-guan-zhe" id="you-na-xie-lei-xing-de-li-yi-xiang-guan-zhe"></a>

| 利益相关方 | 关注系统的事物和对象          | -                        |
| ----- | ------------------- | ------------------------ |
| 投资方   | 有助于解决问题的利益相关者       | 投资人微软、微软股东等              |
| 受益者   | 从系统受益的利益相关方         | 客户、程序员                   |
| 客户    | 订购系统或购卖系统的利益相关方     | 使用 ASP .NET Core 开发应该的组织 |
| 用户    | 直接操作使用系统的利益相关方      | C# 程序员                   |
| 供应商   | 开发、支持和管理系统或商品的利益相关方 |                          |

#### 利益相关者需求 <a href="#li-yi-xiang-guan-zhe-xu-qiu" id="li-yi-xiang-guan-zhe-xu-qiu"></a>

| 利益相关方 | 投资人微软、微软股东等              | -                                                   |
| ----- | ------------------------ | --------------------------------------------------- |
| 受益者   | 投资人                      | 通过框架吸引 C# 开发者，为开发工具 VisualStudio 和 Azure 云带去收入      |
| 客户    | 使用 ASP .NET Core 开发应用的组织 | 低成本，开发高质量、可靠的产品产生收入；可以快速开发 WEB 应用程序                 |
| 用户    | C# 程序员                   | 提供尽可能多的基础功能支持（日志功能、配置功能、安全方功能）；提供尽可能好的性能支持；支持通过容器部署 |
| 供应商   | -                        | 集成 EF Core                                          |

#### 需求分类与排序 <a href="#xu-qiu-fen-lei-yu-pai-xu" id="xu-qiu-fen-lei-yu-pai-xu"></a>

| 分类              | -                                              |
| --------------- | ---------------------------------------------- |
| 总体的意愿           | 通过框架吸引 C# 开发者，为开发工具 VisualStudio 和 Azure 云带去收入 |
| 总体的意愿           | 通过框架提升开发人员效率、降低成本、开发高质量、可靠的产品产生收入              |
| 必需品             | 可以快速开发 WEB 应用程序                                |
| 对缺失物品表现出的欲望     | 提供尽可能多的基础功能支持（日志功能、配置功能、安全方功能）                 |
| 提供尽可能多的性能支持     |                                                |
| 支持在不同的操作系统平台上运行 |                                                |
| 支持通过容器部署        |                                                |

#### 需求的特征 <a href="#xu-qiu-de-te-zheng" id="xu-qiu-de-te-zheng"></a>

| 分类              | -                                              | 受益强度 | 危害 | 重视程度 | 耦合度 | 选择能力 | KANO分类 |
| --------------- | ---------------------------------------------- | ---- | -- | ---- | --- | ---- | ------ |
| 总体的意愿           | 通过框架吸引 C# 开发者，为开发工具 VisualStudio 和 Azure 云带去收入 |      |    |      |     |      |        |
| 总体的意愿           | 通过框架提升开发人员效率、降低成本、开发高质量、可靠的产品产生收入              |      |    |      |     |      |        |
| 必需品             | 可以快速开发 WEB 应用程序                                |      |    |      |     |      |        |
| 对缺失物品表现出的欲望     | 提供尽可能多的基础功能支持（日志功能、配置功能、安全方功能）                 |      |    |      |     |      |        |
| 提供尽可能多的性能支持     |                                                |      |    |      |     |      |        |
| 支持在不同的操作系统平台上运行 |                                                |      |    |      |     |      |        |
| 支持通过容器部署        |                                                |      |    |      |     |      |        |

KANO分类：基本型；期望型；兴奋型；无差异型；反向型

### 将需求转化为目标 <a href="#jiang-xu-qiu-zhuan-hua-wei-mu-biao" id="jiang-xu-qiu-zhuan-hua-wei-mu-biao"></a>

To...By...Using

为了...通过...使用

ASP .NET Core：为了能够简单方便地输出响应信息给请求，通过写一段代码创建响应内容，使用 ASP .NET Core

#### 目标陈述 <a href="#mu-biao-chen-shu" id="mu-biao-chen-shu"></a>

| -           | ASP .NET Core |
| ----------- | ------------- |
| 与解决方案无关操作对象 | 网络请求          |
| 与利益相关属性     | 响应体           |
| 解决方案无关过程    | 改变            |
| 过程的属性       | 简易性           |

![](https://3083743005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8gwpNo3eyzHkX0O40HRA%2Fuploads%2FjVycw46zADsubFBJwXbY%2F287.jpg?alt=media\&token=04fe0b20-3db0-4d3b-817e-c5a386d1fc60)

### 将目标扩展为完整概念 <a href="#jiang-mu-biao-kuo-zhan-wei-wan-zheng-gai-nian" id="jiang-mu-biao-kuo-zhan-wei-wan-zheng-gai-nian"></a>

* 扩充概念之特化
* 扩充概念之向下放大
* 扩充概念之向上整合

#### 扩充概念之特化 <a href="#kuo-chong-gai-nian-zhi-te-hua" id="kuo-chong-gai-nian-zhi-te-hua"></a>

| -           | ASP .NET Core                |
| ----------- | ---------------------------- |
| 与解决方案无关操作对象 | 网络请求                         |
| 与利益相关属性     | 响应体                          |
| 解决方案无关过程    | 改变                           |
| 过程的属性       | 简易性                          |
| 解决方案相关的操作对象 | HTTP 请求；WebSocket 请求；Grpc 请求 |

![](https://3083743005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8gwpNo3eyzHkX0O40HRA%2Fuploads%2FCY1Y2mRkwSVisMDnxKmx%2F288.jpg?alt=media\&token=081ce321-2717-4f95-be02-b47d57b9777c)

#### 扩充概念之向下放大 <a href="#kuo-chong-gai-nian-zhi-xiang-xia-fang-da" id="kuo-chong-gai-nian-zhi-xiang-xia-fang-da"></a>

| 概念 | 概念描述                                               | 无关操作对象 | 利益相关属性 | 无关过程 |
| -- | -------------------------------------------------- | ------ | ------ | ---- |
| 监听 | 为了长时间接收网络请求，通过在服务端持续监听端口，在有请求进入时可以对其进行处理。使用网络监听器   | 原始网络请求 | 状态     | 建立连接 |
| 解析 | 为了让程序员写的代码能够简单访问网络请求中的信息，通过对原始网络请求进行协议格式转换，使用协议解析器 | 原始网络请求 | 格式     | 转换   |
| 处理 | -                                                  | 请求响应体  | 内容     | 写入   |
| 返回 | -                                                  | 原始网络请求 | 格式     | 转换   |

![](https://3083743005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8gwpNo3eyzHkX0O40HRA%2Fuploads%2FMU9F4z84qbRQhpgHUgu9%2F289.jpg?alt=media\&token=b9e0973c-60bf-47b6-9dde-7592e2d12a0c)

#### 扩充概念之向上整合 <a href="#kuo-chong-gai-nian-zhi-xiang-shang-zheng-he" id="kuo-chong-gai-nian-zhi-xiang-shang-zheng-he"></a>

![](https://3083743005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8gwpNo3eyzHkX0O40HRA%2Fuploads%2FijvifXyx7GhW2Ur3BYDZ%2F290.jpg?alt=media\&token=2d00348f-8239-438b-b660-3a5c5587085c)

**作业**

尝试在我们已经找到的1级4个子过程基础之上，挑一个过程进行向下推演直到类级别
