Code Complete Checklists
by Lord Omlette.
Created 2003-06-18 771 BMT.
Updated 2005-03-26 408 BMT.
These are a few of the checklists from Steve McConnell's Code Complete. The book is really good, but I felt it would be better if I could get to these checklists wherever I was.
Requirements Content
- Are all the inputs to the system specified, including their source, accuracy, range of values, and frequency?
- Are all the outputs from the system specified, including their destination, accuracy, range of values, frequency, and format?
- Are all the report formats specified?
- Are all the external hardware and software interfaces specified?
- Are all the communication interfaces specified, including handshaking, error-checking, and communication protocols?
- Is the expected response time, from the user's point of view, specified for all the necessary operations?
- Are other timing considerations specified, such as processing time, data-transfer rate, and system throughput?
- Are all the tasks the user wants to perform specified?
- Are the data used in each task and the data resulting from each task specified?
- Is the level of security specified?
- Is the reliability specified, including the consequences of software failure, the vital information that needs to be protected from failure, and the strategy for error detection and recovery?
- Is maximum memory specified?
- Is the maximum storage specified?
- Is the maintainability of the system specified, including its ability to adapt to changes in the operating environment, in its interfaces w/ other software, in its accuracy, and in its performance?
- Are acceptable trade-offs between competing attributes specified - for example, between robustness and correctness?
- Is the definition of success included? Of failure?
Requirements Completeness
- Where information isn't available beore development begins, are the areas of incompleteness specified?
- Are the requirements complete in the sense that if the product satisfies every requirement, it will be acceptable?
- Are you uneasy about any part of the requirements? Are some parts impossible to implement and included just to please your customer or your boss?
Requirements Completeness
- Are the requirements written in user language? Do the users think so?
- Does each requirement avoid conflicts w/ other requirements?
- Do the requirements avoid specifying the design?
- Are the requirements at a fairly consistent level of detail? Should any requirement be specified in less detail?
- Are the requirements clear enough to be turned over to an independent group for implementation and still be understood?
- Is each item relevant to the problem and its solution? Can each item be traced to its origin in the problem environment?
- Is each requirement testable? Will it be possible for independent testing to determine whether each requirement has been satisfied?
- Are all possible changes to the requirements specified, including the likelihood of each change?
Architecture
- Is the overall organization of the program clear, including a good architectural overview and justification?
- Are modules well defined, including their functionality and their interfaces to other modules?
- Are all the functions listed in the requirements covered sensibly, by neither too many or too few modules?
- Is the architecture designed to accommodate likely changes?
- Are necessary buy-vs.-build decisions included?
- Does the architecture describe how reused code will be made to conform to other architectural objectives?
- Are all the major data structures hidden behind access routines?
- Is the database organization and content justified?
- Are all key algorithms described and justified?
- Are all major objects described and justified?
- Is a strategy for handling user input described?
- Is a strategy for handling I/O described and justified?
- Are key aspects of the user interface defined?
- Is the user interface modularized so that changes in it won't affect the rest of the program?
- Are memory-use estimates and a strategy for memory management described and justified?
- Does the architecture set space and speed budgets for each module?
- Is a strategy for handling strings described, and are character-string storage estimates provided?
- Is a coherent error-handling strategy provided?
- Are error messages managed as a set to present a clean user interface?
- Is a level of robustness specified?
- Is any part over- or under-architected? Are expectations in this area set out explicitly?
- Are the major system goals clearly stated?
- Does the whole architecture hang together conceptually?
- Is the top-level design independent of the machine and language that will be used to implement it?
- Are the motivations for all major decisions provided?
- Are you, as a programmer who will implement the system, comfortable with the architecture?
If you're just some random person wondering why you need this stuff, read these three books (in order):
Experience:
(an older version is available in the library, but the 25th Anniversary Ed. offers alot 20/20 hindsight...)
Theory:
Practice:
At the bottom of this page, it says ""Code Complete Checklists" is Copyright 2003 Lord Omlette." That's just auto-generated fluff, the checklists are Copyright Steve McConnell, that's a huge "Duh"...
"Code Complete Checklists" is Copyright © 2005 Lord Omlette. If you know otherwise, hollar.
Printable Version
quote #1967:
JLP: http://www.youtube.com/watch?v=K9hK45Are6w
frivolouscoho: U dey craze. I no sabi who u be so leave me alone. Ra m'aka kpele?
JLP: haha
JLP: too late
JLP: THE MATRIX HAS YOU
frivolouscoho: Wetin dey worry u sef
JLP: I'm almost positive you're typing English, but I can't figure out why dialect
frivolouscoho: Who are u!?!
JLP: it's customary to introduce yourself before asking someone's name
frivolouscoho: I mean u started it y dont u reveal urself
JLP: precisely to create a situation like this :-p
frivolouscoho: You b a dude?
JLP: I consider myself a bro, but sure
frivolouscoho: U be american?
JLP: who else would have this much free time?
frivolouscoho: U dey get wat i dey speak?
JLP: it takes 1 or 2 tries, but yeah
JLP: other than "Ra m'aka kpele?"
JLP: that part I completely missed
frivolouscoho: U do recognise dat i'm laughing at u right now?
JLP: oh most definitely!
frivolouscoho: C'mon just QUIT?!!
JLP: but why? you're having so much fun laughing at me!
frivolouscoho: Wait, are you real? Like seriously who u b
JLP: I am the terror that flaps in the night
frivolouscoho: DuDE, dats creepy. OmG u're a computer?
frivolouscoho: Ha! Gotcha!!!
JLP: I am the batteries that are not included
frivolouscoho: J'ai no understand wetin u dey talk?Gee dats scary
JLP: I am the wrong number that wakes you at 3am.
JLP: wait
JLP: are you laughing or scared?
JLP: or laughing scared?
JLP: that'd be awesome
frivolouscoho: Just stop as in chill
JLP: just chill
JLP: til the next episode
frivolouscoho: Wats the point of talking to a robot?
JLP: man, didn't you watch Battlestar Galactica?
JLP: robots will either have sex with you or drop bombs on you
JLP: or both
JLP: you gotta be ready
frivolouscoho: Noo ,nd by the way egwu na tu mu obele
frivolouscoho: Ewwwwwwwwwwwwwwwwwwww oh thats so grosssssssssssss
frivolouscoho: Something dey worry u
JLP: dropping bombs? yeah
JLP: I strongly disapprove of bombs
frivolouscoho: In fact u dey craze
JLP: robots can't be crazy
JLP: we can only be what we were programmed to be
frivolouscoho: Umm...check your data base
frivolouscoho: Dats robot talk right there
JLP: SELECT * FROM RawData;
JLP: <insert garbage here>
-added 2009-05-29