550 likes | 671 Views
SE 470 Software Development Processes. James Nowotarski 07 April 2003. Today’s Objectives. Understand leading methodology philosophies, movements, products, and gurus of the past, present, and future Understand distinguishing characteristics of structured methods and information engineering
E N D
SE 470Software Development Processes James Nowotarski 07 April 2003
Today’s Objectives • Understand leading methodology philosophies, movements, products, and gurus of the past, present, and future • Understand distinguishing characteristics of structured methods and information engineering • Compare and contrast waterfall and iterative life cycle models
Today’s agenda Topic Duration • Week 1 Recap 15 minutes • Marketplace Snapshot 30 minutes • Summary of market developments 15 minutes *** Break 15 minutes • Frameworks, Philosophies, Gurus 75 minutes • Quiz #1 30 minutes
Course Map Overview . Introduction . History Content . Rational Unified Process . Extreme Programming Implementation . Tools, Training, Roles . CMM, Metrics . Selection & Evaluation Briefings (Term Papers) 1 2 3 4 5 6 7 8 9 10 11 Week Memorial Day Assignments Quizzes
Today’s agenda Topic Duration • Week 1 Recap 15 minutes • Marketplace Snapshot 30 minutes • Summary of market developments 15 minutes *** Break 15 minutes • Frameworks, Philosophies, Gurus 75 minutes • Quiz #1 30 minutes
Core Concepts In SE 470, we will use the terms method and Methodology interchangeably • method/Methodology • A systematic way of doing something • Typically consists of these key content pieces: • Processes (what) • Deliverables (what) • Techniques (how) • Roles (who) • Estimating guidelines (how long)
Core Concepts • Broad categories of methods • Structured methods • Information engineering • Object-oriented methods • Lightweight/Agile methods
Core Concepts • Life cycle model • The iteration and control strategy adopted by a systems development organization • Examples • Waterfall • Iterative/Evolutionary/Spiral • Incremental
Core Concepts The waterfall model is the granddaddy of life cycle models
Version 1 A D I Version 2 A D I Version 3 A D I Core Concepts Iterative/Evolutionary/Spiral life cycle models advocate multiple “threads” through the SDLC phases
Version 1 A D I Version 2 A D I Version 3 A D I Core Concepts Incremental life cycle models advocate delivering the end product piecemeal
Core Concepts • Routes • A “route” is a preconfigured specialization of a methodology, depending on a variety of factors: • custom vs. packaged solution • degree of project team distribution • project team size • technology platform • application type • Examples • Custom Client/Server: Large Project • Custom Client/Server: Small Project • Rapid Application Development (RAD) • Packaged Systems Development • Data Warehouse • SAP implementation
Traditional User Design Tech Design Req’ts Analysis Construct RAD User Design Req’ts Construct Core Concepts RAD vs. Traditional
Core Concepts Modeling/Diagramming Technique
Core Concepts Normalization (Process Technique) 1NF = No repeating groups 2NF = 1NF + no partial dependencies (non-key attribute dependent on portion of primary key) 3NF = 2NF + no transitive dependencies (non-key attribute dependent on another non-key attribute)
Core Concepts Capability Maturity Model (CMM) • A framework for: • Judging the maturity of an organization’s software processes • Identifying key practices required to increase the maturity of these practices • Levels of maturity Optimizing Level Managed Level Defined Level Repeatable Level Initial Level
Common Drivers Behind Methodology Adoption • Project failure leads to realization that “we need a more formal process” • Codify best practices, so as to increase predictability and reliability of software development process • especially as IT organization grows • Continued pressure on time to market and quality (web services) • Certification (e.g., Capability Maturity Model) • Desire to stay current and/or sustain/develop competitive edge • Need to support distributed development teams (multi-site and/or multi-organization)
Today’s agenda Topic Duration • Week 1 Recap 15 minutes • Marketplace Snapshot 30 minutes • Summary of market developments 15 minutes *** Break 15 minutes • Frameworks, Philosophies, Gurus 75 minutes • Quiz #1 30 minutes
What does a methodology product consist of? • Content • building blocks (processes, deliverables, etc.) • pre-defined routes • Delivery vehicle (e.g., browser) • Tools for authoring and publishing content • Tools for applying the methodology to a specific project • project planning and estimating tools • process management tools • project management tools • Deliverable templates tightly coupled with a development and/or execution platform • Training and support • Maintenance
Methodology Marketplace No single vendor dominates this market • Rational Software is collecting a fair amount of mindshare • 3 key categories to consider: • methodologies developed and delivered by consultants • methodologies from software tool vendors • methodologies from industry consortia or other groups • Tremendous variability among the products • Content • Delivery vehicles • Integration with development tools
Methodologies Developed and Delivered by Consultants Consulting firms methodologies have greatest depth and breadth of content, but not all sell their methodology as a standalone product
Methodologies from Software Development Tool Vendors Customers are increasingly demanding (and receiving) process guidance from their tool vendors
Methodologies from Industry Consortia or Gurus There is a growing interest among large corporate shops in so-called “agile” methods from industry gurus
Key Trends: Content • Component-based development • Reuse • Agile processes • Development of mobile applications • Development with/for web services • Distributed development teams, especially offshore
How Does a Methodology Stay Fresh? • Experience • New technologies that cause changes in development processes • Consortia/Gurus • Academics “ . . . those looking for true best practices and leading edge methodologies should turn to the consulting industry rather than tool or software vendors” -- Giga Information Group
Today’s agenda Topic Duration • Week 1 Recap 15 minutes • Marketplace Snapshot 30 minutes • Summary of market developments 15 minutes *** Break 15 minutes • Frameworks, Philosophies, Gurus 75 minutes • Quiz #1 30 minutes
Factoid • Fastest-growing jobs: Software application engineers (7.2% a year through 2010), Computer support specialists (7.0%), Software systems engineers (6.6%), Systems administrators (6.2%), Personal and home care aides (5.0%), Security guards (3.1%), Customer service reps (2.8%) • Source: Business 2.0, March 2003
Today’s agenda Topic Duration • Week 1 Recap 15 minutes • Marketplace Snapshot 30 minutes • Summary of market developments 15 minutes *** Break 15 minutes • Frameworks, Philosophies, Gurus 75 minutes • Quiz #1 30 minutes
Summary Timeline 1960 1970 1990 2000 1980 Mainframe Tech era Decentralized Distributed Internet Stage wise Life cycle model Waterfall Iterative/Incremental Structured Analysis/Design Meth approach Information Engineering Object-Oriented A/D Agile Content Updates • OLTP • UI design • Bus process reengineering • Data/process distribution • CASE tools • Data mgmt • JAD • Prototyping • Multimedia content mgmt • Network design/mgmt • Quality • Security
Waterfall model System requirements Software requirements Analysis Program design Coding Source: Royce, W. "Managing the Development of Large Software Systems." Testing Operations
Program design comes first System requirements Software requirements Preliminary program design Analysis Program design Coding Testing Operations
Or, Architecture comes first System requirements Software requirements Architecture design/build Analysis Program design Coding Testing Operations
Do it twice System requirements Software requirements Architecture design/build Analysis Preliminary design Program design Analysis Program design Coding Coding Testing Testing Usage Operations
Why do it twice? “Without this first pass, the project manager is at the mercy of human judgment. With this first-pass ‘simulation,’ he can at least perform experimental tests of some key hypotheses and scope down what remains for human judgment, which in the case of computer program design . . . is invariably and seriously optimistic”
Problems with the Waterfall Process Many of the problems attributed to the Waterfall Process are really problems with the way it was applied, not as it was intended • Problems • Protracted integration and late design breakage • Focus on fully elaborated documents and review meetings for early requirements and design phases • Late risk resolution • Adversarial stakeholder relationships • Requirements-driven functional decomposition
Protracted integration and late breakage Conventional application of the waterfall model typically results in late integration and performance showstoppers Late design breakage 100% Integration begins Development progress (% coded) Original target date Source: Royce, W. Software Project Management: A Unified Framework. Addison-Wesley (1998).
Spiral Model Determine objectives, alternatives, constraints Evaluate alternatives, identify and resolve risks Plan next phases Develop verify next level product
Spiral Model Design Planning and analysis Assessment Implementation
Version 1 A D I Version 2 A D I Version 3 A D I Iterative Development Today’s version of the spiral model is iterative development with incremental delivery
Version 1 A D I Version 2 A D I Version 3 A D I Incremental Delivery Today’s version of the spiral model is iterative development with incremental delivery
Small Group Activities • Compare/Contrast Waterfall and Spiral/Iterative/Incremental • How are they different? • How are they similar? • When to use waterfall? • When to use spiral/iterative/incremental?
Summary Timeline 1960 1970 1990 2000 1980 Mainframe Tech era Decentralized Distributed Internet Stage wise Life cycle model Waterfall Iterative/Incremental Structured Analysis/Design Meth approach Information Engineering Object-Oriented A/D Agile Content Updates • OLTP • UI design • Bus process reengineering • Data/process distribution • CASE tools • Data mgmt • JAD • Prototyping • Multimedia content mgmt • Network design/mgmt • Quality • Security
employee_data salary tax employee_data employee_ data salary tax salary GET_DATA CALC_TAX PRINT_CHECK CALC_SALARY Structure Chart PROCESS_PAYROLL for each employee get_data(:employee_data) calc_salary(employee_data:salary) calc_tax(salary:tax) print_check(employee_data, salary, tax)
Program Graph employee_data PRINT_ PAYCHECK salary CALC_ SALARY taxes employee_ data READ_ DATA CALC_ TAXES salary
Program Graph Big idea: As a prelude to creating a design, represent the basic computational requirement for the system to be designed in more abstract terms, i.e., in terms of data flow employee_data PRINT_ PAYCHECK salary CALC_ SALARY taxes employee_ data READ_ DATA CALC_ TAXES salary