Software Engineering
Main content:
-
intro, life-cycle, prototyping, XP
-
HCI
-
Open source
-
Prog languages, errors, scripting
What is S.E?
-
design & construction of software to a required standard
-
not just 'writing a program'
Software characteristics
-
like hardware?
-
spares? wearing out?
-
no 'production line'
-
logical, not physical
'Software crisis'
-
coined in 60's, when huge problems existed
-
now there are more systematic approaches
Some myths
-
from management:
'our people have the latest PC's, so they will develop good software.
'if we fall behind, we can add more people'
-
from a customer:
'a general plan is sufficient for you to start from - we will add more details later.'
'software is 'soft' - easy to change.'
-
developer:
'methods don't work - I just begin coding.'
'once it is written, the job is done.'
Some data
-
Typical stages in a project: req's analysis, specification, design, coding, testing.
-
testing consumes approx 45% of cost.
-
maintenance can cost as much as all the previous stages
-
it costs 100 times as much to fix an error in the maintenance stage relative to the spec. stage
Software Quality
Software should have 'high quality' ?
This is too vague.
Which qualities - and how much?
Answer: it depends!
Example - Some qualities:
-
easy to maintain
-
cheap to produce
-
on time
-
performance: fast? - small?
-
reliable
-
portable (can it run on other platforms (e.g Mac?)
-
...etc
Some of these conflict. can the customer 'have it all'?
If not, there are trade-offs.
E.g may want to get a new product out early, rather than reduce its bugs.
(e.g. version 1 of netscape)
Read the Yourdon article - 'Good Enough Software'