软件开发非功能性需求
本文地址:http://www.cnblogs.com/raol/archive/2013/04/14/non-functional.html
针对某一功能性需求确定后,开发人员需考虑的非功能性需求:
面对开发人员自己
易于调试
可维护性
重构达到复用(提炼API/框架)
使用库而不是被库绑架(针对接口,使库易被替换)
设计API/框架(可复用)
被封装
可扩展
可读性
版本控制/兼容性
单元测试作为文档
粗细粒度
面对测试
可测性
面对运维
安全性
可配置(配置文件/后台管理)
少编译(不在服务端编码拼接html/css/js)/部分编译(IOC)
易于快速/增量/分布式部署
易于备份/还原
可靠性/健壮
日志/审计/监控(服务/实例/进程)
面对用户
可用性(ajax不可用时)
易用性(ajax可用时)
用户体验
跨浏览器
面对SEO
可达性
元数据(微格式)
面对数据(业务数据/资讯/图片)
输入/输出的格式/质量(垃圾进垃圾出)
OLTP/OLAP区别对待
存储格式/位置
同步
面对性能(响应/吞吐/并发/资源)
延迟/提前加载
生命周期/内存泄露
并发/分布式
连接次数(IO/DB/RFC)
面对第三方
标准化
协议
约束
面对市场
上市时间
成本收益
所希望的生命周期
目标市场
推出版本计划
与老系统集成
此处考虑的是开发人员在开发中需考虑的非功能性需求,而非整个系统的非功能性需求,后者还可以通过硬件等措施来达到
另外类似运维,开发人员只考虑开发的模块对运维的支持,而不可代替运维的其他工作(如版本控制等)