INSE - Lecture 2 What makes Software “good”?
Dec 18, 2015
INSE - Lecture 2
What makes Software “good”?
INSE - Lecture 2
What makes Software “bad”?
unreliable, unusable, too slow, too fast;errors (i.e. bugs), un-maintainable;not what the customer needed;…
What makes software “bad?” unreliable; unusable; too slow; too fast; … un-maintainable; errors (i.e. bugs); not what the customer needed; …
Unreliable
Software should not do un-reasonable things… … when presented with bad input [not blow
up; not ignore the bad input] … when overloaded [not blow up, say it is
overloaded; “suffer graceful degradation”]; … when faced with emergencies, e.g. real-
time crises [not blow up: should do something adequate]
…not blow up
Unusable Causes for dislike/irritation
by the user by the user’s manager
Inconvenient/error-prone input Illegible/incomprehensible output Documentation
unclear (for that reader) inappropriate length (for that user & document) hard to use/hard to look up in
Exceeds human limits (e.g. patience, speed, memory…) Not too fascinating!
Too slow/too fast
[Both really forms of “unusable”] Too slow
wastes the users time; or bores the user; or so slow the user loses track
Too fast The user can’t keep up, in some sense
Un-maintainable Design without considering the problems of
maintaining the software, and later you’ll find it’s very hard to maintain, very expensive to maintain, & the maintained software is very prone to bugs,
crashes, etc. [“Maintainability” is not something that can
be “added later” – it must be designed in & coded in.]
Erorrs (i.e. bugs)
bug = minor error in design or coding
…sloppiness!
…waste of time!
… so get it right first time
Not what the customer needed
build the right product!
build the product right!
This was all about bad software
So by “opposites”, that lectures defined what it means for software to be “not bad” –
but “not bad” falls a long way short of “good”.
After this lecture think about your past programming
efforts – in what ways were your products “good”? In what ways were they “bad”?
think about software you use – in what ways is it good/bad?
think about software you’ve stopped using – was it because it was “bad”? In what ways?
© C Lester 1997-2004