Author(s): Roger S. Pressman
Edition: 7
Publisher: McGraw-Hill Higher Education
Year: 2010
Language: English
Pages: 930
Tags: Информатика и вычислительная техника;Технология программирования;
Cover Page......Page 1
Title Page......Page 4
Copyright Page......Page 5
Dedication......Page 6
About Author Page......Page 7
Preface......Page 26
CONTENTS AT A GLANCE......Page 8
CONTENTS......Page 10
CHAPTER 1: SOFTWARE AND SOFTWARE ENGINEERING......Page 30
1.1 The Nature of Software......Page 32
1.1.1 Defining Software......Page 33
1.1.2 Software Application Domains......Page 36
1.1.3 Legacy Software......Page 38
1.2 The Unique Nature of WebApps......Page 39
1.3 Software Engineering......Page 41
1.4 The Software Process......Page 43
1.5.1 The Essence of Practice......Page 46
1.5.2 General Principles......Page 48
1.6 Software Myths......Page 50
1.7 How It All Starts......Page 53
PROBLEMS AND POINTS TO PONDER......Page 54
FURTHER READINGS AND INFORMATION SOURCES......Page 55
PART ONE: THE SOFTWARE PROCESS......Page 58
CHAPTER 2: PROCESS MODELS......Page 59
2.1 A Generic Process Model......Page 60
2.2 Process Assessment and Improvement......Page 66
2.3 Prescriptive Process Models......Page 67
2.4 Specialized Process Models......Page 79
2.5 The Unified Process......Page 82
2.6 Personal and Team Process Models......Page 85
2.7 Process Technology......Page 88
2.8 Product and Process......Page 89
2.9 Summary......Page 90
PROBLEMS AND POINTS TO PONDER......Page 91
FURTHER READINGS AND INFORMATION SOURCES......Page 92
CHAPTER 3: AGILE DEVELOPMENT......Page 94
3.2 Agility and the Cost of Change......Page 96
3.3 What Is an Agile Process?......Page 97
3.4 Extreme Programming (XP)......Page 101
3.5 Other Agile Process Models......Page 109
3.7 Summary......Page 120
PROBLEMS AND POINTS TO PONDER......Page 121
FURTHER READINGS AND INFORMATION SOURCES......Page 122
PART TWO: MODELING......Page 124
CHAPTER 4: PRINCIPLES THAT GUIDE PRACTICE......Page 125
4.1 Software Engineering Knowledge......Page 126
4.2 Core Principles......Page 127
4.3 Principles That Guide Each Framework Activity......Page 130
4.4 Summary......Page 144
FURTHER READINGS AND INFORMATION SOURCES......Page 145
CHAPTER 5: UNDERSTANDING REQUIREMENTS......Page 148
5.1 Requirements Engineering......Page 149
5.2 Establishing the Groundwork......Page 154
5.3 Eliciting Requirements......Page 157
5.4 Developing Use Cases......Page 162
5.5 Building the Requirements Model......Page 167
5.6 Negotiating Requirements......Page 171
5.7 Validating Requirements......Page 173
PROBLEMS AND POINTS TO PONDER......Page 174
FURTHER READINGS AND INFORMATION SOURCES......Page 175
CHAPTER 6: REQUIREMENTS MODELING: SCENARIOS, INFORMATION, AND ANALYSIS CLASSES......Page 177
6.1 Requirements Analysis......Page 178
6.2 Scenario-Based Modeling......Page 183
6.3 UML Models That Supplement the Use Case......Page 190
6.4 Data Modeling Concepts......Page 193
6.5 Class-Based Modeling......Page 196
PROBLEMS AND POINTS TO PONDER......Page 212
FURTHER READINGS AND INFORMATION SOURCES......Page 213
7.1 Requirements Modeling Strategies......Page 215
7.2 Flow-Oriented Modeling......Page 216
7.3 Creating a Behavioral Model......Page 224
7.4 Patterns for Requirements Modeling......Page 228
7.5 Requirements Modeling for WebApps......Page 234
PROBLEMS AND POINTS TO PONDER......Page 242
FURTHER READINGS AND INFORMATION SOURCES......Page 243
CHAPTER 8: DESIGN CONCEPTS......Page 244
8.1 Design within the Context of Software Engineering......Page 245
8.2 The Design Process......Page 248
8.3 Design Concepts......Page 251
8.4 The Design Model......Page 262
8.5 Summary......Page 268
FURTHER READINGS AND INFORMATION SOURCES......Page 269
CHAPTER 9: ARCHITECTURAL DESIGN......Page 271
9.1 Software Architecture......Page 272
9.2 Architectural Genres......Page 275
9.3 Architectural Styles......Page 278
9.4 Architectural Design......Page 284
9.5 Assessing Alternative Architectural Designs......Page 290
9.6 Architectural Mapping Using Data Flow......Page 294
9.7 Summary......Page 302
FURTHER READINGS AND INFORMATION SOURCES......Page 303
CHAPTER 10: COMPONENT-LEVEL DESIGN......Page 305
10.1 What Is a Component?......Page 306
10.2 Designing Class-Based Components......Page 311
10.3 Conducting Component-Level Design......Page 319
10.4 Component-Level Design for WebApps......Page 325
10.5 Designing Traditional Components......Page 327
10.6 Component-Based Development......Page 332
10.7 Summary......Page 338
PROBLEMS AND POINTS TO PONDER......Page 339
FURTHER READINGS AND INFORMATION SOURCES......Page 340
CHAPTER 11: USER INTERFACE DESIGN......Page 341
11.1 The Golden Rules......Page 342
11.2 User Interface Analysis and Design......Page 346
11.3 Interface Analysis......Page 349
11.4 Interface Design Steps......Page 357
11.5 WebApp Interface Design......Page 364
11.6 Design Evaluation......Page 371
11.7 Summary......Page 373
PROBLEMS AND POINTS TO PONDER......Page 374
FURTHER READINGS AND INFORMATION SOURCES......Page 375
CHAPTER 12: PATTERN-BASED DESIGN......Page 376
12.1 Design Patterns......Page 377
12.2 Pattern-Based Software Design......Page 383
12.3 Architectural Patterns......Page 389
12.4 Component-Level Design Patterns......Page 391
12.5 User Interface Design Patterns......Page 393
12.6 WebApp Design Patterns......Page 397
12.7 Summary......Page 399
PROBLEMS AND POINTS TO PONDER......Page 400
FURTHER READING AND INFORMATION SOURCES......Page 401
CHAPTER 13: WEBAPP DESIGN......Page 402
13.1 WebApp Design Quality......Page 403
13.2 Design Goals......Page 406
13.4 WebApp Interface Design......Page 407
13.5 Aesthetic Design......Page 409
13.6 Content Design......Page 411
13.7 Architecture Design......Page 412
13.8 Navigation Design......Page 417
13.10 Object-Oriented Hypermedia Design Method (OOHDM......Page 419
13.11 Summary......Page 422
PROBLEMS AND POINTS TO PONDER......Page 423
FURTHER READINGS AND INFORMATION SOURCES......Page 424
PART THREE: QUALITY MANAGEMENT......Page 426
CHAPTER 14: QUALITY CONCEPTS......Page 427
14.1 What Is Quality?......Page 428
14.2 Software Quality......Page 429
14.3 The Software Quality Dilemma......Page 435
14.4 Achieving Software Quality......Page 441
14.5 Summary......Page 442
FURTHER READINGS AND INFORMATION SOURCES......Page 443
CHAPTER 15: REVIEW TECHNIQUES......Page 445
15.1 Cost Impact of Software Defects......Page 446
15.2 Defect Amplification and Removal......Page 447
15.3 Review Metrics and Their Use......Page 449
15.4 Reviews: A Formality Spectrum......Page 452
15.5 Informal Reviews......Page 453
15.6 Formal Technical Reviews......Page 455
15.7 Summary......Page 459
FURTHER READINGS AND INFORMATION SOURCES......Page 460
CHAPTER 16: SOFTWARE QUALITY ASSURANCE......Page 461
16.1 Background Issues......Page 462
16.2 Elements of Software Quality Assurance......Page 463
16.3 SQA Tasks, Goals, and Metrics......Page 465
16.4 Formal Approaches to SQA......Page 467
16.5 Statistical Software Quality Assurance......Page 468
16.6 Software Reliability......Page 471
16.7 The ISO 9000 Quality Standards......Page 473
16.8 The SQA Plan......Page 474
16.9 Summary......Page 475
FURTHER READINGS AND INFORMATION SOURCES......Page 476
CHAPTER 17: SOFTWARE TESTING STRATEGIES......Page 478
17.1 A Strategic Approach to Software Testing......Page 479
17.2 Strategic Issues......Page 484
17.3 Test Strategies for Conventional Software......Page 485
17.4 Test Strategies for Object-Oriented Software......Page 494
17.6 Validation Testing......Page 496
17.7 System Testing......Page 499
17.8 The Art of Debugging......Page 502
PROBLEMS AND POINTS TO PONDER......Page 507
FURTHER READINGS AND INFORMATION SOURCES......Page 508
CHAPTER 18: TESTING CONVENTIONAL APPLICATIONS......Page 510
18.1 Software Testing Fundamentals......Page 511
18.2 Internal and External Views of Testing......Page 513
18.4 Basis Path Testing......Page 514
18.5 Control Structure Testing......Page 521
18.6 Black-Box Testing......Page 524
18.7 Model-Based Testing......Page 531
18.8 Testing for Specialized Environments, Architectures, and Applications......Page 532
18.9 Patterns for Software Testing......Page 536
18.10 Summary......Page 537
PROBLEMS AND POINTS TO PONDER......Page 538
FURTHER READINGS AND INFORMATION SOURCES......Page 539
CHAPTER 19: TESTING OBJECT-ORIENTED APPLICATIONS......Page 540
19.1 Broadening the View of Testing......Page 541
19.2 Testing OOA and OOD Models......Page 542
19.3 Object-Oriented Testing Strategies......Page 545
19.4 Object-Oriented Testing Methods......Page 546
19.5 Testing Methods Applicable at the Class Level......Page 551
19.6 Interclass Test-Case Design......Page 553
19.7 Summary......Page 556
FURTHER READINGS AND INFORMATION SOURCES......Page 557
CHAPTER 20: TESTING WEB APPLICATIONS......Page 558
20.1 Testing Concepts for WebApps......Page 559
20.2 The Testing Process—An Overview......Page 562
20.3 Content Testing......Page 563
20.4 User Interface Testing......Page 566
20.5 Component-Level Testing......Page 572
20.6 Navigation Testing......Page 574
20.7 Configuration Testing......Page 576
20.8 Security Testing......Page 577
20.9 Performance Testing......Page 579
20.10 Summary......Page 582
PROBLEMS AND POINTS TO PONDER......Page 583
FURTHER READINGS AND INFORMATION SOURCES......Page 584
CHAPTER 21: FORMAL MODELING AND VERIFICATION......Page 586
21.1 The Cleanroom Strategy......Page 587
21.2 Functional Specification......Page 589
21.3 Cleanroom Design......Page 592
21.4 Cleanroom Testing......Page 595
21.5 Formal Methods Concepts......Page 597
21.6 Applying Mathematical Notation for Formal Specification......Page 600
21.7 Formal Specification Languages......Page 602
21.8 Summary......Page 609
PROBLEMS AND POINTS TO PONDER......Page 610
FURTHER READINGS AND INFORMATION SOURCES......Page 611
CHAPTER 22: SOFTWARE CONFIGURATION MANAGEMENT......Page 613
22.1 Software Configuration Management......Page 614
22.2 The SCM Repository......Page 619
22.3 The SCM Process......Page 622
22.4 Configuration Management for WebApps......Page 630
22.5 Summary......Page 639
PROBLEMS AND POINTS TO PONDER......Page 640
FURTHER READINGS AND INFORMATION SOURCES......Page 641
CHAPTER 23: PRODUCT METRICS......Page 642
23.1 A Framework for Product Metrics......Page 643
23.2 Metrics for the Requirements Model......Page 648
23.3 Metrics for the Design Model......Page 653
23.4 Design Metrics for WebApps......Page 665
23.5 Metrics for Source Code......Page 667
23.6 Metrics for Testing......Page 668
23.7 Metrics for Maintenance......Page 670
PROBLEMS AND POINTS TO PONDER......Page 671
FURTHER READINGS AND INFORMATION SOURCES......Page 672
PART FOUR: MANAGING SOFTWARE PROJECTS......Page 674
CHAPTER 24: PROJECT MANAGEMENT CONCEPTS......Page 675
24.1 The Management Spectrum......Page 676
24.2 People......Page 678
24.3 The Product......Page 685
24.4 The Process......Page 686
24.5 The Project......Page 689
24.6 The W5HH Principle......Page 690
24.7 Critical Practices......Page 691
PROBLEMS AND POINTS TO PONDER......Page 692
FURTHER READINGS AND INFORMATION SOURCES......Page 693
CHAPTER 25: PROCESS AND PROJECT METRICS......Page 695
25.1 Metrics in the Process and Project Domains......Page 696
25.2 Software Measurement......Page 700
25.3 Metrics for Software Quality......Page 708
25.4 Integrating Metrics within the Software Process......Page 711
25.5 Metrics for Small Organizations......Page 713
25.6 Establishing a Software Metrics Program......Page 715
PROBLEMS AND POINTS TO PONDER......Page 717
FURTHER READINGS AND INFORMATION SOURCES......Page 718
CHAPTER 26: ESTIMATION FOR SOFTWARE PROJECTS......Page 720
26.1 Observations on Estimation......Page 721
26.2 The Project Planning Process......Page 722
26.3 Software Scope and Feasibility......Page 723
26.4 Resources......Page 724
26.5 Software Project Estimation......Page 726
26.6 Decomposition Techniques......Page 727
26.7 Empirical Estimation Models......Page 737
26.8 Estimation for Object-Oriented Projects......Page 741
26.9 Specialized Estimation Techniques......Page 742
26.10 The Make/Buy Decision......Page 744
26.11 Summary......Page 747
FURTHER READINGS AND INFORMATION SOURCES......Page 748
CHAPTER 27: PROJECT SCHEDULING......Page 750
27.1 Basic Concepts......Page 751
27.2 Project Scheduling......Page 753
27.3 Defining a Task Set for the Software Project......Page 757
27.4 Defining a Task Network......Page 760
27.5 Scheduling......Page 761
27.6 Earned Value Analysis......Page 768
PROBLEMS AND POINTS TO PONDER......Page 770
FURTHER READINGS AND INFORMATION SOURCES......Page 772
CHAPTER 28: RISK MANAGEMENT......Page 773
28.2 Software Risks......Page 774
28.3 Risk Identification......Page 776
28.4 Risk Projection......Page 778
28.5 Risk Refinement......Page 783
28.6 Risk Mitigation, Monitoring, and Management......Page 784
28.7 The RMMM Plan......Page 786
PROBLEMS AND POINTS TO PONDER......Page 788
FURTHER READINGS AND INFORMATION SOURCES......Page 789
CHAPTER 29: MAINTENANCE AND REENGINEERING......Page 790
29.1 Software Maintenance......Page 791
29.3 Reengineering......Page 793
29.4 Business Process Reengineering......Page 794
29.5 Software Reengineering......Page 797
29.6 Reverse Engineering......Page 801
29.7 Restructuring......Page 805
29.8 Forward Engineering......Page 807
29.9 The Economics of Reengineering......Page 809
29.10 Summary......Page 810
PROBLEMS AND POINTS TO PONDER......Page 811
FURTHER READINGS AND INFORMATION SOURCES......Page 812
PART FIVE: ADVANCED TOPICS......Page 814
CHAPTER 30: SOFTWARE PROCESS IMPROVEMENT......Page 815
30.1 What Is SPI?......Page 816
30.2 The SPI Process......Page 820
30.3 The CMMI......Page 826
30.4 The People CMM......Page 830
30.5 Other SPI Frameworks......Page 831
30.6 SPI Return on Investment......Page 833
30.7 SPI Trends......Page 834
PROBLEMS AND POINTS TO PONDER......Page 835
FURTHER READINGS AND INFORMATION SOURCES......Page 836
CHAPTER 31: EMERGING TRENDS IN SOFTWARE ENGINEERING......Page 837
31.1 Technology Evolution......Page 838
31.2 Observing Software Engineering Trends......Page 840
31.3 Identifying “Soft Trends”......Page 841
31.4 Technology Directions......Page 848
31.5 Tools-Related Trends......Page 856
31.6 Summary......Page 859
FURTHER READINGS AND INFORMATION SOURCES......Page 860
CHAPTER 32: CONCLUDING COMMENTS......Page 862
32.2 People and the Way They Build Systems......Page 863
32.3 New Modes for Representing Information......Page 864
32.4 The Long View......Page 866
32.5 The Software Engineer’s Responsibility......Page 867
32.6 A Final Comment......Page 868
APPENDIX 1: AN INTRODUCTION TO UML......Page 870
APPENDIX 2: OBJECT-ORIENTED CONCEPTS......Page 892
REFERENCES......Page 900
INDEX......Page 918