# 课程介绍，MVP，瀑布与敏捷

#### 任务1：课程介绍

**课程目标：**

1、进一步理解 ASP.NET Core 授权认证框架、MVC 管道

2、掌握 Oauth2，结合 Identity Sercer4 实现 OAuth2 和 OpenID Connect Server

3、掌握 ASP.NET Core 与 Redis, MongoDB, RabitMQ, MySQL 配合使用

4、理解 DDD，学会在项目进行领域分析与建模并使用 CQRS 进行项目开发

5、掌握 Docker，并能够利用 Docker + GitLab CI/CD 快速部署整套测试环境

**面向群体：**

已经掌握 ASP.NET Core 基本知识，并想通过项目实战成为现代互联网企业接轨的 ASP.NET Core 高级开发人员

#### 任务2：最小可行化产品MVP

MVP 是一种避免开发出客户并不真正需要的产品的开发策略，它是快速地构建出符合产品预期功能的最小功能集合，并通过迭代来完善，让开发团队用最小的代价实现一个产品，以此最大程度上了解和验证对用户问题的解决程度

我们需要在最小化和可用性之间找到一个平衡点，既不是要把所有的功能都加进来，也不是说开发越少功能越好，在一个版本推出的时候，至少要满足用户的一些需求

构建 => 测量 => 学习，形成反馈闭环，在这个过程中以用户问题为中心，而不是以解决方案为中心；着眼于基本的客户需求，通过客户反馈，逐步修正产品设计和实现；在各个迭代过程中，做出来的产品始终是可为客户所用的产品

#### 任务3：两种软件开发模式：瀑布与敏捷

**瀑布：**

分阶段，每个阶段非常清晰，从计划，开发，到上线，整个过程非常清晰；每一个阶段包括：问题定义，可行性研究，需求分析，软件设计，编码，测试，维护；上一个阶段必须有产出物，拿到之后才能进入下一个阶段；整个周期大概是半年到一年之间

可能会出现的问题：早期需求花费非常多的时间，因为如果需求没有确定好的话，后期开发过程中就可能需要回过头去改设计，对整体架构产生非常大的影响

特点：里程碑，强调文档，强调分工，避免变化，谈判与计划

**敏捷：**

特点：迭代，可以工作的软件胜过面面俱到的文档，协助，沟通，拥抱变化，与客户合作

Scrum：角色，工件，活动

角色

* Product Owner 产品负责人
* Scrum 主管 Scrum Master
* 开发团队 Team

工件

* 用户故事 UserStory
* 产品订单 Product Backlog
* 冲刺订单 Sprint Backlog
* 冲刺燃尽图 Burndown Chart

活动

* 计划会 Sprint Planning Meeting
* 每日立会 Daily Standup Meeting
* 评审会 Review Meeting
* 反思会/回顾会 Restrospective Meeting
