Software Engineering for Students A Programming Approach
Software Engineering for Students A Programming Approach Software Engineering for Students A Programming Approach
CHAPTER 1 This chapter: ■ reviews the goals of software engineering 1.1 ● Introduction Software Engineering is about methods, tools and techniques used for developing software. This particular chapter is concerned with the reasons for having a field of study called software engineering, and with the problems that are encountered in developing software. This book as a whole explains a variety of techniques that attempt to solve the problems and meet the goals of software engineering. Software surrounds us everywhere in the industrialized nations – in domestic appliances, communications systems, transportation systems and in businesses. Software comes in different shapes and sizes – from the program in a mobile phone to the software to design a new automobile. In categorizing software, we can distinguish two major types: ■ system software is the software that acts as tools to help construct or support applications software. Examples are operating systems, databases, networking software, compilers. ■ applications software is software that helps perform some directly useful or enjoyable task. Examples are games, the software for automatic teller machines (ATMs), the control software in an airplane, e-mail software, word processors, spreadsheets. Within the category of applications software, it can be useful to identify the following categories of software: ■ games Software – problems and prospects ■ describes the difficulties of constructing large-scale software ■ analyses the problems that software engineers face. ■ information systems – systems that store and access large amounts of data, for example, an airline seat reservation system
4 Chapter 1 ■ Software – problems and prospects ■ real-time systems – in which the computer must respond quickly, for example, the control software for a power station ■ embedded systems – in which the computer plays a smallish role within a larger system, for example, the software in a telephone exchange or a mobile phone. Embedded systems are usually also real-time systems ■ office software – word processors, spreadsheets, e-mail ■ scientific software – carrying out calculations, modeling, prediction, for example, weather forecasting. Software can either be off-the-shelf (e.g. Microsoft Word) or tailor-made for a particular application (e.g. software for the Apollo moon shots). The latter is sometimes called bespoke software. All these types of software – except perhaps information systems – fall within the remit of software engineering. Information systems have a different history and, generally, different techniques are used for their development. Often the nature of the data (information) is used to dictate the structure of the software, so that analysis of the data is a prime step, leading to the design of the database for the application. This approach to software development is outside the scope of this book. Constructing software is a challenging task, essentially because software is complex. The perceived problems in software development and the goals that software development seeks to achieve are: ■ meeting users’ needs ■ low cost of production ■ high performance ■ portability ■ low cost of maintenance ■ high reliability ■ delivery on time. Each goal is also considered to be a problem because software engineering has generally been rather unsuccessful at reaching them. We will now look at each of these goals in turn. Later we will look at how the goals relate one to another. In the remainder of this book we shall see that the development of particular types of software requires the use of special techniques, but many development techniques have general applicability. 1.2 ● Meeting users’ needs It seems an obvious remark to make that a piece of software must do what its users want of it. Thus, logically, the first step in developing some software is to find out what the client, customer or user needs. This step is often called requirements analysis or requirements engineering. It also seems obvious that it should be carried out with some care.
- 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 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 48 and 49: 2.2 The tasks 25 An important examp
- 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
CHAPTER<br />
1<br />
This chapter:<br />
■ reviews the goals of software engineering<br />
1.1 ● Introduction<br />
<strong>Software</strong> <strong>Engineering</strong> is about methods, tools and techniques used <strong>for</strong> developing software.<br />
This particular chapter is concerned with the reasons <strong>for</strong> having a field of study<br />
called software engineering, and with the problems that are encountered in developing<br />
software. This book as a whole explains a variety of techniques that attempt to solve the<br />
problems and meet the goals of software engineering.<br />
<strong>Software</strong> surrounds us everywhere in the industrialized nations – in domestic appliances,<br />
communications systems, transportation systems and in businesses. <strong>Software</strong> comes<br />
in different shapes and sizes – from the program in a mobile phone to the software to<br />
design a new automobile. In categorizing software, we can distinguish two major types:<br />
■ system software is the software that acts as tools to help construct or support applications<br />
software. Examples are operating systems, databases, networking software,<br />
compilers.<br />
■ applications software is software that helps per<strong>for</strong>m some directly useful or enjoyable<br />
task. Examples are games, the software <strong>for</strong> automatic teller machines (ATMs), the<br />
control software in an airplane, e-mail software, word processors, spreadsheets.<br />
Within the category of applications software, it can be useful to identify the following<br />
categories of software:<br />
■ games<br />
<strong>Software</strong> – problems<br />
and prospects<br />
■ describes the difficulties of constructing large-scale software<br />
■ analyses the problems that software engineers face.<br />
■ in<strong>for</strong>mation systems – systems that store and access large amounts of data, <strong>for</strong> example,<br />
an airline seat reservation system