Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Online Railway Reservation, Assignments of Software Engineering

This is an example document for online railway reservation system.

Typology: Assignments

2020/2021

Uploaded on 07/06/2021

umamakeswari-a
umamakeswari-a 🇮🇳

1 document

1 / 866

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Log on to aw-bc.com/computing
for a full list of Computing titles.
The 8th edition of the best-selling
introduction to software engineering is
now updated with three new chapters on
state-of-the-art topics.
NEW CHAPTERS IN THE 8TH EDITION
Security engineering, showing you how
you can design software to resist attacks
and recover from damage;
Service-oriented software engineering,
explaining how reusable web services
can be used to develop new
applications;
Aspect-oriented software development,
introducing new techniques based on
the separation of concerns.
Software
Engineering
Software
Engineering
KEY FEATURES
• Includes the latest developments in software
engineering theory and practice, integrated
with relevant aspects of systems engineering.
• Extensive coverage of agile methods and
reuse.
Integrated coverage of system safety,
security and reliability – illustrating best
practice in developing critical systems.
Two running case studies (an information
system and a control system) illuminate
different stages of the software lifecycle.
ONLINE RESOURCES
Visit www.pearsoned.co.uk/sommerville to
access a full range of resources for students
and instructors.
In addition, a rich collection of resources
including links to other websites, teaching
material on related courses and additional
chapters is available at
http://www.software-engin.com.
IAN SOMMERVILLE is Professor of Software
Engineering at the University of St. Andrews
in Scotland
8
88
SOMMERVILLE
SOMMERVILLE
SOMMERVILLE
Software
Engineering
Software Engineering
ISBN 0-321-31379-8
9 780321 313799
www.pearson-books.com
an imprint of
0321313798_cover.qxd 26/4/06 17:48 Page 1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Partial preview of the text

Download Online Railway Reservation and more Assignments Software Engineering in PDF only on Docsity!

S O M M E RV I L L E

Software

Engineering

Software Engineering Eighth Edition

Visit the Software Engineering , eighth edition Companion

Website at www.pearsoned.co.uk/sommerville to find

valuable student learning material including:

  • Lecture presentations (in PowerPoint and PDF) for all

chapters in the book

  • Class quiz questions for each chapter
  • Case studies
  • Project suggestions
  • Suggestions for further reading and links to web

resources for each chapter

This 8th edition has enhanced the 7th edition with

new material on security engineering, service-oriented

software engineering and aspect-oriented software

development. For educational purposes, it is completely

compatible with the 7th edition.

Software Engineering

Eighth Edition

Ian Sommerville

Pearson Education Limited Edinburgh Gate HarlowEssex CM20 2JE England and Associated Companies around the World. Visit us on the World Wide Web at:www.pearsoned.co.uk

First published 1982Second Edition 1984 Third Edition 1989Fourth Edition 1992 Fifth Edition 1995Sixth Edition 2001 Seventh Edition 2004 Eighth Edition 2007

© Addison-Wesley Publishers Limited 1982, 1984© Pearson Education Limited 1989, 1995, 2001, 2004, 2007

The right of Ian Sommerville to be identified as author ofthis Work has been asserted by him in accordance with the Copyright, Designs and Patents Act 1988. All rights reserved. No part of this publication may be reproduced, storedin a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without either the priorwritten permission of the publisher or a licence permitting restricted copying in the United Kingdom issued by the Copyright Licensing Agency Ltd,90 Tottenham Court Road, London W1T 4LP.

All trademarks used herein are the property of their respective owners. The useof any trademark in this text does not vest in the author or publisher any trademark ownership rights in such trademarks, nor does the use of such trademarks implyany affiliation with or endorsement of this book by such owners.

ISBN 13: 978-0-321-31379-9ISBN 10: 0-321-31379-

British Library Cataloguing-in-Publication Data A catalogue record for this book is available from the British Library

Library of Congress Cataloging-in-Publication Data A catalog record for this book is available from the Library of Congress

10 9 8 7 6 5 4 3 210 09 08 07 06

Typeset by 35 in 10/12.5pt TimesPrinted and bound in the United States of America

vi Preface
Our current software engineering methods and techniques have made us much
better at building large and complex systems than we were. However, there are still
too many projects that are late, are over budget and do not deliver the software
that meets the customer’s needs. While I was writing the 7th edition, a government
enquiry in the UK reported on the project to provide a national system to be used
in courts that try relatively minor offenders. The cost of this system was estimated
at £156 million and it was scheduled for delivery in 2001. In 2004, costs had
escalated to £390 million and it was still not fully operational. There is, therefore,
still a pressing need for software engineering education.
Over the past few years, the most significant developments in software engineer-
ing have been the emergence of the UML as a standard for object-oriented system
description and the development of agile methods such as extreme programming.
Agile methods are geared to rapid system development, explicitly involve the user
in the development team, and reduce paperwork and bureaucracy in the software
process. In spite of what some critics claim, I think these approaches embody good
software engineering practice. They have a well-defined process, pay attention to
system specification and user requirements, and have high quality standards.
However, this revision has not become a text on agile methods. Rather, I focus
on the basic software engineering processes—specification, design, development,
verification, and validation and management. You need to understand these processes
and associated techniques to decide whether agile methods are the most appropriate
development strategy for you and how to adapt and change methods to suit your
particular situation. A pervasive theme of the book is critical systems—systems whose
failure has severe consequences and where system dependability is critical. In
each part of the book, I discuss specific software engineering techniques that are
relevant to critical systems engineering.
Books inevitably reflect the opinions and prejudices of their authors. Some
readers will disagree with my opinions and with my choice of material. Such dis-
agreement is a healthy reflection of the diversity of the discipline and is essential
for its evolution. Nevertheless, I hope that all software engineers and software
engineering students can find something of interest here.

The structure of the book

The structure of the book is based around the fundamental software engineering
processes. It is organised into seven parts. The first six focus on software processes
and the final part discusses some important new software engineering technologies.
Part 1: Introduces software engineering, places it in a broader systems context
and presents the notions of software engineering processes and management.
Preface vii
Part 2: Covers the processes, techniques and deliverables that are associated with
requirements engineering. It includes a discussion of software requirements,
system modelling, formal specification and techniques for specifying dependability.
Part 3: This part is devoted to software design and design processes. Three out of
the six chapters focus on the important topic of software architectures. Other topics
include object-oriented design, real-time systems design and user interface design.
Part 4: Describes a number of approaches to development, including agile methods,
software reuse, CBSE and critical systems development. Because change is now
such a large part of development, I have integrated material on software evolution
and maintenance into this part.
Part 5: Focuses on techniques for software verification and validation. It includes
chapters on static V & V, testing and critical systems validation.
Part 6: This part covers a range of management topics: managing people,
cost estimation, quality management, process improvement and configuration
management.
Part 7: The final part includes three chapters that are devoted to important
new technologies that are already starting to be used. The chapters cover security
engineering, service-oriented software engineering and aspect-oriented software
development.
In the introduction to each part, I discuss the structure and organisation in more
detail.

Changes from the 7th edition

This new edition of my textbook can be thought of as a mid-life upgrade than a
radical new revision of the book. I have designed it to be completely compatible
with the 7th edition but have included a new section on Emerging Technologies.
This discusses recent developments which I believe are significant for the future of
software engineering. This section includes three additional chapters:
30. Security engineering where I discuss issues of how to ensure that your soft-
ware is secure and can resist external attacks.
31. Service-oriented software engineering where I describe new approaches to
application development using reusable web services.
32. Aspect-oriented software development where I introduce a new technique of
software development based around the separation of concerns.
As the other chapters in the book are still current and relevant, I have not mod-
ified these, apart from very small changes to link to the new material in Chapters
30–32. More information on changes and the differences between the 6th and 7th
editions is available from the book website.
Preface ix
3. More advanced courses in specific software engineering topics The chapters
can form a foundation for a specific software course, but they must be sup-
plemented with further reading that explores the topic in greater detail. For
example, I teach an MSc module in systems engineering that relies on material
here. I have included details of this course and a course on critical systems
engineering on the web site.
The benefit of a general text like this is that it can be used in several related
courses. The text can be used in an introductory software engineering course and
in courses on specification, design and critical systems. Courses on component-based
software engineering and systems engineering use the book along with additional
papers that are distributed to students. Having a single text presents students with
a consistent view of the subject—and they don’t have to buy several books.
To reinforce the student’s learning experience, I have included a glossary of key
terms, with additional definitions on the web site. Furthermore, each chapter has:
  • a clearly defined set of objectives set out on the first page;
  • a list of key points covered in the chapter;
  • suggested further reading—either books that are currently in print or easily
available papers (lists of other suggested readings and links can be found on
my web site);
  • exercises, including design exercises.
The Software Engineering Body of Knowledge project (http://www.swebok.org)
was established to define the key technical knowledge areas that are relevant to pro-
fessional software engineers. These are organised under 10 headings: requirements,
design, construction, testing, maintenance, configuration management, management,
process, tools and methods, and quality. While it would be impossible to cover all
of the knowledge areas proposed by the SWEBOK project in a single textbook, all
of the top-level areas are discussed in this book.

Web pages

The publishers web site that is associated with the book is:
http://www.pearsoned.co.uk/sommerville
To support the use of this book in software engineering courses, I have included
a wide range of supplementary material on the web site. If you follow the Material
for Instructors links, you can find:
x Preface
  • lecture presentations (PowerPoint and PDF) for all chapters in the book;
  • class quiz questions for each chapter;
  • case studies;
  • project suggestions;
  • course structure descriptions;
  • suggestions for further reading and links to web resources for each chapter;
  • solutions for a selection of the exercises associated with each chapter and for
the quiz questions (available to instructor’s only).
My own web site, includes all of the material on the publishers web site plus
extensive supplementary material on software engineering such as links to other sites,
invited lectures that I have presented, teaching material that I have developed for
related courses such as Systems Engineering and the web sites of previous editions
of Software Engineering. The URL of this site is:
http://www.software-engin.com
It has been my policy, both in the previous edition and in this edition, to keep
the number of web links in the book to an absolute minimum. The reason for this
is that these links are subject to change and, once printed, it is impossible to update
them. Consequently, the book’s web page includes a large number of links to resources
and related material on software engineering. If you use these and find problems,
please let me know and I will update the links.
I welcome your constructive comments and suggestions about the book and the web
site. You can contact me at ian@software-engin.com. I recommend that you include
[SE8] in the subject of the e-mail message to ensure that my spam filters do not
accidentally reject your mail. I regret that I do not have time to help students with their
homework, so please do not ask me how to solve any of the problems in the book.

Acknowledgements

A large number of people have contributed over the years to the evolution of this book
and I’d like to thank everyone (reviewers, students and book users who have e-mailed
me) who has commented on previous editions and made constructive suggestions
for change. The editorial and production staff at Pearson Education in England and
the US were supportive and helpful, and produced the book in record time. So thanks
to Simon Plumtree, Mary Lince, Ros Woodward, Keith Mansfield, Patty Mahtani,
Daniel Rausch, Carol Noble and Sharon Burkhardt for their help and support.

Contents at a glance

Content s

  • Part 1 Overview Preface v
    • Chapter 1 Introduction
    • Chapter 2 Socio-technical systems
    • Chapter 3 Critical systems
    • Chapter 4 Software processes
    • Chapter 5 Project management
  • Part 2 Requirements
    • Chapter 6 Software requirements
    • Chapter 7 Requirements engineering processes
    • Chapter 8 System models
    • Chapter 9 Critical systems specification
    • Chapter 10 Formal specification
  • Part 3 Design
    • Chapter 11 Architectural design
    • Chapter 12 Distributed systems architectures
    • Chapter 13 Application architectures
    • Chapter 14 Object-oriented design
    • Chapter 15 Real-time software design
    • Chapter 16 User interface design
  • Part 4 Development
    • Chapter 17 Rapid software development
    • Chapter 18 Software reuse
    • Chapter 19 Component-based software engineering
    • Chapter 20 Critical systems development
    • Chapter 21 Software evolution
  • Part 5 Verification and validation
    • Chapter 22 Verification and validation
    • Chapter 23 Software testing
    • Chapter 24 Critical systems validation
  • Part 6 Managing people
    • Chapter 25 Managing people
    • Chapter 26 Software cost estimation
    • Chapter 27 Quality management
    • Chapter 28 Process improvement
    • Chapter 29 Configuration management
  • Part 7 Emerging technologies
    • Chapter 30 Security engineering
    • Chapter 31 Service-oriented software engineering
    • Chapter 32 Aspect-oriented software development
    • Glossary
    • References
    • Index
    • Part 1 Overview Preface v
  • Chapter 1 Introduction - 1.1 FAQs about software engineering - 1.2 Professional and ethical responsibility - Key Points - Further Reading - Exercises
  • Chapter 2 Socio-technical systems - 2.1 Emergent system properties - 2.2 Systems engineering - 2.3 Organisations, people and computer systems - 2.4 Legacy systems - Key Points - Further Reading - Exercises
  • Chapter 3 Critical systems xiv Contents
    • 3.1 A simple safety-critical system
    • 3.2 System dependability
    • 3.3 Availability and reliability
    • 3.4 Safety
    • 3.5 Security
    • Key Points
    • Further Reading
    • Exercises
  • Chapter 4 Software processes
    • 4.1 Software process models
    • 4.2 Process iteration
    • 4.3 Process activities
    • 4.4 The Rational Unified Process
    • 4.5 Computer-Aided Software Engineering
    • Key Points
    • Further Reading
    • Exercises
  • Chapter 5 Project management
    • 5.1 Management activities
    • 5.2 Project planning
    • 5.3 Project scheduling
    • 5.4 Risk management
    • Key Points
    • Further Reading
    • Exercises
    • Part 2 Requirements Contents xv
  • Chapter 6 Software requirements - 6.1 Functional and non-functional requirements - 6.2 User requirements - 6.3 System requirements - 6.4 Interface specification - 6.5 The software requirements document - Key Points - Further Reading - Exercises
  • Chapter 7 Requirements engineering processes - 7.1 Feasibility studies - 7.2 Requirements elicitation and analysis - 7.3 Requirements validation - 7.4 Requirements management - Key Points - Further Reading - Exercises
  • Chapter 8 System models - 8.1 Context models - 8.2 Behavioural models - 8.3 Data models - 8.4 Object models - 8.5 Structured methods - Key Points - Further Reading - Exercises
    • Chapter 9 Critical systems specification xvi Contents - 9.1 Risk-driven specification - 9.2 Safety specification - 9.3 Security specification - 9.4 Software reliability specification - Key Points - Further Reading - Exercises
  • Chapter 10 Formal specification - 10.1 Formal specification in the software process - 10.2 Sub-system interface specification - 10.3 Behavioural specification - Key Points - Further Reading - Exercises - Part 3 Design
  • Chapter 11 Architectural design - 11.1 Architectural design decisions - 11.2 System organisation - 11.3 Modular decomposition styles - 11.4 Control styles - 11.5 Reference architectures - Key Points - Further Reading - Exercises
  • Chapter 12 Distributed systems architectures - 12.1 Multiprocessor architectures
    • 12.2 Client–server architectures Contents xvii
    • 12.3 Distributed object architectures
    • 12.4 Inter-organisational distributed computing
    • Key Points
    • Further Reading
    • Exercises
  • Chapter 13 Application architectures
    • 13.1 Data processing systems
    • 13.2 Transaction processing systems
    • 13.3 Event processing systems
    • 13.4 Language processing systems
    • Key Points
    • Further Reading
    • Exercises
  • Chapter 14 Object-oriented design
    • 14.1 Objects and object classes
    • 14.2 An object-oriented design process
    • 14.3 Design evolution
    • Key Points
    • Further Reading
    • Exercises
  • Chapter 15 Real-time software design
    • 15.1 System design
    • 15.2 Real-time operating systems
    • 15.3 Monitoring and control systems
    • 15.4 Data acquisition systems
    • Key Points
    • Further Reading
    • Exercises
  • Chapter 16 User interface design xviii Contents - 16.1 Design issues - 16.2 The UI design process - 16.3 User analysis - 16.4 User interface prototyping - 16.5 Interface evaluation - Key Points - Further Reading - Exercises
    • Part 4 Development
  • Chapter 17 Rapid software development - 17.1 Agile methods - 17.2 Extreme programming - 17.3 Rapid application development - 17.4 Software prototyping - Key Points - Further Reading - Exercises
  • Chapter 18 Software reuse - 18.1 The reuse landscape - 18.2 Design patterns - 18.3 Generator-based reuse - 18.4 Application frameworks - 18.5 Application system reuse - Key Points - Further Reading - Exercises
  • Chapter 19 Component-based software engineering Contents xix - 19.1 Components and component models - 19.2 The CBSE process - 19.3 Component composition - Key Points - Further Reading - Exercises
  • Chapter 20 Critical systems development - 20.1 Dependable processes - 20.2 Dependable programming - 20.3 Fault tolerance - 20.4 Fault-tolerant architectures - Key Points - Further Reading - Exercises
  • Chapter 21 Software evolution - 21.1 Program evolution dynamics - 21.2 Software maintenance - 21.3 Evolution processes - 21.4 Legacy system evolution - Key Points - Further Reading - Exercises
    • Part 5 Verification and Validation
  • Chapter 22 Verification and validation - 22.1 Planning verification and validation - 22.2 Software inspections