Mathematical Foundations of Software Engineering: A Practical Guide to Essentials

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

This textbook presents an introduction to the mathematical foundations of software engineering.  It presents the rich applications of mathematics in areas such as error-correcting codes, cryptography, the safety and security critical fields, the banking and insurance fields, as well as traditional engineering applications. 

Topics and features:

  • Addresses core mathematics for critical thinking and problem solving
  • Discusses propositional and predicate logic and various proof techniques to demonstrate the correctness of a logical argument.
  • Examines number theory and its applications to cryptography
  • Considers the underlying mathematics of error-correcting codes
  • Discusses graph theory and its applications to modelling networks
  • Reviews tools to support software engineering mathematics, including automated and interactive theorem provers and model checking
  • Discusses financial software engineering, including simple and compound interest, probability and statistics, and operations research
  • Discusses software reliability and dependability and explains formal methods used to derive a program from its specification
  • Discusses calculus, matrices, vectors, complex numbers, and quaternions, as well as applications to graphics and robotics
  • Includes key learning topics, summaries, and review questions in each chapter, together with a useful glossary

This practical and easy-to-follow textbook/reference is ideal for computer science students seeking to learn how mathematics can assist them in building high-quality and reliable software on time and on budget. The text also serves as an excellent self-study primer for software engineers, quality professionals, and software managers.

Author(s): Gerard O'Regan
Series: Texts in Computer Science
Edition: 1
Publisher: Springer
Year: 2023

Language: English
Commentary: This eBook has its TOC working properly and the book cover has better resolution. (Worse version @ F3BFB50C31C2DF37D4AE3DC0DAD9EF68)
Pages: 556
City: Cham
Tags: Discrete Mathematics; Cryptography; Number Theory; Algebra; Graph Theory; Matrix Theory; Computational Logic; Quaternion; Ring Theory; Financial Mathematics; Software Engineering Logic; Formal Methods

Preface
Overview
Organization and Features
Audience
Acknowledgments
Contents
Abbreviations
List of Figures
List of Tables
1 Fundamentals of Software Engineering
1.1 Introduction
1.2 What Is Software Engineering?
1.3 Challenges in Software Engineering
1.4 Software Processes and Lifecycles
1.4.1 Waterfall Lifecycle
1.4.2 Spiral Lifecycles
1.4.3 Rational Unified Process
1.4.4 Agile Development
1.4.5 Continuous Software Development
1.5 Activities in Software Development
1.5.1 Requirements Definition
1.5.2 Design
1.5.3 Implementation
1.5.4 Software Testing
1.5.5 Support and Maintenance
1.6 Software Inspections
1.7 Software Project Management
1.8 CMMI Maturity Model
1.9 Formal Methods
1.10 Review Questions
1.11 Summary
References
2 Software Engineering Mathematics
2.1 Introduction
2.2 Early Software Engineering Mathematics
2.3 Debate on Mathematics in Software Engineering
2.4 The Emergence of Formal Methods
2.5 What Mathematics Do Software Engineers Need?
2.6 Review Questions
2.7 Summary
References
3 Mathematical Prerequisites for Software Engineers
3.1 Introduction
3.2 Set Theory
3.2.1 Set Theoretical Operations
3.2.2 Computer Representation of Sets
3.3 Relations
3.3.1 Reflexive, Symmetric and Transitive Relations
3.3.2 Composition of Relations
3.3.3 Binary Relations
3.4 Functions
3.5 Arithmetic
3.5.1 Fractions and Decimals
3.5.2 Prime Number Theory
3.5.3 Greatest Common Divisors (GCD)
3.5.4 Least Common Multiple (LCM)
3.5.5 Ratios and Proportions
3.5.6 Percentages
3.6 Trigonometry
3.6.1 Definition of Sine, Cosine, and Tangent
3.6.2 Sine and Cosine Rules
3.6.3 Trigonometric Identities
3.6.4 Degrees and Radians
3.6.5 Periodic Functions and Sketch of Sine and Cosine Functions
3.6.6 Power Series for Sine and Cosine
3.7 Cartesian Coordinates
3.8 Review Questions
3.9 Summary
References
4 Introduction to Algorithms
4.1 Introduction
4.2 Early Algorithms
4.2.1 Greatest Common Divisors (GCD)
4.2.2 Euclid’s Greatest Common Divisor Algorithm
4.2.3 Sieve of Eratosthenes Algorithm
4.2.4 Early Cipher Algorithms
4.3 Sorting Algorithms
4.4 Binary Trees and Graph Theory
4.5 Modern Cryptographic Algorithms
4.6 Algorithms in Numerical Analysis
4.7 Computational Complexity
4.8 Review Questions
4.9 Summary
References
5 Algebra
5.1 Introduction
5.2 Simplification of Algebraic Expressions
5.3 Simple and Simultaneous Equations
5.3.1 Simultaneous Equations
5.4 Quadratic Equations
5.5 Indices and Logarithms
5.6 Exponentials and Natural Logarithms
5.7 Horner’s Method for Polynomials
5.8 Abstract Algebra
5.8.1 Monoids and Groups
5.8.2 Rings
5.8.3 Fields
5.8.4 Vector Spaces
5.9 Review Questions
5.10 Summary
6 Mathematical Induction and Recursion
6.1 Introduction
6.2 Strong Induction
6.3 Recursion
6.4 Structural Induction
6.5 Review Questions
6.6 Summary
Reference
7 Graph Theory
7.1 Introduction
7.2 Undirected Graphs
7.2.1 Hamiltonian Paths
7.3 Trees
7.3.1 Binary Trees
7.4 Graph Algorithms
7.5 Graph Colouring and Four-Colour Problem
7.6 Review Questions
7.7 Summary
Reference
8 Sequences, Series, and Permutations and Combinations
8.1 Introduction
8.2 Sequences and Series
8.3 Arithmetic and Geometric Sequences
8.4 Arithmetic and Geometric Series
8.5 Permutations and Combinations
8.6 Review Questions
8.7 Summary
9 A Short History of Logic
9.1 Introduction
9.2 Syllogistic Logic
9.3 Paradoxes and Fallacies
9.4 Stoic Logic
9.5 Boole’s Symbolic Logic
9.5.1 Switching Circuits and Boolean Algebra
9.6 Frege
9.7 Review Questions
9.8 Summary
References
10 Propositional and Predicate Logic
10.1 Introduction
10.2 Propositional Logic
10.2.1 Truth Tables
10.2.2 Properties of Propositional Calculus
10.2.3 Proof in Propositional Calculus
10.2.4 Semantic Tableaux in Propositional Logic
10.2.5 Natural Deduction
10.2.6 Sketch of Formalization of Propositional Calculus
10.2.7 Applications of Propositional Calculus
10.2.8 Limitations of Propositional Calculus
10.3 Predicate Calculus
10.3.1 Sketch of Formalization of Predicate Calculus
10.3.2 Interpretation and Valuation Functions
10.3.3 Properties of Predicate Calculus
10.3.4 Applications of Predicate Calculus
10.3.5 Semantic Tableaux in Predicate Calculus
10.4 Review Questions
10.5 Summary
References
11 Advanced Topics in Logic
11.1 Introduction
11.2 Fuzzy Logic
11.3 Temporal Logic
11.4 Intuitionist Logic
11.5 Undefined Values
11.5.1 Logic of Partial Functions
11.5.2 Parnas Logic
11.5.3 Dijkstra and Undefinedness
11.6 Logic and AI
11.7 Review Questions
11.8 Summary
References
12 Language Theory and Semantics
12.1 Introduction
12.2 Alphabets and Words
12.3 Grammars
12.3.1 Backus Naur Form
12.3.2 Parse Trees and Derivations
12.4 Programming Language Semantics
12.4.1 Axiomatic Semantics
12.4.2 Operational Semantics
12.4.3 Denotational Semantics
12.5 Lambda Calculus
12.6 Lattices and Order
12.6.1 Partially Ordered Sets
12.6.2 Lattices
12.6.3 Complete Partial Orders
12.6.4 Recursion
12.7 Review Questions
12.8 Summary
References
13 Automata Theory
13.1 Introduction
13.2 Finite-State Machines
13.3 Pushdown Automata
13.4 Turing Machines
13.5 Review Questions
13.6 Summary
Reference
14 Computability and Decidability
14.1 Introduction
14.2 Logicism and Formalism
14.3 Decidability
14.4 Computability
14.5 Computational Complexity
14.6 Review Questions
14.7 Summary
Reference
15 Software Reliability and Dependability
15.1 Introduction
15.2 Software Reliability
15.2.1 Software Reliability and Defects
15.2.2 Cleanroom Methodology
15.2.3 Software Reliability Models
15.3 Dependability
15.4 Computer Security
15.5 System Availability
15.6 Safety Critical Systems
15.7 Review Questions
15.8 Summary
References
16 Overview of Formal Methods
16.1 Introduction
16.2 Why Should We Use Formal Methods?
16.3 Industrial Applications of Formal Methods
16.4 Industrial Tools for Formal Methods
16.5 Approaches to Formal Methods
16.5.1 Model-Oriented Approach
16.5.2 Axiomatic Approach
16.6 Proof and Formal Methods
16.7 Debate on Formal Methods in Software Engineering
16.8 The Vienna Development Method
16.9 VDM♣, the Irish School of VDM
16.10 The Z Specification Language
16.11 The B-Method
16.12 Predicate Transformers and Weakest Preconditions
16.13 The Process Calculi
16.14 Finite-State Machines
16.15 The Parnas Way
16.16 Model Checking
16.17 Usability of Formal Methods
16.18 Review Questions
16.19 Summary
References
17 Z Formal Specification Language
17.1 Introduction
17.2 Sets
17.3 Relations
17.4 Functions
17.5 Sequences
17.6 Bags
17.7 Schemas and Schema Composition
17.8 Reification and Decomposition
17.9 Proof in Z
17.10 Industrial Applications of Z
17.11 Review Questions
17.12 Summary
Reference
18 Model Checking
18.1 Introduction
18.2 Modelling Concurrent Systems
18.3 Linear Temporal Logic
18.4 Computational Tree Logic
18.5 Tools for Model Checking
18.6 Industrial Applications of Model Checking
18.7 Review Questions
18.8 Summary
References
19 The Nature of Theorem Proving
19.1 Introduction
19.2 Early Automation of Proof
19.3 Interactive Theorem Provers
19.4 A Selection of Theorem Provers
19.5 Review Questions
19.6 Summary
References
20 Cryptography
20.1 Introduction
20.2 Breaking the Enigma Codes
20.3 Cryptographic Systems
20.4 Symmetric Key Systems
20.5 Public Key Systems
20.5.1 RSA Public Key Cryptosystem
20.5.2 Digital Signatures
20.6 Review Questions
20.7 Summary
References
21 Coding Theory
21.1 Introduction
21.2 Mathematical Foundations of Coding Theory
21.3 Simple Channel Code
21.4 Block Codes
21.4.1 Error Detection and Correction
21.5 Linear Block Codes
21.5.1 Parity Check Matrix
21.5.2 Binary Hamming Code
21.5.3 Binary Parity Check Code
21.6 Miscellaneous Codes in Use
21.7 Review Questions
21.8 Summary
References
22 Introduction to Statistics
22.1 Introduction
22.2 Basic Statistics
22.2.1 Abuse of Statistics
22.2.2 Statistical Sampling and Data Collection
22.3 Frequency Distribution and Charts
22.4 Statistical Measures
22.4.1 Arithmetic Mean
22.4.2 Mode
22.4.3 Median
22.5 Variance and Standard Deviation
22.6 Correlation and Regression
22.6.1 Regression
22.7 Statistical Inference and Hypothesis Testing
22.8 Review Questions
22.9 Summary
References
23 Introduction to Probability Theory
23.1 Introduction
23.2 Basic Probability Theory
23.2.1 Laws of Probability
23.2.2 Bayes’ Formula
23.3 Random Variables
23.4 Binomial and Poisson Distributions
23.5 The Normal Distribution
23.5.1 Unit Normal Distribution
23.5.2 Confidence Intervals and Tests of Significance
23.5.3 The Central Limit Theorem
23.6 Bayesian Statistics
23.7 Review Questions
23.8 Summary
References
24 Introduction to Data Science
24.1 Introduction
24.2 Ethics of Data Science
24.2.1 Data Science and Data Scientists
24.2.2 Data Science and Society
24.3 What Is Data Analytics?
24.3.1 Business Analytics and Business Intelligence
24.3.2 Big Data and Data Mining
24.3.3 Data Analytics for Social Media
24.3.4 Sources of Data
24.4 Mathematics Used in Data Science
24.5 Review Questions
24.6 Summary
Reference
25 Calculus I
25.1 Introduction
25.2 Differentiation
25.2.1 Rules of Differentiation
25.3 Integration
25.3.1 Definite Integrals
25.3.2 Fundamental Theorems of Integral Calculus
25.4 Review Questions
25.5 Summary
Reference
26 Calculus II
26.1 Introduction
26.2 Applications of Calculus
26.3 Fourier Series
26.4 The Laplace Transform
26.5 Differential Equations
26.6 Review Questions
26.7 Summary
Reference
27 Matrix Theory
27.1 Introduction
27.2 Two × Two Matrices
27.3 Matrix Operations
27.4 Determinants
27.5 Eigen Vectors and Values
27.6 Gaussian Elimination
27.7 Review Questions
27.8 Summary
Reference
28 Complex Numbers and Quaternions
28.1 Introduction
28.2 Complex Numbers
28.3 Quaternions
28.4 Quaternion Algebra
28.4.1 Quaternions and Rotations
28.5 Review Questions
28.6 Summary
29 Vectors
29.1 Introduction
29.2 Vectors in Euclidean Space
29.2.1 Dot Product
29.2.2 Cross Product
29.2.3 Linear Dependent and Independent Vectors
29.3 Review Questions
29.4 Summary
30 Basic Financial Mathematics
30.1 Introduction
30.2 Simple Interest
30.2.1 Computing Future and Present Values
30.2.2 Computing Future Value
30.2.3 Computing Present Values
30.3 Compound Interest
30.3.1 Present Value Under Compound Interest
30.3.2 Equivalent Values
30.4 Basic Mathematics of Annuities
30.5 Loans and Mortgages
30.6 Review Questions
30.7 Summary
31 Introduction to Operations Research
31.1 Introduction
31.2 Linear Programming
31.2.1 Linear Programming Example
31.2.2 General Formulation of LP Problem
31.3 Cost Volume Profit Analysis
31.4 Game Theory
31.5 Review Questions
31.6 Summary
References
32 Mathematical Software for Software Engineers
32.1 Introduction
32.2 Microsoft Excel
32.3 Python
32.4 Maple
32.5 Minitab Statistical Software
32.6 R Statistical Software Environment
32.7 Mathematica
32.8 MATLAB
32.9 Summary
Index