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 Prescriptive 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 ...... PART THREE QUALITY MANAGEMENT PART FOUR MANAGING SOFTWARE PROJECTS