非功能性需求

引言

“我是谁?我从哪里来?要到哪里去?”,被西方人称为哲学上的三个终极之问,根据这个套路,我门来分析下软件研发过程中的非功能性需求。

我是谁?

它是软件质量的一个重要衡量指标,用于在度量系统在实现完系统性功能以后,交付及运行过程中的系统技术面要求的达成度,比如典型的三“高”要求;
它也是项目管理过程中甲方对乙方系统研发过程中提出的“设计约束”,诸如:开发平台、技术流派、关键实现等等方面的要求;
目前业界关于软件的非功能需求,一般就包括:质量属性要求和约束性要求;

从哪里来?

非功能性需求作为功能性需求的补充,如其定义的那样主要保障了系统功能的正常并且稳定运行,它具有普适性,来源于传统行业的工作模式沉淀和提升。

到哪里去?

非功能性指标去往何方?一般系统架构人员需要特别关注,他将对系统架构阶段进行分析设计并落地到具体的方面指标。

一、性能指标

1、响应时间:指功能完成的时间,和客观环境、数据量级、主观感受等都有关系,比如包括:平均响应时间参考值(秒)、峰值响应时间参考值(秒)。
2、吞吐量:给定时间内系统可处理的事务/请求的数量等,比如QPS、TPS;
3、并发用户数:用来衡量系统的同步协调能力,我们更关注多个用户同时操作同一功能或数据时,对系统性能的影响,有以下指标:总用户数、峰值在线用户数、峰值[并发用户数 、平均在线用户数、平均并发用户数。
4、数据存储增量:每年的数据存储容量(G)及未来几年该数量的预期(增长)值。指标包括累计存储容量(G)、年增长(G)

二、系统可靠性:

1、工作时间
满足业务的工作时间,一周到周五还是7×24小时;
2、灾备恢复时间
当系统故障,相关系统基础设施(中间件、数据存储、网络设施等)的恢复时间,核心指标:RTO,RPO;
RTO用于衡量业务从停顿到恢复的所需时间,RPO用于衡量业务恢复所允许丢失的数据量。

三、可扩展性

1、弹性
负载均衡支持弹性扩容或缩容机器,业务流量切换顺滑,无影响;
2、兼容性
对于不同终端类型、版本的系统兼容性;

四、运维面

1、可运维
日志查询、系统参数修改、配置文件运行时更新、服务器监控告警、通知发送、运行时数据统计分析等;
2、运维易用性
运维不单提供系统人员,对业务人员友好性也需要考虑,包括UI、交互流程等于功能性要求有重合;

五、安全性

1、系统安全规范
架构面引入相关安全基础设施,加密机、CA中心、U盾等;
框架面定义安全技术规范、使用的技术框架,比如加密策略、加密算法,用户权限管理框架选型等;
功能设计面剥离安全性设计,进行单独设计,应对后续的安全漏洞,如AOP或者设计新的安全组件包等;
2、补丁自动升级
对于独立的安全设计,支持运行时的安全策略、算法、开关的升级,支持降级服务等;

参考资料

1、百度百科https://baike.baidu.com/item/%E9%9D%9E%E5%8A%9F%E8%83%BD%E6%80%A7%E9%9C%80%E6%B1%82/8403760

2、灾备系统的衡量指标有哪些?不止RPO、RPO https://www.talkwithtrend.com/Article/247451

你可能感兴趣的:(非功能性需求)