University of Southern California Center for Systems and Software Engineering Determining Requirements-to-Code Expansion Factors – The Magical Number Seven? Ali Afzal Malik, Supannika Koolmanojwong, Barry Boehm USC-CSSE {alimalik, koolmano, boehm} @usc.edu Annual Research Review March 17, 2009 3/17/2009 ©USC-CSSE 1 University of Southern California Center for Systems and Software Engineering Cockburn’s Use Case Expansion Levels (Cockburn, Writing Effective Use Cases, 2001) 3/17/2009 ©USC-CSSE 2 University of Southern California Center for Systems and Software Engineering What are the Level-to-Level Expansion Factors? • • • • • Cloud to Kite Kite to Sea Level Sea Level to Fish Fish to Clam Clam to Lava 3/17/2009 ©USC-CSSE 3 University of Southern California Center for Systems and Software Engineering IBM-UK Expansion Factor Experience Business Objectives 5 Cloud Business Events/Subsystems 35 Kite Use Cases/Components 250 Sea level Main Steps/Main Operations 2000 Fish Alt. Steps/Detailed Operations 15,000 Clam 1,000K – 1,500K Lava SLOC* *(70 – 100 SLOC/Detailed Operation) (Hopkins & Jenkins, Eating the IT Elephant, 2008) 3/17/2009 ©USC-CSSE 4 University of Southern California Center for Systems and Software Engineering Testing Applicability to Small E-Services Projects • Graduate level • 12 weeks in Fall; 12 weeks in Spring • Team size: 6 on-campus, 2 off-campus students • Real Clients: Neighborhoods and USC departments 3/17/2009 ©USC-CSSE 5 University of Southern California Center for Systems and Software Engineering Empirical Study • • • • • 20 projects Architected Agile 2004 - 2006 Custom-development Analyzed – Requirements elaboration – Effort elaboration – Documentation size elaboration 3/17/2009 ©USC-CSSE 6 University of Southern California Center for Systems and Software Engineering Mapping Cockburn Metaphor* Project Data Document(s) Cloud Organizational goals Operational Concept Description Kite Top-level services Operational Concept Description Sea Level Use cases System and Software Requirements Definition System and Software Architecture Description Fish Main steps System and Software Architecture Description Lava SLOC Source code *Clam level skipped. 3/17/2009 ©USC-CSSE 7 University of Southern California Center for Systems and Software Engineering 14 Top-Level Services (Kite) 1 2 y = 1.5935x R2 = -0.0917 12 10 8 6 4 2 Use Cases (Sea Level) Requirements Elaboration 0 0 1 2 3 4 5 6 7 8 20 18 16 14 12 10 8 6 4 2 0 y = 1.1039x R2 = -0.4221 0 2 4 Organization Goals (Cloud) Expansion from Cloud to Kite 12 14 6000 y = 3.7535x R2 = 0.7397 80 y = 74.268x R2 = 0.2244 7000 SLOC (Lava) Main Steps (Fish) 10 8000 4 100 60 40 5000 4000 3000 2000 20 1000 0 0 0 5 10 15 20 0 Use Cases (Sea Level) 20 40 60 80 100 120 Main Steps (Fish) Expansion from Sea Level to Fish 3/17/2009 8 Expansion from Kite to Sea Level 120 3 6 Top-Level Services (Kite) Expansion from Fish to Lava ©USC-CSSE 8 University of Southern California Center for Systems and Software Engineering Effort & Documentation Size Elaboration Expansion of Project Effort 3/17/2009 Expansion of Document Size ©USC-CSSE 9 University of Southern California Center for Systems and Software Engineering Expansion Factors Summary Expansion Stage Elaboration Factors Number of Requirements Relative Effort Relative Documentation Size Cloud to Kite 1.59 2.30 1.94 Kite to Sea Level 1.10 14.06 7.82 Sea Level to Fish 3.75 1.04 2.60 Fish to Lava 74.27 3.89 6.13 3/17/2009 ©USC-CSSE 10 University of Southern California Center for Systems and Software Engineering Conclusions • Magical number seven not a good fit to architected agile projects – Fewer actual expansion levels • Some confounding factors – Student teams motivated to work out details early – Wide variation in OTS solution components 3/17/2009 ©USC-CSSE 11