需求分析|学习笔记

简介: 快速学习需求分析

开发者学堂课程【高校精品课-厦门大学 -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层,及时里面是空的方法。

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

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

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

这是设计的原则。

相关文章
|
SQL 运维 监控
SLS 数据加工全面升级,集成 SPL 语法
在系统开发、运维过程中,日志是最重要的信息之一,其最大的优点是简单直接。SLS 数据加工功能旨在解决非结构化的日志数据处理,当前全面升级,集成 SPL 语言、更强的数据处理性能、更优的使用成本。
18434 243
|
数据安全/隐私保护 UED
免费OA办公系统的实力派:点晴OA
点晴OA办公系统是一款面向中小企业的办公自动化解决方案,旨在提高工作效率和优化管理流程。它通过提供多维度的功能模块结构、高度的定制化能力、友好的用户界面以及安全可靠的数据保护机制,满足企业日常办公的多样化需求。以下是关于点晴OA办公系统的详细介绍:
207 0
|
测试技术 PHP 开发工具
深入解析 Laravel 中的 Composer Lock 文件
【8月更文挑战第31天】
344 0
|
Kubernetes 网络协议 Linux
docker镜像仓库hub.docker.com无法访问-解决办法
docker镜像仓库hub.docker.com无法访问-解决办法1 个人镜像站点2 dockerhub为什么无法访问2.1 查看dockerhub实际IP2.2 ping检测3 镜像加速3.1 使用国内镜像加速3.1.1 docker配置:3.1.2 containerd配置:3.2 使用博主个人镜像仓库3.2.1 目前有如下镜像仓库,后续会陆续增加3.2.2 使用方式3.2.3 拉取镜像
9022 3
docker镜像仓库hub.docker.com无法访问-解决办法
|
关系型数据库 MySQL 数据库
连接mysql报Access denied for user 'root'@'localhost'错误的解决办法
连接mysql报Access denied for user 'root'@'localhost'错误的解决办法
1320 0
|
JavaScript 定位技术
部分移动端独有的JS事件
部分移动端独有的JS事件
150 0
|
小程序 容器
【微信小程序】全局样式文件app.wxss、页面的根元素page、 app.json中的window配置项
哈喽大家好,本期是微信小程序专栏第七期,本期主要是通过设置页面背景颜色、设置导航栏颜色来学习全局样式文件app.wxss、页面的根元素page、 app.json中的window配置项。
|
自然语言处理 运维 搜索推荐
内容社区行业搜索最佳实践
社区内容通常包括UGC和PGC。由于关键词和内容多样性丰富、用词规范程度参差不齐,搜索引擎需要对关键词和内容进行智能语义分析,识别出用户真正的查询意图,找到最全面最相关的结果满足用户需求。本文将详细介绍如何通过“开放搜索(OpenSearch)内容增强版”在社区论坛场景的应用,提升用户搜索体验,带来更多的业务转化
1131 0
|
关系型数据库 MySQL
MySql范围值检查
MySql范围值检查
129 0
|
存储 监控 算法
接口测试该怎么做?持证上岗的Charles,可以帮你做什么?
上篇文章,我们感受到tcpdump与wireshark的组合之美,原来工具与工具之前不只竞争,还有合作,你是否还记得上篇文章中有一个伏笔,那就是代理工具:charles。本文章针对charles进行讲解,带你继续体验接口测试之旅。 charles是一个优雅的名子,你可以称呼它:查尔斯先生。它是一个网络的管理员,你的任何http/https网络消息,都要经过查尔斯先生审核,如果你和查尔斯先生关系好