Rights Contact Login For More Details
More About This Title Software Engineering - Principles and Practice 3e
- English
English
Aimed at defining inherent problems and providing appropriate solutions when constructing large software systems, the study of software engineering is an essential practice in order to create and maintain successful software development. This new edition shows you how to appreciate the issues, design trade-offs, and teamwork required for successful software development. With a special emphasis placed on the managerial aspects and human factors involved in software projects, this book reflects the changes taking place within software engineering and includes a major update on architecture and the increasingly hybrid character of software engineering.
- Offers comprehensive coverage of the fundamentals of software engineering as well as revised and updated text on the latest advances in the field, including agile methods, open source, and UML2
- Incorporates discussion of commercial off-the-shelf products and open source
- Examines the impact of lightweight versus heavyweight methods, paying particular attention to agile approaches
- Addresses the globalization of software development and the impact of the Web
This new edition is an invaluable resource for anyone involved in software development and maintenance.
- English
English
- English
English
Foreword xvii
Preface xix
1 Introduction 1
1.1 What Is Software Engineering? 5
1.2 Phases in the Development of Software 10
1.3 Maintenance or Evolution 15
1.4 From the Trenches 17
1.5 Software Engineering Ethics 24
1.6 Quo Vadis? 27
1.7 Summary 29
1.8 Further Reading 30
Exercises 31
Part I Software Management 35
2 Introduction to Software Engineering Management 37
2.1 Planning a Software Development Project 40
2.2 Controlling a Software Development Project 43
2.3 Summary 45
Exercises 46
3 The Software Life Cycle Revisited 49
3.1 The Waterfall Model 52
3.2 Agile Methods 54
3.3 The Rational Unified Process (RUP) 68
3.4 Model-Driven Architecture 71
3.5 Intermezzo: Maintenance or Evolution72
3.6 Software Product Lines 75
3.7 Process Modeling 77
3.8 Summary 80
3.9 Further Reading 81
Exercises 82
4 Configuration Management 85
4.1 Tasks and Responsibilities 87
4.2 Configuration Management Plan 92
4.3 Summary 93
4.4 Further Reading 94
Exercises 94
5 People Management and Team Organization 97
5.1 People Management 99
5.2 Team Organization 104
5.3 Summary 112
5.4 Further Reading 113
Exercises 113
6 On Managing Software Quality 115
6.1 On Measures and Numbers 118
6.2 A Taxonomy of Quality Attributes 123
6.3 Perspectives on Quality 130
6.4 The Quality System 134
6.5 Software Quality Assurance 135
6.6 The Capability Maturity Model (CMM) 137
6.7 Getting Started 144
6.8 Summary 147
6.9 Further Reading 148
Exercises 149
7 Cost Estimation 153
7.1 Algorithmic Models 158
7.2 Guidelines for Estimating Cost 175
7.3 Distribution of Manpower over Time 179
7.4 Agile Cost Estimation 183
7.5 Summary 184
7.6 Further Reading 186
Exercises 187
8 Project Planning and Control 189
8.1 A Systems View of Project Control 190
8.2 A Taxonomy of Software Development Projects 192
8.3 Risk Management 198
8.4 Techniques for Project Planning and Control 201
8.5 Summary 207
8.6 Further Reading 208
Exercises 208
Part II The Software Life Cycle 211
9 Requirements Engineering 213
9.1 Requirements Elicitation 220
9.2 Requirements Documentation and Management 241
9.3 Requirements Specification Techniques 249
9.4 Verification and Validation 253
9.5 Summary 254
9.6 Further Reading 255
Exercises 257
10 Modeling 261
10.1 Classic Modeling Techniques 263
10.2 On Objects and Related Stuff 268
10.3 The Unified Modeling Language 274
10.4 Summary 287
10.5 Further Reading 287
Exercises 288
11 Software Architecture 289
11.1 Software Architecture and the Software Life Cycle 293
11.2 Architecture Design 294
11.3 Architectural Views 298
11.4 Architectural Styles 303
11.5 Software Architecture Assessment 317
11.6 Summary 321
11.7 Further Reading 322
Exercises 322
12 Software Design 325
12.1 Design Considerations 329
12.2 Classical Design Methods 351
12.3 Object-Oriented Analysis and Design Methods 369
12.4 How to Select a Design Method 380
12.5 Design Patterns 385
12.6 Design Documentation 389
12.7 Verification and Validation 393
12.8 Summary 393
12.9 Further Reading 398
Exercises 399
13 Software Testing 405
13.1 Test Objectives 410
13.2 Testing and the Software Life Cycle 417
13.3 Verification and Validation Planning and Documentation 422
13.4 Manual Test Techniques 425
13.5 Coverage-Based Test Techniques 430
13.6 Fault-Based Test Techniques 437
13.7 Error-Based Test Techniques 440
13.8 Comparison of Test Techniques 441
13.9 Test Stages 448
13.10 Estimating Software Reliability 450
13.11 Summary 457
13.12 Further Reading 458
Exercises 459
14 Software Maintenance 465
14.1 Maintenance Categories Revisited 468
14.2 Major Causes of Maintenance Problems 471
14.3 Reverse Engineering and Refactoring 475
14.4 Software Evolution Revisited 486
14.5 Organizational and Managerial Issues 488
14.6 Summary 501
14.7 Further Reading 502
Exercises 504
15 Software Tools 507
15.1 Toolkits 511
15.2 Language-Centered Environments 513
15.3 Integrated Environments and Work Benches 514
15.4 Process-Centered Environments 521
15.5 Summary 522
15.6 Further Reading 524
Exercises 525
Part III Advanced Topics 527
16 User Interface Design 529
16.1 Where Is the User Interface? 532
16.2 What Is the User Interface? 536
16.3 Human Factors in Human–Computer Interaction 537
16.4 The Role of Models in Human–Computer Interaction 540
16.5 The Design of Interactive Systems 549
16.6 Task Analysis 553
16.7 Specification of the User Interface Details 559
16.8 Evaluation 562
16.9 Summary 567
16.10 Further Reading 568
Exercises 569
17 Software Reusability 571
17.1 Reuse Dimensions 574
17.2 Reuse of Intermediate Products 576
17.3 Reuse and the Software Life Cycle 582
17.4 Reuse Tools and Techniques 585
17.5 Perspectives of Software Reuse 591
17.6 Non-Technical Aspects of Software Reuse 594
17.7 Summary 599
17.8 Further Reading 601
Exercises 601
18 Component-Based Software Engineering 605
18.1 Why Component-Based Software Engineering? 607
18.2 Component Models and Components 608
18.3 Component-Based Development Process and Component Life Cycle 619
18.4 Architectural Approaches in Component-Based Development 625
18.5 Summary 628
18.6 Further Reading 628
Exercises 629
19 Service Orientation 631
19.1 Services, Service Descriptions, and Service Communication 634
19.2 Service-Oriented Architecture (SOA) 639
19.3 Web Services 641
19.4 Service-Oriented Software Engineering 650
19.5 Summary 652
19.6 Further Reading 652
Exercises 653
20 Global Software Development 655
20.1 Challenges of Global System Development 657
20.2 How to Overcome Distance 664
20.3 Summary 670
20.4 Further Reading 670
Exercises 671
Bibliography 673
Index 705