Software Engineering - Principles and Practice 3e
Buy Rights Online Buy Rights

Rights Contact Login For More Details

More About This Title Software Engineering - Principles and Practice 3e

English

In-depth coverage of the latest advances in software engineering

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

Hans van Vliet has been Professor of Software Engineering at the VU University in Amsterdam, the Netherlands since 1987.

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

loading