Software Engineering for Students A Programming Approach
Software Engineering for Students A Programming Approach Software Engineering for Students A Programming Approach
2.2 The tasks 25 An important example of a validation activity is acceptance testing. This happens at the end of the project when the software is deemed complete, is demonstrated to its client and accepted by them as satisfactory. The inputs to acceptance testing are the client and the apparently complete software. The products are either a sign-off document and an accepted system or a list of faults. The outcome is that the system complies with the requirements of the client or it does not. Current evidence suggests that many computer systems do not meet the needs of their users, and that therefore successful validation is a major problem in software engineering today. It is a common experience that users think they have articulated their needs to the software engineer. The engineer will then spend months or even years developing the software only to find, when it is demonstrated, that it was not what the user wanted. This is not only demoralizing for both users and developers, but it is often massively costly in terms of the effort needed to correct the deficiencies. As an extreme alternative the system is abandoned. It is too easy to blame the requirements analysis stage of development, when in reality the basic problem is the quality of the communication between users and developers. Users do not know (and usually do not care) about technicalities, whereas the software engineer expects detailed instructions. Worst of all is the problem of some common language for accurately describing what the user wants. The users are probably happiest with natural language (e.g. English), whereas the software engineer would probably prefer some more rigorous language that would be incomprehensible to the users. There is a cultural gap. Production The system is put into use. (This is sometimes, confusingly, termed implementation.) The users may need training. Maintenance When the software is in use, sooner or later it will almost certainly need fixing or enhancing. Making these changes constitutes maintenance. Software maintenance often goes on for years after the software is first constructed. The product of this activity is the modified software. Documentation Documentation is required for two types of people – users and the developers. Users need information about how to install the software, how to de-install the software and how to use it. Even in the computer age, paper manuals are still welcome. For general purpose software, such as a word processor, a help system is often provided. User documentation concentrates on the “what” (the external view) of the software, not the “how” (the internal workings). Developers need documentation in order to continue development and to carry out maintenance. This typically comprises the specification, the architectural design, the
26 Chapter 2 ■ The tasks of software development detailed design, the code, annotation within the code (termed comments), test schedules, test results and the project plan. The documentation is typically large and costly (in people’s time) to produce. Also, because it is additional to the product itself, there is a tendency to ignore it or skimp on it. Project management Someone needs to create and maintain plans, resolve problems, allocate work to people and check that it has been completed. Database design Many systems use a database to store information. Designing the database is a whole subject in its own right and is not normally considered to be part of software engineering. Consequently, we don’t tackle this topic within this book. SELF-TEST QUESTION 2.1 Which stages of software development, if any, can be omitted if the required software is only a small program? We will see that, in dividing the work into a series of distinct activities, it may appear that the work is carried out strictly in sequence. However, it is usual, particularly on large projects, for many activities to take place in parallel. In particular, this happens once the large-scale (or architectural) design is complete. It is at this stage that the major software components have been identified. Work on developing the components can now proceed in parallel, often undertaken by different individuals. 2.3 ● Process models We have seen (Chapter 1) that software systems are often large and complex. There is a clear need to be organized when embarking on a development. What do you need when you set about a software project? You need: ■ a set of methods and tools ■ an overall plan or strategy. The plan of action is known as a process model. It is a plan of what steps are going to be taken as the development proceeds. This term is derived as follows: a process is a step or a series of steps; a process model is a model in the sense that it is a representation of
- Page 1 and 2: Software Engineering for Students D
- Page 3 and 4: We work with leading authors to dev
- Page 5 and 6: Pearson Education Limited Edinburgh
- Page 7 and 8: vi Contents Part D ● Verification
- Page 9 and 10: viii Detailed contents 3 The feasib
- Page 11 and 12: x Detailed contents 9 Data flow des
- Page 13 and 14: xii Detailed contents 14.7 Repetiti
- Page 15 and 16: xiv Detailed contents 19.7 Unit tes
- Page 17 and 18: xvi Detailed contents 26 Agile meth
- Page 19 and 20: xviii Detailed contents 32.4 Softwa
- Page 21 and 22: xx Preface Software Engineering and
- Page 23 and 24: xxii Preface are engaged on a proje
- Page 26 and 27: CHAPTER 1 This chapter: ■ reviews
- Page 28 and 29: 1.3 The cost of software production
- Page 30 and 31: 100% 10% 1970 SELF-TEST QUESTION Ha
- Page 32 and 33: Analysis and design 1 /3 Coding 1 /
- Page 34 and 35: SELF-TEST QUESTION 1.7 Maintenance
- Page 36 and 37: 1.8 Reliability 13 in the first pla
- Page 38 and 39: 1.8 Reliability 15 contain a comma
- Page 40 and 41: Ease of maintenance Reliability Con
- Page 42 and 43: Exercises 19 • Exercises These ex
- Page 44 and 45: Further reading 21 Analyses of the
- Page 46 and 47: ■ documentation ■ maintenance
- Page 50 and 51: 2.4 Methodology 27 reality. Like an
- Page 52 and 53: ■ error free ■ fault ■ tested
- Page 54 and 55: 3.2 ● Technical feasibility 3.3 C
- Page 56 and 57: 3.5 Case study 33 The hardware cost
- Page 58 and 59: Answers to self-test questions 3.1
- Page 60 and 61: 4.2 The concept of a requirement 37
- Page 62 and 63: 4.3 The qualities of a specificatio
- Page 64 and 65: 4.5 The requirements specification
- Page 66 and 67: 4.6 The structure of a specificatio
- Page 68 and 69: 4.7 ● Use cases 4.7 Use cases 45
- Page 70 and 71: Summary The ideal characteristics o
- Page 72: Further reading 49 Further reading
- Page 76 and 77: CHAPTER 5 This chapter explains: 5.
- Page 78 and 79: 5.3 Styles of human-computer interf
- Page 80 and 81: 5.5 Design principles and guideline
- Page 82 and 83: 5.5 Design principles and guideline
- Page 84 and 85: SELF-TEST QUESTION 5.2 What problem
- Page 86 and 87: 5.8 Help systems 63 Our plan is to
- Page 88 and 89: Further reading 65 5.5 Design a use
- Page 90 and 91: CHAPTER 6 Modularity This chapter e
- Page 92 and 93: 6.2 Why modularity? 69 observed fau
- Page 94 and 95: Figure 6.1 Two alternative software
- Page 96 and 97: ■ a simple program is more likely
2.2 The tasks 25<br />
An important example of a validation activity is acceptance testing. This happens at<br />
the end of the project when the software is deemed complete, is demonstrated to its<br />
client and accepted by them as satisfactory. The inputs to acceptance testing are the<br />
client and the apparently complete software. The products are either a sign-off document<br />
and an accepted system or a list of faults. The outcome is that the system complies<br />
with the requirements of the client or it does not.<br />
Current evidence suggests that many computer systems do not meet the needs of their<br />
users, and that there<strong>for</strong>e successful validation is a major problem in software engineering<br />
today. It is a common experience that users think they have articulated their needs to the<br />
software engineer. The engineer will then spend months or even years developing the<br />
software only to find, when it is demonstrated, that it was not what the user wanted. This<br />
is not only demoralizing <strong>for</strong> both users and developers, but it is often massively costly in<br />
terms of the ef<strong>for</strong>t needed to correct the deficiencies. As an extreme alternative the system<br />
is abandoned.<br />
It is too easy to blame the requirements analysis stage of development, when in<br />
reality the basic problem is the quality of the communication between users and<br />
developers. Users do not know (and usually do not care) about technicalities, whereas<br />
the software engineer expects detailed instructions. Worst of all is the problem of<br />
some common language <strong>for</strong> accurately describing what the user wants. The users are<br />
probably happiest with natural language (e.g. English), whereas the software engineer<br />
would probably prefer some more rigorous language that would be incomprehensible<br />
to the users. There is a cultural gap.<br />
Production<br />
The system is put into use. (This is sometimes, confusingly, termed implementation.)<br />
The users may need training.<br />
Maintenance<br />
When the software is in use, sooner or later it will almost certainly need fixing or<br />
enhancing. Making these changes constitutes maintenance. <strong>Software</strong> maintenance often<br />
goes on <strong>for</strong> years after the software is first constructed. The product of this activity is<br />
the modified software.<br />
Documentation<br />
Documentation is required <strong>for</strong> two types of people – users and the developers.<br />
Users need in<strong>for</strong>mation about how to install the software, how to de-install the software<br />
and how to use it. Even in the computer age, paper manuals are still welcome. For<br />
general purpose software, such as a word processor, a help system is often provided.<br />
User documentation concentrates on the “what” (the external view) of the software,<br />
not the “how” (the internal workings).<br />
Developers need documentation in order to continue development and to carry out<br />
maintenance. This typically comprises the specification, the architectural design, the