Introduction to Software Engineering 2nd Edition Ronald J. Leach
Introduction to Software Engineering 2nd Edition Ronald J. Leach
Introduction to Software Engineering 2nd Edition Ronald J. Leach
Introduction to Software Engineering 2nd Edition Ronald J. Leach
1. Introduction to Software Engineering 2nd Edition
Ronald J. Leach download
https://textbookfull.com/product/introduction-to-software-
engineering-2nd-edition-ronald-j-leach/
Download more ebook from https://textbookfull.com
2. We believe these products will be a great fit for you. Click
the link to download now, or visit textbookfull.com
to discover even more!
Introduction to software engineering Second Edition
Leach
https://textbookfull.com/product/introduction-to-software-
engineering-second-edition-leach/
Engineering Software Products: An Introduction to
Modern Software Engineering 1st Edition Ian Sommerville
https://textbookfull.com/product/engineering-software-products-
an-introduction-to-modern-software-engineering-1st-edition-ian-
sommerville/
Introduction to Software Testing 2nd Edition Paul
Ammann
https://textbookfull.com/product/introduction-to-software-
testing-2nd-edition-paul-ammann/
Software Engineering Modern Approaches Eric J. Braude
https://textbookfull.com/product/software-engineering-modern-
approaches-eric-j-braude/
3. Introduction to Software for Chemical Engineers 2nd
Edition Mariano Martín Martín (Editor)
https://textbookfull.com/product/introduction-to-software-for-
chemical-engineers-2nd-edition-mariano-martin-martin-editor/
Introduction to geotechnical engineering 2nd Edition
Braja M. Das
https://textbookfull.com/product/introduction-to-geotechnical-
engineering-2nd-edition-braja-m-das/
Automotive Software Architectures An Introduction 2nd
2nd Edition Miroslaw Staron
https://textbookfull.com/product/automotive-software-
architectures-an-introduction-2nd-2nd-edition-miroslaw-staron/
Introduction to Industrial Organizational Psychology
Ronald E. Riggio
https://textbookfull.com/product/introduction-to-industrial-
organizational-psychology-ronald-e-riggio/
Automotive Software Architectures: An Introduction, 2nd
ed. 2nd Edition Miroslaw Staron
https://textbookfull.com/product/automotive-software-
architectures-an-introduction-2nd-ed-2nd-edition-miroslaw-staron/
4. CHAPMAN & HALL/CRC INNOVATIONS IN
SOFTWARE ENGINEERING AND SOFTWARE DEVELOPMENT
Introduction to
Software
Engineering
Second Edition
CHAPMAN & HALL/CRC INNOVATIONS IN
SOFTWARE ENGINEERING AND SOFTWARE DEVELOPMENT
Ronald J. Leach
7. Chapman & Hall/CRC Innovations in Software Engineering
and Software Development
Series Editor
Richard LeBlanc
Chair, Department of Computer Science and Software Engineering, Seattle University
AIMS AND SCOPE
This series covers all aspects of software engineering and software development. Books
in the series will be innovative reference books, research monographs, and textbooks at
the undergraduate and graduate level. Coverage will include traditional subject matter,
cutting-edge research, and current industry practice, such as agile software development
methods and service-oriented architectures. We also welcome proposals for books that
capture the latest results on the domains and conditions in which practices are most ef-
fective.
PUBLISHED TITLES
Building Enterprise Systems with ODP: An Introduction to Open
Distributed Processing
Peter F. Linington, Zoran Milosevic, Akira Tanaka, and Antonio Vallecillo
Computer Games and Software Engineering
Kendra M. L. Cooper and Walt Scacchi
Evidence-Based Software Engineering and Systematic Reviews
Barbara Ann Kitchenham, David Budgen, and Pearl Brereton
Fundamentals of Dependable Computing for Software Engineers
John Knight
Introduction to Combinatorial Testing
D. Richard Kuhn, Raghu N. Kacker, and Yu Lei
Introduction to Software Engineering, Second Edition
Ronald J. Leach
Software Designers in Action: A Human-Centric Look at Design Work
André van der Hoek and Marian Petre
Software Development: An Open Source Approach
Allen Tucker, Ralph Morelli, and Chamindra de Silva
Software Engineering: The Current Practice
Václav Rajlich
Software Essentials: Design and Construction
Adair Dingle
Software Metrics: A Rigorous and Practical Approach, Third Edition
Norman Fenton and James Bieman
Software Test Attacks to Break Mobile and Embedded Devices
Jon Duncan Hagar
8. CHAPMAN & HALL/CRC INNOVATIONS IN
SOFTWARE ENGINEERING AND SOFTWARE DEVELOPMENT
Introduction to
Software
Engineering
Second Edition
Ronald J. Leach
Howard University
Washington, DC, USA
10. v
Contents
Preface to the Second Edition, xiii
Preface to the First Edition, xxi
To the Instructor and the Reader, xxv
Chapter 1
◾
Introduction 1
1.1 THE NEED FOR SOFTWARE ENGINEERING 1
1.2 ARE SOFTWARE TEAMS REALLY NECESSARY? 7
1.3 GOALS OF SOFTWARE ENGINEERING 10
1.4 TYPICAL SOFTWARE ENGINEERING TASKS 11
1.5 SOFTWARE LIFE CYCLES 13
1.5.1 Classical Waterfall Model 14
1.5.2 Rapid Prototyping Model 16
1.5.3 Spiral Model 21
1.5.4 Market-Driven Model of Software Development 24
1.5.5 Open Source Model of Software Development 25
1.5.6 Agile Programming Model of Software Development 27
1.5.7 Common Features of All Models of Software Development 28
1.5.8 Software Evolution and the Decision to Buy versus Build
versus Reuse versus Reengineer 28
1.6 DIFFERENT VIEWS OF SOFTWARE ENGINEERING ACTIVITIES 29
1.7 SOFTWARE ENGINEERING AS AN ENGINEERING DISCIPLINE 30
1.8 SOME TECHNIQUES OF SOFTWARE ENGINEERING 35
1.8.1 Reuse 36
1.8.2 Metrics 39
1.8.3 Computer-Aided Software Engineering (CASE) 41
1.8.4 Cost Estimation 45
1.8.5 Reviews and Inspections 46
11. vi ◾ Contents
1.9 STANDARDS COMMONLY USED FOR SOFTWARE DEVELOPMENT
PROCESSES 47
1.10 ORGANIZATION OF THE BOOK 49
SUMMARY 50
KEYWORDS AND PHRASES 51
FURTHER READING 52
Chapter 2
◾
Project Management 55
2.1 SUBTEAMS NEEDED IN SOFTWARE ENGINEERING PROJECTS 57
2.2 NATURE OF PROJECT TEAMS 61
2.3 PROJECT MANAGEMENT 63
2.4 SOFTWARE PROJECT ESTIMATION 65
2.5 PROJECT SCHEDULING 74
2.6 PROJECT MEASUREMENT 77
2.7 PROJECT MANAGEMENT TOOLS 78
2.8 ROLE OF NETWORKS IN PROJECT MANAGEMENT 79
2.9 GROUPWARE 81
2.10 CASE STUDY IN PROJECT MANAGEMENT FOR AGILE PROCESSES 82
SUMMARY 85
KEYWORDS AND PHRASES 86
FURTHER READING 86
Chapter 3
◾
Requirements 89
3.1 SOME PROBLEMS WITH REQUIREMENTS DETERMINATION 89
3.2 REQUIREMENTS ELICITATION 92
3.3 REQUIREMENTS TRACEABILITY 97
3.4 SOFTWARE ARCHITECTURES AND REQUIREMENTS 99
3.4.1 Use of Data Abstraction and Information Hiding in Requirements
Engineering 100
3.4.2 Regrouping Requirements in Requirements Engineering 102
3.4.3 Reuse of Requirements in Requirements Engineering 104
3.4.4 Automation of the Requirements Engineering Process 104
3.5 USE CASES IN REQUIREMENTS ENGINEERING 105
3.6 REENGINEERING SYSTEM REQUIREMENTS 106
3.7 ASSESSMENT OF FEASIBILITY OF SYSTEM REQUIREMENTS 108
3.8 USABILITY REQUIREMENTS 109
12. Contents ◾ vii
3.9 SPECIFYING REQUIREMENTS USING STATE DIAGRAMS
AND DECISION TABLES 115
3.10 SPECIFYING REQUIREMENTS USING PETRI NETS 119
3.11 ETHICAL ISSUES 119
3.12 SOME METRICS FOR REQUIREMENTS 124
3.13 THE REQUIREMENTS REVIEW 128
3.14 A MANAGEMENT VIEWPOINT 134
3.15 CASE STUDY OF A MANAGEMENT PERSPECTIVE
ON REQUIREMENTS IN AGILE DEVELOPMENT 136
3.16 THE MAJOR PROJECT: PROBLEM STATEMENT 139
3.17 THE MAJOR PROJECT: REQUIREMENTS ELICITATION 140
3.18 THE MAJOR SOFTWARE PROJECT: REQUIREMENTS ANALYSIS 146
SUMMARY 150
KEYWORDS AND PHRASES 151
FURTHER READING 151
Chapter 4
◾
Software Design 157
4.1 INTRODUCTION 157
4.2 SOFTWARE DESIGN PATTERNS 159
4.3 INTRODUCTION TO SOFTWARE DESIGN REPRESENTATIONS 163
4.4 PROCEDURALLY ORIENTED DESIGN REPRESENTATIONS 169
4.5 SOFTWARE ARCHITECTURES 174
4.6 SOFTWARE DESIGN PRINCIPLES FOR PROCEDURALLY
ORIENTED PROGRAMS 177
4.7 WHAT IS AN OBJECT? 180
4.8 OBJECT-ORIENTED DESIGN REPRESENTATIONS 183
4.9 SOFTWARE DESIGN PRINCIPLES FOR OBJECT-ORIENTED
PROGRAMS 185
4.10 CLASS DESIGN ISSUES 189
4.11 USER INTERFACES 191
4.12 SOFTWARE INTERFACES 196
4.13 SOME METRICS FOR DESIGN 198
4.14 DESIGN REVIEWS 199
4.15 A MANAGER’S VIEWPOINT OF DESIGN 200
4.16 CASE STUDY OF DESIGN IN AGILE DEVELOPMENT 201
4.17 ARCHITECTURE OF THE MAJOR SOFTWARE ENGINEERING PROJECT 202
13. viii ◾ Contents
4.18 PRELIMINARY DESIGN OF THE MAJOR SOFTWARE PROJECT 206
4.19 SUBSYSTEM DESIGN FOR THE MAJOR SOFTWARE PROJECT 212
4.20 DETAILED DESIGN FOR THE MAJOR SOFTWARE PROJECT 217
SUMMARY 218
KEYWORDS AND PHRASES 221
FURTHER READING 221
Chapter 5
◾
Coding 227
5.1 CHOICE OF PROGRAMMING LANGUAGE 227
5.2 CODING STYLES 230
5.3 CODING STANDARDS 237
5.4 CODING, DESIGN, REQUIREMENTS, AND CHANGE 239
5.5 COUPLING CAN BE DANGEROUS 240
5.6 SOME CODING METRICS 245
5.7 CODING REVIEWS AND INSPECTIONS 249
5.8 CONFIGURATION MANAGEMENT 249
5.9 A MANAGEMENT PERSPECTIVE ON CODING 254
5.10 CASE STUDY IN CODING IN AGILE DEVELOPMENT 255
5.11 CODING OF THE MAJOR SOFTWARE PROJECT 255
SUMMARY 260
KEYWORDS AND PHRASES 260
FURTHER READING 260
Chapter 6
◾
Testing and Integration 267
6.1 TYPES OF SOFTWARE TESTING 269
6.2 BLACK-BOX MODULE TESTING 271
6.3 WHITE-BOX MODULE TESTING 274
6.4 REDUCING THE NUMBER OF TEST CASES BY EFFECTIVE
TEST STRATEGIES 278
6.5 TESTING OBJECTS FOR ENCAPSULATION AND COMPLETENESS 281
6.6 TESTING OBJECTS WITH INHERITANCE 284
6.7 GENERAL TESTING ISSUES FOR OBJECT-ORIENTED SOFTWARE 286
6.8 TEST SCRIPTS, TEST HARNESSES, AND TEST PLANS 288
6.9 SOFTWARE INTEGRATION 290
6.10 CLOUD COMPUTING AND SOFTWARE INTEGRATION:
SOFTWARE AS A SERVICE 297
14. Contents ◾ ix
6.11 MANAGING CHANGE IN THE INTEGRATION PROCESS 298
6.12 PERFORMANCE AND STRESS TESTING 300
6.13 QUALITY ASSURANCE 301
6.14 SOFTWARE RELIABILITY 302
6.15 A MANAGER’S VIEWPOINT ON TESTING AND INTEGRATION 305
6.16 CASE STUDY IN TESTING AND INTEGRATION IN AGILE
DEVELOPMENT 307
6.17 TESTING THE MAJOR SOFTWARE PROJECT 308
6.18 INTEGRATING THE MAJOR SOFTWARE PROJECT 309
SUMMARY 311
KEYWORDS AND PHRASES 312
FURTHER READING 312
Chapter 7
◾
Delivery, Installation, and Documentation 315
7.1 DELIVERY 315
7.2 INSTALLATION 321
7.3 DOCUMENTATION 323
7.4 INTERNAL DOCUMENTATION 324
7.5 EXTERNAL DOCUMENTATION 325
7.6 DESIGN RATIONALES 326
7.7 INSTALLATION, USER, TRAINING, AND OPERATIONS MANUALS 327
7.8 ONLINE DOCUMENTATION 327
7.9 READING LEVELS 328
7.10 A MANAGER’S VIEW OF DELIVERY, INSTALLATION,
AND DOCUMENTATION 329
7.11 CASE STUDY OF DELIVERY IN AGILE DEVELOPMENT 329
7.12 DELIVERY, INSTALLATION, AND DOCUMENTATION
OF THE MAJOR SOFTWARE PROJECT 330
SUMMARY 331
KEYWORDS AND PHRASES 332
FURTHER READING 332
Chapter 8
◾
Maintenance and Software Evolution 335
8.1 INTRODUCTION 335
8.2 CORRECTIVE SOFTWARE MAINTENANCE 338
8.3 ADAPTIVE SOFTWARE MAINTENANCE 343
15. x ◾ Contents
8.4 HOW TO READ REQUIREMENTS, DESIGNS, AND SOURCE CODE 346
8.5 A MANAGER’S PERSPECTIVE ON SOFTWARE MAINTENANCE 347
8.6 MAINTENANCE COSTS, SOFTWARE EVOLUTION,
AND THE DECISION TO BUY VERSUS BUILD
VERSUS REUSE VERSUS REENGINEER 347
8.7 MAINTENANCE IN AGILE DEVELOPMENT AND THE TOTAL LIFE
CYCLE COSTS 350
8.8 MAINTENANCE OF THE MAJOR SOFTWARE PROJECT 350
SUMMARY 350
KEYWORDS AND PHRASES 351
FURTHER READING 351
Chapter 9
◾
Research Issues in Software Engineering 353
9.1 SOME IMPORTANT RESEARCH PROBLEMS IN SOFTWARE
ENGINEERING 354
9.1.1 The Fundamental Question 354
9.1.2 Requirements 354
9.1.3 Design 355
9.1.4 Coding 355
9.1.5 Testing 355
9.1.6 Integration 356
9.1.7 Maintenance 356
9.1.8 Cost Estimation 357
9.1.9 Software Reuse 357
9.1.10 Fault Tolerance 358
9.1.11 Metrics 359
9.1.12 Languages and Efficiency 359
9.1.13 Language Generators 360
9.1.14 Inspections and Reviews 360
9.1.15 Distributed Systems 361
9.1.16 Software Project Management 361
9.1.17 Formal Methods 361
9.1.18 Processes 361
9.1.19 Risk Management 362
9.1.20 Quality Assurance 362
16. Contents ◾ xi
9.1.21 Configuration Management 362
9.1.22 Crystal Ball 362
9.2 HOW TO READ THE SOFTWARE ENGINEERING RESEARCH
LITERATURE 362
FURTHER READING 365
APPENDIX A: AN INTERESTING SOFTWARE PATENT, 367
APPENDIX B: COMMAND-LINE ARGUMENTS, 369
APPENDIX C: FLOWCHARTS, 373
REFERENCES, 375
TRADEMARKS AND SERVICE MARKS, 389
18. xiii
Preface to the Second Edition
Since the first edition of this book was published, there have been enormous changes
to the computer software industry. The inventions of the smartphone and the tablet
have revolutionized our daily lives, and have transformed many industries. Online data is
ubiquitous. The pace of deployment of ever more advanced digital capabilities of modern
automobiles is breathtaking. Cloud computing has the potential to both greatly increase
productivity and greatly reduce the maintenance and upgrade costs for large organiza-
tions. A student studying software engineering might not even recall a time when these
devices and software systems had not been ubiquitous.
An experienced software professional probably would observe that there are problems
in this paradise, and that most of these problems had been around in one form or another
for many years, regardless of the advances in technology. Nearly all these problems are in
the area of software. Here are some examples.
The first problem is in the education of computer science students. In the mid-1990s, my
university was partnering with a major research university on educational issues in com-
puter science. An unnamed faculty member at our partner university was quoted as saying
the following about the education of his students, although the same comment could have
been applied to almost any college or university at that time: “We teach our students to
write 300-line programs from scratch in a dead language.” This is a powerful statement
and had a major influence on the curriculum in my department. That influence continues
to this very day.
Unfortunately, this statement is still generally applicable to the way that software devel-
opment is still taught, at least in the United States. The only difference is that the dead
language, which at the time was Pascal, generally is not taught anywhere.
The rest of the statement is true, because there is little systematic effort to reuse the large
body of existing code for applications and subsystems. Students are encouraged to use
any available software development toolkit (SDK) and to use an application programming
interface (API) in much of their software development. If they have been introduced to
cloud computing in their coursework, they probably have used interfaces such as HTTP,
SOAP, REST, or JSON. They generally are not encouraged to reuse code written by others
in any systematic way. This is somewhat surprising, because so much source code is avail-
able on the Internet, and because the effective, systematic reuse of large-scale source code
components to make prototypes that morph into complete working projects is at the heart
of the rapid development process known as “agile programming” or “agile development.”
19. xiv ◾ Preface to the Second Edition
Lack of student exposure to, and interaction with, very large systems has other ramifica-
tions. Students often ignore the possibilities in working with such long-lived systems that
provide essential services and will continue to do so for the foreseeable future.
This book will encourage reuse of existing software components in a systematic way
as much as possible, with the goal of providing guidance into the way that software is
currently developed and is likely to be developed in the foreseeable future, regardless of
the software development life cycles that the reader may encounter, including the classical
waterfall model, rapid prototyping model, spiral model, open source model, agile method,
or any other technique that the reader is likely to encounter during his or her career.
Here is another example. The operating systems of smartphones and tablets are not
identical to the ones most commonly used on many companies’ computer offerings. This
often causes interoperability problems. For example, most smartphones running some
form of the Android operating system do not have quite the same version of Linux as their
basis, which leads to some software incompatibilities. The Apple iOS operating system for
iPhones does not have precisely the same type of file system organization as Apple com-
puters, which, themselves, use an underlying operating system called Apple Darwin that
is also based on Linux.
The relative insecurity of many smartphones and tablets causes major issues for orga-
nizations that wish to limit access to their critical data. Many banking applications (apps)
deployed on smartphones to be interoperable with bank databases have had major security
breaches. Even highly touted fingerprint readers have been compromised.
Most software sold in online app stores is developed without very much effort given
to documentation. The general feeling is that there appears to be little concern originally
intended in the app’s postdeployment effort known as “software maintenance” that is so
costly for traditional systems. Generally speaking, an app developer is expected to main-
tain the software by correcting any errors, and at no cost to the purchaser of an app. This
unpaid effort can be costly to developers in terms of time and effort, but is almost always
necessary in order to continue to achieve good reviews, even if the initial reviews were
good.
Online data can be extremely useful, but many people, and many organizations as well,
wish to limit this access. As the second edition of this book is being written in 2015, much
of the news is filled with stories about the release of government data that is meant to have
been confidential. The evident lack of appropriate data security is evidence of the incorrect
design of databases and poor deployment of database access controls, which are, again,
evidence of a software engineering problem, primarily in computer security.
This problem of data security is not unique to government systems; many private com-
panies have had their confidential intellectual property compromised. This is another
example of a problem in computer security.
Of course, everyone is well aware of the almost constant stream of information about
consumer confidential information being accidently released, or even stolen, from many
major companies. This is yet another example of a problem in computer security.
If you have younger siblings or friends, you may be aware of the “common appli-
cation” software often used for the college admissions process. In its initial rollout in
20. Preface to the Second Edition ◾ xv
2013, this web-based software often crashed during use, leaving applications in various
states of completion, with applicants unsure if they should restart the application pro-
cess. Clearly, the common application software was not efficient, reliable, or even usable
at that time.
There are also technical problems at the healthcare.gov website with the enrollment
in insurance exchanges that are a major part of the Affordable Care Act. The problems
include slow responses, broken and incorrect links, and internal inconsistencies within
the website. (As with the privately developed common application software, many of these
technical implementation problems are highly likely to be fixed long before the time this
book appears in print.)
The constant upgrading of automobile software is also a concern. Many problems with
the entertainment and communications software have been reported in the literature.
I have a personal example: my favorite car. After an upgrade of the satellite radio software
at the provider’s site, the software on the car kept contacting the satellite for program-
ming data even while the car was turned off. This depleted the battery and required two
tows, two replacement batteries, and two days of work by the dealer’s top mechanic until
the car was fixed. This is a problem in software configuration management, because the
newest version of the satellite provider’s system did not interface correctly with existing
satellite-enabled radios. It is also a problem in software design, because there was no safety
mechanism, such as a time-out, to protect the battery. Deployment of software to multiple
locations is a constant issue in modern software that uses networks and a variety of end-
user devices. (You might see this particular car, a convertible with a vanity license plate. If
you do, please smile and buy another copy of this book. Thank you.)
The problem that my car had is only a small portion of the kinds of problems that
might occur as we move toward an “Internet of things.” The term refers to the way that
many people think that nearly every digital device will be connected and accessible by the
Internet. In this sense, far more than standard computer equipment and smartphones can
be accessible from the Internet. You are probably aware of concerns about accessing power
plants and the electric grid via the Internet, and the security concerns about a potential
vulnerability due to security breaches. Indeed, almost every device you use in everyday
life, including human-driven cars, driverless cars, elevators, thermostats, medical devices,
appliances, and electronic locks, just to name a few, will be accessible from the Internet.
Many companies, including Google and many automobile manufacturers, have projects
to develop autonomous vehicles that will largely replace human drivers. (The first known
use of the term Internet of things was by Kevin Ashton in the June 2009 issue of the RFID
Journal.)
Here is a specific example with which I am very familiar: the use of the Internet for
monitoring elevators. Here is the context. Nearly all modern elevators use microprocessors
to control operation of the elevator cars and to monitor the elevator’s “health and safety.”
Because efficient operation of an elevator often uses a more complex data structure than a
stack or queue for scheduling, an elevator simulation has been a favorite topic of discussion in
data structures books for many years. The first such elevator scheduling simulation I ever
saw was in volume 1 of Donald Knuth’s The Art of Computer Programming (Knuth, 1973).
21. xvi ◾ Preface to the Second Edition
The microprocessors often relate safety status information from all the elevator compa-
ny’s installed elevators back to a database in a single communications center. In most eleva-
tor companies, this database is linked to the emergency service of a local fire department in
the event of system failure in the form of a car stuck between floors or a failure of some of
the redundant mechanical and electrical systems. In some elevator companies’ systems, the
database can be examined for determination of which problems recur, so that they can be
fixed either on site or by reprogramming microprocessors, thereby helping reduce expen-
sive service calls. All of this activity takes place in an environment in which the Internet
communications and database technologies are constantly changing, whereas the typical
microprocessor is created specifically for a particular generation of elevators and might be
difficult to replace or even reprogram. Some additional information on the issue of eleva-
tor monitoring and fault determination can be found in my paper “Experiences Analyzing
Faults in a Hybrid Distributed System with Access Only to Sanitized Data” (Leach, 2010).
Cloud computing, a very hot topic now, is, in some sense, a very old idea that goes back
to the early 1960s. In the 1960s, most computing was done on mainframes, to which a col-
lection of terminals was attached. Software was installed and updated on the mainframe,
and no changes were needed on the terminals. All control resided in the hands of the
mainframe operators. If the mainframe went down, or the software crashed, remote users
on terminals were unable to accomplish anything. Such remote users may have had no
knowledge of where the mainframe was located, although they needed to understand the
mainframe’s hardware and software architecture to program it efficiently.
When the personal computer revolution began, control of access and software devolved
to the person who controlled the personal computer on his or her desk. This created prob-
lems for system administrators, because they had to support large numbers of users, many
of whom were not particularly knowledgeable about computers.
The movement to cloud computing allows system administrators to keep all the applica-
tions and data in what, to users, appears to be a single place, “the cloud,” that may, in fact,
be a collection of servers and networks stored in one or more data centers in a location that
may not be known to the remote users.
Some of the issues in cloud computing involve scalability; that is, in having computer
systems function well even if they are forced to respond to far more users, far more com-
plex programs that implement far more complex algorithms, and far larger data sets than
they were originally designed or originally intended for. A 2013 article by Sean Hull in the
Communications of the ACM (Hull, 2013) describes some of the issues in scalability.
There are often performance issues with cloud-based software. Proper data design and
security prevent remote users from having unlimited access, but poor data design and poor
security make the potential access dangers of placing everything on a cloud much more
serious.
Yet another concern with cloud-based systems is the ownership and management of
the cloud. Two articles in the May 7, 2015, issue of the New York Times illustrate the point.
Nick Wingfield writes in “Zynga Is Trimming Its Staff and Its Game Ambitions” about
reducing the number of games produced, eliminating sports games, and moving the data
center (where a player’s behavior is analyzed) to a cloud service such as Amazon. A second
22. Preface to the Second Edition ◾ xvii
article, “Europe Adds E-Commerce to Antitrust Inquiries,” by Mark Scott, describes some
European concerns about the broad reach of several large companies such as Amazon,
Google, and Apple. Consider the problems that might arise if a company placed a major
part of its business on a cloud platform that is being discontinued or modified due to legal
or other pressures.
Some software development processes currently in use were not common when the first
edition of this book was produced. Perhaps the most important new process is known as
“agile programming.” Agile programming is an attempt to improve the efficiency of the
software development process by having software professionals experienced in a particular
application domain develop software using reusable components such as APIs and subsys-
tems whose performance and capability are well known to the developers.
There is a belief that the interaction between software and hardware in modern network-
centric systems should be viewed as Software as a Service (SaaS). This notion helps with
abstraction, but places serious loads on both system performance and the treatment of
unexpected software interactions not described in APIs.
The term SaaS is often used in the context of cloud-based computing, where the term
cloud is synonymous for remote storage of data and applications, where the actual location
of the data or application used is probably not known to the user. Two of the most com-
monly used cloud storage services are Amazon Cloud Services and IBM Cloud Services.
SaaS is often used to monetize the use of software services on a pay-as-you-go basis.
Cloud computing often includes the concept of virtualization, in which a software appli-
cation executes on a remote machine that runs a virtual image of an operating system
together with a set of all necessary cooperating applications. The idea is that maintenance
of applications in virtual environments is much easier to control than maintaining the
same applications on multiple physical computers. Virtualization is an old idea, in the
sense that there have been emulators for, say, allowing Apple Mac applications to run on a
computer running Microsoft Windows, allowing Windows operations to run on modern
Apple computers, or run Sun Solaris applications within a Windows environment, without
having the hassle of a dual-boot computer running multiple operating systems, one at a
time.
Ideally, applications running in different virtual environments are sealed off from other
applications. However, many questions have been raised about the security of applications
running in virtualized environments, especially in cases where two different virtualized
environments are executing on the same server.
Here is another example of a software problem that the use of cloud computing probably
cannot solve. On May 6, 2015, I was asked to be an expert witness in a lawsuit involving
a company that produced software with poor performance and security flaws. There was
some question about how close the company’s software was to an existing, legacy system.
(This opportunity became available to me one day before the two aforementioned articles
in the New York Times.)
It should be clear that the area of software engineering is evolving quickly, but that
many of the problems we now face are older ones in new guises. The goal of this book is
to provide you with the fundamentals in order to be able to have a satisfying professional
23. xviii ◾ Preface to the Second Edition
career as a software engineer regardless of what changes occur in the future, even if many
of these changes cannot be predicted or are even disruptive in nature. Ideally, you will
understand all the software development methodologies and processes discussed in this
book at a reasonably sophisticated level, and will be proficient in at least one of them.
Do not think, however, that all software engineering issues occur with new systems.
The Ada programming language, although not as popular as it was in the late 1980s and
early 1990s, is still used for thirty-two air traffic control systems, twenty-six commercial
airplane systems, thirteen railroad transportation systems (including the English Channel
Tunnel), twenty scientific space vehicles, eight commercial satellites, two nuclear power
plants, one automobile robot assembly plant, eight banking systems, and, of course, many
military applications. Ada’s strong support for advanced software engineering principles is
a primary issue in these safety-critical areas.
The second edition follows the same organization as the first edition and is comprised
of nine primary chapters. Many chapters will include one or more sections that provide
typical views of software managers on the relevant technical activities. The purpose of the
“managerial view” is to provide you with additional perspective on software engineer-
ing, not to prepare you to be a manager in the immediate future. In most organizations,
a considerable amount of varied project experience is essential before a person is given a
managerial position at any level of responsibility.
Chapter 1 contains a brief introduction to software engineering. The goals of software
engineering are discussed, as are the typical responsibilities of team members. Both the
classical waterfall and iterative software development models such as rapid prototyping
and the spiral approach are discussed. New to this chapter is extensive material on both
open source and agile software development methods.
Chapter 2 contains a brief overview of project management. The intention is to present
the minimum amount of information necessary to educate the student about the many
types of software development environments that are likely to be encountered in the pro-
fessional work force. The chapter has been rewritten to emphasize coding practices, such as
reducing coupling between modules, instead of presenting long examples of actual source
code as exemplars. An overview of cost and scheduling information is also given here. We
also begin our discussion of a case study of agile software development. The case study will
be continued throughout the book.
Chapters 3 through 8 are devoted to requirements; design; coding; testing and inte-
gration; delivery, installation, and documentation; and maintenance. Although these six
chapters are presented in the order in which they would occur in the classical waterfall
software development model, the material works well with other software development
approaches.
We present a unique approach in Chapter 3, which is devoted to the requirements pro-
cess, with heavy emphasis on the movement from preliminary, informal requirements to
more complete ones that describe a system in detail and can be used as the basis for a test
plan. There is a hypothetical dialogue that illustrates how requirements might be elicited
from a potential customer. The goal of the chapter is to indicate the importance of require-
ments understanding, even if there is no known customer, such as may be the case for
24. Preface to the Second Edition ◾ xix
development of apps for mobile devices. The large software project that we will discuss in
each of the remaining chapters in this book is introduced in this chapter. Issues of inter
operability and user interfaces are discussed here as part of the requirements process. The
requirements traceability matrix developed here is used throughout the book. The chap-
ter also continues the case study on agile programming through the development of the
requirements for an actual system.
Chapter 4 is devoted to software design. Both object-oriented and procedurally oriented
design are discussed, and several commonly used design representations are given. We
consider matching preexisting software patterns to the software’s requirements as part of
the design process. Software reuse is also emphasized here. Large-scale, reusable software
components are at the heart of the continuing case study on agile software development.
The topic of coding is discussed in Chapter 5, where we examine software implementa-
tion techniques. This chapter emphasizes source code file organization, naming conven-
tions, and other coding standards. Since the reader is presumed to have had considerable
experience writing source code, this chapter is brief. The role of coding, especially coding
standards, in agile development is included.
In Chapter 6, we discuss testing and integration in detail. Both “white-box” and “black-
box” testing are discussed, as are testing methods for object-oriented programs. The “big-
bang,” “bottom-up,” and “top-down” methods of software integration are discussed here.
Since software integration is at the heart of many agile development projects, we describe
this in our continuing case study.
Chapter 7 is quite short and is devoted primarily to delivery and installation. It also
includes a discussion of internal and external documentation and a brief discussion of
online help systems. Due to the unique nature of agile software development processes, the
continuing case study is very brief in this chapter on delivery and installation.
Chapter 8 describes something that is foreign to most beginning software engineering
students: software maintenance. It is discussed in detail because maintenance accounts for
a large percentage of the funds spent on software projects and because many students will
begin their professional careers as software maintainers. As was the case with Chapter 7, the
continuing case study is very brief in this chapter on evolution and software maintenance.
Chapter 9 lists a set of open research problems in software engineering and provides
some suggestions to help you read the existing software engineering literature.
There are three appendices: one on software patents, one on command-line arguments,
and one on flowcharts.
Any book is the result of a team effort. The efforts of Senior Acquisitions Editor Randi
Cohen, at Chapman Hall/CRC Press; Richard LeBlanc, editor of the Innovations in
Software Engineering and Software Development Series; many anonymous reviewers; stu-
dents who read through the manuscript; and the Taylor Francis “book team,” especially
Jay Margolis and Adel Rosario, are gratefully acknowledged.
26. xxi
Preface to the First Edition
Software engineering lies at the heart of the computer revolution. Software engi-
neering may best be described as the application of engineering techniques to develop
and maintain software that runs properly and is constructed in an efficient manner.
Like most areas of computer science, software engineering has been influenced by
the Internet and the ready availability of web browsers. You are certainly aware that the
Internet has been instrumental in creating new job opportunities in the areas of web
page design and server software development using tools such as the Common Gateway
Interface (CGI) and Java. Many organizations use both the Internet and networks called
“intranets,” which are used only within the organization.
However, the Internet is hardly without problems. Poorly designed web pages, links that
become outdated because there is no systematic plan for keeping them current, servers that
crash under the load from multiple users, applications that use excessive resources, web
pages and frame layouts that are unattractive when viewed on 15-inch monitors instead of
the developers’ 21-inch systems, and computer security failures are familiar issues to any
heavy Internet user.
Less evident is the problem of separation of program functionality into servers and
clients. A changing technology with relatively few standards, many of which are at least
slightly inconsistent, causes additional problems. As you will see, these are essentially
problems in software engineering, which we will address in this book. Software engineer-
ing is necessary for writing programs for single user machines connected to a network,
multi-user machines that are either standalone or connected to networks, and to networks
themselves.
Software is used in automobiles, airplanes, and many home appliances. As the bound
aries between the telecommunications, entertainment, and computer industries continue
to blur in multimedia and networking, the need for software will only increase, at least for
the foreseeable future. Software engineering is essential if there is to be any hope of meet-
ing the increasing needs for complex, high-quality software at affordable prices.
Almost equally important is the more subtle influence of the Internet on the process of
software development. Because of the complexity of modern software systems, nearly all
software development is done by teams. As you will see later is this book, networks can be
used to aid in the development process.
This book is intended for juniors and seniors majoring in computer science. At some
institutions, the book may also be used as a text for a graduate-level course intended for
27. xxii ◾ Preface to the First Edition
those students who did not take an undergraduate course. A student reading this book will
have taken several programming courses, including one that uses a modern programming
language such as C, C++, Java, Ada, or Swift. At a minimum, the student will have had a
follow-up course in data structures. Ideally, the student will have some experience with
software projects larger than a few hundred lines of code, either as part of an internship or
in formal classes.
A book intended for an audience of undergraduates must be short enough for students
to read it. It must show the student that there is a major difference between the real-
ity of most industrial software engineering projects and the small, individually written
programs that they have written in most of their computer science classes. I believe that
projects are an important part of any software engineering course, other than those
taught to experienced professionals or advanced graduate students. Therefore, the use
of appropriate team projects will be considered as essential to reinforce the material
presented in the book.
Like most of us, students learn best by doing. However, their learning is enhanced if a
systematic framework is provided, along with many examples of actual software industry
practice where appropriate. Examples of this practical approach are present in most chap-
ters of this book. The goal is to take students from an educational situation in which they
have written relatively small programs, mostly from scratch and by themselves, and move
them toward an understanding of how software systems that are several orders of magni-
tude more complex are developed.
Whenever it is pedagogically sound, we emphasize some approaches to software devel-
opment that are used currently in industry and government. Thus, we discuss the Internet
as a medium for publishing requirements and design documents, thereby making project
coordination easier. This is done because many companies are either currently using, or
intend to use, either the Internet or a local “intranet” for communication and coordination
of software projects. This trend will certainly continue. The impact of the Java language as
a “software backplane” unifying software development across multiple platforms cannot
be ignored. Active-X and CORBA (Common Object Request Broker Architecture) are also
heavily used in large-scale software projects with components written in more than one
programming language.
Object-oriented technology (OOT) presents a special problem for the author of any
introductory book on software engineering. Certainly the availability of good class
libraries is having an impact on the first software engineering projects, as evidenced
by the incorporation of a panel on this topic at CSC’96. The Java language is gener-
ally considered to be more object-oriented than C++ because C++ has support for both
procedural and object-oriented programming, and Java enforces the object-oriented
paradigm. There are more books on Java programming than on any other program-
ming language. There are four alternative approaches to object-oriented technology in
a software engineering book: ignore OOT; use only OOT; use both, thus having two
parallel tracks within the same book; or use a hybrid. Each approach has proponents and
opponents.
28. Preface to the First Edition ◾ xxiii
This book uses a hybrid approach, describing object-oriented design and functional
decomposition as alternative approaches in a systematic way. The emphasis is on showing
that the goals of software engineering; namely, to write programs that are:
• Efficient
• Reliable
• Usable
• Modifiable
• Portable
• Testable
• Reusable
• Maintainable
• Interoperable with other software
• Correct
This book contains a simple but non-trivial running example that is available in electronic
form. The software example is composed of components in the C and C++ languages that
will be integrated with certain commercial software applications. Multiple languages are
used to reflect the reality of modern software development. The example illustrates the need
for proper design and implementation of software components as part of the solution to a
problem. There is emphasis on all the steps needed in software engineering: requirements;
design, including design tradeoffs; testing; installation; and maintenance. Coding, with the
exception of coding standards, is touched on only briefly. The book also covers computation
and proper use of some software metrics such as lines of code or the McCabe cyclomatic
complexity. It stresses the use of software tools whenever possible, and also includes a brief
discussion of software reuse. The software associated with the book is available for testing
and experimentation. There are several spreadsheets for project schedule and metrics.
The book is organized into nine chapters. Many chapters will include one or more sec-
tions that provide typical views of software managers on the relevant technical activities.
The purpose of the “managerial view” is to provide you with additional perspective on
software engineering, not to prepare you to be a manager in the immediate future. In most
organizations, a considerable amount of varied project experience in essential before a
person is given a managerial position at any level of responsibility.
Chapter 1 contains a brief introduction to software engineering. The goals of software
engineering are discussed, as are the typical responsibilities of team members. Both the
classical waterfall and iterative software development models such as rapid prototyping
and the spiral approach are discussed.
29. xxiv ◾ Preface to the First Edition
Chapter 2 contains a brief overview of project management. The intention is to pres-
ent the minimum amount of information necessary to educate the student about the type
of software development environment that is likely to be encountered in the professional
work force. An overview of cost and scheduling information is also given here.
We present a unique approach in Chapter 3, which is devoted to the requirements pro-
cess, with heavy emphasis on the movement from preliminary, informal requirements to
more complete ones that describe a system in detail and can be used as the basis for a test
plan. We present a hypothetical dialogue that illustrates how requirements might be elic-
ited from a potential customer. The large software project that we will discuss in each of the
remaining chapters in this book is introduced in this chapter. Issues of interoperability and
user interfaces are discussed here as part of the requirements process. The requirements
traceability matrix developed here is used throughout the book.
Chapter 4 is devoted to software design. Both object-oriented and procedurally oriented
design are discussed and several commonly used design representations are given. We
consider matching preexisting software patterns as part of the design process. Software
reuse is also emphasized here.
The topic of coding is discussed in Chapter 5, where we examine software implementa-
tion techniques. This chapter emphasizes source code file organization, naming conven-
tions, and other coding standards. Since the reader is presumed to have had considerable
experience writing source code, this chapter is brief.
In Chapter 6, we discuss testing and integration in detail. Both “white-box” and “black-
box” testing are discussed, as are testing methods for object-oriented programs. The “big-
bang,” “bottom-up,” and “top-down” methods of software integration are discussed here.
Chapter 7 is quite short and is devoted primarily to delivery and installation. It also
includes a discussion of internal and external documentation and a brief discussion of
online help systems.
Chapter 8 describes something that is foreign to most beginning software engineering
students: software maintenance. It is discussed in detail because maintenance accounts for
a large percentage of the funds spent on software projects and because many students will
begin their professional careers as software maintainers.
Chapter 9 lists a set of open research problems in software engineering and provides
some suggestions to help you read the existing software engineering literature.
Some of the design documents, software, and spreadsheets described in this book are
availableforyoutodownloadfromthewebsitehttp://imappl.org/~rjl/Software-Engineering.
Any book is the result of a team effort. The efforts of the editor, Dawn Mesa at CRC
Press, Taylor Francis, many anonymous reviewers, students who read through the man-
uscript, and the CRC Press/Taylor Francis “book team,” especially Helena Redshaw and
Schuyler Meder, are gratefully acknowledged.
30. xxv
To the Instructor
and the Reader
The subject of software engineering is a vast one and is far too large to be covered
in detail in any single volume of reasonable size. I have chosen to provide coverage of
what I believe are the basics, at a level of detail that is appropriate in an age where much
of the critical information is available for free on the World Wide Web. Nearly all topics
discussed herein include some examples, often historical ones, if there is sufficient infor-
mation on both the successes of software projects using the ideas behind these topics and
some of the pitfalls that occurred using these ideas. State-of-the-art information is pro-
vided when appropriate to those software engineering trends that can be expected to be
important for the foreseeable future. The choices made in this book are strongly motivated
by the likelihood that you will have many types of positions in your (I hope, long and dis-
tinguished) careers in many different technology environments.
The book contains a discussion of a major software project that is intended to provide
a basis for any term project that the instructor may provide. I believe that a first course
in software engineering is greatly improved by students formed into teams to complete a
software project making use of many of the ideas in this book. There is also a case study of
an actual complex project that was created using an agile development process. Of course,
any team software development within an academic course is artificial, in the sense that
the pressures typically involved in industry are not generally present within a single class
project.
Note that this section is addressed to both instructors and readers. This is because
I think that students in their software teams and instructors must all work together to
ensure that the learning process is as efficient as possible. Often the instructor will act as
both a “customer” and a “manager’s manager,” who interfaces primarily with the software
team’s leader. In some cases, the team projects will have external customers, either at the
college or university, or with a representative of some potential employer. In most other
situations, the instructor fills both roles. The situation in these class projects provides an
idealized model of what a student may encounter in industry.
The student is expected to be able to write programs (at least small ones) competently
before enrolling in a software engineering course. They should be open to the idea that
there are many things they need to learn in order to help create the much larger software
31. xxvi ◾ To the Instructor and the Reader
systems that affect every part of modern life. Design techniques are illustrated, but stu-
dents are expected to be at least familiar with the design representations they may need
before entering the course. There is no attempt to provide extensive tutorials on dataflow
diagrams and UML, for example. Even a student who expects to be an independent entre-
preneur will benefit from the discussions in this book.
The instructor is expected to determine which software development life cycle will be
chosen for primary discussion in the course: classical waterfall model, rapid prototyping
model, spiral model, open source model, agile method, or a similar life cycle. He or she
may select one particular software development life cycle for use by every team in the class,
allow the students to select their own particular software development life cycle, or even
have the entire class work on the same project, each group using a different software devel-
opment life cycle and comparing the results.
The instructor may have additional goals, depending on the institution’s curriculum:
assessing and improving the student’s performance in the many deliverable products that
are in the form of technical reports or presentations. (It is my experience talking to hun-
dreds of employers during my nine years as a department chair, that most employers place
a high value on excellence in written and oral communications.)
In an age when an enormous amount of source code is freely posted and there is so much
sharing of ideas among students in multiple universities, there is little benefit to demand-
ing that students do not copy code from other sources. Indeed, they should be encouraged
to reuse code, as long as they attribute their sources for source code components, and have
a systematic way of determining what the software component actually does, how it is
documented, and provide some estimate of the component’s quality (perhaps by looking
at the code structure).
32. 1
C h a p t e r 1
Introduction
1.1
THE NEED FOR SOFTWARE ENGINEERING
The first commonly known use of the term software engineering was in 1968 as a title for
a NATO conference on software engineering. An article by A. J. S. Rayl in a 2008 NASA
magazine commemorating NASA’s fiftieth anniversary states that NASA scientist Margaret
Hamilton had coined the term earlier (Rayl, 2008).
The nature of computer software has changed considerably in the last forty-five or so
years, with accelerated changes in the last fifteen to twenty. Software engineering has
matured to the extent that a common software engineering body of knowledge, known by
the acronym SWEBOK, has been developed. See the article “Software Engineering Body
of Knowledge” (SWEBOK, 2013) for details. Even with this fine collection of knowledge of
the discipline of software engineering, the continuing rapid changes in the field make it
essential for students and practitioners to understand the basic concepts of the subject, and
to understand when certain technologies and methodologies are appropriate—and when
they are not. Providing this foundational knowledge is the goal of this book. You will need
this foundational knowledge to be able to adapt to the inevitable changes in the way that
software will be developed, deployed, and used in the future.
We begin with a brief history. In the late 1970s and early 1980s, personal computers were
just beginning to be available at reasonable cost. There were many computer magazines avail-
able at newsstands and bookstores; these magazines were filled with articles describing how
to determine the contents of specific memory locations used by computer operating systems.
Other articles described algorithms and their implementation in some dialect of the BASIC
programming language. High school students sometimes made more money by program-
ming computers for a few months than their parents made in a year. Media coverage suggested
that the possibilities for a talented, solitary programmer were unlimited. It seemed likely that
the computerization of society and the fundamental changes caused by this computerization
were driven by the actions of a large number of independently operating programmers.
However, another trend was occurring, largely hidden from public view. Software was
growing greatly in size and becoming extremely complex. The evolution of word process-
ing software is a good illustration.
34. “Laurence,” she said, “don’t misunderstand me; I am not
really flippant and horrid like that, but it is true all the
same. I have told Arthur, deliberately and seriously, that, if
he were ever to ask me to marry him, nothing would ever
make me take such a thing even into momentary
consideration. I would not marry him for anything.”
“Had he asked you to do so?” said Mr Cheviott, in a tone
half of amaze, half of bewilderment.
“No,” said Alys, “I told you he had not, and most certainly
after what I have said, he never will.”
“Do you think he had any intention of the kind?” again
questioned her brother.
Alys hesitated. Her quick wits told her that she must be
careful what admissions she made. Were she to reply what
she believed to be the truth—that her cousin never had had,
never would have any such feelings with regard to her as
could lead to his asking her to many him—the effect on him
might, she felt vaguely, be disastrous. So she hesitated,
and meanwhile her brother watched her narrowly.
“I don’t see,” she said at last, “I don’t see that I need
answer that, Laurence. All I want you to know is that, after
what I have said, Arthur could never think of me in that
way. I have made it impossible for him to do so.”
“And what made you do this? What has put all this into your
head? Was it Aunt Winstanley?” asked Mr Cheviott.
“No,” replied Alys. “That is to say, Aunt Winstanley did not
put anything in my head, though I forced her to answer one
or two questions I asked her. She did so very confusedly, I
assure you, and but for my own ideas I should have been
little the better for her information. No one is to blame. I
35. have not been as blind and unconscious as you thought—
that is all.”
That was all in one sense. It was plain to Mr Cheviott that
Alys would say no more, and on reflection he could not see
that any more explanation on her part would do any good.
He stood silent, hardly able as yet to see clearly the effect
of this extraordinary turn of affairs.
“I am going up to my own room, Laurence,” said Alys, rising
slowly as she spoke. “I am very tired. I think I won’t come
down to dinner. I don’t want you just now to say whether
you think I have done rightly or wrongly, wisely or unwisely
—some time or other I dare say you will explain all that has
puzzled me. But in the mean time some instinct tells me,
told me while I was doing it, that you, Laurence, would be
glad for me to do it. Kiss me, dear, and say good-night.”
He bent down and kissed her tenderly, still without
speaking. But when Alys was up in her own room, safe for
the night from all curious or anxious eyes, she lay down on
her sofa, burying her face in its cushions, and sobbed as if
her heart would break.
36. Chapter Twenty Nine.
Cutting the Knot.
“Let’s take the instant by the forward top;
... On our quick’st decrees
The inaudible and noiseless foot of time
Steals ere we can effect them.”
All’s Well that Ends Well.
Dinner passed very silently at Romary that evening. Mr
Cheviott was preoccupied, Captain Beverley labouring
evidently under some suppressed excitement, Miss
Winstanley nervous and depressed.
“Have you seen Alys, Laurence?” she said, as the butler
came with a discreet inquiry as to what Miss Cheviott would
be likely to “fancy.” She had told her maid that she did not
want any dinner, but had been so far influenced by
Mathilde’s remonstrance as to say she would take anything
her aunt liked to send her. “I really don’t know what to send
up to her,” Miss Winstanley went on, helplessly. “What do
you think, Laurence? I went to her room on my way down-
stairs, but Mathilde said she had begged not to be
disturbed.”
“I saw her half an hour ago,” said Mr Cheviott. “I think she
is only tired. I will send her up something.” He got up from
his chair and himself superintended the arrangement of a
tempting little tray.
“Is Alys ill?” said Captain Beverley, in a low voice, and with
a slight guiltiness of manner which did not escape his
cousin.
37. “I think not,” Mr Cheviott replied, dryly, as he sat down.
“She has been over-excited, and nowadays she can’t stand
that sort of thing.”
Arthur said no more, but he was evidently glad when dinner
was over, and Miss Winstanley had left the cousins by
themselves.
“Laurence,” he began, eagerly, when the last servant had
closed the door and they were really alone, “I am anxious
to tell you everything that passed between Alys and me this
afternoon. I only thought it fair to her that she should tell
you what she chose to tell, first.”
“That was not very much,” said Mr Cheviott, “she evidently
is afraid of damaging you by saying much.”
“God bless her,” said Arthur, fervently, “of course she does
not know the whole state of the case. But I am perfectly
willing to tell you everything, Laurence; in fact, as things
are, I should be a fool not to do so. But, in the first place,
read this.”
He held out the paper that Alys had written and signed. In
spite of his intense anxiety—an anxiety but very partially
understood by Captain Beverley, who little knew the
personal complications the charge of his affairs had brought
upon his cousin—Mr Cheviott could not restrain a smile as
he read the words before him.
“An extraordinary document, I must confess,” he said, as he
returned it to Arthur. “Upon my word, Beverley, Alys and
you are just a couple of children. If only such serious results
were not involved, the whole thing would be most
laughable. What can have put all this into her head?”
38. “Her own intentions and her own observations principally, I
believe,” said Arthur. “She knew something of—of my
admiration for Miss Western, and she suspected that you
had exerted your influence to prevent its coming to
anything. She knows you to be too honourable and right-
minded to interfere in such a matter without good reason—
through mere prejudice, for instance.” Mr Cheviott winced a
little.
“I cannot say of myself, Arthur, that I was always quite free
from prejudice in this matter,” he interrupted, speaking in a
low and somewhat constrained voice, “but I am, I believe I
am, ready to own myself in the wrong if I have been so.”
Arthur’s face beamed with pleasure.
“Thank you for that, Laurence,” he said, “a hundred thanks.
But I keep to what I said. Whatever your personal
prejudices may have been, you did not act upon them. Your
conduct was based entirely upon regard, unselfish regard
for my welfare, and this Alys felt instinctively and set her
wits to work to puzzle it out. But what has first to be
considered is this—the statement on that paper is Alys’s
own voluntary declaration—”
“Did she write it of her own accord?”
“She first said it to me, in stronger and plainer words even
than those she wrote; and when I asked her if she would
put it on paper, she did so in an instant—with the greatest
eagerness and readiness. Now, Laurence, what is now my
position? Supposing I wished to do such a thing, could I ask
Alys to marry me after what she has said—it would be a
perfect farce and mockery.”
“It certainly would,” said Mr Cheviott. “I’ll tell you what we
must do, Arthur. We must go up to town and lay the present
39. state of the case before old Maudsley, and see what he
says. He is as anxious as any of us to get the thing settled,
and he must see that it would be perfect nonsense now to
look forward to any possibility of the terms of the will being
fulfilled. And I do not see that their non-fulfillment can
possibly rest upon you. It is a strong point in your favour
that you have done nothing premature in any other
direction. No doubt we shall have to go to law about it—
carry it before the Court of Chancery, I mean to say—but as
all the beneficiaries, you and Alys, or myself as her
guardian, are of one mind as to what we wish, I cannot now
anticipate much difficulty.”
“But, Laurence,” began Arthur, and then he hesitated. “At all
costs,” he went on again, “I must be open with you. I have
done what you call something ‘premature’ in another
direction. I am as good as—in fact, I am engaged to Lilias
Western.”
Mr Cheviott’s brow contracted.
“Since when?” he said, shortly, while a sudden painful
misgiving darted through his brain. Had Mary known this?—
had she, in a sense, deceived him? True, she was under no
sort of bond not to oppose him—rather the other way; from
the first she had openly defied him on this point, but still
she must be different from what he had believed her,
capable of something more like dissimulation and
calculation than he liked to associate with that candid brow,
those honest eyes, were it the case that she had known this
actual state of things all through that time at the Edge farm
—so lately even as during their strange drive to Withenden
and back. With keen anxiety he awaited his cousin’s reply.
“Since about the time of Alys’s accident I came down here
then one day—you did not know—I was so uneasy about
40. Alys—and I met Lilias close to the Edge, and heard from her
how Alys was. And then somehow—I felt I could not go on
like that, at the worst I could work for her, and I have been
learning how to do so, you must allow—somehow we came
to an understanding.”
“And her people know, of course—her sister does, any way,
I suppose?” said Mr Cheviott, with an unmistakable accent
of pain in his voice which made Captain Beverley look up in
surprise.
“Her sister—Mary, do you mean? No, indeed she does not.
None of them do. There was, indeed, very little to know—
simply an understanding, I might almost call it a tacit
understanding, between our two selves that we would wait
for each other till brighter days came. We have not written
to each other or met again. I would do nothing to
compromise Lilias till I could openly claim her. I did not, of
course, explain my position; had I done so, she would not,
as you once said, have agreed to my ruining myself for her
sake. All she knows is that I may very probably be a very
poor man. And because I could not explain my position, I
saw no harm in keeping it all to our two selves for the
present. But, you see, I have looked upon it as settled—till
to-day I have considered myself virtually disinherited, and I
have been working hard at C— to fit myself for an agency or
so on at the end of the two years.”
Mr Cheviott listened attentively, without again interrupting
his cousin. But Captain Beverley could see that it was with a
lightened countenance he turned towards him again.
“Alys knows nothing of this?” he said. “You are perfectly
certain that her eccentric behaviour to-day was not caused
by her believing she in any way stood between you and Miss
Western? Don’t you see, if it were so, this would injure you
41. altogether; it might then seem as if she had done what she
has out of pique, or self-sacrifice, or some feeling of that
kind that, in a sense, you were to blame for?”
Mr Cheviott watched his cousin closely as he said this, but
Arthur stood the scrutiny well. For a moment or two he
stared as if he hardly understood; then a light suddenly
breaking upon him, he flushed slightly, but there was no
hesitation in his honest blue eyes as he looked up in his
cousin’s face.
“I see what you mean,” he said, “but I didn’t at first. No,
Laurence, Alys thinks of me as a brother; she did know and
warmly approved of my admiration for Miss Western, but
she never knew of its going further. I rather think she
fancies it shared the fate of my other admirations, and that
she thinks no better of me in consequence. What she did
to-day had nothing to do with that. She has got into her
dear little head that she comes between me and my
fortune, and knowing that she never could possibly have
cared for me, except as a brother, whether I had cared for
her in another way or not, she has, for my sake, nobly
taken the bull by the horns. And so far I feel all right. Had I
proposed to her twenty times, she would never have
accepted me.”
Mr Cheviott was silent. Whether or not he agreed with his
cousin was not the question. That Arthur honestly believed
what he said was enough.
“And what is to be done then?” said Arthur.
“What I said,” replied Mr Cheviott. “We must lay it all before
Maudsley as soon as possible. And in the mean time, Arthur,
do nothing more—let things remain as they are with Miss
42. Western. In any case you cannot come into your property
for two years.”
“But whatever happens, I am not going to let ‘things remain
as they are,’ as you say, for two years,” said Arthur, aghast.
“You can continue my present income for that time, anyway,
now that my future is likely to be all right. At the worst,
even if my engagement was publicly announced, it is six of
one and half a dozen of the other as regards Alys and me. I
should have shown I did not want to marry her, but she
most certainly has shown she does not want to marry me.”
He touched Alys’s paper as he spoke.
“Yes,” said Mr Cheviott, “that is true.”
“Perhaps,” said Arthur, laughingly, “if we appeal to the Court
of Chancery, it will divide the estate between us. I shouldn’t
mind. Lilias and I could live on what there would be well
enough.”
“I don’t think that’s likely,” said Mr Cheviott. “However, the
first thing to be done is to see Maudsley.”
And it was settled that they should go up to town the
following day.
But when the cousins had separated for the night, and
Arthur was alone with his own thoughts, a certain feeling of
dissatisfaction with his own conduct came over him.
“I can’t make it out exactly,” he said to himself, as he sat
over the smoking-room fire with his pipe, “but somehow
I’ve a feeling that I’m not acting quite straightforwardly.
How is it? Is it that I am claiming my property on false
pretences—knowing in my heart that I never did intend to
propose to Alys; or is it that I am not behaving rightly to
Lilias—keeping her, or our engagement rather, dark till I feel
43. my way? Laurence is as honest a fellow as ever lived, but
then his intense anxiety that I should get my own blinds
him a little, perhaps, to the other sides of the question.
What a muddle it all is, to be sure!”
He sat still for a few moments longer, then suddenly rose
from his seat.
“I’ll do it,” he said; “right or wrong, it seems the honestest
thing. I’ll do it.”
He hunted about for writing materials, and, having found
them, set to work at once on a letter. He did not hesitate in
writing it; he seemed at no loss what to say, and in less
than half an hour it was completed, signed, sealed and
addressed to Mrs Western, Hathercourt Rectory.
Then the young man gave a deep sigh of relief, went to bed,
and slept soundly till morning. But very early he was astir
again; before many members of the Romary household
even—for it was, compared with many, an early one—were
about, Captain Beverley had crossed the park, and
traversed on foot the two miles to the nearest post-office,
that of Uxley, where he deposited his letter, and was at
home again before Mr Cheviott made his appearance for the
eight o’clock breakfast, necessitated by their intended
journey.
A couple of hours later found the two young men in the
train.
“Laurence,” began Captain Beverley, but his cousin
interrupted him.
“Excuse me, Arthur. I want to say something to you before I
forget. You must let me be the spokesman with Maudsley; if
he proposes, as I expect, to carry your affairs to the Court
44. of Chancery, I think it will be best for his mind to be
perfectly unprejudiced, and to let his instructions, in the
first place anyway, come from me. You, I am certain, would
not tell the story impartially—you would tell it against your
own interests.”
“I must tell it as it is, Laurence,” said Arthur, “and, no doubt
facts will show that I am, at least, as much to blame as Alys
for the non-fulfillment of my father’s wishes. For, Laurence,
I was just going to tell you when you interrupted me—I’ve
done it, out and out. I couldn’t stand leaving things as they
were; it wasn’t fair to her, nor honest to any one, somehow.
I have written and sent a formal proposal for Lilias to her
parents. I sent it to her mother, because her father is ill.”
“And what did you say?”
“I told them that my prospects were most uncertain—I
might be poor, I might be rich, and probably should not
know which for two years, but that, at the worst, I could
work for my livelihood, and was preparing myself for such a
possibility.”
Mr Cheviott was silent.
“Are you awfully annoyed with me, Laurence?”
A half smile broke over Mr Cheviott’s face at the question.
“Upon my soul,” he said, “I don’t know. If a fellow will cut
his own throat—”
“Complimentary to Miss Western,” said Arthur.
“Well, well, you know what I mean. I allow that, in your
case, there was strong temptation, and, of course, Arthur, I
respect you for your straightforwardness and
45. downrightness. Personally, I have certainly no reason to be
annoyed. What the relief to me will be of having this
horrible concealment at an end, you can hardly imagine—
the misconception it has exposed me to—good God!” He
stopped abruptly. Arthur stared at him in amazement.
“I had no idea you felt so strongly about it, Laurence,” he
said. “It makes me all the more thankful I have done what I
have. You refer to Alys, of course? I know she must have
been puzzled, but nothing would shake her confidence in
you, old fellow, and now she will understand everything.”
“Yes, it would, of course, be an absurdity to carry out the
directions about not telling her, once you are openly
engaged to Miss Western,” replied Mr Cheviott. “And, I
suppose, you have not much misgiving as to what the
answer will be to your letter?”
“I don’t know,” said Arthur. “It will all come right in the end,
but I expect her people to hesitate, at first, on account of
the uncertainty. But you don’t think there will be any
question of stopping my allowance, in the mean time, if I
marry before the stated period is out?”
“I think not. I can take that upon me—for Alys. But if we
appeal to the court at once it will probably confirm your
income till things are settled.”
That same evening the cousins returned home. Some light,
but not much satisfaction, was the result of their journey.
Mr Maudsley approved of the course proposed by Mr
Cheviott, but was decidedly of opinion that no decision
could be arrived at till the date fixed by Arthur’s father for
his son’s coming of age. “And then?” eagerly inquired both
men. He could not say—it was an unusual, in fact, an
extraordinary case, but, on the whole, seeing that the non-
46. fulfillment of the testator’s wishes was at least as much the
lady’s doing as the gentleman’s—a contingency which never
seemed to have dawned upon Mr Beverley—on the whole it
seemed improbable that Captain Beverley should be
declared the sufferer. “But it was a most extraordinary
complication, no doubt,” repeated Mr Maudsley, and he was
glad to feel that neither he nor any one connected with him
had had anything to do with the drawing up of so short-
sighted a document as the late Mr Beverley’s last will and
testament.
“Who did draw it up?” said Arthur, turning to his cousin.
“A stranger,” was the reply. “You know he consulted no one
about it. He knew my father would altogether have opposed
it. But it is perfectly legal. Mr Maudsley and I have tried
often enough to find some flaw in it,” he added, with a
slight smile.
“And what about telling Alys?” said Arthur, with some little
hesitation, as the dog-cart was entering the Romary gates.
“I think,” said Laurence, “I think, as she knows, or has
guessed so much, it is best to tell her all. It is to some
extent left to my discretion to explain the whole to her
should it be evident that the conditions cannot be fulfilled,
which I have always interpreted to mean in case of her or
your marriage, or engagement to some one else. Of course
there are people who would say that you are not yet
married, hardly engaged, and that I should wait, to be sure.
But honestly I confess, after what has happened, it would
be repulsive to me, in fact, impossible to go on dreaming
that your father’s wishes ever could be fulfilled. The worst
of such a deed as your father’s will is that all I can do is to
act up to the letter of his instructions—as for the spirit of it
—!”
47. “You’ve done your best,” said Arthur, re-assuringly; “far
better than any other fellow in the same position could have
done. Just you see if Alys doesn’t say so. It’s been a horrid
sell for you altogether, and—”
“Not the not getting your patrimony. You don’t mean that?”
interrupted Laurence. “Heaven only knows what the relief
will be to me if, as I am beginning to hope, it is decidedly
the right way.”
“No, I didn’t mean that exactly,” said Arthur. “I know you
and Alys are less selfish and grasping than any two people I
have ever come across—cela va sans dire—I meant the
bother and worry and all the rest of it. I wish somehow
something might go to Alys. I can’t help wishing that, you
see, knowing it all and feeling just as if she were my own
sister.”
“Don’t wish it,” said Laurence, shortly. “Alys will have
enough. Married or single she need never be dependent on
any one.”
“Ah, yes!” returned Arthur; “but still—She wouldn’t be the
worse of a home of her own. Downham now—it’s a nice
little place, and what on earth should I do with two—three,
there’s the Edge,” he added, with a merry, boyish laugh—“if
Downham, now, could be settled on Alys, for, you see,
Laurence,” he added, seriously, and as hesitating to allude
to anything so completely out of the range of probabilities,
“after all, it’s just possible you may marry.”
“I suppose so,” said Laurence, with a touch of bitterness in
his tone which Arthur, had he perceived, would have been
at a loss to explain, “I suppose so, but so highly unlikely, it
is no use taking it into consideration one way or another.
48. Confess now, Arthur, you hardly could, could you, imagine
such a thing as any girl’s caring for me?”
Arthur looked up at his cousin with some surprise. Was
Laurence joking? He could not tell.
“I don’t know why one shouldn’t,” he said, meditatively. “A
girl, I mean—I don’t see why you need fancy yourself so
unattractive. You’re good-looking enough, and—come now,
Laurence, that’s not fair; you’re leading me out to laugh at
me,” for so only could he interpret the slight smile that
flickered over his cousin’s face.
“I was in earnest, I assure you,” said Mr Cheviott. “However,
never mind. We’ll postpone the discussion of my charms to
a more convenient season. Here we are at home.”
“Shall you have your talk with Alys to-night?” said Arthur.
“Probably—unless, that is to say, you would rather I should
wait till—till—how shall I put it?—till you get a reply to your
letter to Hathercourt.”
“No,” said Arthur, decidedly, “don’t put it off on that
account. Whatever disappointment in the shape of delay or
hesitation may be in store for me, I’ve no misgiving as far
as Lilias herself is concerned. She’s as true as steel. And in
any case Alys deserves my confidence. No sister could have
been stauncher to me through all than she has been.”
And so it was decided, though, glad as Laurence felt to put
an end once and for always to the only misconception that
had ever existed between his sister and himself, a strange
indefinable reluctance to tell her all clung to him.
“She will hate so to hear the idea of a marriage with Arthur
discussed or alluded to,” he said to himself. “Girls are such
49. queer creatures. However, the more reason to get it over.
Will she ever tell it to Mary Western, I wonder? I shall lay
no embargo upon her, for sooner or later Arthur is sure to
tell the elder sister the whole story. But even if it were all
explained, what then? I said in my fury that day what I wish
I could forget—I said to her that I could have made her care
for me. Could I? Ah, no—such deep prejudice and aversion
could never be overcome. As Arthur could not conceal in his
honesty, I am very far from an attractive man—not one
likely to ‘find favour in my lady’s eyes.’ I am certainly not ‘a
pretty fellow.’ Ah, well, so be it!”
50. Chapter Thirty.
“Amendes Honourables.”
”... But what avails it now
To speak more words? We’re parting,
Let it be in kindness, give me good-bye,
Tell me you understand, or else forgive.”
“I’ve nothing to forgive; you love me not,
And that you cannot help, I fancy.”
Hon. Mrs Willoughby.—Euphemia.
But, as not unfrequently happens, Mr Cheviott found the
anticipation worse than the reality. Alys was upstairs in her
own room when they got to the house, and she begged her
brother not to ask her to come down that evening.
“I am not ill,” she said, “only tired and nervous, somehow.
Come up to me after dinner, Laurence, and let us have a
good talk—that will do me more good than anything.”
She looked up at him with a curious questioning in her eyes
that struck him as strangely pathetic.
“Yes,” he said to himself, “she must be told all.”
So the way was paved for his revelations. And Alys was
sufficiently prepared for them to manifest no very
overwhelming surprise. She listened in silence till Laurence
had told her all. Then she just said quietly:
“Laurence, it was a cruel will.”
51. “Yes,” said her brother, “however intended, so it has indeed
proved.”
“Going near,” pursued Alys, softly, almost as if speaking to
herself, “going near to spoil two, four, nay, I may say five
lives,” she whispered. “Oh, thank God, Laurence, it is at an
end!”
She clasped her thin little hands nervously. How changed
she was—Alys, poor Alys, who used to ignore the very
existence of nerves!
Her next remark struck Mr Cheviott unexpectedly.
“Laurence,” she said, “I wonder if Mary Western will ever
know all this!”
He had it on his lips to answer, “The sooner so, the better,”
but he could not. Instead thereof his reply sounded cool and
unconcerned in the extreme.
“Possibly she may, some time or other. Arthur is sure to tell
Lilias Western whom it does concern. But why should you
care about her sister’s knowing it?”
“Because I do,” Alys replied, oracularly.
There was a large allowance of letters in the Romary post-
bag the next morning. Several for Captain Beverley—all of
which, but one, he put hastily aside. And his heightened
colour and evident anxiety could not but have betrayed to
his companions whence came that one, had not both Mr
Cheviott and Miss Winstanley been absorbed by news of
unusual interest in their respective letters.
“Laurence,” said Arthur, at last, when for the time letters
were put down, and breakfast began to receive some
52. attention, “is that yesterday’s Times? Have you looked at it?
I wonder if there is a death in it of some one I know—you
know who I mean—the last of those poor Brookes, Basil’s
brother, I mean Anselm, a boy of eighteen. I hear he died at
Hastings, two days ago.”
“I don’t know about its being in the Times,” replied Mr
Cheviott, “but, curiously enough, I have just heard of it in a
letter from an old friend of mine, Mrs Brabazon, an aunt of
the poor fellow’s, and—”
“And?” said Arthur, eagerly.
Mr Cheviott glanced at Miss Winstanley. “Afterwards,” he
formed with his lips, rather than by pronouncing the word,
in reply to his cousin. But Miss Winstanley had caught
something of what they were saying.
“The Brookes,” she exclaimed, “are you talking of the
Brookes of Marshover?” and when both her companions
answered affirmatively, “How very odd!” she went on,
growing quite excited. “My letter is all about them too. It is
from my old friend, Miss Mashiter, who has been staying at
the same hotel at Hastings as the Brookes are at, and she is
quite upset about the poor young fellow’s death—it was so
sudden at the last, and there is such a romantic story
about. It appears that a cousin of the young man’s came to
Hastings lately, a most exquisitely beautiful creature, with
whom he had been in love since early boyhood, though
somewhat older than himself, and she has been devoting
herself to him, and now the report is that, just before he
died, he got his poor father to promise to leave everything
to her—he has no child left, and the Brookes are
enormously rich. What a catch the young lady will be!”
53. “Aunt Winstanley, I am ashamed of you!” said Mr Cheviott.
“I had no idea you were so worldly-minded. You don’t mean
to say you ever heard of such a thing as a girl’s losing a
lover and consoling herself with another—especially when
the first had, as you say in this case, left her a fortune?”
“It is very sad,” agreed Miss Winstanley, quite deceived by
Mr Cheviott’s tone—“very sad, but such is the way of the
world, Laurence. Of course, I would not say such a thing
before Alys.”
“Of course not,” said her nephew, approvingly.
Arthur looked up with relief; for the instant, Miss
Winstanley’s story had startled him a little—for to whom
could the episode of the beautiful cousin refer but to Lilias,
still, as her mother’s letter informed him, at Hastings,
“doing what she can for our poor friends there.” But there
must be great nonsense mixed up with Miss Mashiter’s
gossip, Arthur decided, seeing that Laurence, who had the
correct version of the whole in his hands, could afford to
tease Miss Winstanley about it. The poor boy—Anselm
Brooke—was dead, but still—the idea of Lilias’s name being
coupled with that of any man, or boy even, was not
altogether palatable, and still less that of her being an
heiress!
“What a mercy I yielded to my inspiration and wrote to Mrs
Western yesterday!” he replied. “To-day, after hearing that
report, nonsensical though it probably is, I should hardly
have liked to write.”
He was thankful when Miss Winstanley at length got up
from her seat—her breakfast seemed to have been an
interminable affair that morning—and saying that she must
54. go and ask what sort of a night Alys had had, left the
cousins to themselves.
“What is your news? What does Mrs Brabazon write about?”
exclaimed Arthur, eagerly, almost before the door had
closed on Miss Winstanley.
“Rather,” said Laurence, “What is yours? Mine will keep, but
you, I see, have a letter from Hathercourt which, I am sure,
you are dying to tell me all about.”
“To show you, if you like,” said Arthur, holding it out to his
cousin. “You have guessed, I see, that it is all I could wish.”
It was a thoroughly kind and sensible reply from Mrs
Western. She made no pretence of astonishment at the
nature of Captain Beverley’s letter to her; she said that she
and her husband would be glad to see him again, and to
talk over what he had wished to say to them.
Lilias was at Hastings, but expected home in a few days. Mr
Western was continuing better. Any afternoon of the present
week would find them both at home and disengaged, and
she ended by thanking Arthur for his consideration in
writing to her instead of Lilias’s father, as he was still far
from able to meet any sudden agitation without risk of
injury.
“Should I go over this afternoon, do you think?” said Arthur.
“Yes, I should say so,” replied Mr Cheviott. “And what will
you tell them?”
“Everything. I have no choice,” said Arthur. “That is to say, I
shall tell them all about my father’s will and the present
state of the case, and what Maudsley thinks and what you
think. Of course I need not go into particulars as to what
55. Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!
textbookfull.com