当前位置: 代码迷 >> 综合 >> Quantify written by Keith Braithwaite
  详细解决方案

Quantify written by Keith Braithwaite

热度:26   发布时间:2023-12-14 21:12:10.0

按:文章来自《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.