methodologies (SOFTWARE ENGINEERING) CONTENTS 1.1 INTRODUCTION TO O SOFTWARE ENGINEERING Basic Stages in Software Development... 1.

Similar documents
Transcription:

Contents i software development methodologies FOR m.tech (jntu - hyderabad) i year i semester (SOFTWARE ENGINEERING) CONTENTS UNIT - I [CH. H. - 1] ] [INTRODUCTION TO SOFTWARE ENGINEERING]... 1.1-1.18 1.1 INTRODUCTION TO O SOFTWARE ENGINEERING... 1.2 1.2 THE EVOL OLVING ROLE OF SOFTWARE... 1.3 1.3 SOFTWARE... 1.6 1.3.1 Features of Software... 1.9 1.3.2 Basic Stages in Software Development... 1.11 1.3.3 Software Crisis... 1.12 1.3.3.1 Reasons for Software Crisis... 1.13 1.4 THE CHANGING NATURE OF SOFTWARE... 1.13 1.5 LEGACY SOFTWARE... 1.15 1.5.1 The Quality of Legacy Software... 1.15 1.5.2 Software Evolution... 1.16 1.6 SOFTWARE MYTHS... 1.17 UNIT - I [CH. - 2] ] [A GENERIC VIEW OF PROCESS]... 1.19-1.36 2.1 A GENERIC VIEW OF PROCESS... 1.20 2.2 SOFTWARE ENGINEERING... 1.20 2.2.1 Definitions of Software Engineering... 1.20 2.2.2 Layers of Software Engineering... 1.21

ii Contents 2.3 SOFTWARE PROCESS... 1.22 2.3.1 A Process Framework... 1.23 2.3.1.1 Umbrella Activities of a Software Process Framework ramework... 1.24 2.4 CMMI (THE CAPABILITY ABILITY MATURITY MODEL INTEGRATION) TION)... 1.26 2.4.1 Specific Goals and Specific Practices... 1.28 2.4.2 Generic Goals and Generic Practices... 1.29 2.5 PROCESS PATTERNS TTERNS... 1.30 2.6 PROCESS ASSESSMENT... 1.32 2.7 PERSONAL AND TEAM PROCESS MODELS... 1.33 2.7.1 Personal Software Process (PSP)... 1.34 2.7.2 Team Software Process (TSP)... 1.35 UNIT - I [CH. - 3] ] [PROCESS MODELS]... 1.37-1.60 3.1 PROCESS MODELS... 1.38 3.1.1 List of Process Models... 1.39 3.2 PRESCRIPTIVE MODELS... 1.39 3.3 WATERF TERFALL MODEL... 1.40 3.4 INCREMENTAL PROCESS MODELS... 1.43 3.4.1 The Incremental Model... 1.43 3.4.2 The RAD Model... 1.45 3.5 EVOLUTIONARY PROCESS MODELS... 1.47 3.5.1 The Prototyping Model... 1.48 3.5.2 Spiral Model... 1.50 3.5.3 Concurrent Development Model... 1.52 3.6 Specialized Process Models... 1.53 3.6.1 Component Based Development... 1.54 3.6.2 The Formal Methods Model... 1.54 3.6.3 Aspect Orient Software Development... 1.56

Contents iii 3.7 THE UNIFIED PROCESS... 1.56 3.7.1 History of Unified Process... 1.56 3.7.2 Phases of the Unified Process... 1.57 3.7.3 Unified Process Work Products... 1.59 UNIT - II [CH. H. - 4] ] [SOFTWARE REQUIREMENTS]... 2.1-2.14 4.1 SOFTWARE REQUIREMENTS... 2.2 4.2 FUNCTIONAL AND NON-FUNCTIONAL REQUIREMENTS... 2.2 4.2.1 Functional Requirements... 2.2 4.2.2 Non-Functional Requirements... 2.4 4.3 USER REQUIREMENTS... 2.5 4.3.1 Guidelines for Writing User Requirements... 2.6 4.4 SYSTEM REQUIREMENTS... 2.6 4.4.1 Structured Language Specifications for System Requirements... 2.8 4.5 INTERFACE CE SPECIFICATION... 2.10 4.6 THE SOFTWARE REQUIREMENTS DOCUMENT... 2.11 UNIT - II [CH. - 5] ] [REQUIREMENTS ENGINEERING PROCESS]... 2.15-2.36 5.1 REQUIREMENTS ENGINEERING PROCESS... 2.16 5.1.1 Goals of Requirement Engineering Process... 2.18 5.2 FEASIBILITY STUDIES... 2.18 5.3 REQUIREMENTS ELICITATION TION AND ANALYSIS... 2.19 5.3.1 Requirements Discovery... 2.21 5.3.1.1 View Points... 2.21 5.3.1.2 Interviewing... 2.23 5.3.1.3 Scanarios... 2.24 5.3.1.4 Ethonography... 2.27

iv Contents 5.4 REQUIREMENTS VALIDATION... 2.28 5.4.1 Requirements Reviews... 2.30 5.5 REQUIREMENTS MANAGEMENT... 2.31 5.5.1 Enduring and Volatile Requirements... 2.32 5.5.2 Requirements Management Planning... 2.33 5.5.3 Requirements Change Management Process... 2.35 UNIT - II [CH. H. - 6] ] [SYSTEM MODELS]... 2.37-2.52 6.1 SYSTEM MODELS... 2.38 6.2 CONTEXT MODELS... 2.39 6.3 BEHAVIOURAL MODELS... 2.40 6.3.1 DATA A FLOW MODELS... 2.40 6.4 DATA A MODELS... 2.43 6.5 OBJECT MODELS... 2.45 6.5.1 Inheritance Model... 2.46 6.5.2 Object Aggregation... 2.48 6.5.3 Object Behaviour Modeling... 2.49 6.6 STRUCTURED METHODS... 2.50 UNIT - III [CH. - 7] ] [DESIGN ENGINEERING]... 3.1-3.22 7.1 DESIGN ENGINEERING... 3.2 7.2 DESIGN WITHIN THE CONTEXT OF SOFTWARE ENGINEERING... 3.2 7.2.1 Translation of Analysis Models in Design Models... 3.3 7.3 DESIGN PROCESS AND DESIGN QUALITY... 3.5 7.3.1 Design Process... 3.5 7.3.2 Design Quality... 3.5 7.3.3 Characteristics of Good Design Process... 3.6 7.3.4 Software Quality Attributes... 3.6

Contents v 7.4 DESIGN CONCEPTS... 3.8 7.4.1 Abstraction... 3.8 7.4.2 Architecture... 3.10 7.4.3 Patterns... 3.10 7.4.4 Modularity... 3.10 7.4.5 Information Hiding... 3.13 7.4.6 Functional Independence... 3.14 7.4.7 Refinement... 3.14 7.4.8 Refactoring... 3.15 7.4.9 Design Classes... 3.15 7.4.9.1 Characteristics of Well ell Formed Design... 3.16 7.5 THE DESIGN MODEL... 3.17 7.5.1 Data Design Elements... 3.18 7.5.2 Architectural Design Elements... 3.19 7.5.3 Interface Design Elements... 3.19 7.5.4 Component-Level Design Elements... 3.20 7.5.5 Deployment-Level Design Elements... 3.20 7.6 PATTERN BASED SOFTWARE DESIGN... 3.21 7.6.1 Describing a Design Pattern attern... 3.21 7.6.1.1 Design Pattern Template emplate... 3.21 7.6.2 Using Patterns in Design... 3.22 7.6.3 Frameworks rameworks... 3.22 UNIT - III [CH. - 8] ] [CREATING AN ARCHITECTURAL DESIGN]... 3.23-3.52 8.1 CREATING AN ARCHITECTURAL DESIGN... 3.24 8.2 SOFTWARE ARCHITECTURE... 3.25 8.2.1 Importance of Software Architecture... 3.26

vi Contents 8.3 DATA A DESIGN... 3.26 8.3.1 Data Design at the Architecture Level... 3.26 8.3.2 Data Design at the Component Level... 3.27 8.4 ARCHITECTURAL STYLES AND PATTERNS... 3.28 8.4.1 Architectural Styles... 3.28 8.4.1.1 Data Centered Architecture... 3.28 8.4.1.2 Data Flow Architecture... 3.29 8.4.1.3 The Call and Return Architecture... 3.30 8.4.1.4 Object-Oriented Architecture... 3.31 8.4.1.5 Layered Architecture... 3.31 8.4.2 Architectural Patterns... 3.33 8.5 ARCHITECTURAL DESIGN... 3.35 8.5.1 Architectural Design Using Context Design... 3.35 8.5.2 Defining Archetypes... 3.37 8.5.3 Refining Architecture into Components... 3.38 8.5.4 Describing Instantiations of the System... 3.39 8.6 ASSESSING ALTERNA TERNATIVE TIVE ARCHITECTURAL DESIGNS... 3.40 8.6.1 An Architecture Trade rade-off off Analysis Method... 3.40 8.6.2 Quantitative Guidelines for Architectural Design... 3.41 8.6.3 Architectural Complexity... 3.42 8.6.4 Architectural Description Languages... 3.43 8.7 MAPPING DATA A FLOW INTO A SOFTWARE ARCHITECTURE... 3.43 8.7.1 Transform Flow... 3.44 8.7.2 Transaction Flow... 3.44 8.7.3 Transaction Mapping... 3.45 8.7.4 Transaction Mapping... 3.49 8.7.5 Refining the Architectural Design... 3.52

Contents vii UNIT - III [CH.. - 9] ] [MODELING COMPONENT-LEVEL DESIGN]... 3.53-3.76 9.1 MODELING COMPONENT LEVEL DESIGN... 3.54 9.2 COMPONENT... 3.54 9.2.1 An Object-Oriented View... 3.55 9.2.2 The Conventional View... 3.56 9.2.2.1 Services... 3.56 9.2.3 A Process-Related View... 3.58 9.3 DESIGNING CLASS BASED COMPONENTS... 3.58 9.3.1 Basic Design Principles... 3.58 9.3.2 Component Level Design Guidelines... 3.60 9.3.3 Cohesion... 3.61 9.3.4 Coupling... 3.62 9.4 CONDUCTING COMPONENT LEVEL DESIGN... 3.63 9.5 OBJECT CONSTRAINT LANGUAGE... 3.68 9.6 DESIGNING CONVENTIONAL COMPONENTS... 3.69 9.6.1 Graphical Design Notation... 3.70 9.6.2 Tabular Design Notation... 3.72 9.6.3 Program Design Language (PDL)... 3.75 UNIT - III [CH. - 10] ] [PERFORMING USER INTERFACE DESIGN]... 3.77-3.96 10.1 PERFORMING USER INTERFACE CE DESIGN... 3.78 10.2 THE GOLDEN RULES... 3.78 10.2.1 Place the User in Control... 3.78 10.2.2 Reduce the User s Memory Load... 3.80 10.2.3 Make The Interface Consistent... 3.81 10.3 USER INTERFACE ANALYSIS AND DESIGN... 3.82 10.3.1 Interface Analysis and Design Models... 3.82 10.3.2 The Process... 3.83

viii Contents 10.4 INTERFACE ANALYSIS YSIS... 3.85 10.4.1 User Analysis... 3.85 10.4.2 Task Analysis and Modeling... 3.86 10.4.3 Analysis of Display Content... 3.89 10.4.4 Analysis of the Work Environment... 3.90 10.5 INTERFACE DESIGN STEPS... 3.90 10.5.1 Implementation of Interface Design Steps... 3.91 10.5.2 User Interface Design Patterns... 3.91 10.5.3 Design Issues... 3.91 10.6 DESIGN EVAL ALUATION... 3.94 UNIT - IV [CH. - 11] ] [TESTING STRATEGIES]... 4.1-4.38 11.1 INTRODUCTION TO O S/W TESTING... 4.2 11.2 A STRATEGIC TEGIC APPROACH CH TO O SOFTWARE TESTING... 4.3 11.2.1 VERIFICATION AND VALIDATION... 4.3 11.2.2 Organizing for Software Testing... 4.4 11.2.3 A Software Testing Strategy for Conventional Software Architectures... 4.5 11.2.4 A Software Testing Strategy for Object Oriented Architecture... 4.7 11.2.5 Criterial for Completion of Testing... 4.7 11.3 STRATEGIC TEGIC ISSUES... 4.8 11.4 TEST STRATEGIES TEGIES FOR CONVENTIONAL SOFTWARE... 4.8 11.4.1 Unit Testing esting... 4.9 11.4.2 Integration Testing... 4.11 11.5 BLACK BOX AND WHITE BOX TESTING... 4.17 11.5.1 White Box Testing... 4.18 11.5.1.1 Basis Path Testing esting... 4.18 11.5.1.2 Control Structure Testing esting... 4.24 11.5.2 Black-Box Testing esting... 4.27

Contents ix 11.6 VALIDATION TESTING... 4.31 11.6.1 Validation Test Criteria... 4.31 11.6.2 Configuration Review... 4.32 11.6.3 Alpha and Beta Testing esting... 4.32 11.7 SYSTEM TESTING... 4.33 11.7.1 Recovery Testing... 4.33 11.7.2 Security Testing... 4.34 11.7.3 Stress Testing... 4.34 11.7.4 Performance Testing esting... 4.34 11.7.5 Deployment Testing esting... 4.35 11.8 THE ART OF DEBUGGING... 4.35 11.8.1 The Debugging Process... 4.35 11.8.2 Psychological Considerations... 4.36 11.8.3 Debugging Strategies... 4.36 11.8.4 Correcting the Error... 4.38 UNIT - IV [CH. - 12] ] [PRODUCT METRICS]... 4.39-4.62 12.1 PRODUCT METRICS... 4.40 12.2 SOFTWARE QUALITY... 4.40 12.2.1 McCall s Quality Factors... 4.40 12.2.2 ISO 9126 Quality Factors... 4.41 12.2.3 The Transformation to a Quantitative View... 4.42 12.3 A FRAMEWORK FOR PRODUCT METRICS... 4.42 12.3.1 Measures, Metrics and Indicators... 4.42 12.3.2 The Challenge of Product Metrics... 4.43 12.3.3 Goal Oriented Software Measurement... 4.45 12.3.4 The Attributes of Effective Software Metrics... 4.45

x Contents 12.4 METRICS FOR THE ANALYSIS MODEL... 4.45 12.4.1 Function Based Metrics... 4.45 12.4.2 Metrics for Specification Quality... 4.48 12.5 METRICS FOR THE DESIGN MODEL... 4.49 12.5.1 Architectural Design Metrics... 4.49 12.5.2 Metrics for Object Oriented Design... 4.52 12.5.3 Class Oriented Metrics (The CK Metrics Suite)... 4.53 12.5.4 Class Oriented Metrics (The MOOD Metrics Suite)... 4.55 12.5.5 OO Metrics Proposed by Lorenz and Kidd... 4.55 12.5.6 Component Level Design Metrics... 4.56 12.5.7 Operation Oriented Metrics... 4.58 12.5.8 User Interface Design Metrics... 4.58 12.6 METRICS FOR SOURCE CODE... 4.59 12.7 METRICS FOR TESTING... 4.60 12.7.1 Halstead Metrics Applied to Testing... 4.60 12.7.2 Metrics for Object Oriented Testing... 4.61 12.7.3 Metrics for Maintenance... 4.61 UNIT - IV [CH. - 13] ] [METRICS FOR PROCESS AND PRODUCTS]... 4.63-4.74 13.1 INTRODUCTION TO METRICS FOR PROCESS AND PRODUCTS... 4.64 13.1.1 Process Metrics and Software Process Improvement... 4.64 13.1.2 Project Metrics... 4.65 13.2 SOFTWARE MEASUREMENT... 4.66 13.2.1 Size-Oriented Metrics... 4.67 13.2.2 Function Oriented Metrics... 4.68 13.2.3 Reconciling LOC and FP Metrics... 4.69

Contents xi 13.2.4 Object Oriented Metrics... 4.70 13.2.5 Use-Case Oriented Metrics... 4.71 13.2.6 Web Engineering Project Metrics... 4.71 13.3 METRICS FOR SOFTWARE QUALITY... 4.72 13.3.1 Measuring Quality... 4.73 13.3.2 Defect Removal Efficiency (DRE)... 4.74 UNIT - V [CH. H. - 14] ] [RISK MANAGEMENT]... 5.1-5.14 14.1 INTRODUCTION TO RISK MANAGEMENT... 5.2 14.2 REACTIVE VS PROACTIVE RISK STRATEGIES TEGIES... 5.2 14.3 SOFTWARE RISKS... 5.3 14.4 RISK IDENTIFICATION TION... 5.4 14.4.1 Assessing Overall Project Risk... 5.5 14.4.2 Risk Components and Drivers... 5.6 14.5 RISK PROJECTION... 5.8 14.5.1 Developing a Risk Table... 5.8 14.5.2 Assessing Risk Impact... 5.10 14.6 RISK REFINEMENT... 5.11 14.7 RISK MITIGATION TION,, MONITORING ORING AND MANAGEMENT... 5.12 14.8 THE RMMM PLAN... 5.13 UNIT - V [CH. - 15] ] [QUALITY MANAGEMENT]... 5.15-5.36 15.1 INTRODUCTION TO QUALITY MANAGEMENT... 5.2 15.2 QUALITY CONCEPTS... 5.2 15.2.1 Quality... 5.2 15.2.2 Quality Control... 5.3 15.2.3 Quality Assurance... 5.3 15.2.4 Cost of Quality... 5.4

xii Contents 15.3 SOFTWARE QUALITY ASSURANCE... 5.20 15.3.1 Background Issues... 5.21 15.3.2 SQA Activities... 5.21 15.4 SOFTWARE REVIEWS... 5.23 15.4.1 Cost Impact of Software Defects... 5.23 15.4.2 Defects Amplification and Removal... 5.23 15.4.2.1 Defect Amplification with Reviews... 5.24 15.4.2.2 Defect Amplification without Reviews... 5.25 15.5 FORMAL TECHNICAL REVIEWS... 5.26 15.5.1 The Review Meeting... 5.26 15.5.2 Review Reporting and Record Keeping... 5.27 15.5.3 Review Guidelines... 5.27 15.5.4 Sample-Driven Reviews... 5.28 15.6 STATISTICAL TISTICAL SOFTWARE QUALITY ASSURANCE... 5.29 15.6.1 A Generic Example... 5.30 15.6.2 Six Sigma for Software Engineering... 5.31 15.7 SOFTWARE RELIABILITY... 5.32 15.7.1 Measures of Software Reliability and Availability... 5.32 15.7.2 Software Safety... 5.34 15.8 THE ISO 9000 QUALITY STAND ANDARDS ARDS... 5.35 UNIT - V [CH. - 16] ] [CONFIGURATION MANAGEMENT]... 5.37-5.58 16.1 INTRODUCTION TO CONFIGURATION MANAGEMENT... 5.38 16.1.1 Benefits of Configuration Management... 5.40 16.2 CONFIGURATION MANAGEMENT PLANNING... 5.41 16.2.1 Configuration Item Identification... 5.42 16.2.1.1 Baselines... 5.44 16.2.2 The Configuration Database... 5.45

Contents xiii 16.3 CHANGE MANAGEMENT... 5.45 16.4 VERSION AND RELEASE MANAGEMENT... 5.48 16.4.1 Version Identification... 5.49 16.4.2 Release Management... 5.52 16.5 SYSTEM BUILDING... 5.54 16.6 CASE TOOLS FOR CONFIGURATION MANAGEMENT... 5.55 16.6.1 Support for Change Management... 5.56 16.6.2 Support for Version Management... 5.56 16.6.3 Support for System Building... 5.57

xiv Contents STUDENT NOTES