CHAPTER 1SOFTWARE AND SOFTWARE ENGINEERING111The Nature of Software4111Defining Software5112Software Application Domains7113Legacy Software812Defining the Discipline813The Software Process9131The Process Framework10132Umbrella Activities11133Process Adaptation1114Software Engineering Practice12141The Essence of Practice12142General Principles1415How It All Starts1516Summary17PART ONETHE SOFTWARE PROCESS19CHAPTER 2PROCESS MODELS2021A Generic Process Model2122Defining a Framework Activity2323Identifying a Task Set2324Process Assessment and Improvement2425Prescriptive Process Models25251The Waterfall Model25252Prototyping Process Model26253Evolutionary Process Model29254Unified Process Model3126Product and Process3327Summary35CHAPTER 3AGILITY AND PROCESS3731What Is Agility?3832Agility and the Cost of Change3933What Is an Agile Process?40331Agility Principles40332The Politics of Agile Development4134Scrum42341Scrum Teams and Artifacts43342Sprint Planning Meeting44343Daily Scrum Meeting44344Sprint Review Meeting45345Sprint Retrospective4535Other Agile Frameworks46351The XP Framework46352Kanban48353DevOps5036Summary51CHAPTER 4RECOMMENDED PROCESS MODEL5441Requirements Definition5742Preliminary Architectural Design5943Resource Estimation6044First Prototype Construction6145Prototype Evaluation6446Go, No-Go Decision6547Prototype Evolution67471New Prototype Scope67472Constructing New Prototypes68473Testing New Prototypes6848Prototype Release6849Maintain Release Software69410Summary72CHAPTER 5HUMAN ASPECTS OF SOFTWARE ENGINEERING7451Characteristics of a Software Engineer7552The Psychology of Software Engineering7553The Software Team7654Team Structures7855The Impact of Social Media7956Global Teams8057Summary81PART TWOMODELING83CHAPTER 6PRINCIPLES THAT GUIDE PRACTICE8461Core Principles85611Principles That Guide Process85612Principles That Guide Practice8662Principles That Guide Each Framework Activity88621Communication Principles88622Planning Principles91623Modeling Principles92624Construction Principles95625Deployment Principles9863Summary100CHAPTER 7UNDERSTANDING REQUIREMENTS10271Requirements Engineering103711Inception104712Elicitation104713Elaboration104714Negotiation105715Specification105716Validation105717Requirements Management10672Establishing the Groundwork107721Identifying Stakeholders107722Recognizing Multiple Viewpoints107723Working Toward Collaboration108724Asking the First Questions108725Nonfunctional Requirements109726Traceability10973Requirements Gathering110731Collaborative Requirements Gathering110732Usage Scenarios113733Elicitation Work Products11474Developing Use Cases11475Building the Analysis Model118751Elements of the Analysis Model119752Analysis Patterns12276Negotiating Requirements12277Requirements Monitoring12378Validating Requirements12379Summary124CHAPTER 8REQUIREMENTS MODELING—A RECOMMENDED APPROACH12681Requirements Analysis127811Overall Objectives and Philosophy128812Analysis Rules of Thumb128813Requirements Modeling Principles12982Scenario-Based Modeling130821Actors and User Profiles131822Creating Use Cases131823Documenting Use Cases13583Class-Based Modeling137831Identifying Analysis Classes137832Defining Attributes and Operations