CONTENTS. Introduction to Software Engineering. Software Process and Life Cycle Models. Software Life-Cycle Model-2. Chapter 1. Chapter 2.

Size: px
Start display at page:

Download "CONTENTS. Introduction to Software Engineering. Software Process and Life Cycle Models. Software Life-Cycle Model-2. Chapter 1. Chapter 2."

Transcription

1 Contents (v) CONTENTS Preface About the Author (xv) (xvii) Chapter 1 Introduction to Software Engineering 1.1 Introduction Basics of Software Engineering Principles of Software Engineering Software Characteristics Software Applications Objectives of Software Engineering Phases of Software Engineering Summary 7 Chapter 2 Software Process and Life Cycle Models 2.1 Introduction Software Process, Project and Product Process Assessment Software Process Capability Maturity Model Software Development Life Cycle Models Waterfall Model Spiral Model Incremental Model Summary 19 Chapter 3 Software Life-Cycle Model Introduction Prototyping Model Object- Oriented Model Agile Model Rapid Application Development Model Iterative Enhancement Model V-Model Summary 29 (v)

2 (vi) Contents Chapter 4 Software Requirements 4.1 Introduction Functional Requirements Non-Functional Requirements User Requirements System Requirements Software Requirements Document Summary 37 Chapter 5 Software Requirement Engineering Process 5.1 Introduction Feasibility Study Requirements Elicitation and Analysis Stakeholders Requirement Elicitation and Analysis Process Requirements Validation Software Prototyping Requirements Management Requirements Management Planning Requirement Change Management Summary 47 Chapter 6 Software Reliability 6.1 Introduction Software Reliability Software Reliability Metrics Programming for Reliability Fault Avoidance Fault Tolerance Software Reuse Summary 57

3 Chapter 7 Software Design Contents (vii) 7.1 Introduction Basics of Software Design Design Process Data Design Architectural Design Component-Level Design User Interface Design User Interface Rules User Interface Design Process Fundamental Design Concepts Module Modularization Design Techniques Summary 70 Chapter 8 Object Oriented Design 8.1 Introduction Object and Object Classes Relationships Object Oriented Design Process Activities in Object Oriented Design Process Object Identification Design Models Sequence Model State Machine Model Summary 82 Chapter 9 Software Implementation 9.1 Introduction Structured Coding Techniques Single-Entry, Single-Exit Constructs Coding Styles Coding Methodology Code Verification Techniques 87

4 (viii) Contents 9.6 Coding Tools Code Documentation Coding Standards and Guidelines Summary 93 Chapter 10 Software Maintenance 10.1 Introduction Software Re-Engineering Change Management Elements of Change Management Objectives of Change Management Issues of Change Management Configuration Management Tasks of Configuration Management Software Maintenance Tools and Techniques Summary 103 Chapter 11 Software Testing Strategies 11.1 Introduction A Strategic Approach to Software Testing Testing Strategies for Convention Software Black-Box Testing White Box Testing Validation Testing Validation Test Criteria Configuration Review Alpha and Beta Testing System Testing Recovery Testing Security Testing Stress Testing Performance Testing Debugging The Debugging Process Debugging approach Summary 118

5 Chapter 12 Software Metrics Contents (ix) 12.1 Introduction Software Quality Metrics Metrics for Analysis Models Function Based Metrics Metrics for Specification Quality Metrics for Design Model Architectural Design Metrics Metrics for Object-Oriented Design Metrics for Source Code Metrics for Testing Halstead Metrics Applied to Testing Metrics for Object-Oriented Testing Metrics for Software Maintenance Fix Backlog and Backlog Management Index Fix Response Time and Fix Responsiveness Percent Delinquent Fixes Fix Quality Summary 128 Chapter 13 Quality Management 13.1 Introduction Quality Concepts Software Quality Assurance Software Reviews Formal Technical Reviews (FTR) The ISO 9000 Quality Standards Summary 137 Chapter 14 Software Project Management 14.1 Introduction Project Planning Project Scheduling Project Staffing People Capability Maturity Model (P-CMM) Summary 147

6 (x) Contents Chapter 15 Agile Programming 15.1 Introduction Flavors of Agile Development Agile Manifesto Refactoring Techniques Limitations of the Agile Process Summary Glossary Case Study 162 Chapter 16 Extreme Programming 16.1 Introduction XP Equation XP Values Assuming Sufficiency Sufficient Time and Resources Constant Change of Cost Developer Effectiveness Freedom to Experiment Summary Glossary Case Study 177 Chapter 17 Extreme Programming Practices 17.1 Introduction Coding Practices Simple Code and Design Refactor Rigorously Develop Coding Standards Develop Common Vocabulary Developer Practices Adopt Test-Driven Development Practice Pair Programming 186

7 Contents (xi) Adopt Collective Ownership Integrate Continually Business Practices Add a Customer to the Team Play the Planning Game Release Regularly Work at a Sustainable Pace Summary 192 Chapter 18 XP Events 18.1 Introduction Iteration Planning Stories and Tasks Estimates and Schedules First Iteration Iteration Development Releasing Summary Glossary 203 Chapter 19 Extreme Programming Artifacts 19.1 Introduction Story Cards Exploration Phase Commitment Phase Steering Phase Task Cards Exploration Phase Commitment Phase Steering Phase Bullpens Summary Glossary Case Study 214

8 (xii) Contents Chapter 20 Roles in Extreme Programming 20.1 Introduction Customer s Roles Customer Rights Customer Responsibilities Developer s Roles Developer Rights Developer Responsibilities Supplementary Roles Tracker Coach Summary Glossary 224 Chapter 21 Coding XP Style 21.1 Introduction Balance Functionality with Simplicity Implement Only the Needed Features Eliminate Repetition Summary Glossary 232 Chapter 22 Adopting XP 22.1 Introduction Before Commencing XP XP Prerequisites Applying XP in a Phase-based Organization Eliminating Fear and Working Together Starting Feedback Including Managers and Customers Summary Glossary Case Study 241

9 Contents (xiii) Chapter 23 Agile Modeling with XP 23.1 Introduction Agile Modeling - Principles Core Principles of AM Supplementary Principles of AM Comparing XP and Agile Modeling Scrum Methodology The Roles of Scrum Advantages of Scrum Summary Glossary 254 Chapter 24 Dynamic Systems Development Methodology (DSDM) 24.1 Introduction Overview of DSDM The Principles of DSDM Phases of DSDM Core Techniques used in DSDM Summary Glossary Case Study 264 Chapter 25 XP Tools 25.1 Introduction Java and XP Tools and Philosophies Open Source Toolkit Summary Glossary 275