当前位置: 首页 > news >正文

系统中非功能性需求的思考

概要

设计系统时不仅要考虑功能性需求,还要考虑一些非功能性需求,比如:

  1. 扩展性
  2. 可靠性和冗余
  3. 安全和隐私
  4. 服务依赖
  5. SLA要求

下面对这5项需要考虑的事项做个简单的说明

1. 可扩展性

数据量增长如何扩展?
流量增长如何扩展?
业务功能增长如何扩展?  
你的系统最少需要多少资源?你应该做好高利用率的打算,并且要知道使用过多的资源可能会阻碍服务的扩展。
同时还要考虑当前的硬件支持状况:添加更多的资源可能比预料的时间多得多,或者成本太过昂贵。

2. 可靠性和冗余

如何处理瞬间突发错误,比如临时中断等情况?
如何发现数据存储中的数据损坏或丢失?  
有哪些因素会造成数据丢失?比如用户操作错误、程序漏洞、数据库故障。
如何应对数据丢失,数据丢失有什么影响?数据丢失如何修复,在恢复之间会发生什么?
如果只丢失了部分数据,你能继续提供服务吗?

3. 安全和隐私

列出所有已知的漏洞和潜在的不安全依赖关系。  
考虑可能潜在的攻击,如何预防或缓解攻击?
考虑是否有可能泄露隐私数据的可能,如何应对?
如果出于某种原因,你的应用程序没有考虑安全或隐私,需要明确说明原因。

4. 服务依赖

应用程序启动时必须要依赖哪些服务?
如果你依赖的其他服务在一段时间内不可用,会发生什么情况?  
引入的服务是否存在循环依赖,即依赖环?比如你依赖服务A,服务A依赖服务B,服务B依赖你的服务。

5. SLA 要求

有什么机制可以审计和监控应用程序的服务等级保证(SLG)?  
你如何保证承诺的可靠性水平?

http://www.lryc.cn/news/388679.html

相关文章:

  • 力扣第215题“数组中的第K个最大元素”
  • java.util.function实现原理和Java使用场景【Function、Predicate集合转换过滤,BiConsumer事件处理】
  • 《每天5分钟用Flask搭建一个管理系统》 第6章:数据库集成
  • pandas读取和处理Excel文件的基础应用1
  • electron vite react 创建一个项目
  • 鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI
  • 湖南省教育网络协会莅临麒麟信安调研教育网络数字化建设及教育信创发展情况
  • 论文阅读_优化RAG系统的检索
  • STC8/32 软硬件I2C通讯方式扫描I2C设备地址
  • Linux——数据流和重定向,制作镜像
  • Windows 11的市场份额越来越大了,推荐你升级!
  • 微服务架构中的调试难题与分布式事务解决方案
  • 银行家算法-操作系统中避免死锁的最著名算法
  • PCL 基于点云RGB颜色的区域生长算法
  • cube-studio开源一站式机器学习平台,在线ide,jupyter,vscode,matlab,rstudio,ssh远程连接,tensorboard
  • 1976 ssm 营地管理系统开发mysql数据库web结构java编程计算机网页源码Myeclipse项目
  • 技术派全局异常处理
  • 对于mysql 故障的定位和排查
  • 什么是电航空插头插座连接器有什么作用
  • 数据挖掘常见算法(分类算法)
  • 【深度学习】调整加/减模型用于体育运动评估
  • 重生之算法刷题之路之链表初探(三)
  • 哪吒汽车,正在等待“太乙真人”的拯救
  • HDC Cloud 2024 | CodeArts加速软件智能化开发,携手HarmonyOS重塑企业应用创新体验
  • 基于隐马尔可夫模型的股票预测【HMM】
  • PostgreSQL Replication Slots
  • centos7搭建zookeeper 集群 1主2从
  • Arrays.asList 和 java.util.ArrayList 区别
  • 代码随想录-Day44
  • CriticGPT: 用 GPT-4 找出 GPT-4 的错误