CHAPTER 1 SOFTWARE AND SOFTWARE ENGINEERING 1.1 The Nature of Software 1.1.1 Defining Software 1.1.2 Software Application Domains 1.1.3 Legacy Software 1.2 Defining the Discipline 1.3 The Software Process 1.3.1 The Process Framework 1.3.2 Umbrella Activities 1.3.3 Process Adaptation 1.4 Software Engineering Practice 1.4.1 The Essence of Practice 1.4.2 General Principles 1.5 How It All Starts 1.6 Summary PART ONE THE SOFTWARE PROCESS CHAPTER 2 PROCESS MODELS 2.1 A Generic Process Model 2.2 Defining a Framework Activity 2.3 Identifying a Task Set 2.4 Process Assessment and Improvement 2.5 Prescriptive Process Models 2.5.1 The Waterfall Model 2.5.2 Prototyping Process Model 2.5.3 Evolutionary Process Model 2.5.4 Unified Process Model 2.6 Product and Process 2.7 Summary CHAPTER 3 AGILITY AND PROCESS 3.1 What Is Agility? 3.2 Agility and the Cost of Change 3.3 What Is an Agile Process? 3.3.1 Agility Principles 3.3.2 The Politics of Agile Development 3.4 Scrum 3.4.1 Scrum Teams and Artifacts 3.4.2 Sprint Planning Meeting 3.4.3 Daily Scrum Meeting 3.4.4 Sprint Review Meeting 3.4.5 Sprint Retrospective 3.5 Other Agile Frameworks 3.5.1 The XP Framework 3.5.2 Kanban 3.5.3 DevOps 3.6 Summary CHAPTER 4 RECOMMENDED PROCESS MODEl 4.1 Requirements Definition 4.2 Preliminary Architectural Design 4.3 Resource Estimation 4.4 First Prototype Construction
4.5 Prototype Evaluation 4.6 Go, No-Go Decision 4.7 Prototype Evolution 4.7.1 New Prototype Scope 4.7.2 Constructing New Prototypes 4.7.3 Testing New Prototypes 4.8 Prototype Release 4.9 Maintain Release Software 4.10 Summary CHAPTER 5 HUMAN ASPECTS OF SOFTWARE ENGINEERING 5.1 Characteristics of a Software Engineer 5.2 The Psychology of Software Engineering …… PART TWO MODELING CHAPTER 6 PRINCIPLES THAT GUIDE PRACTICE CHAPTER 7 UNDERSTANDING REQUIREMENTS PART THREE QUALITY AND SECURITY PART FOUR MANAGING SOFTWARE PROJECTS PART FIVE ADVANCED TOPICS APPENDIX 1 An Introduction to UML APPENDIX 2 Data Science fOr Software Engineers REFERENCES INDEX