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
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