You are previewing Software Engineering.
O'Reilly logo
Software Engineering

Book Description

Software Engineering covers both function oriented as well as object oriented (OO) approach and emphasises on emerging areas such as 'web engineering', 'software maintenance' and 'component based software engineering'. This book further includes case studies on the ATM system and milk dispenser.

Table of Contents

  1. Cover
  2. Title Page
  3. Contents
  4. About the Author
  5. Preface
  6. 1. Introduction
    1. 1.1 What is Software?
      1. 1.1.1 Systems Software
      2. 1.1.2 Applications Software
    2. 1.2 Characteristics of Software
    3. 1.3 Evolution of Software for Business
    4. 1.4 Generations of Computers
      1. 1.4.1 Generation of Computer Hardware
      2. 1.4.2 Generations of Software
    5. 1.5 Programming Languages
      1. 1.5.1 Low-level Languages
      2. 1.5.2 High-level Languages
      3. 1.5.3 Fourth-generation Languages
    6. 1.6 Paradigm Shift in Programming Techniques
      1. 1.6.1 Early Computer Programming
      2. 1.6.2 Control Flow-based Design
      3. 1.6.3 Structured Programming
      4. 1.6.4 Data Structure-oriented Design
      5. 1.6.5 Data Flow-oriented Design
      6. 1.6.6 Object-oriented Design (1980s)
    7. 1.7 Software Crisis and Emergence of Software Engineering
      1. 1.7.1 The Software Crisis
      2. 1.7.2 Demands of Today's Business
      3. 1.7.3 Critical Problems of Software Development
    8. 1.8 Core Aspects of Software Engineering
    9. 1.9 Salient Features of Software Development
      1. Summary
      2. Exercises
  7. 2. Software Development Process
    1. 2.1 Software Processes
    2. 2.2 Software Development Life Cycle Models
    3. 2.3 Waterfall Model
    4. 2.4 The “V” Model
    5. 2.5 Prototyping Model
    6. 2.6 The Iterative Waterfall Model
    7. 2.7 The Spiral Model
    8. 2.8 Process Standards
      1. Summary
      2. Exercises
  8. 3. Software Requirement Engineering
    1. 3.1 Requirement Engineering Process
      1. 3.1.1 Types of Software Requirements
    2. 3.2 Requirement Inception
      1. 3.2.1 Identification of Stakeholders
    3. 3.3 Requirement Elicitation
      1. 3.3.1 Requirement Elicitation Through Interview
      2. 3.3.2 Requirement Elicitation Through Questionnaire
      3. 3.3.3 Record Review
      4. 3.3.4 Observation
      5. 3.3.5 Collaborative Requirement Gathering
      6. 3.3.6 Output of Requirement Elicitation
    4. 3.4 Requirement Elaboration
      1. 3.4.1 Initial User Requirements
      2. 3.4.2 Initial Technical Requirements
      3. 3.4.3 Final Functional Requirements
    5. 3.5 Negotiation
    6. 3.6 Requirement Validation
    7. 3.7 Structure of SRS
    8. 3.8 Characteristics of the RE Process
      1. Case Study
        1. Summary
        2. Exercises
  9. 4. Software Design Approaches
    1. 4.1 Different Approaches to SAD
    2. 4.2 Overview of the FO Approach
      1. 4.2.1 Model and Tools
      2. 4.2.2 Salient Features of SSAD
    3. 4.3 Overview of the OO Approach
      1. 4.3.1 Object-oriented Analysis
      2. 4.3.2 Object-oriented Design
      3. 4.3.3 Object oriented Testing
      4. 4.3.4 Object-oriented Maintenance
    4. 4.4 Comparison of OOAD with SSAD
      1. Summary
      2. Exercises
  10. 5. Structured Analysis
    1. 5.1 Introduction to Structured Analysis
    2. 5.2 Data Flow Diagram
      1. 5.2.1 Rules for Drawing DFD
      2. 5.2.2 Physical and Logical DFD
    3. 5.3 Process Specification
      1. 5.3.1 Decision Tables
      2. 5.3.2 Decision Tree
    4. 5.4 Data Dictionary
      1. 5.4.1 Data Dictionary Internals
      2. 5.4.2 Data Dictionary Types
    5. 5.5 Entity Relationship Model
    6. 5.6 State Transition Diagram
      1. Summary
      2. Exercises
  11. 6. Structured Design
    1. 6.1 Structured Design Methodologies
    2. 6.2 Coupling and Cohesion
    3. 6.3 Structure Chart
    4. 6.4 Mapping DFD into a Structure Chart
      1. 6.4.1 Refinement of DFD
      2. 6.4.2 Transaction Analysis
      3. 6.4.3 Transform Analysis
    5. 6.5 Data Design
    6. 6.6 Detail Design
      1. 6.6.1 Program Flowchart
      2. 6.6.2 Structured Flowchart
      3. 6.6.3 Pseudocode
    7. 6.7 HIPO Documentation
      1. Summary
      2. Exercises
  12. 7. Object-Oriented Concepts and Principles
    1. 7.1 Key Concepts
      1. 7.1.1 Object
      2. 7.1.2 Class
      3. 7.1.3 Message
      4. 7.1.4 Inheritance
      5. 7.1.5 Abstraction
      6. 7.1.6 Encapsulation
      7. 7.1.7 Polymorphism
    2. 7.2 Relationships
      1. 7.2.1 Is-A Relationship
      2. 7.2.2 Has-A Relationship
      3. 7.2.3 Uses-A Relationship
    3. 7.3 Some More Concepts
      1. 7.3.1 Object Identifier
      2. 7.3.2 Object References
      3. 7.3.3 Object Persistence
      4. 7.3.4 Metaclasses
    4. 7.4 Modeling Techniques
      1. 7.4.1 Booch OO Design Model
      2. 7.4.2 Rumbaugh's Object Modeling Technique
      3. 7.4.3 Jacobson's model
    5. 7.5 The Unified Approach to Modeling
    6. 7.6 Unified Modeling Language
      1. Summary
      2. Exercises
  13. 8. Object-Oriented Analysis
    1. 8.1 Use-Case Modeling
      1. 8.1.1 Development of Use-Case
      2. 8.1.2 Use-case Realization
    2. 8.2 Activity Diagram and State Diagram
    3. 8.3 Interaction Diagrams
      1. 8.3.1 Sequence Diagram
      2. 8.3.2 Collaboration Diagram
    4. 8.4 Types of Classes
      1. 8.4.1 Interface Class
      2. 8.4.2 Entity Class
      3. 8.4.3 Control Class
    5. 8.5 Class Classification Approaches
      1. 8.5.1 Noun Phrase Approach
      2. 8.5.2 Classical Approach
      3. 8.5.3 Function Point Approach
      4. 8.5.4 Domain Analysis Approach
      5. 8.5.5 Structural Approach
      6. 8.5.6 CRC Card Approach
      7. 8.5.7 Use-case-driven Approach
    6. 8.6 Relationship, Attributes and Method Identification
      1. 8.6.1 Relationships
      2. 8.6.2 Attributes
      3. 8.6.3 Methods
    7. Case Study-I: The ATM System of Bank
    8. Case Study-II: The Milk Dispenser
      1. Summary
      2. Exercises
  14. 9. Object-Oriented Design
    1. 9.1 System Context and Architectural Design
      1. 9.1.1 Defining System Boundary
      2. 9.1.2 Identification of Subsystems
      3. 9.1.3 Prioritisation of Non-functional Requirement
      4. 9.1.4 Design Framework
      5. 9.1.5 Design Axioms
      6. 9.1.6 Access Layer Prototypes
    2. 9.2 Principles of Class Design
    3. 9.3 Types of Design Classes
    4. 9.4 Component Diagram and Deployment Diagram
      1. 9.4.1 Component Diagram
      2. 9.4.2 Deployment Diagram
    5. 9.5 Patterns
      1. 9.5.1 Types of Patterns
      2. 9.5.2 Pattern Template
      3. 9.5.3 Generative and Non-generative Patterns
      4. 9.5.4 Antipatterns
    6. 9.6 Framework
      1. 9.6.1 Struts Framework
      2. 9.6.2 .NET Framework
        1. Summary
        2. Exercises
  15. 10. User Interface Design
    1. 10.1 Types of User Interfaces
    2. 10.2 Characteristics of User Interface
    3. 10.3 Textual User Interface
      1. 10.3.1 Command Language-based Interface
      2. 10.3.2 Menu-based TUI
    4. 10.4 Graphical User Interface
      1. 10.4.1 Menus in Graphical Interface
      2. 10.4.2 Mode-based Interface and Mode-less Interface
      3. 10.4.3 Window Management System
    5. 10.5 Widget-based GUI
    6. 10.6 User Interface Design
      1. Summary
      2. Exercises
  16. 11. Coding and Documentation
    1. 11.1 Coding Standards
      1. 11.1.1 Formatting Features
      2. 11.1.2 Naming Convention
      3. 11.1.3 Coding Norms
    2. 11.2 Coding Guidelines
    3. 11.3 Software Documentation
    4. 11.4 Documentation Standard and Guidelines
      1. 11.4.1 Structure of User Documentation
      2. 11.4.2 Usage Mode
      3. 11.4.3 Information Content of Software User Documentation
      4. 11.4.4 Format of Software User Documentation
      5. 11.4.5 Format for Instructions
    5. 11.5 CASE Tools
      1. 11.5.1 Upper and Lower CASE Tools
      2. 11.5.2 CASE Workbenches and Environments
      3. 11.5.3 Advantages of CASE Tools
      4. 11.5.4 Pitfalls of CASE Tools
        1. Summary
        2. Exercises
  17. 12. Software Testing
    1. 12.1 Testing Fundamentals
      1. 12.1.1 Verification and Validation
      2. 12.1.2 Testing Process
    2. 12.2 Black Box Testing
      1. 12.2.1 Decision Table-based Testing
      2. 12.2.2 Cause–Effect Graphs in Black Box Testing
      3. 12.2.3 Equivalence Partitioning and Boundary Value Analysis
    3. 12.3 White Box Testing
      1. 12.3.1 Statement Coverage
      2. 12.3.2 Branch Coverage
      3. 12.3.3 Path Coverage
      4. 12.3.4 McCabe's Cyclomatic Complexity
      5. 12.3.5 Data Flow-based Testing
      6. 12.3.6 Mutation Testing
    4. 12.4 Unit Testing
    5. 12.5 Integration Testing
      1. 12.5.1 Big Bang Integration Testing
      2. 12.5.2 Incremental Integration Testing
      3. 12.5.3 Bottom-up Integration Testing
      4. 12.5.4 Top-down Integration Testing
      5. 12.5.5 Sandwiched Testing
      6. 12.5.6 Backbone Integration Testing
      7. 12.5.7 Thread Integration Testing
    6. 12.6 Object-oriented Testing
      1. 12.6.1 Issues in OO testing
      2. 12.6.2 State Transition Testing
      3. 12.6.3 Transaction Flow Testing / Scenario-based Testing
    7. 12.7 System Testing
    8. 12.8 Usability Testing
      1. Summary
      2. Exercises
  18. 13. Software Metrics
    1. 13.1 Software Metrics and Its Classification
    2. 13.2 Software Size Metrics
      1. 13.2.1 LOC Metrics
      2. 13.2.2 Function Point Metrics
      3. 13.2.3 Feature Point Metrics
      4. 13.2.4 Bang Metrics
      5. 13.2.5 Halstead's Metrics
    3. 13.3 Quality Metrics
    4. 13.4 Process Metrics
      1. 13.4.1 Halstead's Metrics
      2. 13.4.2 Defect Estimation
    5. 13.5 Design Metrics
      1. 13.5.1 High-level Design Metrics
      2. 13.5.2 Component-level Design Metrics
    6. 13.6 Object-oriented Metrics
      1. 13.6.1 CK Metrics Suite
      2. 13.6.2 Metrics for Object Oriented Design
        1. Summary
        2. Exercises
  19. 14. Software Project Estimation
    1. 14.1 Software Project Parameters
    2. 14.2 Approaches to Software Estimation
    3. 14.3 Project Estimation Techniques
      1. 14.3.1 Estimation by Expert Judgement
      2. 14.3.2 Estimation by Analogy
      3. 14.3.3 Estimation by Available Resources
      4. 14.3.4 Estimation by Software Price
      5. 14.3.5 Estimation by Parametric Modeling
      6. 14.3.6 Limitations of Estimation Techniques
    4. 14.4 Classification of Software Projects
    5. 14.5 Constructive Cost Estimation Model
      1. 14.5.1 Basic COCOMO
      2. 14.5.2 Intermediate COCOMO
      3. 14.5.3 Complete COCOMO
    6. 14.6 COCOMO II
      1. 14.6.1 Early Design Model
      2. 14.6.2 Post-architecture Model
    7. 14.7 Conclusion
      1. Summary
      2. Exercises
  20. 15. Software Project Management
    1. 15.1 Introduction to Software Project Management
      1. 15.1.1 Salient Features of Software Project
      2. 15.1.2 Responsibilities of Software Project Manager
      3. 15.1.3 Qualities of Software Project Manager
    2. 15.2 Project Planning
      1. 15.2.1 Types of Plans
      2. 15.2.2 Software Development Plan
    3. 15.3 Work Breakdown Structure
    4. 15.4 Project Scheduling
      1. 15.4.1 Activity Network
      2. 15.4.2 Critical Path Method (CPM) and Program Evaluation Review Technique (PERT)
    5. 15.5 Execution, Monitoring and Control
      1. 15.5.1 Earned Value Monitoring
      2. 15.5.2 Gantt Chart
      3. 15.5.3 Causes of Project Failure
    6. 15.6 Risk Management
      1. 15.6.1 Types of Risks
      2. 15.6.2 Risk Management Activities
      3. 15.6.3 Risk Management Strategies
    7. 15.7 Configuration Management
      1. 15.7.1 Need for Configuration Management
      2. 15.7.2 Configuration Management Process
      3. 15.7.3 Software Version and Revision
        1. Summary
        2. Exercises
  21. 16. Software Quality Management
    1. 16.1 The Concept of Quality
    2. 16.2 Evolution of Quality Management
    3. 16.3 Some Thoughts of Quality Gurus
    4. 16.4 Process Quality Models
      1. 16.4.1 The Deming Prize
      2. 16.4.2 Baldrige (MBNQA) Model
      3. 16.4.3 European Foundation for Quality Management (EFQM) Business Excellence Model
    5. 16.5 Quality Assurance
      1. 16.5.1 Concepts and Definition
      2. 16.5.2 Standards and Procedures
      3. 16.5.3 Quality Assurance Activities
    6. 16.6 Process Improvement and Six Sigma
    7. 16.7 Process Standard: ISO 9000
    8. 16.8 Process Standard: ISO 12207
      1. 16.8.1 Primary Processes
      2. 16.8.2 Support and Organizational Processes
    9. 16.9 Capability Maturity Model
      1. Summary
      2. Exercises
  22. 17. Web Engineering
    1. 17.1 General Web Characteristics
      1. 17.1.1 Evolution of Web Software
      2. 17.1.2 Emergence of Web Engineering
    2. 17.2 Web Engineering Process
    3. 17.3 Web Design Principles
    4. 17.4 Web Metrics
      1. 17.4.1 Web Metrics Based on Response and Predictor Variable
      2. 17.4.2 Web Metrics Based on Web Characteristics
    5. 17.5 Mobile Web Engineering
    6. 17.6 Web Engineering Security
      1. Summary
      2. Exercises
  23. Appendix A Objective-type Questions
  24. Appendix B Frequently Asked Questions with Short Answers
  25. Appendix C Software Maintenance
  26. Appendix D Component-based Software Engineering
  27. Acknowledgments
  28. Copyright