Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.arch.embedded > #26572
| From | Don Y <blockedofcourse@foo.invalid> |
|---|---|
| Newsgroups | comp.arch.embedded |
| Subject | Re: [OT] I got a JOB!!! |
| Date | 2017-05-17 03:42 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <ofh97l$lui$1@dont-email.me> (permalink) |
| References | (4 earlier) <0cCdnc-xRuxg5YbEnZ2dnUU7-bWdnZ2d@giganews.com> <NnLSA.578$OK2.486@fx09.am4> <ofg6t6$g77$1@dont-email.me> <N1USA.14492$8r1.3523@fx42.am4> <ofh332$26n$2@dont-email.me> |
On 5/17/2017 1:57 AM, Reinhardt Behm wrote: > AT Wednesday 17 May 2017 16:42, Tom Gardner wrote: > >> On 17/05/17 01:56, Don Y wrote: >>> On 5/16/2017 3:51 PM, Tom Gardner wrote: >>>> The other dysfunctional aspect of unit tests is that, >>>> while they are very useful when making incremental >>>> improvements during design, they can be a real >>>> impediment in a few months/years time. The problem is >>>> that over time people forget which tests demonstrate >>>> required properties, and which are merely ensuring >>>> behaviour of implementation artifacts. At that point >>>> people are afraid to make changes that break tests, >>>> even if the tests are unimportant. At that point the >>>> codebase has become ossified. >>> >>> But that's true any time you (attempt to) nail down >>> an aspect of a design. Moreso if you don't provide a >>> rationale for WHY the requirement (whether it be from a >>> spec or a test) was imposed. >> >> Of course. Nonetheless, it happens - and zealots >> sometimes refuse to admit it. > > Therefor any good development process demands that requirements (high-level, > or low-level) must be traceable to system requirements or must be marked as > design decisions. Then you have the WHY. But if all of this is written in "legalese", you can easily end up with a document(s) that is ambiguous -- even to the original author(s), some time after it's been written! [Lawyers spend a lot of time trying to write precise contracts; then spend the rest of their time trying to pick holes/ambiguities in the contracts written by others!] 1. A game shall consist of 3, 4 or 5 balls, adjustable by the operator. 2. At the end of the last ball, the game shall be over. 3. A free ball shall be awarded for each 10,000 points. 4. The maximum ball count shall not exceed 6. Seems like a straight forward, terse specification. But, it doesn't explicitly indicate that the OPERATOR is a different entity from the PLAYER (nor does it even mention how a game is PLAYED). Nor does it clearly indicate the sequencing of these requirements. If configured for 5 balls and, during the play of the first ball, the player attains a score of 22000, is he awarded *2* free balls, one for each 10,000 point attainment? Or, just one (because he's already been allocated *5*)? If you've chosen to implement a "balls remaining" counter, then does that counter indicate "4" while the player is playing his first ball? So, can it be incremented to 6 by the two "free balls" and still remain in compliance with requirement #4? If a player achieves 10,000 points on *each* ball played, does this mean he can essentially "play forever" -- a free ball awarded to replace the ball he is currently playing? Now, imagine someone tweeks the specification to incorporate a "bonus" feature that allows points to be "banked" during play -- perhaps spanning the play of several balls. If the "last ball" is in play and the current score is 9000 with an accumulated bonus of 3000, does that ball leaving the playfield (end of play for that ball) terminate the game before or after the bonus is awarded? As the score rolls past 10,000 when the bonus is awarded, is new life breathed into the player as he is awarded a free ball *by* that bonus award? Or, has "play" been considered terminated BEFORE the bonus is awarded (he gets the points but not the additional feature of the free ball) As systems get more complex (this was a trivial one!), it is easy for someone tweeking a specification to lose track of the many interdependencies/relationships between clauses. So, the consequences of a new requirement can be insidious. Furthermore, the requirements can effectively *suggest* an implementation without actually *mandating* it. E.g., "ball count" is easily interpreted as "ball countER", despite being different semantic entities. A well written spec will formally define all of these terms AND each instance of such a term. So, "BALL COUNT" will *not* be assumed when reading "The display will indicate the ball count". But, it is really hard to catch all of these details when writing *or* (proof)reading such a document. A more prosaic description (incl examples) can convey intent in a conversational (instead of declarative) tone. > A test can not be the source of a requirement. A test should also be > traceable to sys-reqs. Yes. > And hopefully the sys-reqs are good.
Back to comp.arch.embedded | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[OT] I got a JOB!!! Tim Wescott <seemywebsite@myfooter.really> - 2017-05-16 13:49 -0500
Re: [OT] I got a JOB!!! Steve Wilson <no@spam.com> - 2017-05-16 19:04 +0000
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-16 12:14 -0700
Re: [OT] I got a JOB!!! Tim Wescott <tim@seemywebsite.really> - 2017-05-16 14:41 -0500
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-16 14:01 -0700
Re: [OT] I got a JOB!!! mike <ham789@netzero.net> - 2017-05-16 14:42 -0700
Re: [OT] I got a JOB!!! Tim Wescott <seemywebsite@myfooter.really> - 2017-05-16 17:09 -0500
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-16 16:42 -0700
Re: [OT] I got a JOB!!! Clifford Heath <clifford.heath@gmail.com> - 2017-05-17 09:00 +1000
Re: [OT] I got a JOB!!! eric.jacobsen@ieee.org - 2017-05-16 20:17 +0000
Re: [OT] I got a JOB!!! Tim Wescott <tim@seemywebsite.really> - 2017-05-16 15:24 -0500
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-16 22:05 +0100
Re: [OT] I got a JOB!!! Tim Wescott <seemywebsite@myfooter.really> - 2017-05-16 17:11 -0500
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-16 23:51 +0100
Re: [OT] I got a JOB!!! Tim Wescott <seemywebsite@myfooter.really> - 2017-05-16 18:32 -0500
Re: [OT] I got a JOB!!! Clifford Heath <clifford.heath@gmail.com> - 2017-05-17 09:41 +1000
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 09:35 +0100
Re: [OT] I got a JOB!!! Clifford Heath <no.spam@please.net> - 2017-05-17 19:03 +1000
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 10:31 +0100
Re: [OT] I got a JOB!!! Clifford Heath <no.spam@please.net> - 2017-05-17 23:07 +1000
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 09:41 +0100
Re: [OT] I got a JOB!!! Paul <paul@pcserviceselectronics.co.uk> - 2017-05-17 10:10 +0100
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 10:34 +0100
Re: [OT] I got a JOB!!! Paul <paul@pcserviceselectronics.co.uk> - 2017-05-17 15:59 +0100
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 18:04 +0100
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 18:02 +0100
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-16 17:56 -0700
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 09:42 +0100
Re: [OT] I got a JOB!!! Reinhardt Behm <rbehm@hushmail.com> - 2017-05-17 16:57 +0800
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 10:32 +0100
Re: [OT] I got a JOB!!! Reinhardt Behm <rbehm@hushmail.com> - 2017-05-17 18:12 +0800
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-17 03:54 -0700
Re: [OT] I got a JOB!!! Reinhardt Behm <rbehm@hushmail.com> - 2017-05-17 21:57 +0800
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-17 09:36 -0700
Re: [OT] I got a JOB!!! Niklas Holsti <niklas.holsti@tidorum.invalid> - 2017-05-17 18:07 +0300
Re: [OT] I got a JOB!!! Robert Wessel <robertwessel2@yahoo.com> - 2017-05-17 10:44 -0500
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-17 09:47 -0700
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-17 10:18 -0700
Re: [OT] I got a JOB!!! Niklas Holsti <niklas.holsti@tidorum.invalid> - 2017-05-17 20:25 +0300
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-17 12:01 -0700
Re: [OT] I got a JOB!!! Tim Wescott <tim@seemywebsite.really> - 2017-05-17 10:25 -0500
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 18:22 +0100
Re: [OT] I got a JOB!!! Tim Wescott <seemywebsite@myfooter.really> - 2017-05-17 12:36 -0500
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 18:45 +0100
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-17 03:42 -0700
Re: [OT] I got a JOB!!! "billbowden" <bperryb@bowdenshobbycircuits.info> - 2017-05-16 15:04 -0700
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-16 15:30 -0700
Re: [OT] I got a JOB!!! Martin Riddle <martin_ridd@verizon.net> - 2017-05-16 20:02 -0400
Re: [OT] I got a JOB!!! krw@notreal.com - 2017-05-16 20:40 -0400
Re: [OT] I got a JOB!!! Randy Yates <randyy@garnerundergroundinc.com> - 2017-05-17 09:12 -0400
Re: [OT] I got a JOB!!! Tim Wescott <tim@seemywebsite.really> - 2017-05-17 10:02 -0500
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 18:11 +0100
Re: [OT] I got a JOB!!! Tim Wescott <seemywebsite@myfooter.really> - 2017-05-17 12:21 -0500
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 18:36 +0100
Re: [OT] I got a JOB!!! Tim Wescott <seemywebsite@myfooter.really> - 2017-05-17 12:43 -0500
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 18:55 +0100
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 18:57 +0100
Re: [OT] I got a JOB!!! Tim Wescott <seemywebsite@myfooter.really> - 2017-05-17 13:28 -0500
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-17 20:08 +0100
Re: [OT] I got a JOB!!! boB K7IQ <boB@everett.wa> - 2017-05-17 21:30 -0700
Re: [OT] I got a JOB!!! Tim Wescott <tim@seemywebsite.really> - 2017-05-18 00:03 -0500
Re: [OT] I got a JOB!!! Tom Gardner <spamjunk@blueyonder.co.uk> - 2017-05-18 08:18 +0100
Re: [OT] I got a JOB!!! boB K7IQ <boB@everett.wa> - 2017-05-18 22:56 -0700
Re: [OT] I got a JOB!!! Vassilis Spiliopoulos <vassilis@vask1lux.de> - 2017-05-19 14:31 +0300
Re: [OT] I got a JOB!!! Tim Wescott <tim@seemywebsite.really> - 2017-05-19 10:39 -0500
Re: [OT] I got a JOB!!! Vassilis Spiliopoulos <vassilis@vask1lux.de> - 2017-05-19 23:02 +0300
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-19 13:12 -0700
Re: [OT] I got a JOB!!! dplatt@coop.radagast.org (Dave Platt) - 2017-05-19 15:00 -0700
Re: [OT] I got a JOB!!! Don Y <blockedofcourse@foo.invalid> - 2017-05-19 16:05 -0700
Re: [OT] I got a JOB!!! boB K7IQ <boB@everett.wa> - 2017-05-21 01:46 -0700
Re: [OT] I got a JOB!!! Vassilis Spiliopoulos <vassilis@vask1lux.de> - 2017-05-21 17:31 +0300
Re: [OT] I got a JOB!!! John S <Sophi.2@invalid.org> - 2017-05-21 13:31 -0500
Re: [OT] I got a JOB!!! krw@notreal.com - 2017-05-21 16:47 -0400
csiph-web