图书介绍
软件工程 实践者的研究方法 第8版 英文版PDF|Epub|txt|kindle电子书版本网盘下载
![软件工程 实践者的研究方法 第8版 英文版](https://www.shukui.net/cover/15/30953986.jpg)
- (美)普莱斯曼,(美)马克西姆著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111489504
- 出版时间:2015
- 标注页数:941页
- 文件大小:160MB
- 文件页数:969页
- 主题词:软件工程-英文
PDF下载
下载说明
软件工程 实践者的研究方法 第8版 英文版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
CHAPTER 1 THE NATURE OF SOFTWARE1
1.1 The Nature of Software3
1.1.1 Defining Software4
1.1.2 Software Application Domains6
1.1.3 Legacy Software7
1.2 The Changing Nature of Software9
1.2.1 WebApps9
1.2.2 Mobile Applications9
1.2.3 Cloud Computing10
1.2.4 Product Line Software11
1.3 Summary11
PROBLEMS AND POINTS TO PONDER12
FURTHER READINGS AND INFORMATION SOURCES12
CHAPTER 2 SOFTWARE ENGINEERING14
2.1 Defining the Discipline15
2.2 The Software Process16
2.2.1 The Process Framework17
2.2.2 Umbrella Activities18
2.2.3 Process Adaptation18
2.3 Software Engineering Practice19
2.3.1 The Essence of Practice19
2.3.2 General Principles21
2.4 Software Development Myths23
2.5 How It All Starts26
2.6 Summary27
PROBLEMS AND POINTS TO PONDER27
FURTHER READINGS AND INFORMATION SOURCES27
PART ONE THE SOFTWAREP ROCESS29
CHAPTER 3 SOFTWARE PROCESS STRUCTURE30
3.1 A Generic Process Model31
3.2 Defining a Framework Activity32
3.3 Identifying a Task Set34
3.4 Process Patterns35
3.5 Process Assessment and Improvement37
3.6 Summary38
PROBLEMS AND POINTS TO PONDER38
FURTHER READINGS AND INFORMATION SOURCES39
CHAPTER 4 PROCESS MODELS40
4.1 Prescriptive Process Models41
4.1.1 The Waterfall Model41
4.1.2 Incremental Process Models43
4.1.3 Evolutionary Process Models45
4.1.4 Concurrent Models49
4.1.5 A Final Word on Evolutionary Processes51
4.2 Specialized Process Models52
4.2.1 Component-Based Development53
4.2.2 The Formal Methods Model53
4.2.3 Aspect-Oriented Software Development54
4.3 The Unified Process55
4.3.1 A Brief History56
4.3.2 Phases of the Unified Process56
4.4 Personal and Team Process Models59
4.4.1 Personal Software Process59
4.4.2 Team Software Process60
4.5 Process Technology61
4.6 Product and Process62
4.7 Summary64
PROBLEMS AND POINTS TO PONDER64
FURTHER READINGS AND INFORMATION SOURCES65
CHAPTER 5 AGILE DEVELOPMENT66
5.1 What Is Agility?68
5.2 Agility and the Cost of Change68
5.3 What Is an Agile Process?69
5.3.1 Agility Principles70
5.3.2 The Politics of Agile Development71
5.4 Extreme Programming72
5.4.1 The XP Process72
5.4.2 Industrial XP75
5.5 Other Agile Process Models77
5.5.1 Scrum78
5.5.2 Dynamic Systems Development Method79
5.5.3 Agile Modeling80
5.5.4 Agile Unified Process82
5.6 A Tool Set for the Agile Process83
5.7 Summary84
PROBLEMS AND POINTS TO PONDER85
FURTHER READINGS AND INFORMATION SOURCES85
CHAPTER 6 HUMAN ASPECTS OF SOFTWARE ENGINEERING87
6.1 Characteristics of a Software Engineer88
6.2 The Psychology of Software Engineering89
6.3 The Software Team90
6.4 Team Structures92
6.5 Agile Teams93
6.5.1 The Generic Agile Team93
6.5.2 The XP Team94
6.6 The Impact Of Social Media95
6.7 Software Engineering Using the Cloud97
6.8 Collaboration Tools98
6.9 Global Teams99
6.10 Summary100
PROBLEMS AND POINTS TO PONDER101
FURTHER READINGS AND INFORMATION SOURCES102
PART TWO MODELING103
CHAPTER 7 PRINCIPLES THAT GUIDE PRACTICE104
7.1 Software Engineering Knowledge105
7.2 Core Principles106
7.2.1 Principles That Guide Process106
7.2.2 Principles That Guide Practice107
7.3 Principles That Guide Each Framework Activity109
7.3.1 Communication Principles110
7.3.2 Planning Principles112
7.3.3 Modeling Principles114
7.3.4 Construction Principles121
7.3.5 Deployment Principles125
7.4 Work Practices126
7.5 Summary127
PROBLEMS AND POINTS TO PONDER128
FURTHER READINGS AND INFORMATION SOURCES129
CHAPTER 8 UNDERSTANDING REQUIREMENTS131
8.1 Requirements Engineering132
8.2 Establishing the Groundwork138
8.2.1 Identifying Stakeholders139
8.2.2 Recognizing Multiple Viewpoints139
8.2.3 Working toward Collaboration140
8.2.4 Asking the First Questions140
8.2.5 Nonfunctional Requirements141
8.2.6 Traceability142
8.3 Eliciting Requirements142
8.3.1 Collaborative Requirements Gathering143
8.3.2 Quality Function Deployment146
8.3.3 Usage Scenarios146
8.3.4 Elicitation Work Products147
8.3.5 Agile Requirements Elicitation148
8.3.6 Service-Oriented Methods148
8.4 Developing Use Cases149
8.5 Building the Analysis Model154
8.5.1 Elements of the Analysis Model154
8.5.2 Analysis Patterns157
8.5.3 Agile Requirements Engineering158
8.5.4 Requirements for Self-Adaptive Systems158
8.6 Negotiating Requirements159
8.7 Requirements Monitoring160
8.8 Validating Requirements161
8.9 Avoiding Common Mistakes162
8.10 Summary162
PROBLEMS AND POINTS TO PONDER163
FURTHER READINGS AND OTHER INFORMATION SOURCES164
CHAPTER 9 REQUIREMENTS MODELING:SCENARIO-BASED METHODS166
9.1 Requirements Analysis167
9.1.1 Overall Objectives and Philosophy168
9.1.2 Analysis Rules of Thumb169
9.1.3 Domain Analysis170
9.1.4 Requirements Modeling Approaches171
9.2 Scenario-Based Modeling173
9.2.1 Creating a Preliminary Use Case173
9.2.2 Refining a Preliminary Use Case176
9.2.3 Writing a Formal Use Case177
9.3 UML Models That Supplement the Use Case179
9.3.1 Developing an Activity Diagram180
9.3.2 Swimlane Diagrams181
9.4 Summary182
PROBLEMS AND POINTS TO PONDER182
FURTHER READINGS AND INFORMATION SOURCES183
CHAPTER 10 REQUIREMENTS MODELING:CLASS-BASED METHODS184
10.1 Identifying Analysis Classes185
10.2 Specifying Attributes188
10.3 Defining Operations189
10.4 Class-Responsibility-Collaborator Modeling192
10.5 Associations and Dependencies198
10.6 Analysis Packages199
10.7 Summary200
PROBLEMS AND POINTS TO PONDER201
FURTHER READINGS AND INFORMATION SOURCES201
CHAPTER 11 REQUIREMENTS MODELING:BEHAVIOR,PATTERNS,AND WEB/MOBILE APPS202
11.1 Creating a Behavioral Model203
11.2 Identifying Events with the Use Case203
11.3 State Representations204
11.4 Patterns for Requirements Modeling207
11.4.1 Discovering Analysis Patterns208
11.4.2 A Requirements Pattern Example:Actuator-Sensor209
11.5 Requirements Modeling for Web and Mobile Apps213
11.5.1 How Much Analysis Is Enough?214
11.5.2 Requirements Modeling Input214
11.5.3 Requirements Modeling Output215
11.5.4 Content Model216
11.5.5 Interaction Model for Web and Mobile Apps217
11.5.6 Functional Model218
11.5.7 Configuration Models for Web Apps219
11.5.8 Navigation Modeling220
11.6 Summary221
PROBLEMS AND POINTS TO PONDER222
FURTHER READINGS AND INFORMATION SOURCES222
CHAPTER 12 DESIGN CONCEPTS224
12.1 Design within the Context of Software Engineering225
12.2 The Design Process228
12.2.1 Software Quality Guidelines and Attributes228
12.2.2 The Evolution of Software Design230
12.3 Design Concepts231
12.3.1 Abstraction232
12.3.2 Architecture232
12.3.3 Patterns233
12.3.4 Separation of Concerns234
12.3.5 Modularity234
12.3.6 Information Hiding235
12.3.7 Functional Independence236
12.3.8 Refinement237
12.3.9 Aspects237
12.3.10 Refactoring238
12.3.11 Object-Oriented Design Concepts238
12.3.12 Design Classes239
12.3.13 Dependency Inversion241
12.3.14 Design for Test242
12.4 The Design Model243
12.4.1 Data Design Elements244
12.4.2 Architectural Design Elements244
12.4.3 Interface Design Elements245
12.4.4 Component-Level Design Elements247
12.4.5 Deployment-Level Design Elements248
12.5 Summary249
PROBLEMS AND POINTS TO PONDER250
FURTHER READINGS AND INFORMATION SOURCES251
CHAPTER 13 ARCHITECTURAL DESIGN252
13.1 Software Architecture253
13.1.1 What Is Architecture?253
13.1.2 Why Is Architecture Important?254
13.1.3 Architectural Descriptions255
13.1.4 Architectural Decisions256
13.2 Architectural Genres257
13.3 Architectural Styles258
13.3.1 A Brief Taxonomy of Architectural Styles258
13.3.2 Architectural Patterns263
13.3.3 Organization and Refinement263
13.4 Architectural Considerations264
13.5 Architectural Decisions266
13.6 Architectural Design267
13.6.1 Representing the System in Context267
13.6.2 Defining Archetypes269
13.6.3 Refining the Architecture into Components270
13.6.4 Describing Instantiations of the System272
13.6.5 Architectural Design for Web Apps273
13.6.6 Architectural Design for Mobile Apps274
13.7 Assessing Alternative Architectural Designs274
13.7.1 Architectural Description Languages276
13.7.2 Architectural Reviews277
13.8 Lessons Learned278
13.9 Pattern-based Architecture Review278
13.10 Architecture Conformance Checking279
13.11 Agility and Architecture280
13.12 Summary282
PROBLEMS AND POINTS TO PONDER282
FURTHER READINGS AND INFORMATION SOURCES283
CHAPTER 14 COMPONENT-LEVEL DESIGN285
14.1 What Is a Component?286
14.1.1 An Object-Oriented View286
14.1.2 The Traditional View288
14.1.3 A Process-Related View291
14.2 Designing Class-Based Components291
14.2.1 Basic Design Principles292
14.2.2 Component-Level Design Guidelines295
14.2.3 Cohesion296
14.2.4 Coupling298
14.3 Conducting Component-Level Design299
14.4 Component-Level Design for WebApps305
14.4.1 Content Design at the Component Level306
14.4.2 Functional Design at the Component Level306
14.5 Component-Level Design for Mobile Apps306
14.6 Designing Troditional Components307
14.7 Component-Based Development308
14.7.1 Domain Engineering308
14.7.2 Component Qualification,Adaptation,and Composition309
14.7.3 Architectural Mismatch311
14.7.4 Analysis and Design for Reuse312
14.7.5 Classifying and Retrieving Components312
14.8 Summary313
PROBLEMS AND POINTS TO PONDER315
FURTHER READINGS AND INFORMATION SOURCES315
CHAPTER 15 USER INTERFACE DESIGN317
15.1 The Golden Rules318
15.1.1 Place the User in Control318
15.1.2 Reduce the User's Memory Load319
15.1.3 Make the Interface Consistent321
15.2 User Interface Analysis and Design322
15.2.1 Interface Analysis and Design Models322
15.2.2 The Process323
15.3 Interface Analysis325
15.3.1 User Analysis325
15.3.2 Task Analysis and Modeling326
15.3.3 Analysis of Display Content331
15.3.4 Analysis of the Work Environment331
15.4 Interface Design Steps332
15.4.1 Applying Interface Design Steps332
15.4.2 User Interface Design Patterns334
15.4.3 Design Issues335
15.5 WebApp and Mobile Interface Design337
15.5.1 Interface Design Principles and Guidelines337
15.5.2 Interface Design Workflow for Web and Mobile Apps341
15.6 Design Evaluation342
15.7 Summary344
PROBLEMS AND POINTS TO PONDER345
FURTHER READINGS AND INFORMATION SOURCES346
CHAPTER 16 PATTERN-BASED DESIGN347
16.1 Design Patterns348
16.1.1 Kinds Of Patterns349
16.1.2 Frameworks351
16.1.3 Describing a Pattern352
16.1.4 Pattern Languages and Repositories353
16.2 Pattern-Based Software Design354
16.2.1 Pattern-Based Design in Context354
16.2.2 Thinking in Patterns354
16.2.3 Design Tasks356
16.2.4 Building a Pattern-Organizing Table358
16.2.5 Common Design Mistakes359
16.3 Architectural Patterns359
16.4 Component-Level Design Patterns360
16.5 User Interface Design Patterns362
16.6 WebApp Design Patterns364
16.6.1 Design Focus365
16.6.2 Design Granularity365
16.7 Patterns for Mobile Apps366
16.8 Summary367
PROBLEMS AND POINTS TO PONDER368
FURTHER READINGS AND INFORMATION SOURCES369
CHAPTER 17 WEBAPP DESIGN371
17.1 WebApp Design Quality372
17.2 Design Goals374
17.3 A Design Pyramid for WebApps375
17.4 WebApp Interface Design376
17.5 Aesthetic Design377
17.5.1 Layout Issues378
17.5.2 Graphic Design Issues378
17.6 Content Design379
17.6.1 Content Objects379
17.6.2 Content Design Issues380
17.7 Architecture Design381
17.7.1 Content Architecture381
17.7.2 WebApp Architecture384
17.8 Navigation Design385
17.8.1 Navigation Semantics385
17.8.2 Navigation Syntax387
17.9 Component-Level Design387
17.10 Summary388
PROBLEMS AND POINTS TO PONDER389
FURTHER READINGS AND INFORMATION SOURCES389
CHAPTER 18 MOBILEAPP DESIGN391
18.1 The Challenges392
18.1.1 Development Considerations392
18.1.2 Technical Considerations393
18.2 Developing MobileApps395
18.2.1 MobileApp Quality397
18.2.2 User Interface Design398
18.2.3 Context-Aware Apps399
18.2.4 Lessons Learned400
18.3 MobileApp Design-Best Practices401
18.4 Mobility Environments403
18.5 The Cloud405
18.6 The Applicability of Conventional Software Engineering407
18.7 Summary408
PROBLEMS AND POINTS TO PONDER409
FURTHER READINGS AND INFORMATION SOURCES409
PART THREE QUALITY MANAGEMENT411
CHAPTER 19 QUALITY CONCEPTS412
19.1 What Is Quality?413
19.2 Software Quality414
19.2.1 Garvin's Quality Dimensions415
19.2.2 McCall's Quality Factors416
19.2.3 ISO 9126 Quality Factors418
19.2.4 Targeted Quality Factors418
19.2.5 The Transition to a Quantitative View420
19.3 The Software Quality Dilemma420
19.3.1 "Good Enough"Software421
19.3.2 The Cost of Quality422
19.3.3 Risks424
19.3.4 Negligence and Liability425
19.3.5 Quality and Security425
19.3.6 The Impact of Management Actions426
19.4 Achieving Software Quality427
19.4.1 Software Engineering Methods427
19.4.2 Project Management Techniques427
19.4.3 Quality Control427
19.4.4 Quality Assurance428
19.5 Summary428
PROBLEMS AND POINTS TO PONDER429
FURTHER READINGS AND INFORMATION SOURCES429
CHAPTER 20 REVIEW TECHNIQUES431
20.1 Cost Impact of Software Defects432
20.2 Defect Amplification and Removal433
20.3 Review Metrics and Their Use435
20.3.1 Analyzing Metrics435
20.3.2 Cost-Effectiveness Of Reviews436
20.4 Reviews:A Formality Spectrum438
20.5 Informal Reviews439
20.6 Formal Technical Reviews441
20.6.1 The Review Meeting441
20.6.2 Review Reporting and Record Keeping442
20.6.3 Review Guidelines442
20.6.4 Sample-Driven Reviews444
20.7 Post-Mortem Evaluations445
20.8 Summary446
PROBLEMS AND POINTS TO PONDER446
FURTHER READINGS AND INFORMATION SOURCES447
CHAPTER 21 SOFTWARE QUALITY ASSURANCE448
21.1 Background Issues449
21.2 Elements of Software Quality Assurance450
21.3 SQA Processes and Product Characteristics452
21.4 SQA Tasks,Goals,and Metrics452
21.4.1 SQA Tasks453
21.4.2 Goals,Attributes,and Metrics454
21.5 Formal Approaches to SQA456
21.6 Statistical Software Quality Assurance456
21.6.1 A Generic Example457
21.6.2 Six Sigma for Software Engineering458
21.7 Software Reliability459
21.7.1 Measures of Reliability and Availability459
21.7.2 Software Safety460
21.8 The ISO 9000 Quality Standards461
21.9 The SQA Plan463
21.10 Summary463
PROBLEMS AND POINTS TO PONDER464
FURTHER READINGS AND INFORMATION SOURCES464
CHAPTER 22 SOFTWARE TESTING STRATEGIES466
22.1 A Strategic Approach to Software Testing466
22.1.1 Verification and Validation468
22.1.2 Organizing for Software Testing468
22.1.3 Software Testing Strategy-The Big Picture469
22.1.4 Criteria for Completion of Testing472
22.2 Strategic Issues472
22.3 Test Strategies for Conventional Software473
22.3.1 Unit Testing473
22.3.2 Integration Testing475
22.4 Test Strategies for Object-Oriented Software481
22.4.1 Unit Testing in the OO Context481
22.4.2 Integration Testing in the OO Context481
22.5 Test Strategies for WebApps482
22.6 Test Strategies for MobileApps483
22.7 Validation Testing483
22.7.1 Validation-Test Criteria484
22.7.2 Configuration Review484
22.7.3 Alpha and Beta Testing484
22.8 System Testing486
22.8.1 Recovery Testing486
22.8.2 Security Testing486
22.8.3 Stress Testing487
22.8.4 Performance Testing487
22.8.5 Deployment Testing487
22.9 The Art of Debugging488
22.9.1 The Debugging Process488
22.9.2 Psychological Considerations490
22.9.3 Debugging Strategies491
22.9.4 Correcting the Error492
22.10 Summary493
PROBLEMS AND POINTS TO PONDER493
FURTHER READINGS AND INFORMATION SOURCES494
CHAPTER 23 TESTING CONVENTIONAL APPLICATIONS496
23.1 Software Testing Fundamentals497
23.2 Internal and External Views of Testing499
23.3 White-Box Testing500
23.4 Basis Path Testing500
23.4.1 Flow Graph Notation500
23.4.2 Independent Program Paths502
23.4.3 Deriving Test Cases504
23.4.4 Graph Matrices506
23.5 Control Structure Testing507
23.6 Black-Box Testing509
23.6.1 Graph-Based Testing Methods509
23.6.2 Equivalence Partitioning511
23.6.3 Boundary Value Analysis512
23.6.4 Orthogonal Array Testing513
23.7 Model-Based Testing516
23.8 Testing Documentation and Help Facilities516
23.9 Testing for Real-Time Systems517
23.10 Patterns for Software Testing519
23.11 Summary520
PROBLEMS AND POINTS TO PONDER521
FURTHER READINGS AND INFORMATION SOURCES521
CHAPTER 24 TESTING OBJECT-ORIENTED APPLICATIONS523
24.1 Broadening the View of Testing524
24.2 Testing OOA and OOD Models525
24.2.1 Correctness of OOA and OOD Models525
24.2.2 Consistency of Object-Oriented Models526
24.3 Object-Oriented Testing Strategies528
24.3.1 Unit Testing in the OO Context528
24.3.2 Integration Testing in the OO Context529
24.3.3 Validation Testing in an OO Context529
24.4 Object-Oriented Testing Methods529
24.4.1 The Test-Case Design Implications of OO Concepts530
24.4.2 Applicability of Conventional Test-Case Design Methods531
24.4.3 Fault-Based Testing531
24.4.4 Scenario-Based Test Design532
24.5 Testing Methods Applicable at the Class Level532
24.5.1 Random Testing for OO Classes532
24.5.2 Partition Testing at the Class Level533
24.6 Interclass Test-Case Design534
24.6.1 Multiple Class Testing534
24.6.2 Tests Derived from Behavior Models536
24.7 Summary537
PROBLEMS AND POINTS TO PONDER538
FURTHER READINGS AND INFORMATION SOURCES538
CHAPTER 25 TESTING WEB APPLICATIONS540
25.1 Testing Concepts for WebApps541
25.1.1 Dimensions of Quality541
25.1.2 Errors within a WebApp Environment542
25.1.3 Testing Strategy543
25.1.4 Test Planning543
25.2 The Testing Process-An Overview544
25.3 Content Testing545
25.3.1 Content Testing Objectives545
25.3.2 Database Testing547
25.4 User Interface Testing549
25.4.1 Interface Testing Strategy549
25.4.2 Testing Interface Mechanisms550
25.4.3 Testing Interface Semantics552
25.4.4 Usability Tests552
25.4.5 Compatibility Tests554
25.5 Component-Level Testing555
25.6 Navigation Testing556
25.6.1 Testing Navigation Syntax556
25.6.2 Testing Navigation Semantics556
25.7 Configuration Testing558
25.7.1 Server-Side Issues558
25.7.2 Client-Side Issues559
25.8 Security Testing559
25.9 Performance Testing560
25.9.1 Performance Testing Objectives561
25.9.2 Load Testing562
25.9.3 Stress Testing562
25.10 Summary563
PROBLEMS AND POINTS TO PONDER564
FURTHER READINGS AND INFORMATION SOURCES565
CHAPTER 26 TESTING MOBILEAPPS567
26.1 Testing Guidelines568
26.2 The Testing Strategies569
26.2.1 Are Conventional Approaches Applicable?570
26.2.2 The Need for Automation571
26.2.3 Building a Test Matrix572
26.2.4 Stress Testing573
26.2.5 Testing in a Production Environment573
26.3 Considering the Spectrum of User Interaction574
26.3.1 Gesture Testing575
26.3.2 Voice Input and Recognition576
26.3.3 Virtual Key Board Input577
26.3.4 Alerts and Extraordinary Conditions577
26.4 Test Across Borders578
26.5 Real-Time Testing Issues578
26.6 Testing Tools and Environments579
26.7 Summary581
PROBLEMS AND POINTS TO PONDER582
FURTHER READINGS AND INFORMATION SOURCES582
CHAPTER 27 SECURITY ENGINEERING584
27.1 Analyzing Security Requirements585
27.2 Security and Privacy in an Online Warld586
27.2.1 Social Media587
27.2.2 Mobile Applications587
27.2.3 Cloud Computing587
27.2.4 The Internet of Things588
27.3 Security Engineering Analysis588
27.3.1 Security Requirement Elicitation589
27.3.2 Security Modeling590
27.3.3 Measures Design591
27.3.4 Correctness Checks591
27.4 Security Assurance592
27.4.1 The Security Assurance Process592
27.4.2 Organization and Management593
27.5 Security Risk Analysis594
27.6 The Role of Conventional Software Engineering Activities595
27.7 Verification of Trustworthy Systems597
27.8 Summary599
PROBLEMS AND POINTS TO PONDER599
FURTHER READINGS AND INFORMATION SOURCES600
CHAPTER 28 FORMAL MODELING AND VERIFICATION601
28.1 The Cleanroom Strategy602
28.2 Functional Specification604
28.2.1 Black-Box Specification605
28.2.2 State-Box Specification606
28.2.3 Clear-Box Specification607
28.3 Cleanroom Design607
28.3.1 Design Refinement608
28.3.2 Design Verification608
28.4 Cleanroom Testing610
28.4.1 Statistical Use Testing610
28.4.2 Certification612
28.5 Rethinking Formal Methods612
28.6 Formal Methods Concepts615
28.7 Alternative Arguments618
28.8 Summary619
PROBLEMS AND POINTS TO PONDER620
FURTHER READINGS AND INFORMATION SOURCES621
CHAPTER 29 SOFTWARE CONFIGURATION MANAGEMENT623
29.1 Software Configuration Management624
29.1.1 An SCM Scenario625
29.1.2 Elements of a Configuration Management System626
29.1.3 Baselines626
29.1.4 Software Configuration Items628
29.1.5 Management of Dependencies and Changes628
29.2 The SCM Repository630
29.2.1 General Features and Content630
29.2.2 SCM Features631
29.3 The SCM Process632
29.3.1 Identification of Objects in the Software Configuration633
29.3.2 Version Control634
29.3.3 Change Control635
29.3.4 Impact Management638
29.3.5 Configuration Audit639
29.3.6 Status Reporting639
29.4 Configuration Management for Web and MobileApps640
29.4.1 Dominant Issues641
29.4.2 Configuration Objects642
29.4.3 Content Management643
29.4.4 Change Management646
29.4.5 Version Control648
29.4.6 Auditing and Reporting649
29.5 Summary650
PROBLEMS AND POINTS TO PONDER651
FURTHER READINGS AND INFORMATION SOURCES651
CHAPTER 30 PRODUCT METRICS653
30.1 A Framework for Product Metrics654
30.1.1 Measures,Metrics,and Indicators654
30.1.2 The Challenge of Product Metrics655
30.1.3 Measurement Principles656
30.1.4 Goal-Oriented Software Measurement656
30.1.5 The Attributes of Effective Software Metrics657
30.2 Metrics for the Requirements Model659
30.2.1 Function-Based Metrics659
30.2.2 Metrics for Specification Quality662
30.3 Metrics for the Design Model663
30.3.1 Architectural Design Metrics663
30.3.2 Metrics for Object-Oriented Design666
30.3.3 Class-Oriented Metrics-The CK Metrics Suite667
30.3.4 Class-Oriented Metrics-The MOOD Metrics Suite670
30.3.5 OO Metrics Proposed by Lorenz and Kidd671
30.3.6 Component-Level Design Metrics671
30.3.7 Operation-Oriented Metrics671
30.3.8 User Interface Design Metrics672
30.4 Design Metrics for Web and Mobile Apps672
30.5 Metrics for Source Code675
30.6 Metrics for Testing676
30.6.1 Halstead Metrics Applied to Testing676
30.6.2 Metrics for Object-Oriented Testing677
30.7 Metrics for Maintenance678
30.8 Summary679
PROBLEMS AND POINTS TO PONDER679
FURTHER READINGS AND INFORMATION SOURCES680
PART FOUR MANAGING SOFTWARE PROJECTS683
CHAPTER 31 PROJECT MANAGEMENT CONCEPTS684
31.1 The Management Spectrum685
31.1.1 The People685
31.1.2 The Product686
31.1.3 The Process686
31.1.4 The Project686
31.2 People687
31.2.1 The Stakeholders687
31.2.2 Team Leaders688
31.2.3 The Software Team689
31.2.4 Agile Teams691
31.2.5 Coordination and Communication Issues692
31.3 The Product693
31.3.1 Software Scope694
31.3.2 Problem Decomposition694
31.4 The Process694
31.4.1 Melding the Product and the Process695
31.4.2 Process Decomposition696
31.5 The Project697
31.6 The W5HH Principle698
31.7 Critical Practices699
31.8 Summaty700
PROBLEMS AND POINTS TO PONDER700
FURTHER READINGS AND INFORMATION SOURCES701
CHAPTER 32 PROCESS AND PROJECT METRICS703
32.1 Metrics in the Process and Project Domains704
32.1.1 Process Metrics and Software Process Improvement704
32.1.2 Project Metrics707
32.2 Software Measurement708
32.2.1 Size-Oriented Metrics709
32.2.2 Function-Driented Metrics710
32.2.3 Reconciling LOC and FP Metrics711
32.2.4 Object-Oriented Metrics713
32.2.5 Use Case-Oriented Metrics714
32.2.6 WebApp Project Metrics714
32.3 Metrics for Software Quality716
32.3.1 Measuring Quality717
32.3.2 Defect Removal Efficiency718
32.4 Integrating Metrics within the Software Process719
32.4.1 Arguments for Software Metrics720
32.4.2 Establishing a Baseline720
32.4.3 Metrics Collection,Computation and Evaluation721
32.5 Metrics for Small Organizations721
32.6 Establishing a Software Metrics Program722
32.7 Summary724
PROBLEMS AND POINTS TO PONDER724
FURTHER READINGS AND INFORMATION SOURCES725
CHAPTER 33 ESTIMATION FOR SOFTWARE PROJECTS727
33.1 Observations on Estimation728
33.2 The Project Planning Process729
33.3 Software Scope and Feasibility730
33.4 Resources731
33.4.1 Human Resources731
33.4.2 Reusable Software Resources732
33.4.3 Environmental Resources732
33.5 Software Project Estimation733
33.6 Decomposition Techniques734
33.6.1 Software Sizing734
33.6.2 Problem-Based Estimation735
33.6.3 An Example of LOC-Based Estimation736
33.6.4 An Example of FP-Based Estimation738
33.6.5 Process-Based Estimation739
33.6.6 An Example of Process-Based Estimation740
33.6.7 Estimation with Use Cases740
33.6.8 An Example of Estimation Using Use Case Points742
33.6.9 Reconciling Estimates742
33.7 Empirical Estimation Models743
33.7.1 The Structure of Estimation Models744
33.7.2 The COCOMOⅡ Model744
33.7.3 The Software Equation744
33.8 Estimation for Object-Oriented Projects746
33.9 Specialized Estimation Techniques746
33.9.1 Estimation for Agile Development746
33.9.2 Estimation for WebApp Projects747
33.10 The Make/Buy Decision748
33.10.1 Creating a Decision Tree749
33.10.2 Outsourcing750
33.11 Summary752
PROBLEMS AND POINTS TO PONDER752
FURTHER READINGS AND INFORMATION SOURCES753
CHAPTER 34 PROJECT SCHEDULING754
34.1 Basic Concepts755
34.2 Project Scheduling757
34.2.1 Basic Principles758
34.2.2 The Relationship between People and Effort759
34.2.3 Effort Distribution760
34.3 Defining a Task Set for the Software Project761
34.3.1 A Task Set Example762
34.3.2 Refinement of Major Tasks763
34.4 Defining a Task Network764
34.5 Scheduling765
34.5.1 Time-Line Charts766
34.5.2 Tracking the Schedule767
34.5.3 Tracking Progress for an OO Project768
34.5.4 Scheduling for WebApp and Mobile Projects769
34.6 Earned Value Analysis772
34.7 Summary774
PROBLEMS AND POINTS TO PONDER774
FURTHER READINGS AND INFORMATION SOURCES776
CHAPTER 35 RISK MANAGEMENT777
35.1 Reactive versus Proactive Risk Strategies778
35.2 Software Risks778
35.3 Risk Identification780
35.3.1 Assessing Overall Project Risk781
35.3.2 Risk Components and Drivers782
35.4 Risk Projection782
35.4.1 Developing a Risk Table783
35.4.2 Assessing Risk Impact785
35.5 Risk Refinement787
35.6 Risk Mitigation,Monitoring,and Management788
35.7 The RMMM Plan790
35.8 Summary792
PROBLEMS AND POINTS TO PONDER792
FURTHER READINGS AND INFORMATION SOURCES793
CHAPTER 36 MAINTENANCE AND REENGINEERING795
36.1 Software Maintenance796
36.2 Software Supportability798
36.3 Reengineering798
36.4 Business Process Reengineering799
36.4.1 Business Processes799
36.4.2 A BPR Model800
36.5 Software Reengineering802
36.5.1 A Software Reengineering Process Model802
36.5.2 Software Reengineering Activities803
36.6 Reverse Engineering805
36.6.1 Reverse Engineering to Understand Data807
36.6.2 Reverse Engineering to Understand Processing807
36.6.3 Reverse Engineering User Interfaces808
36.7 Restructuring809
36.7.1 Code Restructuring809
36.7.2 Data Restructuring810
36.8 Forward Engineering811
36.8.1 Forward Engineering for Client-Server Architectures812
36.8.2 Forward Engineering for Object-Oriented Architectures813
36.9 The Economics of Reengineering813
36.10 Summary814
PROBLEMS AND POINTS TO PONDER815
FURTHER READINGS AND INFORMATION SOURCES816
PART FIVE ADVANCED TOPICS817
CHAPTER 37 SOFTWARE PROCESS IMPROVEMENT818
37.1 What Is SPI?819
37.1.1 Approaches to SPI819
37.1.2 Maturity Models821
37.1.3 Is SPI for Everyone?822
37.2 The SPI Process823
37.2.1 Assessment and Gap Analysis823
37.2.2 Education and Trainina825
37.2.3 Selection and Justification825
37.2.4 Installation/Migration826
37.2.5 Evaluation827
37.2.6 Risk Management for SPI827
37.3 The CMMI828
37.4 The People CMM832
37.5 Other SPI Frameworks832
37.6 SPI Return on Investment834
37.7 SPI Trends835
37.8 Summary836
PROBLEMS AND POINTS TO PONDER837
FURTHER READINGS AND INFORMATION SOURCES837
CHAPTER 38 EMERGING TRENDS IN SOFTWARE ENGINEERING839
38.1 Technology Evolution840
38.2 Prospects for a True Engineering Discipline841
38.3 Observing Software Engineering Trends842
38.4 Identifying"Soft Trends"843
38.4.1 Managing Complexity845
38.4.2 Open-World Software846
38.4.3 Emergent Requirements846
38.4.4 The Talent Mix847
38.4.5 Software Building Blocks847
38.4.6 Changing Perceptions of"Value"848
38.4.7 Open Source848
38.5 Technology Directions849
38.5.1 Process Trends849
38.5.2 The Grand Challenge851
38.5.3 Collaborative Development852
38.5.4 Requirements Engineering852
38.5.5 Model Driven Software Development853
38.5.6 Postmodern Design854
38.5.7 Test-Driven Development854
38.6 Tools-Related Trends855
38.7 Summary857
PROBLEMS AND POINTS TO PONDER857
FURTHER READINGS AND IN FORMATION SOURCES858
CHAPTER 39 CONCLUDING COMMENTS860
39.1 The Importance of Software-Revisited861
39.2 People and the Way They Build Systems861
39.3 New Modes for Representing Information862
39.4 The Long View864
39.5 The Software Engineer's Responsibility865
39.6 A Final Comment from RSP867
APPENDIX 1 AN INTRODUCTION TO UML869
APPENDIX 2 OBJECT-ORIENTED CONCEPTS891
APPENDIX 3 FORMAL METHODS899
REFERENCES909
INDEX933