Software Engineering: Third Edition: Principles and Practice - Softcover

Van Vliet, Hans

 
9780470031469: Software Engineering: Third Edition: Principles and Practice

Inhaltsangabe

Software Engineering: Principles and Practice challenges the reader to appreciate the issues, design trade-offs and teamwork required for successful software development. This new edition has been brought fully up to date, with complete coverage of all aspects of the software lifecycle and a strong focus on all the skills needed to carry out software projects on time and within budget.
Highlights of the third edition include:

Fully updated chapters on requirements engineering and software architecture.

New chapters on component-based software engineering, service orientation and global software development.

Extensive coverage of the human and social aspects of software development.

Balanced coverage of both traditional, heavyweight development and agile, lightweight development approaches such as Extreme Programming (XP).

Written to support both introductory and advanced software engineering courses, this book is invaluable for everyone in software development and maintenance who wants an accessible account of the problems incurred in large-scale software development and the proposed solutions.

A companion website with additional resources for students and instructors can be found at www.wileyeurope.com/college/van vliet


Hans van Vliet has been Professor of Software Engineering at the VU University in Amsterdam, the Netherlands since 1987.

Die Inhaltsangabe kann sich auf eine andere Ausgabe dieses Titels beziehen.

Über die Autorin bzw. den Autor

Hans van Vliet has been Professor of Software Engineering at the VU University in Amsterdam, the Netherlands since 1987.

Von der hinteren Coverseite

Software Engineering: Principles and Practice challenges the reader to appreciate the issues, design trade-offs and teamwork required for successful software development. This new edition has been brought fully up to date, with complete coverage of all aspects of the software lifecycle and a strong focus on all the skills needed to carry out software projects on time and within budget. Highlights of the third edition include:

  • Fully updated chapters on requirements engineering and software architecture.
  • New chapters on component-based software engineering, service orientation and global software development.
  • Extensive coverage of the human and social aspects of software development.
  • Balanced coverage of both traditional heavyweight development and lightweight agile development approaches such as Extreme Programming (XP).

Written to support both introductory and advanced software engineering courses, this book is invaluable for everyone in software development and maintenance who wants an accessible account of the problems incurred in large-scale software development and the proposed solutions. A companion website with additional resources for students and instructors can be found at www.wileyeurope.com/college/van vliet

Aus dem Klappentext

Software Engineering: Principles and Practice challenges the reader to appreciate the issues, design trade-offs and teamwork required for successful software development. This new edition has been brought fully up to date, with complete coverage of all aspects of the software lifecycle and a strong focus on all the skills needed to carry out software projects on time and within budget. Highlights of the third edition include:

  • Fully updated chapters on requirements engineering and software architecture.
  • New chapters on component-based software engineering, service orientation and global software development.
  • Extensive coverage of the human and social aspects of software development.
  • Balanced coverage of both traditional heavyweight development and lightweight agile development approaches such as Extreme Programming (XP).

Written to support both introductory and advanced software engineering courses, this book is invaluable for everyone in software development and maintenance who wants an accessible account of the problems incurred in large-scale software development and the proposed solutions. A companion website with additional resources for students and instructors can be found at www.wileyeurope.com/college/van vliet

Auszug. © Genehmigter Nachdruck. Alle Rechte vorbehalten.

Software Engineering

Principles and PracticeBy Hans van Vliet

John Wiley & Sons

Copyright © 2008 Hans van Vliet
All right reserved.

ISBN: 978-0-470-03146-9

Chapter One

Introduction

LEARNING OBJECTIVES

To understand the notion of software engineering and why it is important

To appreciate the technical (engineering), managerial, and psychological aspects of software engineering

To understand the similarities and differences between software engineering and other engineering disciplines

To know the major phases in a software development project

To appreciate ethical dimensions in software engineering

To be aware of the time frame and extent to which new developments impact software engineering practice

Computer science is still a young field. The first computers were built in the mid 1940s, since when the field has developed tremendously.

Applications from the early years of computerization can be characterized as follows: the programs were quite small, certainly when compared to those that are currently being constructed; they were written by one person; they were written and used by experts in the application area concerned. The problems to be solved were mostly of a technical nature, and the emphasis was on expressing known algorithms efficiently in some programming language. Input typically consisted of numerical data, read from such media as punched tape or punched cards. The output, also numeric, was printed on paper. Programs were run offline. If the program contained errors, the programmer studied an octal or hexadecimal dump of memory. Sometimes, the execution of the program would be followed by binary reading of machine registers at the console.

Independent software development companies hardly existed in those days. Software was mostly developed by hardware vendors and given away for free. These vendors sometimes set up user groups to discuss requirements, which they incorporated into their software. This software development support was seen as a service to their customers.

Present-day applications are rather different in many respects. Present-day programs are often very large and are developed by teams that collaborate over periods spanning several years. These teams may be scattered across the globe. The programmers are not the future users of the system they develop and they have no expert knowledge of the application area in question. The problems that are being tackled increasingly concern everyday life: automatic bank tellers, airline reservation, salary administration, electronic commerce, automotive systems, etc. Putting a man on the moon was not conceivable without computers.

In the 1960s, people started to realize that programming techniques had lagged behind the developments in software both in size and complexity. To many people, programming was still an art and had never become a craft. An additional problem was that many programmers had not been formally educated in the field. They had learned by doing. On the organizational side, solutions to problems often involved adding more and more programmers to the project, the so-called 'million-monkey' approach.

As a result, software was often delivered too late, programs did not behave as the user expected, programs were rarely adaptable to changed circumstances, and many errors were detected only after the software had been delivered to the customer. This became known as the 'software crisis'.

This type of problem really became manifest in the 1960s. Under the auspices of NATO, two conferences were devoted to the topic in 1968 and 1969 (Naur and Randell, 1968; Buxton and Randell, 1969). Here, the term 'software engineering' was coined in a somewhat provocative sense. Shouldn't it be possible to build software in the way one builds bridges and houses, starting from a theoretical basis and using sound and proven design and construction techniques, as in other engineering fields?

Software serves some organizational purpose. The reasons for embarking on a software development project vary. Sometimes, a solution to a problem is not feasible without the aid of computers, such as weather forecasting or automated bank telling. Sometimes, software can be used as a vehicle for new technologies, such as typesetting, the production of chips, or manned space trips. In yet other cases, software may increase user service (library automation, e-commerce) or save money (automated stock control).

In many cases, the expected economic gain will be a major driving force for automation. It may not, however, always be easy to prove that automation saves money (just think of office automation) because, apart from direct cost savings, the economic gain may also manifest itself in such things as more flexible production or a faster or better user service. In either case, software development is a value-creating activity.

Boehm (1981) estimated the total expenditure on software in the US to be $40 billion in 1980. This was approximately 2% of the GNP. In 1985, the total expenditure had risen to $70 billion in the US and $140 billion worldwide. Boehm and Sullivan (1999) estimated the annual expenditure on software development in 1998 to be $300-400 billion in the US and twice that amount worldwide.

So the cost of software is of crucial importance. This concerns not only the cost of developing the software, but also the cost of keeping the software operational once it has been delivered to the customer. In the course of time, hardware costs have decreased dramatically. Hardware costs now typically comprise less than 20% of total expenditure (see Figure 1.1). The remaining 80% are comprised of all non-hardware costs: the cost of programmers, analysts, management, user training, secretarial help, etc.

An aspect closely linked with cost is productivity. In the 1980s, the quest for data-processing personnel increased by 12% per year, while the population of people working in data processing and the productivity of those people each grew by approximately 4% per year (Boehm, 1987a). This situation has not fundamentally changed (Jones, 1999). The net effect is a growing gap between demand and supply. The result is both a backlog with respect to the maintenance of existing software and a slowing down in the development of new applications. The combined effect may have repercussions on the competitive edge of an organization, especially when there are severe time-to-market constraints. These developments have led to a shift from producing software to using software. We'll come back to this topic in Section 1.6 and Chapters 17-19.

The issues of cost and productivity of software development deserve our serious attention. However, this is not the complete story. Society is increasingly dependent on software. The quality of the systems we develop increasingly determines the quality of our existence. Consider as an example the following message from a Dutch newspaper on 6 June 1980, under the heading 'Americans saw the Russians coming':

For a short period last Tuesday, the United States brought their atomic bombers and nuclear missiles to an increased state of alarm when, because of a computer error, a false alarm indicated that the Soviet Union had started a missile attack.

Efforts to repair the error were apparently in vain, for on 9 June 1980, the same newspaper reported:

For the second time within a few days, a deranged computer reported that the Soviet Union had started a nuclear attack against the United States....

„Über diesen Titel“ kann sich auf eine andere Ausgabe dieses Titels beziehen.

Weitere beliebte Ausgaben desselben Titels

9788126527373: Software Engineering: Principles and Practice

Vorgestellte Ausgabe

ISBN 10:  8126527374 ISBN 13:  9788126527373
Verlag: Wiley India, 2010
Softcover