Two Case Studies • • • • • CCPDS-R, TRW How Microsoft Builds Software Different development environments Software development life cycle Software project management techniques CCPDS-R Case Study • Command Center Processing and Display System – Replacement • TRW Space and Defense in Redondo Beach, CA • Customer : U.S. Air Force • Focus : Common Subsystem • Mission critical software Common Subsystem • Primary missile warning system • Main installation : Cheyenne Mountain • Backup system : Offutt Air Force Base, Nebraska • 48-month software development schedule • 355,000 SLOC • Ada : design & implementation language • 6 builds were required • Completed successfully, on time within budget to customer satisfaction CCPDS-R Acquisition • Concept definition (CD), 12-month schedule • 5 major bidders, 2 contracts awarded • Full-scale development (FSD) • 1 contract awarded to TRW • Contract award based on performance in Software Engineering Exercise Concept Definition (CD) • • • • Vision Analyze and specify the project requirements Define and develop the top-level architecture Plan FSD phase software development activities • Configure the process and development environment • Establish trust and win-win relationships among the stakeholders • Software engineering exercise Process Overview for FSD • Standard DOD life cycle after contract award • Software requirements review (SRR) • Interim preliminary design review (IPDR) • Preliminary design review (PDR) • Critical design review (CDR) • Final qualification test (FQT) Incremental Design Process • • • • • Individual milestones within a build Preliminary design walkthrough Critical design walkthrough Code walkthrough Turnover review Incremental Test Process • Stand-alone test • Build integration test; establish a stable, reliable baseline • Reliability test • Engineering string test • Final qualification test IPDR Demonstration • Demonstrate defined capabilities at NORAD • Capabilities well understood by the customer and TRW • 37 evaluation criteria • Results were apt to change requirements, plans and designs • 31 satisfactory, 6 were not met • Required redesign and re-demonstration Metrics • • • • Build Progress (% coded) vs time Requirements verified vs time Cumulative SLOC vs time Average hours per software change order (SCO) • Mean time between failure (MTBF) vs total test hours • Cumulative SLOC vs budget People factors • Core team concept • Leverage skills of a few experts across the entire team • Avoid attrition • Profit sharing of award fees Microsoft Case Study • High volume, mass market software • Redmond, Washington • Excel, Word, Windows 95, Windows NT, etc. • Respond to events in the marketplace • Highly flexible, entrepreneurial company Microsoft Competitive Strategy • Identify mass markets quickly • Introduce products that are “good enough” • Improve products by incrementally evolving their features • Sell multiple product versions and upgrades • Sell globally Product Development Philosophy • Utilize small parallel teams (3 to 8 developers) • Teams evolve features and products incrementally • Occasionally introduce new concepts and technologies • Synchronize changes frequently so product components work together • Structured hacker-like approach Synch-and-Stabilize • Continually synchronize what developers are doing as individuals and team members • Stabilize the product in increments • Daily build • Continual testing • Testers work in parallel with developers (1 to 1) • Fix defect immediately if checked in code “breaks” the daily build Big Picture Procedures • Teams work at single physical site • Common development languages (C and C++) • Common coding styles • Standardized development tools • Teams must communicate, debate design ideas, and resolve problems face to face Synch-and-Stabilize Development Approach • Planning Phase • Development Phase • Stabilization Phase Planning Phase • Vision statement • Product managers define goals for a new product based on market research • Specification document written up by Program manager • During development, feature set in specification document may change by 30% or more • Schedule and feature team formation Development Phase • Developers design, code, and debug • Testers pair with developers for continuous testing • 3 major milestones • Milestone 1 : first 1/3 of features (most critical and shared components) • Milestone 2 : second third of features • Milestone 3 : final third of features (least critical) Stabilization Phase • Internal testing • External testing (“beta” sites and users) • Release preparation Principles – Developing and Shipping Products • Work in parallel teams but “synch up” and debug daily • Always have a product you can ship, with versions for different platforms and markets • Speak a “common language” on a single development site • Continuously test the product as you build it • Use metric data to determine milestone completion and product release Conclusions • Stakeholders and type of software being developed effect the software development life cycle • CCPDS-R - more externally controlled process • Microsoft – market driven – internally controlled process geared towards customer satisfaction and market share • Both cases illustrate extensive use of modern software project management techniques • Both cases show level 3 (defined) of CMM