• browse titles
Checkout
Now Accepting Acceptance Mark
0 items: $0.00
Call us: 954-727-9333

Software Engineering

Software Engineering

By Kassem A. Saleh
Hardcover, 7.5 x 9.25, 358 pages
ISBN: 978-1-932159-94-3
August 2009

Availability: In stock

Retail Price: $99.95
Direct Price: $89.95
This book is also available as an ebook
This book is also available for rent

About the Item
Software engineering from a project point of view embarks on software products that are both feasible technically and financially. Moreover, software projects must be completed on time and within budgets and are important challenges to software engineers. Research has shown that one-third of software projects are never completed, another third do not fulfill their promises.

Software Engineering provides the software engineering fundamentals, principles and skills needed to develop and maintain high quality software products. The software engineering processes and techniques covered include requirements specification, design, implementation, testing and management of software projects. This up-to-date book is modeled on the recommendations and guidelines prescribed in the Guide to the Software Engineering Body of Knowledge (SWEBOK) published by the IEEE Computer Society, and the Software Engineering Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering published by the IEEE Computer Society and the Association for Computing Machinery Joint Task Force on Computing Curricula.

At the end of each chapter, the reader will be able to perform tangible software engineering tasks by applying the learned techniques and methods, will be familiar with the terminology, the principles by mastering the subjects, and will be able to analyze existing task deliverables, compare and critique the different techniques. The book is designed as a text for an undergraduate first course in software engineering and graduate bridging courses in information technology. In addition, Software Engineering can be used by practitioners who need to refresh their knowledge with the latest in software engineering techniques and processes. The prerequisite to use this text is to have a background in an object-oriented programming language.
Key Features
  • Covers the critical and significant topic of software maintenance
  • Follows the recommendations and guidelines prescribed in the Guide to SWEBOK
  • Clarifies the material in a concrete way by solving carefully selected examples
  • Offers practical coverage of the Unified Modeling Language (UML 2)
  • Provides suggested readings to supplement the text
  • Includes end-of-chapter problems and solutions to selected problems
  • Features instructor’s material available via the WAV section of the publisher’s website at www.jrosspub.com/wav
  • About the Author(s)
    Kassem A. Saleh, Ph.D. is currently Professor of Information Sciences at Kuwait University. He received his B.Sc., M.Sc. and PhD in Computer Science from the University of Ottawa in Canada. Professor Saleh worked as a computer systems specialist at Mediatel, Bell Canada, from 1985 to 1991, and was on the faculty of Concordia University in 1991-1992, Kuwait University from 1992 to 2000, and American University of Sharjah from 2000 to 2007. He is also a Certified Information Systems Security Professional (CISSP) and is currently the Editor-in-Chief of the Journal of Software.

    The Journal of Systems and Software has ranked Professor Saleh among the top scholars in the field of systems and software engineering in seven of its annual assessments published from 1996 to 2003. Professor Saleh has published more than 120 journal and conference papers and has presented numerous tutorials and invited talks at international conferences and universities worldwide.
    Table of Contents
    1 Software and Software Engineering
    1.1 Software, Software Engineering and the Software Crisis
    1.2 Types of Software
    1.3 Generic Stages in Software Development
    1.4 Software Errors
    1.5 Software Behavior, Structure and Architecture
    1.6 Stakeholders of Software
    1.7 Related Disciplines
    1.8 Software Engineering Education, Training and Certification
    1.9 Code of Ethics and Professional Practice
    1.10 Project, Process and People
    1.11 Desirable Software Capabilities
    1.12 Pioneers in Software and Software Engineering
    1.13 Analogy to Other Engineering Disciplines
    1.14 The Rest of the Book
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography
    Standards

    2 Software Development Life Cycle Models
    2.1 Life Cycle Models
    2.2 Pre-Development Activities and Deliverables
    2.3 Waterfall Model Development Phases, Activities and Deliverables
    2.4 Software Maintenance Activities
    2.5 Continuous Life Cycle Activities and Deliverables
    2.6 Prototyped Waterfall Model
    2.7 The Object-Oriented Model
    2.8 Incremental and Iterative Model
    2.9 The Spiral Model
    2.10 The Rational Unified Process (RUP)
    2.11 Software Development and Maintenance Teams
    2.12 Software Engineering Standards and Tools
    2.13 Software Processes Capability Maturity Model (CMM)
    2.14 The Unified Modeling Language
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography
    Standards

    3 Software Requirements
    3.1 Software Analysis
    3.2 Product Vision and Project Scope
    3.3 Requirements Engineering
    3.4 Elicitation of Functional Requirements
    3.4.1 Elicitation Techniques
    3.4.2 Use Case Modeling
    3.4.3 Use Case Development
    3.5 Elicitation of Non-Functional Requirements
    3.5.1 Technical Non-Functional Requirements
    3.5.2 Non-Technical Non-Functional Requirements
    3.6 Requirements Validation
    3.7 Requirements Maintenance
    3.8 The Software Requirements Specification Document
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography
    Standards

    4 Software Specification
    4.1 Software Modeling
    4.2 Behavior Modeling
    4.2.1 The Finite State Machine Model
    4.2.1.1 Graphical, Algebraic and Tabular Representations
    4.2.1.2 Properties of FSM-Based Models
    4.2.1.3 Limitations of the Basic FSM Model
    4.2.1.4 The Extended Finite State Machine Model (EFSM)
    4.2.1.5 Applications of the EFSM Model
    4.2.1.6 Additional Properties of EFSM-Based Models
    4.2.2 The Petri Net Model
    4.2.2.1 Mathematical and Graphical Representations
    4.2.2.2 Properties of the Petri Net Model
    4.2.2.3 Extensions to the Basic Petri Net Model
    4.2.2.4 Modeling Requirements
    4.2.3 Statechart Diagram
    4.2.4 Activity Diagram
    4.3 Process Modeling
    4.3.1 Data Flow Diagrams
    4.3.2 Decision Table
    4.3.3 Decision Tree
    4.4 Data Modeling
    4.4.1 Entity Relationship Model
    4.4.2 Data Dictionary
    4.5 Formal Specification Techniques
    4.6 Object-Oriented Analysis
    4.6.1 Identifying Objects
    4.6.1.1 Entity Objects
    4.6.1.2 Interface Objects
    4.6.1.3 Control Objects
    4.6.2 Objects Relationships
    4.6.3 Dynamic Object Behavior
    4.6.4 Objects Interactions
    4.6.4.1 Sequence Diagram
    4.6.4.2 Communication Diagram
    4.7 Validating Specifications and Traceability
    4.8 Completing the Software Requirement Specification Document
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography
    Standards

    5 Software Design
    5.1 Mapping Specification to Design
    5.2 Recurring Concepts and Design Properties
    5.2.1 Recurring Concepts
    5.2.2 Desirable Design Properties
    5.3 High-Level Architectural Design
    5.4 Inter-Module Coupling
    5.5 Structured Design
    5.6 Detailed Design
    5.7 Intra Module Cohesion
    5.8 Database Design
    5.9 Graphical User Interface (GUI) Design
    5.10 The Software Design Document
    5.11 Design Validation and Review
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography
    Standards

    6 Object-Oriented Design
    6.1 From Analysis to Design
    6.2 Object-Oriented High Level Architectural Design
    6.3 Architectural Patterns
    6.4 Design Patterns
    6.5 Documenting an Object-Oriented Design
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography

    7 Software Implementation
    7.1 Mapping Design into Code
    7.2 Coding Style and Documentation Guidelines
    7.3 Software Libraries and APIS
    7.4 Fault Tolerance
    7.5 Exception Handling
    7.6 Writing Secure Software
    7.7 Code Review
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography
    Standards

    8 Software Testing and Quality Assurance
    8.1 Testing and Test Coverage
    8.2 Dynamic and Static Testing
    8.3 Anatomy of a Test Case
    8.4 Black-Box, White-Box and Grey-Box Testing
    8.5 Black Box-Based Unit Testing Techniques
    8.5.1 Boundary Value Analysis
    8.5.2 Equivalence Class Testing
    8.5.3 Decision Table and Decision Tree Based Testing
    8.5.4 State-Based Testing
    8.5.5 Black Box-Based Robustness Testing
    8.6 White Box-Based Unit Testing Techniques
    8.6.1 Control Flow Graph
    8.6.2 Control Flow-Based Techniques
    8.6.3 Data Flow-Based Testing
    8.6.4 Path Expression
    8.7 Integration Testing
    8.7.1 Top-Down Integration
    8.7.2 Bottom-Up Integration
    8.7.3 Hybrid Integration
    8.8 System-Level Testing
    8.8.1 Acceptance Testing
    8.8.2 Testing Conformance to Non-Functional Requirements
    8.9 Other Test Selection Strategies
    8.9.1 Random Testing
    8.9.2 Probabilistic Testing
    8.9.3 Mutation Testing
    8.10 Potpourri of Testing Issues
    8.10.1 Test Architectures
    8.10.2 Test Correctness
    8.10.3 Test Description Language
    8.10.4 Software Testability
    8.10.5 Regression Testing
    8.11 Object-Oriented Testing
    8.11.1 Testing Classes
    8.11.2 Integrating Classes
    8.11.3 System-Level Use Case Testing
    8.12 Software Quality Assurance
    8.12.1 Plan and Activities
    8.12.2 Audit and Review
    8.12.3 Inspection Checklist and Walkthrough
    8.12.4 Metrics
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography
    Standards

    9 Software Maintenance
    9.1 The Importance of Software Maintenance
    9.2 Taxonomy of Software Maintenance Activities
    9.3 Software Maintenance Process
    9.4 Software Maintenance Management
    9.5 Software Configuration Management
    9.6 Configuration Management Activities
    9.6.1 Configuration Item Identification
    9.6.2 Configuration Control and Change Management
    9.6.3 Configuration Status Accounting
    9.6.4 Configuration Audits and Reviews
    9.6.5 Configuration Interface Control
    9.6.6 Subcontractor and Vendor Control
    9.7 Software Maintenance Techniques
    9.7.1 Reverse Engineering and Design Recovery
    9.7.2 Restructuring and Reengineering
    9.7.3 Regression Testing
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography
    Standards

    10 Software Project Management
    10.1 Project, People, Processes and Products
    10.2 Project Management Activities
    10.3 Estimation Techniques and Software Metrics
    10.3.1 Function Points
    10.3.2 Use Case Points
    10.3.3 COCOMO
    10.4 Risk Management
    10.4.1 Risk Management Planning
    10.4.2 Risk Identification
    10.4.3 Risk Analysis
    10.4.4 Risk Planning
    10.4.5 Risk Tracking
    10.4.6 Risk Control
    10.4.7 Risk Communication
    10.5 Scheduling and Tracking Projects
    10.6 The Software Project Management Plan Document
    Chapter Summary
    Key Terms
    Review Questions
    Exercises
    Bibliography
    Standards

    Index
    Back to top