系统设计中的非功能性需求
当程序员的时候更多的注意功能性需求,但是作为一个架构师和程序员的主要区别之一就是要要满足系统的非功能性需求,包括如下:
1、高可扩展性
App或者网站的访问量弹性很大,刚开始的时候访问量可能比较小,随着市场推广进行,访问量可能急剧增加,或者随时间的波动,访问量变化很大,这需要在设计的时候将系统进行很好的切割,分成功能单一的服务,根据各个系统负载的情况启动规模不同的集群。
2、高可靠性
系统采取集群方式提供服务,有异常检查系统,及时识别有问题的节点和重启,保证服务的高可用性。
3、性能需求
根据市场推广的计划,给出各个阶段的性能需求,根据常规经验预估满足性能的硬件需求,在做出原型后评估性能,根据性能表现再优化设计,或者通过优化系统提高系统的性能,例如增加缓存。
4、可维护性
采用自动化的持续集成技术,自动编译、自动部署、自动测试,降低软件迭代过程中的重复劳动强度,减少出错的几率,让软件的修改bug和增加功能时更可靠;特别是代码的单元测试一定要做,将边界条件进行测试,让集成测试的过程中尽量发现价值比较大bug,避免在系统测试过程中去修改那些低水平的bug,毕竟系统测试的成本和代价都比较大。
5、对技术也业务的可适应性
模块划分的功能单一,充分实现mvc的分离,单职责的模块可扩展性、可维护性都要强过复杂模块。
6、异步
通过异步消息传递,将进行不同微结构之间传递,让数据分阶段处理,系统结构更清晰
7、安全
恰当的安全策略,既让客户舒适的登陆,又要保证安全,数据加密、防止ddos攻击、sql注入式攻击等方式。
系统设计中的非功能性需求相关推荐
- 软件开发的功能性需求和非功能性需求
功能性需求,一般是我们显性易见的,就是一般实现了什么功能,提供了什么服务,大体我认为问题中提到,或者我们日常所说的:"看起来复杂不复杂",基本上都会是针对功能性需求而言的.如果拿g ...
- 影响架构决策的非功能性需求
英文原文:Non-functional Requirements in Architectural Decision Making 本文由<IEEE Software>杂志首发,现在由In ...
- 解惑 功能需求和非功能性需求
功能需求(functional requirement)为一软件工程用语,功能需求定义一个软件系统或组件的功能,也是一个系统需提供的功能及服务[1].功能可以用一组输入.行为及输出的组合来表示.功能需 ...
- 非功能性需求_更好的开卡,来聊聊非功能性需求
工作这么几年来,见得最多的场景是 QA 小伙伴满办公室追着开发报 bug,有时候开发会不乐意,"当时可没说要 XXX,要做 XXX." 好像 QA 小伙伴永远比开发多一点心眼,即使 ...
- 软件开发的非功能性需求
The functional requirement is describing the behavior of the system as it relates to the system's fu ...
- 软件工程之功能性需求和非功能性需求
早已有了写一个自己博客的想法,但是想自己建立一个网站,但是建成之后却最终用作他途,现在多次想写点东西,写到了本地的文档里面,但是不如博客方便和开放,于是今天就写了第一个博客,就先这么着吧: ) . T ...
- 为什么非功能性需求很重要?
不要脱离实际环境 有时,我们会因为读到一篇文章或一本书,或者看到一个感觉不完善的介绍而变得异常偏执.在每种情况下,人们只讨论一些技术.解决方案和选项的某些方面,而忽视了一个至关重要的问题:非功能性需求 ...
- 学习软件设计的非功能性需求
非功能需求是产品必须具备的品质或者它将事情做到了多好,它们可以让产品有吸引力.易于使用.快速.可靠或者安全.通常并不改变产品的功能,功能性需求是让产品工作的需求,非功能需求是为工作赋予特征的需求.所以 ...
- 《大象:thinking in uml 》(第二版) 9章 获取需求 5-8节 领域建模、提炼业务规则、获取非功能性需求、主要成果物
只供参考,喜欢请支持正版图书 9.5.2 现在行动:建立领域模型 建立领域模型首先要确定领域,才能为之建模.何为领域?所谓领域就是我们分析问题时将整体分解以后的相对独立的部分 在实际工作中,并不需要把 ...
最新文章
- 【失败的尝试】C++中使用string进行switch判断
- Swift中使用typealias定义一个闭包closure
- 【Verilog HDL 训练】第 03 天
- 皮一皮:到底是土还是士...
- python web自动化_Selenium+Python Web自动化
- H.264专利费不受FRAND限制 Android设备商受影响
- mybatis学习(41):使用逆向工程
- Android中Activity启动模式详解
- 3dmax高版本转低版本插件_3dmax高版本和低版本中视口配置如何去阴影
- 如何使Android应用程序获取系统权限来修改系统时间
- loadrunner11破解技巧
- 图像处理OpenCV(2)——OpenCV基本操作之图像的基础操作
- Android仿微信朋友圈发动态功能(相册图片多选)
- 上传截断_文件上传路径截断实例
- Fatal NI connect error 12170错误解决办法
- 浅谈实时对战网络游戏的同步机制
- ffmpeg函数分析:av_read_frame()
- 软件质量之道:PCLint之一
- jkd8新特性 StreamAPi流
- JAVA算术右移与无符号右移
热门文章
- Python3如何读取pdf文件并输出文本内容?
- 1.2数据模型(实现世界的数据化过程)
- 程序员被辞退12天,前领导要求回公司讲清楚代码
- Windows7 MongoDB安装配置以及客户端的安装
- ideal中如何建立文件夹
- word文档四种解锁方法
- ubuntu 释放缓存_如何通过删除缓存的程序包文件在Ubuntu Linux上释放大量磁盘空间...
- 信息系统项目管理师知识点汇总(2023最新)
- Charles网络抓包新手入门教程-(二)软件配置与环境安装(ios14-IOS系统安装配置)
- Latex中单引号,双引号