Undergraduate Topics in Computer Science
Series Editor
Ian Mackie
Dept of Infomatics, Univ of Sussex,
Palaiseau CX, France
Undergraduate Topics in Computer
Science (UTiCS) delivers high-quality instructional content for
undergraduates studying in all areas of computing and information
science. From core foundational and theoretical material to
final-year topics and applications, UTiCS books take a fresh,
concise, and modern approach and are ideal for self-study or for a
one- or two-semester course. The texts are all authored by
established experts in their fields, reviewed by an international
advisory board, and contain numerous examples and problems. Many
include fully worked solutions.
More information about this series at
http://www.springer.com/series/7592
Gerard O’Regan
Concise Guide to Software EngineeringFrom Fundamentals to Application
Methods
Gerard O’Regan
SQC Consulting, Cork, Ireland
ISSN 1863-7310e-ISSN 2197-1781
Undergraduate Topics in
Computer Science
ISBN 978-3-319-57749-4e-ISBN 978-3-319-57750-0
DOI 10.1007/978-3-319-57750-0
Library of Congress Control
Number: 2017939621
© Springer International Publishing AG
2017
This work is
subject to copyright. All rights are reserved by the Publisher,
whether the whole or part of the material is concerned,
specifically the rights of translation, reprinting, reuse of
illustrations, recitation, broadcasting, reproduction on microfilms
or in any other physical way, and transmission or information
storage and retrieval, electronic adaptation, computer software, or
by similar or dissimilar methodology now known or hereafter
developed.
The use of
general descriptive names, registered names, trademarks, service
marks, etc. in this publication does not imply, even in the absence
of a specific statement, that such names are exempt from the
relevant protective laws and regulations and therefore free for
general use.
The publisher, the
authors and the editors are safe to assume that the advice and
information in this book are believed to be true and accurate at
the date of publication. Neither the publisher nor the authors or
the editors give a warranty, express or implied, with respect to
the material contained herein or for any errors or omissions that
may have been made. The publisher remains neutral with regard to
jurisdictional claims in published maps and institutional
affiliations.
Printed on acid-free
paper
This Springer imprint is published by
Springer Nature
The registered company is Springer
International Publishing AG
The registered company address is:
Gewerbestrasse 11, 6330 Cham, Switzerland
In memory
of my dear godmother
Mrs. Maureen Barry
Preface
Overview
The objective of this book was to
provide a concise introduction to the software engineering field to
students and practitioners. The principles of software engineering
are discussed, and the goal is to give the reader a grasp of the
fundamentals of the software engineering field, as well as guidance
on how to apply the theory in an industrial environment.
Organization and Features
Chapter 1 presents a broad overview of
software engineering, and discusses various software lifecycles and
the phases in software development. We discuss requirements
gathering and specification, software design, implementation,
testing and maintenance. The lightweight Agile methodology is
introduced, and it has become very popular in industry.
Chapter 2 provides an introduction to project
management for traditional software engineering, and we discuss
project estimation, project planning and scheduling, project
monitoring and control, risk management, managing communication and
change, and managing project quality.
Chapter 3 discusses requirements engineering
and discusses activities such as requirements gathering,
requirements elicitation, requirements analysis, requirements
management, and requirements verification and validation.
Chapter 4 discusses design and development,
and software design is the blueprint of the solution to be
developed. It is concerned with the high-level architecture of the
system, as well as the detailed design that describes the
algorithms and functionality of the individual programmes. The
detailed design is then implemented in a programming language such
as C++ or Java. We discuss software development topics such as
software reuse, customized-off-the-shelf software (COTS) and
open-source software development.
Chapter 5 discusses software configuration
management and discusses the fundamental concept of a baseline.
Configuration management is concerned with identifying those
deliverables that must be subject to change control, and
controlling changes to them.
Chapter 6 discusses software inspections,
which play an important role in building quality into a product.
The well-known Fagan inspection process that was developed at IBM
in the 1970s is discussed, as well as lighter review and
walk-through methodologies.
Chapter 7 is concerned with software testing,
and discusses the various types of testing that may be carried out
during the project. We discuss test planning, test case definition,
test environment set-up, test execution, test tracking, test
metrics, test reporting and testing in an e-commerce
environment.
Chapter 8 is concerned with the selection and
management of a software supplier. It discusses how candidate
suppliers may be identified, formally evaluated against defined
selection criteria, and how the appropriate supplier is selected.
We discuss how the selected supplier is managed during the
project.
Chapter 9 discusses software quality
assurance and the importance of process quality. It is a premise in
the quality field that good processes and conformance to them is
essential for the delivery of high-quality product, and this
chapter discusses audits and describes how they are carried
out.
Chapter 10 is concerned with software metrics
and problem-solving, and this includes a discussion of the balanced
score card which assists in identifying appropriate metrics for the
organization. The Goal Question Metric (GQM) approach is discussed,
and this allows appropriate metrics related to the organization
goals to be defined. A selection of sample metrics for an
organization is presented, and problem-solving tools such as
fishbone diagrams, pareto charts and trend charts are
discussed.
Chapter 11 discusses software reliability and
dependability, and covers topics such as software reliability and
software reliability models; the Cleanroom methodology, system
availability; safety and security critical systems; and
dependability engineering.
Chapter 12 discusses formal methods, which
consist of a set of mathematical techniques to specify and derive a
programme from its specification. Formal methods may be employed to
rigorously state the requirements of the proposed system. They may
be employed to derive a programme from its mathematical
specification, and they may be used to provide a rigorous proof
that the implemented programme satisfies its specification. They
have been mainly applied to the safety critical field.
Chapter 13 presents the Z specification
language, which is one of the more popular formal methods. It was
developed at the Programming Research Group at Oxford University in
the early 1980s. Z specifications are mathematical, and the use of
mathematics ensures precision and allows inconsistencies and gaps
in the specification to be identified. Theorem provers may be
employed to demonstrate that the software implementation meets its
specification.
Chapter 14 presents the unified modelling
language (UML), which is a visual modelling language for software
systems, and I used to present several views of the system
architecture. It was developed at Rational Corporation as a
notation for modelling object-oriented systems. We present various
UML diagrams such as use case diagrams, sequence diagrams and
activity diagrams.
Chapter 15 discusses software process
improvement. It begins with a discussion of a software process, and
discusses the benefits that may be gained from a software process
improvement initiative. Various models that support software
process improvement are discussed, and these include the Capability
Maturity Model Integration (CMMI), ISO 9000, Personal Software
Process (PSP) and Team Software Process (TSP).
Chapter 16 gives an overview of the CMMI
model and discusses its five maturity levels and their constituent
process areas. We discuss both the staged and continuous
representations of the CMMI, and SCAMPI appraisals that indicate
the extent to which the CMMI has been implemented in the
organization, as well as identifying opportunities for
improvement.
Chapter 17 discusses various tools to support
the various software engineering activities. The focus is first to
define the process and then to find tools to support the process.
Tools to support project management are discussed as well as tools
to support requirements engineering, configuration management,
design and development activities and software testing.
Chapter 18 discusses the Agile methodology
which is a popular lightweight approach to software development.
Agile provides opportunities to assess the direction of a project
throughout the development lifecycle, and ongoing changes to
requirements are considered normal in the Agile world. It has a
strong collaborative style of working, and it advocates adaptive
planning and evolutionary development,
Chapter 19 discusses innovation in the
software field including miscellaneous topics such as distributed
systems, service-oriented architecture, software as a service,
cloud computing and embedded systems. We discuss the need for
innovation in software engineering, and discuss some recent
innovations such as aspect-oriented software engineering.
Chapter 20 is the concluding chapter in which
we summarize the journey that we have travelled in this book.
Audience
The main audience of this book are
computer science students who are interested in learning about
software engineering and in learning on how to build high-quality
and reliable software on time and on budget. It will also be of
interest to industrialists including software engineers, quality
professionals and software managers, as well as the motivated
general reader.
Acknowledgements
I am deeply indebted to family and
friends who supported my efforts in this endeavour, and my thanks,
as always, to the team at Springer. This book is dedicated to my
late godmother (Mrs. Maureen Barry), who I always enjoyed visiting
in Ringaskiddy, Co. Cork.
Gerard O’Regan
Cork,
Ireland
Contents
Reference 46
5.6
Summary 86
7.13
Summary 121
8.11
Summary 129
9.10
Summary 138
13.2
Sets 212
13.3
Relations 213
13.4
Functions 215
13.5
Sequences 216
13.6
Bags 217
13.9
Proof in Z 222
13.11
Summary 223
References 224
14.8
Summary 238
References 238
15.12
Summary 253
References 254
17.9
Summary 294
Reference 295
18.8
Summary 304
Reference 305
19.9
Summary 314
References 315
Glossary321
References327
Index329
List of Figures
Fig. 1.1 Standish
report—results of 1995 and 2009 survey3
Fig. 1.2 Standish
1998 report—estimation accuracy7
Fig. 1.3 Waterfall
V lifecycle model9
Fig. 1.4 SPIRAL
lifecycle model … public domain10
Fig. 1.5 Rational
Unified Process12
Fig. 2.1 Simple
process map for project planning34
Fig. 2.2 Sample
microsoft project schedule34
Fig. 2.3 Simple
process map for project monitoring and control39
Fig. 2.4 Prince 2
project board41
Fig. 2.5 Project
management triangle43
Fig. 2.6 Prince 2
processes44
Fig. 3.1
Requirements process52
Fig. 4.1 C.A.R
Hoare (public domain)64
Fig. 4.2 David
Parnas65
Fig. 5.1 Simple
process map for change requests83
Fig. 5.2 Simple
process map for configuration management84
Fig. 6.1 Michael
Fagan88
Fig. 6.2 Template for
semi-formal review94
Fig. 6.3 Sample
defect types in a project (ODC)101
Fig. 6.4 Template for
Fagan inspection102
Fig. 7.1
Simplified test process108
Fig. 7.2 Sample
test status110
Fig. 7.3
Cumulative defects114
Fig. 9.1 Sample
audit process133
Fig. 10.1 GQM
example141
Fig. 10.2 The
balanced scorecard143
Fig. 10.3 Balanced
score card and implementing strategy143
Fig. 10.4 Customer
survey arrivals145
Fig. 10.5 Customer
satisfaction measurements146
Fig. 10.6 Process
improvement measurements146
Fig. 10.7 Status
of process improvement suggestions147
Fig. 10.8 Age of
open process improvement suggestions147
Fig. 10.9 Process
improvement productivity148
Fig. 10.10
Employee headcount in current year148
Fig. 10.11
Employee turnover in current year149
Fig. 10.12
Schedule timeliness metric149
Fig. 10.13 Effort
timeliness metric150
Fig. 10.14
Requirements delivered151
Fig. 10.15 Total
number of issues in project151
Fig. 10.16 Open
issues in project152
Fig. 10.17 Age of
open defects in project152
Fig. 10.18 Problem
arrivals per month153
Fig. 10.19 Phase
containment effectiveness153
Fig. 10.20 Annual
audit schedule154
Fig. 10.21 Status
of audit actions154
Fig. 10.22 Audit
action types155
Fig. 10.23
Customer queries (arrivals/closures)155
Fig. 10.24 Outage
time per customer156
Fig. 10.25
Availability of system per month157
Fig. 10.26
Configuration management157
Fig. 10.27 CMMI
maturity in current year158
Fig. 10.28 Cost of
poor quality (COPQ)159
Fig. 10.29
Fishbone cause-and-effect diagram163
Fig. 10.30
Histogram165
Fig. 10.31 Pareto
chart outages166
Fig. 10.32 Trend
chart estimation accuracy167
Fig. 10.33 Scatter
graph amount inspected rate/error density168
Fig. 10.34
Estimation accuracy and control charts168
Fig. 12.1
Deterministic finite state machine202
Fig. 13.1
Specification of positive square root210
Fig. 13.2
Specification of a library system212
Fig. 13.3
Specification of borrow operation212
Fig. 13.4
Specification of vending machine using bags218
Fig. 13.5 Schema
inclusion220
Fig. 13.6 Merging
schemas (S 1 ∨ S 2 ) 220
Fig. 13.7 Schema
composition221
Fig. 13.8
Refinement commuting diagram222
Fig. 14.1 Simple
object diagram230
Fig. 14.2
Use case diagram of ATM machine
231
Fig. 14.3 UML
sequence diagram for balance enquiry232
Fig. 14.4
UML activity diagram 233
Fig. 14.5
UML state diagram 233
Fig. 14.6
Iteration in rational unified
process 236
Fig. 14.7 Phases
and workflows in rational unified process237
Fig. 15.1 Process
as glue for people, procedures and tools241
Fig. 15.2 Sample
process map242
Fig. 15.3 Steps in
process improvement243
Fig. 15.4 ISO 9001
quality management system246
Fig. 15.5
Continuous improvement cycle250
Fig. 15.6
Appraisals252
Fig. 16.1 Process
as glue for people, procedures and tools256
Fig. 16.2 ISO/IEC
12207 standard for software engineering
processes257
Fig. 16.3 CMMI
worldwide maturity 2013260
Fig. 16.4 CMMI
maturity levels264
Fig. 16.5 CMMI
capability levels265
Fig. 16.6
CMMI—continuous representation265
Fig. 16.7
CMMI-staged model270
Fig. 16.8 Specific
practices for SG1—manage requirements271
Fig. 17.1
Dashboard views in planview enterprise283
Fig. 17.2 Planview
process builder284
Fig. 17.3 IBM
Rational D oors
tool 286
Fig. 17.4 IBM
Rational Software Modeler287
Fig. 17.5 Sparx
Enterprise Architect288
Fig. 17.6 LDRA
code coverage analysis report291
Fig. 17.7 HP
Quality Center293
Fig. 19.1 A
distributed system308
Fig. 19.2
Service-oriented architecture310
Fig. 19.3 Cloud
computing. Creative commons311
Fig. 19.4 Example
of an embedded system312
List of Tables
Table 2.1 Estimation
techniques32
Table 2.2 Example
work-breakdown structure33
Table 2.3 Sample
project management checklist35
Table 2.4 Risk
management activities37
Table 2.5 Activities in
managing issues and change requests40
Table 2.6 Project board
roles and responsibilities41
Table 2.7 Key processes
in Prince 244
Table 3.1
Characteristics of good requirements49
Table 3.2 Symptoms of
poor requirements process50
Table 3.3 Managing
change requests57
Table 3.4 Sample trace
matrix58
Table 4.1 Views of
system architecture63
Table 4.2
Object-oriented paradigm69
Table 5.1 Features of
good configuration management76
Table 5.2 Symptoms of
poor configuration management77
Table 5.3 Software
configuration management activities78
Table 5.4 Build plan
for project78
Table 5.5 CMMI
requirements for configuration management79
Table 5.6 Sample
configuration management audit checklist85
Table 6.1 Informal
review90
Table 6.2 Structured
walk-throughs91
Table 6.3 Activities
for semi-formal review meeting93
Table 6.4 Overview
Fagan inspection process95
Table 6.5 Strict Fagan
inspection guidelines96
Table 6.6 Tailored
(Relaxed) Fagan inspection guidelines96
Table 6.7 Inspector
roles97
Table 6.8 Fagan entry
criteria97
Table 6.9 Inspection
meeting98
Table 6.10 Fagan exit
criteria99
Table 6.11 Issue
severity99
Table 6.12
Classification of defects in Fagan inspections100
Table 6.13
Classification of ODC defect types100
Table 7.1 Types of
testing109
Table 7.2 Simple test
schedule112
Table 8.1 Supplier
selection and management124
Table 9.1 Auditing
activities132
Table 9.2 Sample
auditing checklist135
Table 9.3 Sample audit
report136
Table 10.1 BSC
objectives and measures for IT service
organization144
Table 10.2 Cost of
quality categories158
Table 10.3 Implementing
metrics159
Table 10.4 Goals and
questions160
Table 10.5 Phase
containment effectiveness160
Table 11.1 Adam’s 1984
study of software failures of IBM products175
Table 11.2 New and old
version of software175
Table 11.3 Cleanroom
results in IBM176
Table 11.4
Characteristics of good software reliability
model177
Table 11.5 Software
reliability models177
Table 11.6 Dimensions
of dependability180
Table 12.1 Criticisms
of formal methods188
Table 12.2 Parnas’s
contributions to software engineering202
Table 12.3 Techniques
for validation of formal specification204
Table 12.4 Why are
formal methods difficult?204
Table 12.5
Characteristics of a usable formal method204
Table 13.1 Schema
composition220
Table 14.1
Classification of UML things227
Table 14.2 UML
diagrams228
Table 14.3 Simple class
diagram229
Table 14.4 Advantages
of UML234
Table 14.5 OCL
constraints235
Table 14.6 UML
tools235
Table 15.1 Benefits of
software process improvement (CMMI)245
Table 15.2 Continuous
improvement cycle251
Table 15.3 Teams in
improvement programme252
Table 15.4 Phases in an
Appraisal253
Table 16.1 Motivation
for CMMI implementation260
Table 16.2 Benefits of
CMMI implementation261
Table 16.3 CMMI
maturity levels262
Table 16.4 CMMI
capability levels for continuous representation266
Table 16.5 CMMI process
categories267
Table 16.6 CMMI Process
Areas268
Table 16.7 CMMI generic
practices272
Table 16.8
Implementation of generic practices274
Table 17.1 Tool
evaluation table280
Table 17.2 Key
capabilities of planview enterprise283
Table 17.3 Tools for
requirements development and management285
Table 17.4 Tools for
software design287
Table 17.5 Integrated
development environment289