Foundations of Software Engineering  book cover
1st Edition

Foundations of Software Engineering

ISBN 9781498737593
Published July 18, 2016 by Auerbach Publications
475 Pages 189 B/W Illustrations

FREE Standard Shipping
USD $115.00

Prices & shipping based on shipping country


Book Description

The best way to learn software engineering is by understanding its core and peripheral areas. Foundations of Software Engineering provides in-depth coverage of the areas of software engineering that are essential for becoming proficient in the field. The book devotes a complete chapter to each of the core areas. Several peripheral areas are also explained by assigning a separate chapter to each of them.

Rather than using UML or other formal notations, the content in this book is explained in easy-to-understand language. Basic programming knowledge using an object-oriented language is helpful to understand the material in this book. The knowledge gained from this book can be readily used in other relevant courses or in real-world software development environments.

This textbook educates students in software engineering principles. It covers almost all facets of software engineering, including requirement engineering, system specifications, system modeling, system architecture, system implementation, and system testing. Emphasizing practical issues, such as feasibility studies, this book explains how to add and develop software requirements to evolve software systems.

This book was written after receiving feedback from several professors and software engineers. What resulted is a textbook on software engineering that not only covers the theory of software engineering but also presents real-world insights to aid students in proper implementation.

Students learn key concepts through carefully explained and illustrated theories, as well as concrete examples and a complete case study using Java. Source code is also available on the book’s website. The examples and case studies increase in complexity as the book progresses to help students build a practical understanding of the required theories and applications.

Table of Contents

Introduction to Software Engineering
Components of a Computer
Building the Software Products
What Is Software Engineering?
Why Software Engineering?
Challenges in Software Engineering
Project Management and Software Engineering
Costs Involved in Software Development
Methodologies Used for Software Development
Some Careers in Software Engineering
Software Industry Size
Code of Ethics
Book Organization
Chapter Summary
Recommended Reading

Software Engineering Methodologies
Why a Methodology?
Agile Methodologies
Waterfall Model
Rational Unified Process
Spiral Model
Incremental Iteration Model
eXtreme Programming
Methodology for Implementing SaaS Products
Methodology for Implementing COTS Products
A Discussion on the Usage of Software Development Models
Popular Process Standards
Process Standards and Software Engineering Methodologies
Software Process Activities
Chapter Summary
Recommended Reading

Feasibility Study
Feasibility Study for Software Projects
Finding the Economic Feasibility of Requirements
Finding the Technical Feasibility of Requirements
Pilot Projects
Chapter Summary
Recommended Reading

Software Requirement Specifications

Software Engineering Methodologies and Requirement Management
Implementation of the Requirements 6
Requirement Types
Sources of Requirements
Categories of Users
Software Requirement Life Cycle
Requirement Gathering (Elicitation)
Requirement Analysis
Requirement Specification
Requirement Management
Case Study
Chapter Summary
Recommended Reading

Software High-Level Design and Modeling

Methodology Used
How to Reduce Complexity in Software Design
Logical Design for Software Architecture
Architecture Design Patterns
Client–Server Architecture
Web-Based Architecture
Service-Oriented Architecture
Software Component Design Fundamentals
Component Diagrams
Data Flow Diagram
Software Design Patterns
Programming Language Considerations
Types of Programming Languages: A Brief Review
Case Study
Chapter Summary
Recommended Reading

Software User Interface Design and Construction

Graphical User Interface
Graphic Control Elements
Hyper Text Markup Language
Cascading Style Sheets
Client-Side Scripting
Asynchronous JavaScript and XML
Simple (Model–View) User Interface
Case Study
Chapter Summary
Recommended Reading

Software Middle Layer Design and Construction

Software Design and Implementation and Software Engineering Methodology
Procedural Programming: A Brief Introduction
Object-Oriented Programming
Basics of Programming Languages
Variables and Variable Types
Decision Trees and Loops
Objects and Object-Oriented Programming Packages
Database Programming
Model–View–Controller Revisited
Client-Side and Server-Side Scripts
Case Study
Chapter Summary
Recommended Reading

Database Design and Construction

Databases and Software Engineering Methodologies
Database Types
Database Languages
Database Entities
Database Design
Database Management Systems
Object Relational Databases
Case Study
Chapter Summary
Recommended Reading

Software Testing (Verification and Validation)

Software Testing and Software Engineering Methodologies
Introduction to Different Types of Software Testing
Introduction to Verification and Validation
Introduction to Levels of Software Testing (Validation)
Unit Testing
Integration Testing
System Testing
User Acceptance Testing
Other Important Tests
Test Case Design
Test Preparation
Test Life Cycle
Case Study
Chapter Summary
Recommended Reading

Software Release

Software Release and Software Engineering Methodology
Release Cycles
User Training
Software Migration Strategies
Software Product Release Checklist
Chapter Summary
Recommended Reading

Software Maintenance
Software Maintenance and Software Engineering Methodology
Production Environment Maintenance
Production Environment Monitoring
Maintenance Process
Types of Software Maintenance
Software Maintenance Strategies
Reverse Engineering
Chapter Summary
Recommended Reading

Configuration and Version Management
Configuration Management and Version Control Concepts
CVS Systems
Chapter Summary
Recommended Reading

Software Project Management

Project Management and Software Engineering Methodologies
Project Planning
Project Monitoring and Controlling
Project Team Management
Project Customer Management
Supplier Management
Chapter Summary
Recommended Reading

Appendix: Answers to Questions


View More



Ashfaque Ahmed has more than 25 years of working experience. During his career, he has worked on multimillion dollar projects that built cutting edge technological software. His roles on these projects include project manager, test manager, business analyst, and software engineer. He has worked throughout the world in such countries as India, Canada, USA, UAE, Libya, and Nigeria for companies that include the Steel Authority of India Limited, SAP, and One Network.Dr. Bhanu Prasad is an associate professor in the Department of Computer and Information Sciences at Florida A&M University, Tallahassee, FL, USA. Previously, he was an assistant professor in the School of Computer and Information Sciences at Georgia Southwestern State University, Americus GA, USA. He has taught software engineering courses at both the graduate and undergraduate level. Before entering academia, he worked at software companies that include Infosys Technologies, Future Software, and Hyperion Solutions Corporation. Dr. Prasad holds a Master of Technology degree from Andhra University and a Ph.D. degree in Computer Science from the Indian Institute of Technology, Madras.