xvi TABLE OF CONTENTS 13.6 Component-Level Design 282 13.7 Mobility and Design Quality 282 13.8 Mobility Design Best Practices 285 13.9 Summary 287 CHAPTER 14 PATTERN-BASED DESIGN 289 14.1 Design Patterns 290 14.1.1 Kinds of Patterns 291 14.1.2 Frameworks 293 1413 Describing a Pattern 293 14.1.4 Machine Learning and Pattern Discovery 294 14.2 Pattern-Based Software Design 295 14.2.1 Pattern-Based Desian in Context 295 14.2.2 Thinking in Pattems 296 14.2.3 Design Tasks 297 14.24 Building a Pattern-Organizing Table 298 14.25 Common Design Mistakes 298 14.3 Architectural Patterns 299 14.4 Component-Level Design Patterns 300 14.5 Anti-Patterns 302 14.6 User Interface Design Patterns 304 14.7 Mobility Design Patterns 305 14.8 Summary 306 PART THREE QUALITY AND SECURITY 309 CHAPTER 15 QUALITY CONCEPTS 310 15.1 What Is Quality?311 15.2 Software Quality 312 15.2.1 Quality Factors 312 15.2.2 Qualitative Quality Assessment 314 15.2.3 Quantitative Quality Assessment 315 15.3 The Software Quality Dilemma 315 15.3.1 "Good Enough"Software 316 15.3.2 The Cost of Quality 317 15.3.3 Risks 319 15.3.4 Negligence and Liability 320
xvi TABLE OF CONTENTS 13.6 Component-Level Design 282 13.7 Mobility and Design Quality 282 13.8 Mobility Design Best Practices 285 13.9 Summary 287 CHAPTER 14 PATTERN-BASED DESIGN 289 14.1 Design Patterns 290 14.1.1 Kinds of Patterns 291 14.1.2 Frameworks 293 14.1.3 Describing a Pattern 293 14.1.4 Machine Learning and Pattern Discovery 294 14.2 Pattern-Based Software Design 295 14.2.1 Pattern-Based Design in Context 295 14.2.2 Thinking in Patterns 296 14,2.3 Design Tasks 297 14.2.4 Building a Pattern-Organizing Table 298 14.2.5 Common Design Mistakes 298 14.3 Architectural Patterns 299 14.4 Component-Level Design Patterns 300 14.5 Anti-Patterns 302 14.6 User Interface Design Patterns 304 14.7 Mobility Design Patterns 305 14.8 Summary 306 PART THREE QUALITY AND SECURITY 309 CHAPTER 15 QUALITY CONCEPTS 310 15.1 What Is Quality? 311 15.2 Software Quality 312 15.2.1 Quality Factors 312 15.2.2 Qualitative Quality Assessment 314 15.2.3 Quantitative Quality Assessment 315 15.3 The Software Quality Dilemma 315 15.3.1 “Good Enough” Software 316 15.3.2 The Cost of Quality 317 15.3.3 Risks 319 15.3.4 Negligence and Liability 320
TABLE OF CONTENTS xvii 15.3.5 Quality and Security 320 1536 The Impact of Management Actions 321 15.4 Achieving Software Quality 321 15.4.1 Software Engineering Methods 322 1542 Project Management Techniques 322 1543 Machine Learning and Defect Prediction 322 15.4.4 Quality Control 322 15.4.5 Quality Assurance 323 15.5 Summary 323 CHAPTER 16 REVIEWS-A RECOMMENDED APPROACH 325 16.1 Cost Impact of Software Defects 326 16.2 Defect Amplification and Removal 327 16.3 Review Metrics and Their Use 327 16.4 Criteria for Types of Reviews 330 16.5 Informal Reviews 331 166 Formal Technical Reviews 332 16.6.1 The Review Meeting 332 16.6.2 Review Reporting and Record Keeping 333 16.6.3 Review Guidelines 334 16.7 Postmortem Evaluations 336 16.8 Agile Reviews 336 16.9 Summary 337 CHAPTER 17 SOFTWARE QUALITY ASSURANCE 339 17.1 Background Issues 341 17.2 Elements of Software Quality Assurance 341 17.3 SQA Processes and Product Characteristics 343 17.4 SQA Tasks,Goals,and Metrics 343 17.4.1 SQA Tasks 343 17.4.2 Goals,Attributes,and Metrics 345 17.5 Formal Approaches to SQA 347 17.6 Statistical Software Quality Assurance 347
TABLE OF CONTENTS xvii 15.3.5 Quality and Security 320 15.3.6 The Impact of Management Actions 321 15.4 Achieving Software Quality 321 15.4.1 Software Engineering Methods 322 15.4.2 Project Management Techniques 322 15.4.3 Machine Learning and Defect Prediction 322 15.4.4 Quality Control 322 15.4.5 Quality Assurance 323 15.5 Summary 323 CHAPTER 16 REVIEWS—A RECOMMENDED APPROACH 325 16.1 Cost Impact of Software Defects 326 16.2 Defect Amplification and Removal 327 16.3 Review Metrics and Their Use 327 16.4 Criteria for Types of Reviews 330 16.5 Informal Reviews 331 16.6 Formal Technical Reviews 332 16.6.1 The Review Meeting 332 16.6.2 Review Reporting and Record Keeping 333 16.6.3 Review Guidelines 334 16.7 Postmortem Evaluations 336 16.8 Agile Reviews 336 16.9 Summary 337 CHAPTER 17 SOFTWARE QUALITY ASSURANCE 339 17.1 Background Issues 341 17.2 Elements of Software Quality Assurance 341 17.3 SQA Processes and Product Characteristics 343 17.4 SQA Tasks, Goals, and Metrics 343 17.4.1 SQA Tasks 343 17.4.2 Goals, Attributes, and Metrics 345 17.5 Formal Approaches to SQA 347 17.6 Statistical Software Quality Assurance 347
wi描 TABLE OF CONTENTS 1761 A Generic Example 347 17.6.2 Six Sigma for Software Engineering 349 17.7 Software Reliability 350 1774 Measures of Reliability and Availability 350 1772 Use of AI to Model Reliability 351 17.7.3 Software Satety 352 17.8 The ISO 9000 Quality Standards 353 17.9 The SQA Plan 354 17.10 Summary 355 CHAPTER 18 SOFTWARE SECURITY ENGINEERING 356 18.1 Why Software Security Information Is Important 357 18.2 Security Life-Cycle Models 357 18.3 Secure Development Life-Cycle Activities 359 18.4 Security Requirements Engineering 360 18.4.1 SQUARE 360 1842 The SQUARE Process 360 18.5 Misuse and Abuse Cases and Attack Patterns 363 18.6 Security Risk Analysis 364 18.7 Threat Modeling.Prioritization,and Mitigation 365 18.8 Attack Surface 366 18.9 Secure Coding 367 18.10 Measurement 368 18.11 Security Process Improvement and Maturity Models 370 18.12 Summary 370 CHAPTER 19 SOFTWARE TESTING-COMPONENT LEVEL 372 19.1 A Strategic Approach to Software Testing 373 19.1.1 Verification and Validation 373 19.1.2 Organizing for Software Testing 374 1913 The Big Picture 375 19.1.4 Criteria for"Done”377
xviii TABLE OF CONTENTS 17.6.1 A Generic Example 347 17.6.2 Six Sigma for Software Engineering 349 17.7 Software Reliability 350 17.7.1 Measures of Reliability and Availability 350 17.7.2 Use of AI to Model Reliability 351 17.7.3 Software Safety 352 17.8 The ISO 9000 Quality Standards 353 17.9 The SQA Plan 354 17.10 Summary 355 CHAPTER 18 SOFTWARE SECURITY ENGINEERING 356 18.1 Why Software Security Information Is Important 357 18.2 Security Life-Cycle Models 357 18.3 Secure Development Life-Cycle Activities 359 18.4 Security Requirements Engineering 360 18.4.1 SQUARE 360 18.4.2 The SQUARE Process 360 18.5 Misuse and Abuse Cases and Attack Patterns 363 18.6 Security Risk Analysis 364 18.7 Threat Modeling, Prioritization, and Mitigation 365 18.8 Attack Surface 366 18.9 Secure Coding 367 18.10 Measurement 368 18.11 Security Process Improvement and Maturity Models 370 18.12 Summary 370 CHAPTER 19 SOFTWARE TESTING—COMPONENT LEVEL 372 19.1 A Strategic Approach to Software Testing 373 19.1.1 Verification and Validation 373 19.1.2 Organizing for Software Testing 374 19.1.3 The Big Picture 375 19.1.4 Criteria for “Done” 377
TABLE OF CONTENTS 19.2 Planning and Recordkeeping 378 19.2.1 Role of Scaffolding 379 1922 Cost-Effective Testing 379 19.3 Test-Case Design 381 19.3.1 Requirements and Use Cases 382 19.3.2 Traceability 383 19.4 White-Box Testing 383 19.4.1 Basis Path Testing 384 19.4.2 Control Structure Testing 386 19.5 Black-Box Testing 388 19.5.1 Interface Testing 388 19.5.2 Equivalence Paritioning 389 19.5.3 Boundary value Analysis 389 19.6 Object-Oriented Testing 390 19.6.1 Class Testing 390 19.6.2 Behavioral Testing 392 19.7 Summary 393 CHAPTER 20 SOFTWARE TESTING INTEGRATION LEVEL 395 20.1 Software Testing Fundamentals 396 20.11 Black-Box Testing 397 20.1.2 White-Box Testing 39 20.2 Integration Testing 398 2024 Top-Down Integration 398 20.2.2 Bottom-Up Integration 399 20.2.3 Continuous Integration 400 202.4 Integration Test Work Products 402 20.3 Artificial Intelligence and Regression Testing 402 20.4 Integration Testing in the oo Context 404 20.4.1 Fault-Based Test-Case Design 405 20.4.2 Scenario-Based Test-Case Design 406 20.5 Validation Testing 407 20.6 Testing Patterns 409 20.7 Summary 409
TABLE OF CONTENTS xix 19.2 Planning and Recordkeeping 378 19.2.1 Role of Scaffolding 379 19.2.2 Cost-Effective Testing 379 19.3 Test-Case Design 381 19.3.1 Requirements and Use Cases 382 19.3.2 Traceability 383 19.4 White-Box Testing 383 19.4.1 Basis Path Testing 384 19.4.2 Control Structure Testing 386 19.5 Black-Box Testing 388 19.5.1 Interface Testing 388 19.5.2 Equivalence Partitioning 389 19.5.3 Boundary Value Analysis 389 19.6 Object-Oriented Testing 390 19.6.1 Class Testing 390 19.6.2 Behavioral Testing 392 19.7 Summary 393 CHAPTER 20 SOFTWARE TESTING— INTEGRATION LEVEL 395 20.1 Software Testing Fundamentals 396 20.1.1 Black-Box Testing 397 20.1.2 White-Box Testing 397 20.2 Integration Testing 398 20.2.1 Top-Down Integration 398 20.2.2 Bottom-Up Integration 399 20.2.3 Continuous Integration 400 20.2.4 Integration Test Work Products 402 20.3 Artificial Intelligence and Regression Testing 402 20.4 Integration Testing in the OO Context 404 20.4.1 Fault-Based Test-Case Design 405 20.4.2 Scenario-Based Test-Case Design 406 20.5 Validation Testing 407 20.6 Testing Patterns 409 20.7 Summary 409
TABLE OF CONTENTS CHAPTER 21 SOFTWARE TESTING-SPECIALIZED TESTING FOR MOBILITY 412 21.1 Mobile Testing Guidelines 413 21.2 The Testing Strategies 414 21.3 User Experience Testing Issues 415 21.3.1 Gesture Testing 415 21.3.2 Virtual Keyboard Input 416 2133 Voice Input and Recognition 416 21.3.4 Alerts and Extraordinary Conditions 417 21.4 Web Application Testing 418 21.5 Web Testing Strategies 418 21.5.1 Content Testing 420 21.5.2 Interface Testing 421 21.5.3 Navigation Testing 21 21.6 Internationalization 423 21.7 Security Testing 423 21.8 Performance Testing 424 21.9 Real-Time Testing 426 21.10 Testing Al Systems 428 21.10.1 Static and Dynamic Testing 429 21.10.2 Model-Based Testing 429 21.11 Testing Virtual Environments 430 21.11.7 Usability Testing 430 21.11.2 Accessibility Testing 433 21.11.3 Playability Testing 433 21.12 Testing Documentation and Help Facilities 434 21.13 Summary 435 CHAPTER 22 SOFTWARE CONFIGURATION MANAGEMENT 437 22.1 Software Configuration Management 438 2211 An SCM Scenario 439 22.1.2 Elements of a Configuration Management System 440 22.1.3 Baselines 441
xx TABLE OF CONTENTS CHAPTER 21 SOFTWARE TESTING—SPECIALIZED TESTING FOR MOBILITY 412 21.1 Mobile Testing Guidelines 413 21.2 The Testing Strategies 414 21.3 User Experience Testing Issues 415 21.3.1 Gesture Testing 415 21.3.2 Virtual Keyboard Input 416 21.3.3 Voice Input and Recognition 416 21.3.4 Alerts and Extraordinary Conditions 417 21.4 Web Application Testing 418 21.5 Web Testing Strategies 418 21.5.1 Content Testing 420 21.5.2 Interface Testing 421 21.5.3 Navigation Testing 421 21.6 Internationalization 423 21.7 Security Testing 423 21.8 Performance Testing 424 21.9 Real-Time Testing 426 21.10 Testing AI Systems 428 21.10.1 Static and Dynamic Testing 429 21.10.2 Model-Based Testing 429 21.11 Testing Virtual Environments 430 21.11.1 Usability Testing 430 21.11.2 Accessibility Testing 433 21.11.3 Playability Testing 433 21.12 Testing Documentation and Help Facilities 434 21.13 Summary 435 CHAPTER 22 SOFTWARE CONFIGURATION MANAGEMENT 437 22.1 Software Configuration Management 438 22.1.1 An SCM Scenario 439 22.1.2 Elements of a Configuration Management System 440 22.1.3 Baselines 441