Foundations of Software Engineering: 1st Edition (Hardback) book cover

Foundations of Software Engineering

1st Edition

By Ashfaque Ahmed, Bhanu Prasad

Auerbach Publications

451 pages | 189 B/W Illus.

Purchasing Options:$ = USD
Hardback: 9781498737593
pub: 2016-07-18
$105.00
x


FREE Standard Shipping!

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

Introduction

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

Introduction

Why a Methodology?

Agile Methodologies

Waterfall Model

Rational Unified Process

Spiral Model

Incremental Iteration Model

eXtreme Programming

Scrum

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

Introduction

Feasibility Study for Software Projects

Finding the Economic Feasibility of Requirements

Finding the Technical Feasibility of Requirements

Prototyping

Pilot Projects

Chapter Summary

Recommended Reading

Software Requirement Specifications

Introduction

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

Introduction

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

Security

Performance

Case Study

Chapter Summary

Recommended Reading

Software User Interface Design and Construction

Introduction

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

Model–View–Controller

Case Study

Chapter Summary

Recommended Reading

Software Middle Layer Design and Construction

Introduction

Software Design and Implementation and Software Engineering Methodology

Procedural Programming: A Brief Introduction

Object-Oriented Programming

Basics of Programming Languages

Variables and Variable Types

Operators

Decision Trees and Loops

Methods

Classes

Objects and Object-Oriented Programming Packages

Database Programming

Model–View–Controller Revisited

Refactoring

Client-Side and Server-Side Scripts

Debugging

Case Study

Chapter Summary

Recommended Reading

Database Design and Construction

Introduction

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)

Introduction

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)

Verification

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

Introduction

Software Release and Software Engineering Methodology

Integration

Documentation

Release Cycles

User Training

Deployment

Software Migration Strategies

Software Product Release Checklist

Chapter Summary

Recommended Reading

Software Maintenance

Introduction

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

Introduction

Configuration Management and Version Control Concepts

CVS Systems

Chapter Summary

Recommended Reading

Software Project Management

Introduction

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

Index

About the Authors

Author

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.

Subject Categories

BISAC Subject Codes/Headings:
COM051010
COMPUTERS / Programming Languages / General
COM051230
COMPUTERS / Software Development & Engineering / General
MAT000000
MATHEMATICS / General