關(guān)于我們
書單推薦
新書推薦
|
軟件工程:實(shí)踐者的研究方法(英文精編版 第8版)
本書自1982年發(fā)行第1版以來,一直受到軟件工程界的高度重視,成為高等院校計(jì)算機(jī)相關(guān)專業(yè)軟件工程課的重要教學(xué)參考書。近30年來,它的各個(gè)后繼版本一直都是軟件專業(yè)人土熟悉的讀物,在國際軟件工程界享有無可質(zhì)疑的權(quán)威地位。它在全面而系統(tǒng)、概括而清晰地介紹軟件工程的有關(guān)概念、原則、方法和工具方面獲得了廣大讀者的好評(píng)。此外,本書在給出傳統(tǒng)的、對(duì)學(xué)科發(fā)展具有深刻影響的方法時(shí),又適當(dāng)?shù)亟榻B了當(dāng)前正在發(fā)展的、具有生命力的新技術(shù)。
TABLE OF CONTENTS
CHAPTER 1 THE NATURE OF SOFTWARE 1 1.1 The Nature of Software 3 1.1.1 De ning Software 4 1.1.2 Software Application Domains 6 1.1.3 Legacy Software 7 1.2 The Changing Nature of Software 9 1.2.1 WebApps 9 1.2.2 Mobile Applications 9 1.2.3 Cloud Computing 10 1.2.4 Product Line Software 11 PROBLEMS AND POINTS TO PONDER 12 FURTHER READINGS AND INFORMATION SOURCES 12 CHAPTER 2 SOFTWARE ENGINEERING 14 2.1 De ning the Discipline 15 2.2 The Software Process 16 2.2.1 The Process Framework 17 2.2.2 Umbrella Activities 18 2.2.3 Process Adaptation 18 2.3 Software Engineering Practice 19 2.3.1 The Essence of Practice 19 2.3.2 General Principles 21 2.4 Software Development Myths 23 2.5 How It All Starts 26 PROBLEMS AND POINTS TO PONDER 27 FURTHER READINGS AND INFORMATION SOURCES 27 PART ONE THE SOFTWARE PROCESS 29 CHAPTER 3 SOFTWARE PROCESS STRUCTURE 30 3.1 A Generic Process Model 31 3.2 De ning a Framework Activity 32 3.3 Identifying a Task Set 34 3.4 Process Patterns 35 PROBLEMS AND POINTS TO PONDER 37 FURTHER READINGS AND INFORMATION SOURCES 38 CHAPTER 4 PROCESS MODELS 39 4.1 Pre******ive Process Models 40 4.1.1 The Waterfall Model 40 4.1.2 Incremental Process Models 42 4.1.3 Evolutionary Process Models 44 4.1.4 Concurrent Models 48 4.1.5 A Final Word on Evolutionary Processes 50 4.2 Specialized Process Models 51 4.2.1 Component-Based Development 52 4.2.2 The Formal Methods Model 52 4.2.3 Aspect-Oriented Software Development 53 4.3 The Uni ed Process 54 4.3.1 A Brief History 55 4.3.2 Phases of the Uni ed Process 55 4.4 Product and Process 57 PROBLEMS AND POINTS TO PONDER 59 FURTHER READINGS AND INFORMATION SOURCES 59 CHAPTER 5 AGILE DEVELOPMENT 60 5.1 What Is Agility? 62 5.2 Agility and the Cost of Change 62 5.3 What Is an Agile Process 63? 5.3.1 Agility Principles 64 5.3.2 The Politics of Agile Development 65 5.4 Extreme Programming 66 5.4.1 The XP Process 66 5.4.2 Industrial XP 69 5.5 Other Agile Process Models 71 5.5.1 Scrum 72 5.5.2 Dynamic Systems Development Method 73 5.5.3 Agile Modeling 74 5.5.4 Agile Uni ed Process 76 5.6 A Tool Set for the Agile Process 77 PROBLEMS AND POINTS TO PONDER 78 FURTHER READINGS AND INFORMATION SOURCES 79 CHAPTER 6 HUMAN ASPECTS OF SOFTWARE ENGINEERING 81 6.1 Characteristics of a Software Engineer 82 6.2 The Psychology of Software Engineering 83 6.3 The Software Team 84 6.4 Team Structures 86 6.5 Agile Teams 87 6.5.1 The Generic Agile Team 87 6.5.2 The XP Team 88 6.6 The Impact of Social Media 89 6.7 Software Engineering Using the Cloud 91 6.8 Collaboration Tools 92 6.9 Global Teams 93 PROBLEMS AND POINTS TO PONDER 94 FURTHER READINGS AND INFORMATION SOURCES 95 PART TWO MODELING 97 CHAPTER 7 UNDERSTANDING REQUIREMENTS 98 7.1 Requirements Engineering 99 7.2 Establishing the Groundwork 105 7.2.1 Identifying Stakeholders 106 7.2.2 Recognizing Multiple Viewpoints 106 7.2.3 Working toward Collaboration 107 7.2.4 Asking the First Questions 107 7.3 Eliciting Requirements 108 7.3.1 Collaborative Requirements Gathering 109 7.3.2 Quality Function Deployment 112 7.3.3 Usage Scenarios 112 7.3.4 Elicitation Work Products 113 7.3.5 Agile Requirements Elicitation 114 7.3.6 Service-Oriented Methods 114 7.4 Developing Use Cases 115 7.5 Building the Analysis Model 120 7.5.1 Elements of the Analysis Model 120 7.5.2 Analysis Patterns 123 7.5.3 Agile Requirements Engineering 124 7.5.4 Requirements for Self-Adaptive Systems 124 7.6 Avoiding Common Mistakes 125 PROBLEMS AND POINTS TO PONDER 125 FURTHER READINGS AND OTHER INFORMATION SOURCES 126 CHAPTER 8 REQUIREMENTS MODELING: SCENARIO-BASED METHODS 128 8.1 Requirements Analysis 129 8.1.1 Overall Objectives and Philosophy 130 8.1.2 Analysis Rules of Thumb 131 8.1.3 Domain Analysis 132 8.1.4 Requirements Modeling Approaches 133 8.2 Scenario-Based Modeling 135 8.2.1 Creating a Preliminary Use Case 135 8.2.2 Re ning a Preliminary Use Case 138 8.2.3 Writing a Formal Use Case 139 8.3 UML Models That Supplement the Use Case 141 8.3.1 Developing an Activity Diagram 142 8.3.2 Swimlane Diagrams 143 PROBLEMS AND POINTS TO PONDER 144 FURTHER READINGS AND INFORMATION SOURCES 145 CHAPTER 9 REQUIREMENTS MODELING: CLASS-BASED METHODS 146 9.1 Identifying Analysis Classes 147 9.2 Specifying Attributes 150 9.3 De ning Operations 151 9.4 Class-Responsibility-Collaborator Modeling 154 9.5 Associations and Dependencies 160 9.6 Analysis Packages 161 PROBLEMS AND POINTS TO PONDER 162 FURTHER READINGS AND INFORMATION SOURCES 163 CHAPTER 10 REQUIREMENTS MODELING: BEHAVIOR, PATTERNS, AND燱EB/MOBILE APPS 164 10.1 Creating a Behavioral Model 165 10.2 Identifying Events with the Use Case 165 10.3 State Representations 166 10.4 Patterns for Requirements Modeling 169 10.4.1 Discovering Analysis Patterns 170 10.4.2 A Requirements Pattern Example: Actuator-Sensor 171 PROBLEMS AND POINTS TO PONDER 175 FURTHER READINGS AND INFORMATION SOURCES 176 CHAPTER 11 DESIGN CONCEPTS 177 11.1 Design within the Context of Software Engineering 178 11.2 The Design Process 1811 1.2.1 Software Quality Guidelines and Attributes 181 11.2.2 The Evolution of Software Design 183 11.3 Design Concepts 184 11.3.1 Abstraction 185 11.3.2 Architecture 185 11.3.3 Patterns 186 11.3.4 Separation of Concerns 187 11.3.5 Modularity 187 11.3.6 Information Hiding 188 11.3.7 Functional Independence 189 11.3.8 Re nement 190 11.3.9 Aspects 190 11.3.10 Refactoring 191 11.3.11 Object-Oriented Design Concepts 191 11.3.12 Design Classes 192 11.3.13 Dependency Inversion 194 11.3.14 Design for Test 195 11.4 The Design Model 196 11.4.1 Data Design Elements 197 11.4.2 Architectural Design Elements 197 11.4.3 Interface Design Elements 198 11.4.4 Component-Level Design Elements 200 11.4.5 Deployment-Level Design Elements 201 PROBLEMS AND POINTS TO PONDER 202 FURTHER READINGS AND INFORMATION SOURCES 203 CHAPTER 12 ARCHITECTURAL DESIGN 204 12.1 Software Architecture 205 12.1.1 What Is Architecture 205 12.1.2 Why Is Architecture Important 206 12.1.3 Architectural De******ions 207 12.1.4 Architectural Decisions 208 12.2 Architectural Genres 209 12.3 Architectural Styles 210 12.3.1 A Brief Taxonomy of Architectural Styles 210 12.3.2 Architectural Patterns 215 12.3.3 Organization and Re nement 215 12.4 Architectural Considerations 216 12.5 Architectural Decisions 218 12.6 Architectural Design 219 12.6.1 Representing the System in Context 219 12.6.2 De ning Archetypes 221 12.6.3 Re ning the Architecture into Components 222 12.6.4 Describing Instantiations of the System 224 12.6.5 Architectural Design for Web Apps 225 12.6.6 Architectural Design for Mobile Apps 226 12.7 Assessing Alternative Architectural Designs 226 12.7.1 Architectural De******ion Languages 228 12.7.2 Architectural Reviews 229 12.8 Lessons Learned 230 12.9 Pattern-based Architecture Review 230 12.10 Architecture Conformance Checking 231 12.11 Agility and Architecture 232 PROBLEMS AND POINTS TO PONDER 234 FURTHER READINGS AND INFORMATION SOURCES 234 CHAPTER 13 COMPONENT-LEVEL DESIGN 236 13.1 What Is a Component 237 13.1.1 An Object-Oriented View 237 13.1.2 The Traditional View 239 13.1.3 A Process-Related View 242 13.2 Designing Class-Based Components 242 13.2.1 Basic Design Principles 243 13.2.2 Component-Level Design Guidelines 246 13.2.3 Cohesion 247 13.2.4 Coupling 249 13.3 Conducting Component-Level Design 250 13.4 Component-Level Design for WebApps 256 13.4.1 Content Design at the Component Level 257 13.4.2 Functional Design at the Component Level 257 13.5 Designing Traditional Components 257 13.6 Component-Based Development 258 13.6.1 Domain Engineering 259 13.6.2 Component Quali cation, Adaptation, and Composition 259 13.6.3 Architectural Mismatch 261 13.6.4 Analysis and Design for Reuse 262 13.6.5 Classifying and Retrieving Components 262 PROBLEMS AND POINTS TO PONDER 264 FURTHER READINGS AND INFORMATION SOURCES 264 CHAPTER 14 USER INTERFACE DESIGN 266 14.1 The Golden Rules 267 14.1.1 Place the User in Control 267 14.1.2 Reduce the User抯 Memory Load 268 14.1.3 Make the Interface Consistent 270 14.2 User Interface Analysis and Design 271 14.2.1 Interface Analysis and Design Models 271 14.2.2 The Process 272 14.3 Interface Analysis 274 14.3.1 User Analysis 274 14.3.2 Task Analysis and Modeling 275 14.3.3 Analysis of Display Content 280 14.3.4 Analysis of the Work Environment 280 14.4 Interface Design Steps 281 14.4.1 Applying Interface Design Steps 281 14.4.2 User Interface Design Patterns 283 14.4.3 Design Issues 284 14.5 Design Evaluation 286 PROBLEMS AND POINTS TO PONDER 288 FURTHER READINGS AND INFORMATION SOURCES 289 PART THREE QUALITY MANAGEMENT 291 CHAPTER 15 QUALITY CONCEPTS 292 15.1 What Is Quality 293 15.2 Software Quality 294 15.2.1 Garvin抯 Quality Dimensions 295 15.2.2 McCall抯 Quality Factors 296 15.2.3 ISO 9126 Quality Factors 298 15.2.4 Targeted Quality Factors 298 15.2.5 The Transition to a Quantitative View 300 15.3 The Software Quality Dilemma 300 15.3.1 揋ood Enough?Software 301 15.3.2 The Cost of Quality 302 15.3.3 Risks 304 15.3.4 Negligence and Liability 305 15.3.5 Quality and Security 305 15.3.6 The Impact of Management Actions 306 15.4 Achieving Software Quality 307 15.4.1 Software Engineering Methods 307 15.4.2 Project Management Techniques 307 15.4.3 Quality Control 307 15.4.4 Quality Assurance 308 PROBLEMS AND POINTS TO PONDER 308 FURTHER READINGS AND INFORMATION SOURCES 309 CHAPTER 16 SOFTWARE QUALITY ASSURANCE 310 16.1 Background Issues 311 16.2 Elements of Software Quality Assurance 312 16.3 SQA Processes and Product Characteristics 314 16.4 SQA Tasks, Goals, and Metrics 314 16.4.1 SQA Tasks 315 16.4.2 Goals, Attributes, and Metrics 316 16.5 Formal Approaches to SQA 318 16.6 Statistical Software Quality Assurance 318 16.6.1 A Generic Example 319 16.6.2 Six Sigma for Software Engineering 320 16.7 Software Reliability 321 16.7.1 Measures of Reliability and Availability 321 16.7.2 Software Safety 322 16.8 The ISO 9000 Quality Standards 323 16.9 The SQA Plan 325 16.10 A Framework for Product Metrics 325 16.10.1 Measures, Metrics, and Indicators 325 16.10.2 The Challenge of Product Metrics 326 16.10.3 Measurement Principles 327 16.10.4 Goal-Oriented Software Measurement 327 16.10.5 The Attributes of Effective Software Metrics 328 PROBLEMS AND POINTS TO PONDER 329 FURTHER READINGS AND INFORMATION SOURCES 330 CHAPTER 17 SOFTWARE TESTING STRATEGIES 332 17.1 A Strategic Approach to Software Testing 332 17.1.1 Veri cation and Validation 334 17.1.2 Organizing for Software Testing 334 17.1.3 Software Testing Strategy桾he Big Picture 335 17.1.4 Criteria for Completion of Testing 338 17.2 Strategic Issues 338 17.3 Test Strategies for Conventional Software 339 17.3.1 Unit Testing 339 17.3.2 Integration Testing 341 17.4 Test Strategies for Object-Oriented Software 347 17.4.1 Unit Testing in the OO Context 347 17.4.2 Integration Testing in the OO Context 347 17.5 Validation Testing 348 17.5.1 Validation-Test Criteria 348 17.5.2 Con guration Review 349 17.5.3 Alpha and Beta Testing 349 17.6 System Testing 350 17.6.1 Recovery Testing 350 17.6.2 Security Testing 351 17.6.3 Stress Testing 351 17.6.4 Performance Testing 352 17.6.5 Deployment Testing 352 17.7 The Art of Debugging 353 17.7.1 The Debugging Process 353 17.7.2 Psychological Considerations 354 17.7.3 Debugging Strategies 355 17.7.4 Correcting the Error 357 PROBLEMS AND POINTS TO PONDER 357 FURTHER READINGS AND INFORMATION SOURCES 358 CHAPTER 18 TESTING CONVENTIONAL APPLICATIONS 360 18.1 Software Testing Fundamentals 361 18.2 Internal and External Views of Testing 363 18.3 White-Box Testing 364 18.4 Basis Path Testing 364 18.4.1 Flow Graph Notation 364 18.4.2 Independent Program Paths 366 18.4.3 Deriving Test Cases 368 18.5 Control Structure Testing 370 18.6 Black-Box Testing 372 18.6.1 Equivalence Partitioning 372 18.6.2 Boundary Value Analysis 373 18.7 Model-Based Testing 374 PROBLEMS AND POINTS TO PONDER 375 FURTHER READINGS AND INFORMATION SOURCES 375 CHAPTER 19 TESTING OBJECT-ORIENTED APPLICATIONS 377 19.1 Broadening the View of Testing 378 19.2 Testing OOA and OOD Models 379 19.2.1 Correctness of OOA and OOD Models 379 19.2.2 Consistency of Object-Oriented Models 380 19.3 Object-Oriented Testing Strategies 382 19.3.1 Unit Testing in the OO Context 382 19.3.2 Integration Testing in the OO Context 383 19.3.3 Validation Testing in an OO Context 383 19.4 Object-Oriented Testing Methods 383 19.4.1 The Test-Case Design Implications of OO Concepts 384 19.4.2 Applicability of Conventional Test-Case Design Methods 385 19.4.3 Fault-Based Testing 385 19.4.4 Scenario-Based Test Design 386 19.5 Testing Methods Applicable at the Class Level 386 19.5.1 Random Testing for OO Classes 386 19.5.2 Partition Testing at the Class Level 387 19.6 Interclass Test-Case Design 388 19.6.1 Multiple Class Testing 388 19.6.2 Tests Derived from Behavior Models 390 PROBLEMS AND POINTS TO PONDER 391 FURTHER READINGS AND INFORMATION SOURCES 392 CHAPTER 20 SECURITY ENGINEERING 393 20.1 Analyzing Security Requirements 394 20.2 Security and Privacy in an Online World 395 20.2.1 Social Media 396 20.2.2 Mobile Applications 396 20.2.3 Cloud Computing 396 20.2.4 The Internet of Things 397 20.3 Security Engineering Analysis 397 20.3.1 Security Requirement Elicitation 398 20.3.2 Security Modeling 399 20.3.3 Measures Design 400 20.3.4 Correctness Checks 400 20.4 Security Assurance 401 20.4.1 The Security Assurance Process 401 20.4.2 Organization and Management 402 20.5 Security Risk Analysis 403 20.6 The Role of Conventional Software Engineering Activities 404 20.7 Veri cation of Trustworthy Systems 406 PROBLEMS AND POINTS TO PONDER 408 FURTHER READINGS AND INFORMATION SOURCES 408 CHAPTER 21 SOFTWARE CONFIGURATION MANAGEMENT 410 21.1 Software Con guration Management 411 21.1.1 An SCM Scenario 412 21.1.2 Elements of a Con guration Management System 413 21.1.3 Baselines 413 21.1.4 Software Con guration Items 415 21.1.5 Management of Dependencies and Changes 415 21.2 The SCM Repository 417 21.2.1 General Features and Content 417 21.2.2 SCM Features 418 21.3 The SCM Process 419 21.3.1 Identi cation of Objects in the Software Con guration 420 21.3.2 Version Control 421 21.3.3 Change Control 422 21.3.4 Impact Management 425 21.3.5 Con guration Audit 426 21.3.6 Status Reporting 426 PROBLEMS AND POINTS TO PONDER 427 FURTHER READINGS AND INFORMATION SOURCES 428 PART FOUR MANAGING SOFTWARE PROJECTS 431 CHAPTER 22 PROJECT MANAGEMENT CONCEPTS 432 22.1 The Management Spectrum 433 22.1.1 The People 433 22.1.2 The Product 434 22.1.3 The Process 434 22.1.4 The Project 434 22.2 People 435 22.2.1 The Stakeholders 435 22.2.2 Team Leaders 436 22.2.3 The Software Team 437 22.2.4 Agile Teams 439 22.2.5 Coordination and Communication Issues 440 22.3 The Product 441 22.3.1 Software Scope 442 22.3.2 Problem Decomposition 442 22.4 The Process 442 22.4.1 Melding the Product and the Process 443 22.4.2 Process Decomposition 444 22.5 The Project 445 22.6 The W5HH Principle 446 22.7 Critical Practices 447 PROBLEMS AND POINTS TO PONDER 448 FURTHER READINGS AND INFORMATION SOURCES 448 CHAPTER 23 PROCESS AND PROJECT METRICS 451 23.1 Metrics in the Process and Project Domains 452 23.1.1 Process Metrics and Software Process Improvement 452 23.1.2 Project Metrics 455 23.2 Software Measurement 456 23.2.1 Size-Oriented Metrics 457 23.2.2 Function-Oriented Metrics 458 23.2.3 Reconciling LOC and FP Metrics 459 23.2.4 Object-Oriented Metrics 461 23.2.5 Use Case-Oriented Metrics 462 23.3 Metrics for Software Quality 462 23.3.1 Measuring Quality 463 23.3.2 Defect Removal Ef ciency 464 PROBLEMS AND POINTS TO PONDER 466 FURTHER READINGS AND INFORMATION SOURCES 467 CHAPTER 24 ESTIMATION FOR SOFTWARE PROJECTS 469 24.1 Observations on Estimation 470 24.2 The Project Planning Process 471 24.3 Software Scope and Feasibility 472 24.4 Resources 473 24.4.1 Human Resources 473 24.4.2 Reusable Software Resources 474 24.4.3 Environmental Resources 474 24.5 Software Project Estimation 475 24.6 Decomposition Techniques 476 24.6.1 Software Sizing 476 24.6.2 Problem-Based Estimation 477 24.6.3 An Example of LOC-Based Estimation 478 24.6.4 An Example of FP-Based Estimation 480 24.6.5 Process-Based Estimation 481 24.6.6 An Example of Process-Based Estimation 482 24.6.7 Estimation with Use Cases 482 24.6.8 An Example of Estimation Using Use Case Points 484 24.6.9 Reconciling Estimates 484 24.7 Empirical Estimation Models 485 24.7.1 The Structure of Estimation Models 486 24.7.2 The COCOMO II Model 486 24.7.3 The Software Equation 486 24.8 Estimation for Object-Oriented Projects 488 PROBLEMS AND POINTS TO PONDER 488 FURTHER READINGS AND INFORMATION SOURCES 489 CHAPTER 25 PROJECT SCHEDULING 490 25.1 Basic Concepts 491 25.2 Project Scheduling 493 25.2.1 Basic Principles 494 25.2.2 The Relationship between People and Effort 495 25.2.3 Effort Distribution 496 25.3 De ning a Task Set for the Software Project 497 25.3.1 A Task Set Example 498 25.3.2 Re nement of Major Tasks 499 25.4 De ning a Task Network 500 25.5 Scheduling 501 25.5.1 Time-Line Charts 502 25.5.2 Tracking the Schedule 503 25.5.3 Tracking Progress for an OO Project 504 25.6 Earned Value Analysis 505 PROBLEMS AND POINTS TO PONDER 508 FURTHER READINGS AND INFORMATION SOURCES 509 CHAPTER 26 RISK MANAGEMENT 510 26.1 Reactive versus Proactive Risk Strategies 511 26.2 Software Risks 511 26.3 Risk Identi cation 513 26.3.1 Assessing Overall Project Risk 514 26.3.2 Risk Components and Drivers 515 26.4 Risk Projection 515 26.4.1 Developing a Risk Table 516 26.4.2 Assessing Risk Impact 518 26.5 Risk Re nement 520 26.6 Risk Mitigation, Monitoring, and Management 521 26.7 The RMMM Plan 523 PROBLEMS AND POINTS TO PONDER 525 FURTHER READINGS AND INFORMATION SOURCES 526 APPENDIX 1 AN INTRODUCTION TO UML 527 APPENDIX 2 OBJECT-ORIENTED CONCEPTS 548 REFERENCES 556
你還可能感興趣
我要評(píng)論
|