需求分析|学习笔记

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 快速学习需求分析

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术需求分析学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15969


需求分析


内容介绍

一、权限系统列出的一些需要实现的需求是什么。

二、技术要求


权限系统的需求不用用例分析。有些需求是需要用例分析的,看什么样的人使用这个系统干什么。但是有些系统是不需要用例分析的,例如权限系统。

为什么不需要用例分析,因为它非常简单,就是一个管的人和一个被管的人。被管的人就是什么能做什么不能做。管的人就是管着她什么可以做,什么不可以做。所以基本上就不用用例去分,就是两个人。这样简单的需求,形式是简单的,最后用需求列表描述需求。所以需求分析不仅仅是用用例分析的一种方式,有时候会觉得

不需要做用例分析,那就直接用列表的方式把需求列出来。

 

一、权限系统列出的一些需要实现的需求是什么。

1、实现JWT登录。

接到登录是什么?就是在登录的时候需要输入用户名和密码,或者使用第三方登录,微信登录、学校统一身份认证登录等。这是登录的一种形式,用户名密码还是

微信登录,但是登录之后怎么知道你是谁呢?

在很早之前,在服务器上面始终记住你是谁。因为 GDP 协议有很大的问题,就是它是无状态的协议。先登录了用户名密码,然后再来就不知道登录过了。所以之前的做法就是在服务器上面留了一个绘画,这个绘画就会记住之前登录过了,下次来

的时候还会找这个绘画,去看登录过还是没有登录过,登录过是谁。

这样的一种方案有一个很大的弊病,当用户过多时,服务器容易崩。因为每一个用

户都要在内存里面占一小块,它的极限就是用户的上限。

如果用户上百万、千万的话,没有服务器可以承受。所以如今采用的方式不是这样的,使用令牌的方式。就是登录之后给一个硬盘,然后每次拿着令牌来,从令牌来

知道是谁。

令牌是防伪的,例如给一个通行证,通行证是防伪的,自己也改不了,甚至都不知道里面写的是什么,只能讲其拿到网站,网站知道写的是什么,知道有没有改过。

这就是 JWT 的方式。

今天大概所有的系统基本上都是采用 JWT 的方式,它的好处在于服务器上面不需要留存任何东西。在登录成功之后,不管是用户名密码登录还是微信账号登录,但是

登录成功之后发给一个令牌。这个令牌是加密的、防伪的、防篡改的。

只拿这个东西,什么都不能干,每次拿这个东西过来,解出来之后知道是谁。这是

第一个实现的功能,JWT 的认证方式。

2、支持唯一登录,即一个账号只能登录在一台设备上登录。

同一个用户在两个机器上面同时登录的话,将另外一个踢出去,这是支持唯一登

录,当然也可以不支持,也可以做接换的。

3、支持基于角色的权限管理

权限本来是属于个人用户的,但是力度太小,所以在中间加了角色的概念。例如:买东西的管理者会分成很多个角色,有些人负责商品,有些人做售后,有些人专门负责调整价格。这就是不同的角色,权限是给这个角色的,用户是拥有什么样的角色从而拥有权限。所以权限不是指定给用户的,这个称之为基于权限的管理。当然

用户可以拥有多个角色,可以既是上架的,又是调整价格的。拥有两类的权限,而一个用户是可以多个角色的。

4、支持用户的权限代理

例如:十一需要出去度假,出去度假5天,那么工作就不能干了。但是可以将工作

交给另外一个人在5天之内可以使用权限做所有的事情。这个叫做权限的代理机制。让别人代理自己的权限,一段时间可以用它的权限干事情。

5、支持用户的正常和失败的访问机制

正常和失败的访问机制需要记下来,这不仅仅是功能需求其实还是性能需求。可能会想为什么去日志,有人会想计入数据库。但这是不行的,因为数据库太慢,所谓的用户堆上来之后记个日志再干别的就完蛋了。有人会认为,一个人读一个人记录,这也是不行的,因为文件比数据库还慢。所以需要大家相办法,怎么进行日志的记录。来不影响性能。看起来是功能性的需求,其实是性能的需求。

6、支持多个网关并行工作

这是技术的需求。要求可以无限的横向扩展,就是当用户很多的时候,工作量最大的就是矫权限。不是清点用户、管理用户权限,这些压力都不大。最大的是每个用

户动一动都要去矫一下有没有这个权限。

要求实施矫正,而不是用户登录进去之后,他有多少权限,就不去矫了是不行的。因为在用的过程中管理员会实时更改权限,所以管理员原则上要求用户每做一个动作,每动一下就要检测一下在这个时候是不是有这个权限。因为权限是涉及安全

的。所以这个的压力很大,需要做到横向扩展。如果速度跟不上的话,就对其做横向扩展。

7、支持关键数据的加密以及放纂改

关键数据要加密防篡改。要加密的数据是隐私数据。例如用户的姓名,用户的电话

号码,用户的 Emil,密码(是需要加密的),没有用户的地址。

防篡改:这里是追求管的权限的,例如用户是什么角色,一个角色有什么样的角色。权限是怎样记录的,这些内容都需要防篡改。防止黑客万一攻击数据库内,将数据库中的值直接改掉,那么用户就有权限了。所以需要做到,即使用户攻击数据库内,也不能更改权限,只能将数据全部删除。只能做这样的操作,当然被删除的数据,是有备份的,至少不可能入侵之后去修改内容。如果在JWT安全内,最顶级的高手是悄悄的进去,悄悄的出来,别人都不知道。如果说进去了,被知道了,就

不厉害。目前就是防止悄悄的进去,悄悄的把数据改掉,之后悄悄的出来,什么都没有被发现。之后这个权限就被提了,所以对于权限的部分要做到防篡改的部分。

8、支持性能的度量

最后是支持性能的度量。性能度量是因为权限是在整个系统的大前门。所有后面的功能能不能做都要通过权限才能够过得去。所以在这道闸上加上性能的度量,就是说我们知道一个动作开始的时间是什么,也知道一个动作结束的时间是什么。所有的功能会花多长时间,在上面加上性能度量。加上度量之后就知道到底是哪个东西

卖掉了,这个东西是不是应该加更多的服务器,如果没有这样的度量,是没有办法做这样的判断的。这就是需求。

可以看到用列表的方式,里面既写了有功能需求,也写了有性能需求甚至非功能化

的需求。

然后会有些技术上面的要求:

 

二、技术要求

图片21.png

技术上的要求是要求严格的分层原则。因为这个是关系到这次的实现是迭代到演进

的实现方式。

这部分的设计是先做好,但是现在不可能一次到位做到微服务的结构,因为课程是在循序渐进的讲解,所以会将能够做的部分在已经设计好的结构上面做。这样就会使得对于整体的结构是有完整的规划的。做成严格的分层结构,例如:本来可以做成非严格的分层结构的但是目前不确定哪些东西会用数据库做,哪些东西会用redis做。所以做成严格的 controller、service层、dao 层和 mapper层的分层结构,无

论说这个东西要不要通过 dao层,都要通过 dao层,及时里面是空的方法。

这是从技术方面做了这样的要求,然后每一层做什么样的事情,做了一个分工。

不要求所有的同学自己的模块也要这样做,但是至少公共的模块这样做就会知道这样做的好处是什么,这样做的坏处是什么。然后在做自己模块的时候衡量到底是采取严格的分层结构还是采取分散的分层结构。但是这个模块是严格的分散结构。即

便是中间的层什么都不做,就是一串代码,也要把这个代码在这一层里面写出来。

这是设计的原则。

相关文章
|
算法 架构师 安全
需求分析和常见的需求问题解决
需求分析和常见的需求问题解决
111039 17
|
存储 测试技术 数据库
软件需求分析-复习指南(二)
软件需求分析-复习指南(二)
791 0
|
测试技术 数据安全/隐私保护
软件需求分析-复习指南(一)
软件需求分析-复习指南(一)
176 1
|
数据库
【系统分析】软件工程——概要设计和详细设计
【系统分析】软件工程——概要设计和详细设计
497 0
|
测试技术 项目管理 UED
如何进行需求分析?
做技术的同学对于需求应该是既爱又恨,一方面软件产品的源头来自于需求,另一方面日常工作中面对需求的不明确和经常变更,只能无能狂怒。日常的工作流中,需求分析和需求评审的结果往往决定了这个版本交付质量的好坏。
如何进行需求分析?
|
存储 供应链 测试技术
软件需求分析-复习指南(三)
软件需求分析-复习指南(三)
176 0
|
自然语言处理 数据可视化 测试技术
「需求分析」需求分析技术权威指南
「需求分析」需求分析技术权威指南
|
自然语言处理 数据可视化 架构师
「需求分析」业务架构师需求分析技术权威指南
「需求分析」业务架构师需求分析技术权威指南
|
负载均衡 前端开发 Java
案例开发-需求分析| 学习笔记
快速学习案例开发-需求分析。
案例开发-需求分析| 学习笔记
|
安全
【软件工程】——需求分析
【软件工程】——需求分析
102 0
【软件工程】——需求分析