Computing Handbook Computer Science and Software Engineering 3ed. Edition Allen B Tucker PDF Download
Computing Handbook Computer Science and Software Engineering 3ed. Edition Allen B Tucker PDF Download
https://ebookname.com/product/computing-handbook-computer-
science-and-software-engineering-3ed-edition-allen-b-tucker/
Get the full ebook with Bonus Features for a Better Reading Experience on ebookname.com
Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...
https://ebookname.com/product/software-engineering-and-testing-
an-introduction-computer-science-1st-edition-b-b-agarwal/
https://ebookname.com/product/the-biomedical-engineering-
handbook-3-3ed-edition-bronzino-j-ed/
https://ebookname.com/product/frontiers-in-education-computer-
science-and-computer-engineering-1st-edition-hamid-r-arabnia/
https://ebookname.com/product/handbook-of-indexing-techniques-a-
guide-for-beginning-indexers-fifth-edition-linda-k-fetters/
Barbaro A Nation s Love Story First Edition Pamela K.
Brodowsky
https://ebookname.com/product/barbaro-a-nation-s-love-story-
first-edition-pamela-k-brodowsky/
https://ebookname.com/product/the-oxford-handbook-of-business-
history-oxford-handbooks-oxford/
https://ebookname.com/product/concise-guide-to-brief-dynamic-and-
interpersonal-therapy-2nd-edition-concise-guides-hanna-levenson/
https://ebookname.com/product/new-media-for-a-new-china-1st-
edition-james-f-scotton/
https://ebookname.com/product/the-project-management-tool-
kit-100-tips-and-techniques-for-getting-the-job-done-right-2nd-
edition-tom-kendrick/
Broadcast Data Systems 1st Edition Peter L. Mothersole
https://ebookname.com/product/broadcast-data-systems-1st-edition-
peter-l-mothersole/
COMPUTING
HANDBOOK
THIRD EDITION
Computer Science and
Software Engineering
COMPUTING
HANDBOOK
THIRD EDITION
Computer Science and
Software Engineering
EDITED BY
Teofilo Gonzalez
University of California
Santa Barbara, California, USA
Jorge Díaz-Herrera
Keuka College
Keuka Park, New York, USA
EDITOR-IN-CHIEF
Allen Tucker
Bowdoin College
Brunswick, Maine, USA
MATLAB® is a trademark of The MathWorks, Inc. and is used with permission. The MathWorks does not warrant the accuracy
of the text or exercises in this book. This book’s use or discussion of MATLAB® software or related products does not consti-
tute endorsement or sponsorship by The MathWorks of a particular pedagogical approach or particular use of the MATLAB®
software.
CRC Press
Taylor & Francis Group
6000 Broken Sound Parkway NW, Suite 300
Boca Raton, FL 33487-2742
This book contains information obtained from authentic and highly regarded sources. Reasonable efforts have been made to
publish reliable data and information, but the author and publisher cannot assume responsibility for the validity of all materials
or the consequences of their use. The authors and publishers have attempted to trace the copyright holders of all material repro-
duced in this publication and apologize to copyright holders if permission to publish in this form has not been obtained. If any
copyright material has not been acknowledged please write and let us know so we may rectify in any future reprint.
Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced, transmitted, or utilized in any
form by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying, microfilming,
and recording, or in any information storage or retrieval system, without written permission from the publishers.
For permission to photocopy or use material electronically from this work, please access www.copyright.com (http://www.copy-
right.com/) or contact the Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923, 978-750-8400.
CCC is a not-for-profit organization that provides licenses and registration for a variety of users. For organizations that have been
granted a photocopy license by the CCC, a separate system of payment has been arranged.
Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and are used only for identifica-
tion and explanation without intent to infringe.
Visit the Taylor & Francis Web site at
http://www.taylorandfrancis.com
v
vi Contents
9 Cryptography������������������������������������������������������������������������������������������������� 9-1
Jonathan Katz
10 Algebraic Algorithms����������������������������������������������������������������������������������� 10-1
Ioannis Z. Emiris, Victor Y. Pan, and Elias P. Tsigaridas
11 Some Practical Randomized Algorithms and Data Structures������������������� 11-1
Michael Mitzenmacher and Eli Upfal
12 Approximation Algorithms and Metaheuristics����������������������������������������� 12-1
Teofilo F. Gonzalez
13 Combinatorial Optimization����������������������������������������������������������������������� 13-1
Vijay Chandru and M.R. Rao
14 Graph Drawing��������������������������������������������������������������������������������������������� 14-1
Ioannis G. Tollis and Konstantinos G. Kakoulis
15 Pattern Matching and Text Compression Algorithms�������������������������������� 15-1
Maxime Crochemore and Thierry Lecroq
16 Distributed Algorithms�������������������������������������������������������������������������������� 16-1
Dan Alistarh and Rachid Guerraoui
The purpose of the Computing Handbook Set is to provide a single, comprehensive reference for spe-
cialists in computer science, information systems, information technology, software engineering, and
other fields who wish to broaden or deepen their understanding in a particular subfield of the comput-
ing discipline. Our goal is to provide up-to-date information on a wide range of topics in a form that is
accessible to students, faculty, and professionals.
The discipline of computing has developed rapidly since CRC Press published the second edition of
the Computer Science Handbook in 2004 (Tucker, 2004). Indeed, it has developed so much that this third
edition requires repartitioning and expanding the topic coverage into a two-volume set.
The need for two volumes recognizes not only the dramatic growth of computing as a discipline but
also the relatively new delineation of computing as a family of five separate disciplines, as described by
their professional societies—The Association for Computing Machinery (ACM), The IEEE Computer
Society (IEEE-CS), and The Association for Information Systems (AIS) (Shackelford et al., 2005).
These separate disciplines are known today as computer engineering, computer science, information
systems, information technology, and software engineering. These names more or less fully encom-
pass the variety of undergraduate and graduate degree programs that have evolved around the world,
with the exception of countries where the term informatics is used for a subset of these disciplines. The
document “Computing curricula 2005: The overview report” describes computing this way (Shackelford
et al., 2005, p. 9):
In a general way, we can define computing to mean any goal-oriented activity requiring, benefit-
ing from, or creating computers. Thus, computing includes designing and building hardware and
software systems for a wide range of purposes; processing, structuring, and managing various
kinds of information; doing scientific studies using computers; making computer systems behave
intelligently; creating and using communications and entertainment media; finding and gathering
information relevant to any particular purpose, and so on.
To add much flesh to the bones of this very broad definition, this handbook set describes in some
depth what goes on in research laboratories, educational institutions, and public and private organiza-
tions to advance the effective development and utilization of computers and computing in today’s world.
The two volumes in this set cover four of the five disciplines in the following way:*
1. Volume I: Computer Science and Software Engineering
2. Volume II: Information Systems and Information Technology
* The fifth discipline, computer engineering, is the subject of a separate handbook published by CRC Press in 2008.
xiii
xiv Preface to the Computing Handbook Set
This set is not designed to be an easy read, as would be gained by browsing a collection of encyclope-
dia entries on computing and its various subtopics. On the contrary, it provides deep insights into the
subject matter through research-level survey articles. Readers who will benefit most from these articles
may be undergraduate or graduate students in computing or a related discipline, researchers in one area
of computing aiming to expand their knowledge of another area, or other professionals interested in
understanding the principles and practices that drive computing education, research, and development
in the twenty-first century.
This set is designed as a professional reference that serves the interests of readers who wish to explore
the subject matter by moving directly to a particular part and chapter of the appropriate volume. The
chapters are organized with minimal interdependence, so that they can be read in any order. To facili-
tate rapid inquiry, each volume also contains a table of contents and a subject index, thus providing
access to specific topics at various levels of detail.
The Preface to Volume I provides a more detailed overview of the organization and content of this
volume. A similar overview of the coverage of information systems and information technology appears
in the Preface to Volume II.
Preface to Volume I:
Computer Science and
Software Engineering
This volume is organized to mirror the modern taxonomy of computer science and software engineering
as described by the ACM and IEEE-CS (Joint Task Force, 2012):
Algorithms and Complexity
Architecture and Organization
Computational Science
Discrete Structures
Graphics and Visual Computing
*Human–Computer Interaction
*Security and Information Assurance
*Information Management
Intelligent Systems
Networking and Communication
Operating Systems
Platform-Based Development
Parallel and Distributed Computing
Programming Languages
Software Development Fundamentals
Software Engineering
Systems Fundamentals
Social and Professional Issues
To avoid redundancy, the three starred (*) topics in this list (Human–Computer Interaction, Security
and Information Assurance, and Information Management) are covered in Volume II, while the remain-
ing topics are covered in this volume.
The first eight parts of this volume cover the discipline of computer science (edited by Teofilo Gonzalez),
while the last four parts cover software engineering (edited by Jorge Díaz-Herrrera). Allen Tucker is the
editor in chief of the two volumes.
Computer Science
Implicit in the aforementioned taxonomy (and, indeed, in all current thinking about the nature of com-
puter science) is the idea of a dynamic discipline with an increasingly broad reach. For example, the
computational science area noted earlier emphasizes the necessity of interaction among computer scien-
tists and natural scientists in the many research and educational areas where their work now overlaps.
xv
xvi Preface to Volume I: Computer Science and Software Engineering
A more elaborate description of this idea is expressed in the following definition of computer science,
taken from the 2005 Joint Task Force Report (Shackelford, 2005, p. 13):
Computer science spans a wide range, from its theoretical and algorithmic foundations to cutting-
edge developments in robotics, computer vision, intelligent systems, bioinformatics, and other
exciting areas. We can think of the work of computer scientists as falling into three categories.
1. They design and implement software. Computer scientists take on challenging program-
ming jobs. They also supervise other programmers, keeping them aware of new approaches.
2. They devise new ways to use computers. Progress in the CS areas of networking, database,
and human-computer-interface enabled the development of the World Wide Web. Now CS
researchers are working with scientists from other fields to make robots become practical
and intelligent aides, to use databases to create new knowledge, and to use computers to help
decipher the secrets of our DNA.
3. They develop effective ways to solve computing problems. For example, computer scien-
tists develop the best possible ways to store information in databases, send data over net-
works, and display complex images. Their theoretical background allows them to determine
the best performance possible, and their study of algorithms helps them to develop new
approaches that provide better performance.
The computer science chapters are organized into eight parts: (I) Overview of Computer Science;
(II) Algorithms and Complexity; (III) Architecture and Organization; (IV) Computational Science and
Graphics; (V) Intelligent Systems; (VI) Networking and Communication; (VII) Operating Systems; and
(VIII) Programming Languages. A brief summary of what you can expect to find in each part is pro-
vided in the following.
consisting of $1,000,000 has been offered by the Clay Institute to anyone who solves this problem. At
a more abstract level, Chapter 8 reviews formal methods and computability. This chapter explores the
limits of what is computable within the most basic computing models that are equivalent to current
computer architectures. One of the most complex areas of research is cryptography. Chapter 9 provides
a comprehensive overview of this very important area. Since millions of private transactions take place
on the Internet every second, we need ways to keep them secure and guarantee their integrity. Solutions
in this area require sophisticated mathematical analysis techniques. Chapter 10 addresses the area of
algebraic algorithms. The basic applications in this area are in science and engineering.
As the input size of most computationally complex problems continues to grow (sometimes referred to as
the phenomenon of big data), the study of randomized algorithms has grown considerably in recent years.
Chapter 11 discusses techniques to design such algorithms by presenting algorithms to solve some specific
problems. Another way of dealing with computational complexity is to aim for approximations rather than
optimal solutions. Chapter 12 discusses approximation algorithms and metaheuristics. The different meth-
odologies used in these two areas are surveyed and applied to problems from different disciplines. Algorithms
that take advantage of the combinatorial structure of the feasible solution space are discussed in Chapter 13.
Another important algorithmic challenge is how to visualize data and their structure. Chapter 14 covers the
area of graph drawing, which tries to design algorithms that display information in a clear way according
to given objective functions. In this era of big data, we also need to discover ways of storing, retrieving, and
transmitting it efficiently. Chapter 15 covers strategies for data compression and finding patterns in data
quickly. Chapter 16 studies computing in a landscape where the computations are distributed among many
computers. In this scenario, we need to address the issue of fault-tolerant computing; as the number of inde-
pendent devices grows, the likely failure of at least one of the components increases substantially.
restrictive solutions. The use of computer-based methods for the prediction of fluid flows has seen tremen-
dous growth in the past half century. Fluid dynamics (Chapter 27) has been one of the earliest, and most
active, fields for the application of numerical techniques. Computational astrophysics (Chapter 28) cov-
ers astrophysics, a computationally intensive discipline. Physics and astronomy make heavy use of online
access and data retrieval. Databases, data analysis, and theoretical modeling go hand in hand in this area.
The gravitational n-body problem and its modeling form the basis for cosmology. Chapter 29 discusses the
rich set of computational applications in chemistry. Computational biology/bioinformatics is an area that
has grown tremendously over the last decade. Chapter 30 discusses the interplay between the genetic analy-
sis provided by computational algorithms and the underlying biological processes. Chapter 31 on terrain
modeling examines the computational problems and new insights arising from the analysis of GIS data.
Computer graphics provides the underlying tools for scientific visualization and animation of a wide
variety of real and imaginary phenomena. Chapter 32 discusses the basic geometric primitives manipu-
lated by typical graphics systems. These primitives allow for the efficient representation and manipula-
tion of visual objects in a computer. Chapter 33 covers computer animation, which has become widely
used in the production of movies and videos.
Intelligent Systems
Mathematical logic and declarative programming provide theoretical foundations for artificial intel-
ligence applications, which are called intelligent systems. Chapter 34 explores the use of logic to allow a
system to work in spite of contradictions, dilemmas, and conflicts. Chapter 35 discusses qualitative rea-
soning, which supports reasoning with very little information. This is the first approach that one uses to
understand a problem before developing a more formal or quantitative strategy. Machine learning, dis-
cussed in Chapter 36, is concerned with identifying and exploiting patterns in data to simulate human
learning. Applications of machine learning to real-world problems are widely used on the Internet,
for example, in marketing. Chapter 37 introduces explanation-based learning, which adds inferential
domain theory to expand the reach of statistical machine learning. This theory adds expressiveness to
statistical methods such as Bayesian or Markov models.
Chapter 38 describes searching, which is a basic operation in most computing areas and is par-
ticularly important in intelligent systems where the search domain is often complex. This chapter
explores both blind exhaustive search methods using informed heuristics and optimal heuristics.
Chapter 39 covers planning (the process of creating an organized set of actions) and scheduling
(the process of assigning a set of actions to resources over time). These are basic operations arising
in all sorts of environments and have been studied over the years in several disciplines. Chapter 40
explores natural language processing, or developing systems to understand human languages. In
2011, IBM’s Watson program c onvincingly won the popular Jeopardy game over the most highly
skilled human competitors. This was a major accomplishment for natural language processing.
Spoken language understanding, covered in Chapter 41, is an emerging field between the areas of
speech processing and natural language processing. This area leverages technologies from machine
learning to create systems that would facilitate communication with users. Chapter 42 covers neural
networks, which have been used to solve a wide range of problems in modeling intelligent behavior.
Chapter 43 deals with cognitive modeling and surveys the methods and models used to understand
human cognition. The semantic basis and properties of graphic models (Bayesian Networks) are
explored in Chapter 44. Applications to reasoning and planning are discussed in this chapter.
effectively. Chapter 45 examines the communications software needed to interconnect computers, serv-
ers, and all sort of devices across networks. The unique aspects of wireless networks are discussed in
Chapter 61 in Part VII. Chapter 46 discusses the routing algorithms that manage information flow across
networks, including the trade-offs that exist among different alternatives. Chapter 47 discusses access
control, which is fundamental for protecting information against improper disclosure or modification.
Compression of images and videos needed for the efficient storage and transmission of these types
of data is covered in Chapter 48. Chapter 49 introduces underwater sensor networks, whose challenges
and techniques are very different from those in other types of networks. Chapter 50 surveys ideas for
transforming the World Wide Web to facilitate interoperability and integration of multiauthored, mul-
tithematic, and multiperspective information services seamlessly. Chapter 51 deals with search engines,
which have become indispensable in almost all aspects of our daily life. It discusses the fundamental
issues involved in designing and constructing search engines that interact with enormous amounts of
information and digest it for users.
Operating Systems
An operating system is the fundamental software that controls all aspects of a computer, its applications,
and its user interface. Chapter 52 discusses processes, the basic software activities that an operating
system manages, and the mechanisms needed for communication and synchronization. Chapter 53
covers thread management, where threads are basic sequences of code that comprise a program running
in a system. Breaking programs and systems into threads is particularly useful in multicore machines,
the modern organization of computers. Virtual memory, discussed in Chapter 54, explains the way in
which computer memory is organized for efficient access in computers. This chapter also discusses how
these techniques apply to other levels of storage and systems. The organization of file systems and sec-
ondary storage is discussed in Chapter 55. The main concern is the use of secondary storage space for
its use as long storage media.
Chapter 56 covers performance modeling of computer systems. Different computer architectures
have different performance limits. The chapter discusses different ways to analyze computer system
performance. Chapter 57 deals with a similar topic but for interconnected distributed computer systems
such as clusters, grids, and clouds. An important issue here is maintaining quality of service during
contention management. The architecture and special applications of real-time systems are discussed
in Chapter 58. In these systems, response must occur within specific deadlines; it is a challenge for the
operating system to schedule processes so that these deadlines are met. The design of distributed operat-
ing systems faces two main challenges: scheduling, covered in Chapter 59, and file systems, covered in
Chapter 60. Mobile devices pose new challenges for operating system design, and these are addressed
in Chapter 61. The proliferation of smart phones and tablets has brought this area to the forefront of
research and development. Chapter 62 provides an introduction to service-oriented operating systems
and concludes this part.
Programming Languages
Programming language research has a rich history, and it has remained vibrant with the development
of modern architectures, networks, and applications. Chapter 63 covers imperative programming lan-
guages, the oldest and probably the most prolific style of programming. These types of languages are in
widespread use and are familiar to software developers in all areas of computing. The object-oriented
programming paradigm discussed in Chapter 64 has become popular as it facilitates modeling real-
world software systems using object decomposition. Another form of programming, logic program-
ming discussed in Chapter 65, has major applications in artificial intelligence and natural language
processing research. Recent developments have been especially active in the areas of multiparadigm
programming languages and scripting languages described in Chapter 66 and Chapter 67, respectively.
xx Preface to Volume I: Computer Science and Software Engineering
Chapter 68 deals with compilers and interpreters, which provide the interface between programs
written in higher-level programming languages and an equivalent encoding that a computer can under-
stand and carry out. Many aspects of this process have been automated, and the techniques and limita-
tions of these processes are also discussed. Every programming language has syntax and semantics.
Syntax refers to the valid strings of characters that define valid programs in the language, and semantics
refers to the meaning of such strings. Chapter 69 covers formal semantics for programming languages.
Chapter 70 describes type systems, which are used in modern programming languages to guarantee
that programs are free of type-related errors. This chapter discusses the formal underpinnings of type
systems as well as their implementations. Chapter 71 covers formal methods, a set of notations and tools
that provide a mathematical basis for proving the correctness of a program with regard to its formal
specification.
Software Engineering
As an academic field of study, software engineering was introduced in the early 1970s as a specialization of
computer science and engineering, first as master-level programs. In the 1990s, the field proliferated in North
America, Europe, and Australia, first in the form of BS programs and, more recently, programs at the PhD
level; that is, software engineering programs separate from computer science programs (Lethbridge et al.,
2006). What is the difference and why do we care?
Software is of critical importance in today’s world and of increasingly serious public significance in
our daily lives for our safety and security. Although the voicing of concerns about the critical conse-
quences of not considering software development as a more rigorous profession dates back to the late
1960s (Naur, 1969), today software engineering is still not a fully formed, mature professional discipline.
This seems more of an elusive goal than a concrete reality or even a future possibility. Some wonder if
trying to retrofit software engineering with the traditional engineering paradigm has hindered its accep-
tance as a professional discipline. Particularly lacking is a widespread recognition of software develop-
ers as professionals in the full sense of the word.*
Over the past decades, we have identified scientific and engineering body of knowledge needed to
solve technical software problems that meet user requirements (functional and otherwise) and deliver
software within budget, on time, as well as within its economic, legal, and social considerations. The
study of engineering requires a strong background in mathematics and the physical sciences. Although
this is not different for software engineers, the kind of mathematics and the specific science may be dif-
ferent from more traditional engineering disciplines. However, a legitimate research question remains
on whether there could be a scientific basis for understanding the complexity of software such that it can
be engineered to have predictable quality and behavior.
Ian Sommerville (1999) introduced the idea that software engineering is perhaps something else: “In
essence, the type of systems which we are interested in are socio-technical software-intensive systems.…
Systems, therefore, always include computer hardware, software which may be specially designed or
bought-in as off-the-shelf packages, policies and procedures, and people who may be end-users and pro-
ducers/consumers of information used by the system.” Furthermore, Sommerville and his colleagues
claim that “there is no technical solution to software complexity” (Sommerville, 2012).
The fact that computing has become a distinct branch of knowledge, that is, a discipline in its own
right different from science and engineering—an idea first formally introduced by Denning (1998) and
further developed by Denning and Freeman (Denning, 2009)—fits this notion as has been demonstrated
by the creation of a unifying and enclosing academic entity that embraces the science, engineering, and
technology of computing: the computing college, “standing alone, headed by its own dean, with the
* It is a fact of life that many of the software industry professionals are graduates from computer science and related fields.
This is of no surprise since in most advertisements for such positions, the educational requirements often listed are
degrees in computer science. However, once hired, employers give them the title of software engineer.
Preface to Volume I: Computer Science and Software Engineering xxi
same stature as traditional colleges” [op. cit.]. In this way, computer science is a different kind of science
and software engineering a different kind of engineering.
The chapters in the last four parts consolidate our current understanding of the discipline of software engi-
neering and its effect on the practice of software development and the education of software professionals.
There are four main parts. (1) Discipline of Software Engineering; (2) Software Quality and Measurement;
(3) Software Development Management: Processes and Paradigms; and (4) Software Modeling, Analysis,
and Design (notice that programming topics were amply covered in Part VIII, programming languages).
your personnel along with the advantages and disadvantages of each approach, as well as underlying
principles and best practices.
Chapter 83 discusses project and process control. It makes a distinction between the project manager’s
control activities in executing a project, that is, project control, and the control of the underlying soft-
ware development processes, or process control. Controlling a project and controlling the underlying
processes are very different activities and, consequently, they require very different techniques to make
them effective. The chapter describes the underlying mathematical and engineering foundations of two
well-known control methods that can be applied to controlling software development projects and to
their underlying software development processes. The first is closely related to traditional engineering
methods for controlling manufacturing and communications systems using feedback. The second is
known as statistical process control (SPC). The chapter concludes with a brief discussion of the extensive
literature describing the application of SPC methods to software projects and the successes and failures
that they have reported.
The last three chapters in this part address more recent development frameworks. Chapter 84 pro-
vides a thorough introduction to Agile methods, an umbrella term popularized with the publication of
the Agile manifesto, reflecting an intention to differentiate Agile approaches from a trend in software
development methodologies that had gained dominance in previous decades. It describes the set of 12
principles underlying the Agile approach as provided by the Agile manifesto. Specific implementations
of the approach are described as best practices, including extreme programming, scrum, etc., together
with an analysis of their specific incorporation, or not, of the 12 principles. The chapter concludes with a
discussion of plan-driven approaches’ compatibility, such as CMMIs, with Agile methods and thorough
analyses of important research directions.
Chapter 85 presents a process for developing software based on service-oriented architectures. The
fundamental building blocks of the approach are services, commonly viewed as self-contained software
application modules exposed through interfaces over a distributed environment. The chapter intro-
duces related elements such as component-based development, distributed components, and web ser-
vices. The underlying principles of the approach are described together with the service infrastructure
needed. In terms of best practices, the chapter outlines reference models and reference architectures and
standards as well as the enterprise service bus idea and compares the specific implementations of the
web services SOAP and REST.
Chapter 86 on software product lines (SPL) provides an introduction to the topic and a thorough anal-
ysis of its research challenges. SPL is one of the most active research areas of software engineering, and
despite remarkable contributions, which are briefly highlighted, important technical problems remain.
The chapter reports quantitative information, based on a secondary study and literature review, on these
remaining problems, which slow down widespread adoption of SPL. The results provided are supported
by a survey among longtime and active SPL researchers and practitioners. The top two reported research
problems were variability management and evolution.
Chapter 88 focuses on specifications for software systems and the software requirements specification
document (SRS) document capturing them. Software requirement specifications are discussed at dif-
ferent stages from a very informal description to inform users, to descriptions in unambiguous terms,
written in a rather formal (i.e., precise and unambiguous) manner. The chapter provides an overview of
best practices for producing an SRS possessing all the desirable quality attributes and characteristics. It
also provides a survey of the various specification languages and lists outstanding research issues such
as completeness, nonfunctional requirements, cost, program construction and proof, and correctness-
preserving program transformations.
Chapter 89 provides an overview of techniques and tools for analyzing the correctness of software
systems using model checking. Two classes of techniques are covered, namely, counterexample-guided
abstraction refinement (CEGAR) using predicate abstraction, and bounded model checking; other key
model checking techniques that are geared toward software verification analysis are also covered. The
chapter concludes with a brief survey of tools.
The next two chapters are about software design. Chapter 90 on design strategies leads us directly
from requirements as “one assumption underlying any design is that the design will satisfy some set of
requirements.” A set of underlying principles is discussed, including the notion of views, architectural
patterns and tactics, decomposition and refinements, and code generation and testing. Design best prac-
tices are presented together with an analysis of important research concerns such as automatic/semiau-
tomatic design, the accuracy of models, and the use and appropriate place for tools.
Chapter 91 on software architecture focuses exclusively on the main product of design: an archi-
tectural design of the software system to solve a specified problem. Various architectural frameworks
are contrasted from their specific viewpoints, as well as a survey of design methods. A metaprocess is
described, starting with concern analysis and domain analysis and concluding with architecture design,
evaluation, and realization. Research topics in software architectures presented include modeling qual-
ity and issues related to model-driven design.
Chapter 92 on human–computer interfaces in software engineering uses speech applications (both
input and synthesis) from requirements to design and implementation to illustrate principles and best
practices and describe difficult research issues that lie ahead on the implication of human–computer
interaction on software development. The latter discusses inherent current limits in speech applications
design.
Chapter 93 deals with software assurance. It discusses the impact of the risks associated with software
vulnerabilities and introduces basic definitions of software assurance. It also presents modern principles
of software assurance and identifies a number of relevant process models, frameworks, and best prac-
tices. The chapter concludes with a research framework to support and identify gaps for future research
and includes a description of the knowledge areas for a Master of Software Assurance as mapped to
maturity levels for building assured systems.
MATLAB® is a registered trademark of The MathWorks, Inc. For product information, please contact:
References
Denning, P., Computing the profession: An invitation for computer scientists to cross the chasm. Educom
Review, 33(6), 1998:26–30;46–59.
Denning, P. and P. Freeman. Computing’s paradigm. Communications of the ACM, December 2009.
Joint Task Force on Computing Curricula, Computer Science Curricula 2013, Association for Computing
Machinery (ACM) and the IEEE-Computer Society (IEEE-CS), December 2013. See http://www.
acm.org/education/curricula-recommendations.
Lethbridge, T.C., R.J. LeBlanc Jr., A.E. Kelley Sobel, T.B. Hilburn, and J.L. Díaz-Herrera. SE2004:
Curriculum recommendations for undergraduate software engineering programs. IEEE Software,
Nov/Dec 2006, 19–25.
Lunt, B.M., J.J. Ekstrom, S. Gorka, G. Hislop, R. Kamali, E. Lawson, R. LeBlanc, J. Miller, and H. Reichgelt.
IT 2008: Curriculum Guidelines for Undergraduate Degree Programs in Information Technology.
ACM and IEEE Computer Society, 2008.
Naur, P. and B. Randell (eds.). Software Engineering, Report on a Conference Sponsored by the NATO
Science Committee, October 1968.
Shackelford, R., J. Cross, G. Davies, J. Impagliazzo, R. Kamali, R. LeBlanc, B. Lunt, A. McGettrick, R.
Sloan, and H. Topi. Computing Curricula 2005: The Overview Report, A cooperative project of the
ACM, AIS, and IEEE Computer Society, 30 September, 2005. See http://www.acm.org/education/
curricula-recommendations.
Sommerville, I. Systems engineering for software engineers. Annals of Software Engineering, 6(1–4), April
1999: 111–129.
Sommerville, I., D. Cliff, R. Calinescu, J. Keen, T. Kelly, M. Kwiatkowska, J. Mcdermid, and R. Paige.
Large-scale complex IT systems. Communications of the ACM, 55(7), July 2012: 71–77.
Topi, H., J. Valacich, R. Wright, K. Kaiser, J. Nunamaker, J. Sipior, and G. Jan de Vreede. IS 2010: Curriculum
guidelines for undergraduate degree programs in information systems. Communications of the
Association for Information Systems, 26(18). http://aisel.aisnet.org/cais/vol26/iss1/18.
Tucker, A. (ed.). Computer Science Handbook, 2nd edn., Chapman & Hall/CRC Press, in cooperation with
the Association for Computing Machinery (ACM), Boca Raton, FL, 2004.
Acknowledgments
This volume would not have been possible without the tireless and dedicated work of all the authors and
reviewers. We appreciate the willingness of both established experts and influential younger research-
ers to join this effort and contribute to this work. Even though we have been working for decades in the
computing field, our work on this volume has enriched substantially our knowledge and understanding
of computing.
We would also like to thank the editorial staff at Chapman & Hall/CRC Press, particularly the per-
sistent and gentle leadership of Randi Cohen, computer science acquisitions editor, whose role has
extended beyond any reasonable call of duty. Bob Stern, as the original computer science editor who
helped create this handbook in its original and second editions, also deserves recognition for his con-
tinued support over the years.
Teo acknowledges the support of the University of California, Santa Barbara (UCSB). Without his
sabbatical leave, this project would not have been possible. He also wants to thank his wife, Dorothy,
and children, Jeanmarie, Alexis, Julia, Teofilo, and Paolo, for their love, encouragement, understanding,
patience, and support throughout the project and his tenure at UCSB.
Jorge acknowledges the support of Dr. Özlem Albayrak during the entire project. He is grateful to
his team at Keuka College, particularly Lori Haines and Sandra Wilmott, for their moral support and
encouragement as he took the helm of the College concomitant with the start of this project.
Allen acknowledges Bowdoin College for providing him the time and support needed to develop the
first, second, and third editions of this handbook set over the last 15 years. He also thanks the many
colleagues who have contributed to earlier editions of this handbook, without which the current edition
would not have been possible. Finally, he thanks his wife, Meg, and children, Jenny and Brian, for their
constant love and support over a lifetime of teaching and learning.
We hope that this volume will be actively and frequently used both by academics who want to explore
the current status and new opportunities within specific research areas and by advanced practitioners
who want to understand how they can benefit from the latest thinking within the disciplines of com-
puter science and software engineering. We also warmly welcome your feedback.
Teofilo Gonzalez
University of California, Santa Barbara
Jorge Díaz-Herrera
Keuka College
Allen B. Tucker
Bowdoin College
xxvii
Exploring the Variety of Random
Documents with Different Content
254 THE BATTLES OF TRENTON AND PRINCETON Having
posted his command in and near the meeting house there, he
communicated with the commander-in-chief, and awaited further
orders.^ On the first day of January General Cadwalader was
directed to join General Washington's army at Trenton. He marched
his force along the White Horse road, crossing Doctor's Creek and
the Sand Hills, and, being joined by General Mififlin's division at the
White Horse Tavern, the whole column moved on to Trenton. It was
not until eleven o'clock on the morning of January 2, however, that
the whole of the additional force, about 3600 men, could be
concentrated on the banks of the Assunpink Creek. Some time had
been required to gather in the picket-guards and the scouting parties
which had been sent out toward Allentown, Cranberry and Princeton.
It had rained during the night, and the roads were muddy and travel
greatly hindered. Still more embarrassing than the apparent paucity
of numbers and the inexperience of recruits was the fact that a large
number of the old soldiers of the Continental army, especially those
from the Eastern States, had completed their term of service on the
last day of the year, and were about to march homeward, almost "to
the music of the enemy's cannon." General Knox, whom Congress
had promoted on the day after the attack on Trenton, addressed the
troops December 31, and urged them to remain for a few days
longer. General Thomas Mifflin also came up from Bordentown to
speak to the soldiers. John Howard of Colonel Lippitt's regiment
describes him on this occasion as "mounted on a noblelooking horse
and clothed in an overcoat made up of a large rose blanket and a
large fur cap on his head." In this rather unmilitary garb he urged
the old troops with the most patriotic appeals to stand by the cause
of independence. General Washington told the men that so far they
had served with great fidelity, and he frankly admitted that they had
a 1 Part ii. No. 83.
THE TIMK-EXPIREI) MEN REMAIN 255 FRIENDS' MEETING
HOUSE AT CROSSWICKS right to their discharge, but begged them
to look at the position in which they would place the cause of liberty
if they now left for their homes. He alluded to the victory they had
achieved a few days previous, and showed them how all this would
be naught if they did not attempt to check the advance of the foe.
General Mifflin also had been to Crosswicks, and in company with
General Cadwalader he made an appeal to Colonel Hitchcock's New
England brigade to uphold the cause of national freedom until the
campaign was over. Lieutenant-Colonel William Henshaw said to his
Massachusetts men : " At present this is our business, let us not
forsake it. It is you and I, brave boys, who are banded together in
one common cause. We scorn the thought of flying from it." They
consented. The time of the First and Second Rhode Island regiments
expired with the year, but the Third regiment had still eighteen days
to serve. The appeals to their patriotism and sense of right
prevailed, and they, too, remained.
256 THE BATTLES OF TRENTON AND PRINCETON In these
addresses General MifBin made some promises with reference to
captured property that were never fulfilled. Whether or not these
pledges really affected them, it is difficult to say ; but the request for
at least six weeks more of service and an offer of a bounty of ten
dollars, the same which Pennsylvania had already given her militia,
caused some 1400 of the old Continental troops to poise their
firelocks as a sign that they consented to the agreement. On the first
day of January the eminent financier Robert Morris of Philadelphia
sent " His Excellency General Washington" $50,000 which he had
collected from his friends in Philadelphia on his own credit or had
taken from his private purse. This amount was in addition to the
sum of hard money, " four hundred and ten Spanish dollars, two
crowns, ten shillings and sixpence in English coin and a French half
crown," which he had forwarded to General Washington a few days
previous. The last installment was sent with a characteristic letter
congratulating General Washington on the affair at Trenton, and
adding, " If further occasional supplies of money are necessary, you
may depend on my exertions either in a public or private capacity.
The year seventeen seventy-six is over and I am heartily glad of it
and hope you nor America will be plagued with such another." In this
way when the military chest was empty and the emergency was
pressing, this noble patriot exerted himself, and always with success,
to contribute to the support of the army. The new and old troops
which gathered on the bank of the Assunpink Creek may be stated
as about 5000 effective men, although a large proportion of them
were almost without discipline and had yet to learn the first duty of
the soldier. The old troops were but relics of many regiments
depleted by long marches and much suffering. The splendid
Delaware regiment of Colonel Haslet, which had entered the service
800 strong, was now reduced to about 100 men. General
Smallwood's Maryland troops, which had left the State with over
1000 rifles, numbered but 150 men fit for duty. This gallant
organization, which had commanded the
PREPARING FOR A NEW ATTACK 257 admiration of
Philadclphians, when in July, 1776, they had passed through that
city, a splendid body of soldiers, had lost 250 men at the battle of
Long Island, and was now but a mere fragment of a regiment.
Nevertheless General Knox says that even at this time they were " in
high spirits," but he qualifies the remark with " but in want of rum
and clothine:. It does not appear that uj) to this time any more
cavalry ROBERT MORRIS had joined the army, but the artillery was
increased by the six guns which had been captured from Colonel
Rail's brigade and another battery of two guns organized in
Philadelphia.^ ^ This company of Pennsylvania artillery was
accompanied by Major Thomas Procter, First Lieutenant Hercules
Courtney commanding.
258 THE BATTLES OF TRENTON AND PRINCETON As soon
as General Washington had procured definite information of the
strength and position of the enemy, he sent out, under Brigadier-
General de Fermoy, a detachment consisting of his own brigade,
Colonel Edward Hand's Pennsylvania riflemen and Colonel
Hausegger's German battalion, with Colonel Charles Scott's Virginia
Continental regiment and two guns of Captain Thomas Forrest's
battery, to harass the enemy in every possible way, and to dispute
their advance as much as they were able, that the impending battle
might be postponed for at least twenty-four hours. The Americans
posted themselves at Five Mile Run, a short distance south of the
village of Maidenhead, with pickets up to the town. The British
outpost, as we have stated, was at Eight Mile Run, about a mile
north of Maidenhead. This was the state of affairs on the old
Princeton road at the close of New Year's day.^ During the night it
rained heavily, and in the morning the roads were in a dreadful
condition. According to orders the British army, having been divided
into three columns, commenced the advance from Princeton before
daylight on the morning of Thursday, January 2, with a detachment
of British light infantry and Hessian yagers at their head. One of
these yagers was killed by the American pickets while he was
attempting to capture Elias Hunt, a farmer in that neighborhood.
This Hessian was buried in the woods on the farm of Colonel Joseph
Phillips, opposite the Presbyterian Church. Local tradition avers that
for many years the ghost of the dead man was seen in that wood,
and the negroes of the neighborhood carefully avoided the place
after dark. First Lieutenant Worsley Eames, Second Lieutenant
Charles TurnbuU, — four officers and forty-eight enlisted men
present. First Lieutenant Courtney had been detached from Captain
Forrest's company, in which First Lieutenant Eames took his place.
Lieutenant Courtney was soon after made captain, and Major Procter
was commissioned colonel of the Pennsylvania artillery regiment. 1
For Washington's letter to Congress see Part ii. No. 84.
THE BRITISH ADVAN'CE CHECKED 259 About this time the
commandants of regiments on the advance hnes of the American
army, finding that General de Fermoy had returned to Trenton in a
very questionable manner, determined to resist the advance of the
king's troops without further orders. About ten o'clock the first alarm
gun was fired by the American videttes. Colonel Hand, with his
splendid regiment of riflemen. Captain Henry Miller of his command
being in charge of the skirmish line, conducted the retreat to
Trenton. Every place which would even for a few moments give
shelter from which to take a steady aim was taken advantage of, and
every part of the road was disputed in all possible ways. On one
occasion so stubborn a stand was made by the Americans that a
check was produced on the British advance. They actually fell back
and the patriots carefully pressed toward them. At last, however, the
American detachment was driven to the woods running along the
south bank of the Shabbakonk Creek, and here a severe skirmish
commenced about one o'clock, and a deadly fire was made upon the
British forces, throwing them into considerable confusion. For a long
time this conflict was maintained with great vigor, and the battalions
of von Linsingen and Block, a part of Colonel von Donop's original
command, were actually drawn up in order of battle, expecting then
and there to COLONEL EDWARD HAND
26o THE BATTLES OF TRENTON AND PRINCETON enter
upon the general engagement which they anticipated. For fully three
hours the gallant little American force, somewhat protected by the
dense woods, harassed the redcoats and continually thinned their
ranks with musketry and artillery. Right well did they carry out the
plan of General Washington to consume the entire day, if possible, in
skirmishing, and so retard the enemy's advance toward Trenton. The
weather was very mild, the roads were in wretched conCAPTAIN
HIiNRV MILLER dition, and it was difficult for the British troops,
except those in light marching order, to make much progress
through the heavy mud. At the northern part of the town some little
earthworks had been hastily thrown up at a ravine which led down
to the Assunpink Creek, and behind them four guns had been
placed. Here again the retreating Americans made another post of
resistance, and the Virginia troops distinguished
THE AMERICANS RETREAT 261 themselves, as the
Pennsylvania riflemen had done for several hours previous. It was
now nearly four o'clock in the afternoon, and General Washington
rode up with General Knox to encourage the troops to make as
vigorous a defense as possible. General Greene also came up with a
reinforcement, and he immediately assumed command of the entire
force at this point. Captain William Hull of the Seventh Connecticut
Continental regiment was now in charge of the skirmishers. General
Washington was well pleased with the all-day running fight, and
begged the little party not to yield until compelled to. A battery of
British artillery was soon after brought into position and made every
effort to dislodge the American advance force. Nearly an hour was
consumed before the patriot band, unable any longer to sustain
themselves, began again to yield the ground and retreat down the
Brunswick road into the village, having captured some twenty-five or
thirty men during the day. In this way the last determined stand
beyond the town was taken, and as the Americans began to retreat,
the advance party of the British, about 1500 men, again commenced
their march in strong column, the main army being still ^
considerable distance in the rear. The advance entered Trenton at
the head of King and Queen streets, at the same place where the
guns of Captains Forrest and Hamilton had opened fire on Rail's
brigade on the previous Thursday. On their way down Queen street
the fire from behind houses was continuous and galling. When they
reached Tucker's corner, where Queen street is crossed by Second
street, they first began to receive the shots from the batteries of the
main American army posted on the high ground on the south side of
the Assunpink Creek. General Washington had drawn up his army in
line of battle for nearly three miles along the bank of this stream,
which he called Mill Creek, with the left on the Delaware River, and
had thrown up a series of small earthworks on the ridge and across
the road below the Queen street bridge.
The text on this page is estimated to be only 22.10%
accurate
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.
ebookname.com