没有合适的资源?快使用搜索试试~ 我知道了~
25丨实战二(上):针对非业务的通用框架开发,如何做需求分析和设计?1
需积分: 0 1 下载量 185 浏览量
2022-08-03
21:42:06
上传
评论
收藏 2.1MB PDF 举报
温馨提示
试读
14页
项目背景我们希望设计开发一个小的框架,能够获取接口调用的各种统计信息,比如,响应时间的最数(count)、频率(tps) 等,并且支持将统计结果以各种显示格式(
资源详情
资源评论
资源推荐
25 | 实战二(上):针对非业务的通用框架开发,如何做需求分析和
设计?
2019-12-30 王争
设计模式之美
进入课程
讲述:冯永吉
时长 11:57 大小 10.96M
上两节课中,我们讲了如何针对一个业务系统做需求分析、设计和实现,并且通过一个积分
兑换系统的开发,实践了之前学过的一些设计原则。接下来的两节课,我们再结合一个支持
各种统计规则的性能计数器项目,学习针对一个非业务的通用框架开发,如何来做需求分
析、设计和实现,同时学习如何灵活应用各种设计原则。
话不多说,让我们正式开始今天的内容吧!
项目背景
下载APP
我们希望设计开发一个小的框架,能够获取接口调用的各种统计信息,比如,响应时间的最
大值(max)、最小值(min)、平均值(avg)、百分位值(percentile)、接口调用次
数(count)、频率(tps) 等,并且支持将统计结果以各种显示格式(比如:JSON 格
式、网页格式、自定义显示格式等)输出到各种终端(Console 命令行、HTTP 网页、
Email、日志文件、自定义输出终端等),以方便查看。
我们假设这是真实项目中的一个开发需求,如果让你来负责开发这样一个通用的框架,应用
到各种业务系统中,支持实时计算、查看数据的统计信息,你会如何设计和实现呢?你可以
先自己主动思考一下,然后再来看我的分析思路。
需求分析
性能计数器作为一个跟业务无关的功能,我们完全可以把它开发成一个独立的框架或者类
库,集成到很多业务系统中。而作为可被复用的框架,除了功能性需求之外,非功能性需求
也非常重要。所以,接下来,我们从这两个方面来做需求分析。
1. 功能性需求分析
相对于一大长串的文字描述,人脑更容易理解短的、罗列的比较规整、分门别类的列表信
息。显然,刚才那段需求描述不符合这个规律。我们需要把它拆解成一个一个的“干条
条”。拆解之后我写在下面了,是不是看起来更加清晰、有条理?
除此之外,我们还可以借助设计产品的时候,经常用到的线框图,把最终数据的显示样式画
出来,会更加一目了然。具体的线框图如下所示:
接口统计信息:包括接口响应时间的统计信息,以及接口调用次数的统计信息等。
统计信息的类型:max、min、avg、percentile、count、tps 等。
统计信息显示格式:Json、Html、自定义显示格式。
统计信息显示终端:Console、Email、HTTP 网页、日志、自定义显示终端。
实际上,从线框图中,我们还能挖掘出了下面几个隐藏的需求。
2. 非功能性需求分析
对于这样一个通用的框架的开发,我们还需要考虑很多非功能性的需求。具体来讲,我总结
了以下几个比较重要的方面。
易用性听起来更像是一个评判产品的标准。没错,我们在开发这样一个技术框架的时候,也
要有产品意识。框架是否易集成、易插拔、跟业务代码是否松耦合、提供的接口是否够灵活
等等,都是我们应该花心思去思考和设计的。有的时候,文档写得好坏甚至都有可能决定一
个框架是否受欢迎。
统计触发方式:包括主动和被动两种。主动表示以一定的频率定时统计数据,并主动推
送到显示终端,比如邮件推送。被动表示用户触发统计,比如用户在网页中选择要统计
的时间区间,触发统计,并将结果显示给用户。
统计时间区间:框架需要支持自定义统计时间区间,比如统计最近 10 分钟的某接口的
tps、访问次数,或者统计 12 月 11 日 00 点到 12 月 12 日 00 点之间某接口响应时间
的最大值、最小值、平均值等。
统计时间间隔:对于主动触发统计,我们还要支持指定统计时间间隔,也就是多久触发
一次统计显示。比如,每间隔 10s 统计一次接口信息并显示到命令行中,每间隔 24 小
时发送一封统计信息邮件。
易用性
剩余13页未读,继续阅读
ai
- 粉丝: 58
- 资源: 315
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
- A pure Python library for adding tables to a Tkinter application
- Vector资源文件.zip
- MobaXterm-Installer
- MicroMsg.xlsx
- 88-520告白(520气球).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0