Quantify written by Keith Braithwaite
来源:互联网 发布:海报制作电脑软件 编辑:程序博客网 时间:2024/04/28 22:25
按:文章来自《97 things every software architect should know》。
主要讲的是,软件开发中的需求获取阶段,要给那些性能类的需求加上量化的指标,这样做避免了需求的模糊性。
在软件测试中要求获取的用户需求应该是可测试的,和这篇文章的主题比较切合。
Quantify
Keith Braithwaite
“FAST” is not a requirement. Neither is “responsive.” Nor “extensible.” The primary reason why not is that you have no objective way to tell if they’re met. But still users want them. The architect’s role is largely to help the system have these qualities, and to balance the inevitable conflicts and inconsistencies between them. Without objective criteria, architects are at the mercy of capricious users (“no, I won’t accept it, still not fast enough”) and of obsessive programmers (“no, I won’t release it, still not fast enough”).
As with all requirements, we seek to write down these desires. Too often then the vague adjectives come out: “flexible,” “maintainable,” and the rest. It turns out that in every case (yes, even “usable,” with effort), these phenomena can be quantified and thresholds set. If this is not done, then there is no basis for acceptance of the system by its users, valuable guidance is stolen from its builders as they work, and the vision is blurred for those architecting it.
Some simple questions to ask: How many? In what period? How often? How soon? Increasing or decreasing? At what rate? If these questions cannot be answered, then the need is not understood. The answers should be in the business case for the system and if they are not, then some hard thinking needs to be done. If you work as an architect and the business hasn’t (or won’t) tell you these numbers, ask yourself why not. Then go get them. The next time someone tells you that a system needs to be “scalable,” ask that person where new users are going to come from and why. Ask how many and by when? Reject “Lots” and “soon” as answers.
Uncertain quantitative criteria must be given as a range: the least, the nominal, and the most. If this range cannot be given, then the required behavior is not understood. As an architecture unfolds, it can be checked against these criteria to see if it is (still) in tolerance. As the performance against some criteria drifts over time, valuable feedback is obtained. Finding these ranges and checking against them is a time-consuming and expensive business. If no one cares enough about the system being “performant” (neither a requirement nor a word) to pay for performance trials, then more than likely performance doesn’t matter. You are then free to focus your architectural efforts on aspects of the system that are worth paying for.
“Must respond to user input in no more than 1,500 milliseconds. Under normal load (defined as…), the average response time must be between 750 and 1,250 milliseconds. Response times less than 500 milliseconds can’t be distinguished by the user, so we won’t pay to go below that.” Now that’s a requirement.
- Quantify written by Keith Braithwaite
- Quantify
- Papers written by Googlers
- suffix array written by myself
- 单链表操作 written by myself
- lua by written form c
- PyRename: 批量重命名工具, written by Python
- Preferrence usage(written by 猪头小队长)
- 双链表操作 written by my self
- Keith Price
- prjProcess - 进程管理 - Written By HackerJLY In Universty - VB6 + API
- 关于预编译头 Written by 李智勇
- SpringMVC messageTool written by self for velocity I18N
- Architects Must Be Hands On written by John Davie
- There Is No ‘I’ in Architecture written by Dave Quick
- 微信模版设计说明书(Written By GuWen)
- Advice for students of machine learning -written by david mimno
- If this code works, it was written by Paul DiLascia.
- 对于Retain和Assign属性的理解(转)
- 共享池的改进与ORA-04031的变化(eygle)
- 第四届全国职工职业技能大赛维修电工、计算机程序设计员决赛在成都市举行
- VS2008设置程序默认启动为IIS
- avl平衡二叉树
- Quantify written by Keith Braithwaite
- 定位系统键盘
- VC多线程编程
- 在项目jsp文件中使用bean
- poj 3250 Bad Hair Day
- 确保真正的线程安全——微软为什么不提供线程安全库
- SGU 411 Petya the Hero
- 数据库多字段排序---笔记
- Linux下系统时间函数、DST等相关问题总结