SE 470 Software Development Processes James Nowotarski 31 March 2003 Today’s Objectives • Understand what the course is about (i.e., course objectives) • Understand how the course will achieve its objectives • Get acquainted • Level set: – – – – What is a software development methodology/process Why use a methodology/process Who are the key players and products in the marketplace What are the key vocabulary terms to understand Today’s agenda Topic Duration • Questionnaire & Intros 20 minutes • Core Concepts 45 minutes *** Break 10 minutes • Core Concepts (cont.) 30 minutes • Course Overview 30 minutes • SD Process: Why or why not? 30 minutes • Marketplace Snapshot 30 minutes Today’s agenda Topic Duration • Questionnaire & Intros 20 minutes • Core Concepts 45 minutes *** Break 10 minutes • Core Concepts (cont.) 30 minutes • Course Overview 30 minutes • SD Process: Why or why not? 30 minutes • Marketplace Snapshot 30 minutes Core Concepts Software Engineering • The establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines (Fritz Bauer, 1969) • Computer science discipline that covers not only the technical aspects of building software systems, but also management issues, such as directing programming teams, scheduling, and budgeting (webopedia.com) Core Concepts The software engineering discipline consists of people, process, and technology components Process Technology People Core Concepts The focus of SE 470 is the process component of software engineering SE 470 Process Technology People Core Concepts Process • Sequence of steps performed for a given purpose • “A specific ordering of work activities across time and place with a beginning, an end, and clearly identified inputs and outputs” -- Tom Davenport • An overloaded term, can apply at multiple levels (macro, micro) Core Concepts method • Within the context of software engineering, a formalized approach or series of steps for performing some significant portion of software development Methodology • A collection of methods based on a common philosophy that fit together in a framework called the systems development life cycle -- Ken Orr 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: 1. 2. 3. 4. 5. Processes (what) Deliverables (what) Techniques (how) Roles (who) Estimating guidelines (how long) Analysis Key Question: What does the system need to do? Steps 1. Gather requirements 2. Create data model 3. Create process model Deliverables Functional requirements Quality requirements Data model Process model Techniques Interviewing Observation Entity-relationship modeling Normalization Data flow modeling Implementation Key Question: Does the system work? Steps 1. Build the programs 2. Build the databases 3. Test the system 4. Develop and conduct training 5. Convert the data 6. Migrate to production status Deliverables Programs Databases Converted data End user training Operations processes Techniques Code walkthroughs White box testing Stress testing Parallel testing Core Concepts Broad categories of methods • • • • Structured methods Information engineering Object-oriented methods Lightweight/Agile methods Core Concepts Methods engineering • Developing and/or selecting and/or tailoring methodology for a particular business situation • “Configuring one-of-a-kind methodology from common building blocks” -- Gezinus Hidding, Loyola University Core Concepts Systems development life cycle (SDLC) • A description of the phases of an information system Example Planning Analysis Design Implementation 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 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 Version 1 A D I Version 2 A D I Version 3 A D I 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 Core Concepts RAD • A shortened route with the following characteristics: - high degree of development tool usage and code generation - Joint Application Development (JAD) workshops instead of interviewing - assumes reuse of existing technical architecture and standards - time-boxing (90-day implementation schedule) - highly iterative Core Concepts RAD vs. Traditional Traditional Req’ts Analysis User Design Tech Design Construct RAD Req’ts User Design Construct Core Concepts Techniques • Provide detailed how-to guidelines • Fall into 2 main categories: - Process techniques - Modeling/Diagramming techniques Core Concepts Process for Building Data Models 1. 2. Review existing data models Define entities a. b. 3. 4. 5. 6. 7. 8. 9. Independent Dependent, including Intersection entities Define attributes and keys (primary, foreign) Define relationships Diagramming technique available Finalize ERD Process technique available Normalize Integrate data models as required Verify completeness of the data model Validate the data model a. b. With users With the enterprise’s data administrator 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 (nonkey attribute dependent on another non-key attribute) Core Concepts Draw a high-level data model to show how these components of a methodology relate to one another: 1. 2. 3. 4. 5. Processes (what) Deliverables (what) Techniques (how) Roles (who) Estimating guidelines (how long) 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 Core Concepts CMM applies to all aspects of software engineering, not just process Process Technology People Today’s agenda Topic Duration • Questionnaire & Intros 20 minutes • Core Concepts 45 minutes *** Break 10 minutes • Core Concepts (cont.) 30 minutes • Course Overview 30 minutes • SD Process: Why or why not? 30 minutes • Marketplace Snapshot 30 minutes Course Objectives SE 470 will enable you to develop, use, and improve software development processes. Specific Objectives 1. Define the components of a software development process (content, tools, roles, meta-processes). 2. Analyze key players, products, and philosophies in the software development process "space" (past, present, and future). The course will analyze two current processes -- the Rational Unified Process (RUP), and Extreme Programming (XP) -- in depth. 3. Describe how to identify, select, and review the effectiveness of software development processes for a particular project or organization. 4. Identify key success factors to optimize the adoption, use, and continuous improvement of a software development process. The course will examine the use of the Capability Maturity Model (CMM) in this context. Your grade Homework Assignments 25% Quizzes 25% Term Paper 25% Class Participation 25% -------100% Course Map Week 1 2 3 4 5 6 7 8 9 Overview . Introduction . History Implementation . Tools, Training, Roles . CMM, Metrics . Selection & Evaluation Briefings (Term Papers) Assignments Quizzes Memorial Day Content . Rational Unified Process . Extreme Programming 10 11 Course Assignments • Assignment 1 - Mapping of software development problem symptoms to root causes to best practices • Assignment 2 - Deliverable view of RUP • Assignment 3 - Project request to buy/build software development process • Assignment 4 - Assessment of effectiveness of a software development process (case study) • Assignments 5,6 - Summary of marketplace developments My role • Facilitate learning • Plan, prepare, and conduct lectures and learning activities • Assess student progress and provide feedback • Relate concepts to real-world problems • Provide classroom environment conducive to learning • Clearly state expectations • Gather and implement suggestions for improving the class • Keep it fun • email: jnowotarski@cti.depaul.edu • phone: 708-352-2930 • office hours: Mondays, 4:15-5:45, location TBD Your role • Be proactive • Share your experience • Come to class prepared • Collaborate with other students as appropriate • Ask if you don’t understand or if I’m not clear • Provide constructive feedback (“This class would be better if . . .”) Class Participation Subjective evaluation of participation: A Consistently asks good questions, makes valuable observations, and answers questions effectively B Frequent participant, but not all questions, answers, and observations are effective, or not consistently active C Participates infrequently, or questions/answers do not reflect adequate preparation, or late to class D Very rare participation, or questions/answers reflect little or no preparation, or very late to class F Displays no sign of life, or absent for entire class Today’s agenda Topic Duration • Questionnaire & Intros 20 minutes • Core Concepts 45 minutes *** Break 10 minutes • Core Concepts (cont.) 30 minutes • Course Overview 30 minutes • SD Process: Why or why not? 30 minutes • Marketplace Snapshot 30 minutes Justifying a Methodology • Vendors and consultants have not done much to substantiate quantitatively the value of their methodologies • What would you say if asked to provide justification? 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) Methodology - Who needs it? “Any first attempt at converting folklore into knowledge, and a guessing game into a discipline, is liable to be misread as a downgrading of individual ability and its replacement by a rule book. Any such attempt would be nonsense, of course. No book will ever make a wise man out of a donkey or a genius out of an incompetent. The foundation in a discipline, however, gives to today’s competent physician a capacity to perform well beyond that of the ablest doctor of a century ago, and enables the outstanding physician of today to do what the medical genius of yesterday could hardly have dreamt of. No discipline can lengthen a man’s arm. But it can lengthen his reach by hoisting him on the shoulders of his predecessors. Knowledge organized in a discipline does a good deal for the merely competent; it endows him with some effectiveness. It does infinitely more for the truly able; it endows him with excellence.” From Managing for Results, by Peter F. Drucker Today’s agenda Topic Duration • Questionnaire & Intros 20 minutes • Core Concepts 45 minutes *** Break 10 minutes • Core Concepts (cont.) 30 minutes • Course Overview 30 minutes • SD Process: Why or why not? 30 minutes • Marketplace Snapshot 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 Consultant Methodology Sold as Standalone Product? PricewaterhouseCoopers Summit Ascendant Yes Headstrong gantthead.com Yes Fujitsu Macroscope Yes Accenture Accenture Delivery Methods No AMS No EDS No IBM No Keane No Methodologies from Software Development Tool Vendors Customers are increasingly demanding (and receiving) process guidance from their tool vendors Vendor Methodology Notes Rational Software Rational Unified Process (RUP) • Many vendor and consulting partners Computer Associates CA ProcessContinuum • Focus on large accounts Allen Systems Group (ASG) Visual Process Client/Server Connection CS 10,000 • Easy to use Aonix Select ProcessDirector • Strong coverage of CBD Methodologies from Industry Consortia or Gurus There is a growing interest among large corporate shops in so-called “agile” methods from industry gurus Guru/Consortium Methodology Notes Kent Beck Martin Fowler Extreme Programming (XP) • Many vendor and consulting partners Alistair Cockburn Crystal • Focus on large accounts Jim Highsmith Adaptive software development Peter Coad Feature driven development Dynamic Systems Development Method (DSDM) Consortium DSDM • More RAD than agile • Used in Europe more than U.S. 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 Mapping Computing Eras to Technology Maturity Curve • Mainframe • Decentralized High • Distributed Degree of Take-up • Internet • ??? • Mobile Incubation Adaptation Take Up Life Cycle Stage Key SD Process Change ??? Content Dev CBD Iterative Dev Maturity Time GUI Design Bus Process Redesign Topics for April 7 • Read 2 articles (see course map) • Quiz (end of class): – Vocabulary – Justification – History