Professional Documents
Culture Documents
6. How has the relative cost of software versus hardware changed over the last 30
years or so in engineered systems generally?
Over the past three decades engineered systems in general have come to rely
more and more on microprocessor technology, a nd consequently on software. As a
result, the cost of the software within engineered s ystems has increased
dramatically with respect to the cost of the hardware« This increase in the cost of
the software is due to an increase in the complexity of the softw are. Complexity
makes it hard«
1.p for users to know what they want,
2.p for developers to understand what users want,
3.p to know how long a project will take,
4.p not to make mistakes (in specification, design etc.),
5.p to understand how a given piece of software works ,
6.p to reuse existing complex software components,
7.p to test software,
8.p to debug software,
9.p to modify software.
7. Roughly speaking, how many lines of code does the average software developer
produce per working day, what does it depend on, and which of the following
typically requires the most/least effort:
(a) Coding:
(b) Testing:
(c) Analysis & design:
The average programmer produces ³only´ about 10 -20 lines of source code
per day on average, an d this figure is independent of the level of programming
language used. This is an average figure; it may be higher or lower depending on«
p the type of system being built (but not the programming language),
p individual ability ± which can vary greatly.
8. What is the relationship between errors, faults and failures in the context of
software engineering?
p errors: mistakes made by software developers,
p faults: the tangible results arising from errors,
p failures: unwanted behaviours resulting from faults.
13. Give two reasons why a software developer might decide to develop a prototype.
There are various potential pitfalls though, from the point of view of users, software
developers and managers.
The users may«
p be led to believe that the system will be rea dy soon,
p keep changing their minds, if they are given the opportunity to do so,
p get carried away with some aspects of the requirements but neglect other
aspects.
The developers may«
p neglect to undertake a thorough requirements analysis,
p get frustrated that the users keep changing their minds,
p neglect non-functional aspects of the design (e.g. reliability, performance,
ease of maintenance).
The managers may«
p find it hard to predict and control the number of design iterations that are
necessary,
p find it hard to enforce configuration management, leading to confusion about
which versions of which modules make up a given prototype.