> whoami Yuriy Brun Office: CSE 340

Slides:



Advertisements
Similar presentations
2003 Mateusz Żochowski, Marcin Borzymek Software Life Cycle Analysis.
Advertisements

1 CSE 403 Software Lifecycle Models Reading: Rapid Development Ch. 7, 25 (further reading: Ch. 21, 35, 36, 20) These lecture slides are copyright (C) Marty.
1 Requirements and the Software Lifecycle The traditional software process models Waterfall model Spiral model The iterative approach Chapter 3.
1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
Software Development Life-Cycle Models
Software Development Life Cycle
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 2- Software Process Models and Project.
PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 المحاضرة الثانية.
Software Engineering Saeed Akhtar The University of Lahore Lecture 4 Originally shared for: mashhoood.webs.com.
Designing and Developing Decision Support Systems Chapter 4.
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Modeling the Process and Life Cycle CSCI 411 Advanced Database and Project Management Monday, February 2, 2015.
1 Chapter 7 Lifecycle Planning. 2 Lifecycles - Introduction A lifecycle model is a prescriptive model of what should happen between the first glimmer.
 © Ian Sommerville A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.
Software development lifecycle The power of process Cycle Life Software.
CS 5150 Software Engineering
Software Engineering. How many lines of code? Average CS1004 assignment: 200 lines Average CS4115 project: 5000 lines Corporate e-commerce project: 80,000.
Software Engineering.
Object-oriented Analysis and Design
Software lifecycle. CS351 - Software Engineering (AY2004)2 Software lifecycle “student view” Design & Specification Coding Testing (optional) Hand it.
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Chapter 3 Software Processes.
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 2- Software Process Models and Project.
Lecture 2 Software Processes CSC301-Winter 2011 Hesam C. Esfahani
1 CSE 403 Software Lifecycle Models Reading: Rapid Development Ch. 7, 25 (further reading: Ch. 21, 35, 36, 20) These lecture slides are copyright (C) Marty.
Lecture # 04 & 05 CS314 Introduction To Software Development Software Development Process (SDP) Instructor :Muhammad Janas khan
Software Processes.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Processes lecture 8. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
SOFTWARE ENGINEERING MCS-2 LECTURE # 3. SOFTWARE PROCESS  A software development process, also known as a software development life- cycle (SDLC), is.
Week 1 MondayTuesdayWednesdayThursdayFriday Overview Course plans & expectations Tools & tool questions (section)Tools Lifecycle & project milestones KNOW.
Prescriptive Process Models Jon Walker. Prescription? What does prescriptive mean?
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
13-January-2003cse LifeCycle © 2003 University of Washington1 Lifecycle CSE 403, Winter 2003 Software Engineering
Software Engineering MCS-2 Lecture # 6
CSE 403 Lecture 2 Software Lifecycle Models Reading: Rapid Development Ch. 7, 25 (further reading: Ch. 21, 35, 36, 20) slides created by Marty Stepp
Software Engineering process models
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser
Prototyping life cycle Important steps 1. Does prototyping suit the system 2. Abbreviated representation of requirements 3. Abbreviated design specification.
 Many models have been proposed to deal with the problems of defining activities and associating them with each other  The first model proposed was the.
CC20O7N Software Engineering 1 CC2007N Software Engineering 1 Part 1 Introduction to Software Engineering.
Software Development Life Cycle (SDLC)
Lectures 2 & 3: Software Process Models Neelam Gupta.
CSE 403, Spring 2008, Alverson Software Development Lifecycle The Power of Process.
Software Lifecycle Models A software lifecycle model is a standardised format for planning organising, and running a new development project.
Chapter 2 Software Development Model and 1. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
Software Lifecycle Models Place of Testing in Software Lifecycle 1.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
SOFTWARE DEVELOPMENT Presented By : Emporiumtech This presentation is brought you by
Software Development Overview
Methodologies and Algorithms
Game Design, Development, and Technology
Methodologies By Akinola Soyinka.
V-Shaped SDLC Model Lecture-6.
Software Process Models
Chapter 2 SW Process Models
Life Cycle Models PPT By :Dr. R. Mall.
Software Lifecycle Models
Lecture 02: Software Lifecycle Models
Software life cycle models
Lecture 03: Software Lifecycle Models
CSE 403, Software Engineering Lecture 2
Software Processes.
Software Development Overview
Presentation transcript:

> whoami Yuriy Brun Office: CSE 340 Office hours: Monday 12:30 – 1:30 (after class) brun@cs.washington.edu

Class and first assignment Any questions? Does everyone have a 2–3 person group?

Software Development Lifecycle thinking about the process January 5, 2011 CSE 403, Winter 2011, Brun

How complex is software?

What is complex?

How complex is software? Measures of complexity: lines of code number of classes number of modules module interconnections and dependencies time to understand # of authors … many more

How complex is software? Measures of complexity: lines of code number of classes number of modules module interconnections and dependencies time to understand # of authors … many more Windows Server 2003: 50 MSLoC Debian 5.0: 324 MSLoC

And we don’t just want random words, we want compiling code! How big is 324 MSLoC? 50 lines/page  6.5M pages 1K pages/ream  6.5K reams 2 inches/ream  13K inches 13K inches  twice the height of the Allen Center 5 words/LoC @ 50 wpm  32M min  61 years And we don’t just want random words, we want compiling code!

Managing software development Requirements Design Implementation Testing Maintenance

Outline Why do we need a lifecycle process? Lifecycle models and their tradeoffs code-and-fix waterfall spiral staged delivery … there are many others

Ad-hoc development Creating software without any formal guidelines or process Advantage: easy to learn and use! Disadvantages?

Ad-hoc development disadvantages Some important actions (testing, design) may go ignored Unclear when to start or stop each task Scales poorly to multiple people Hard to review or evaluate one's work The later a problem is found in software, the more costly it is to fix.

What makes a lifecycle? Requirements Design Implementation Testing Maintenance How do we combine them?

Benefits of using a lifecycle provides a work structure forces thinking about the “big picture” helps prevent decisions that are individually on target but collectively misdirected assists management and progress control

What are some drawbacks?

Are there analogies outside of SE? Consider the process of building the Paul Allen Center Gathered requirements, iterate with customer, plans, develop, …

Project with little attention to process Survival Guide: McConnell p24

Project with early attention to process Survival Guide: McConnell p25

Let’s talk about some lifecycle models

Code-and-fix model Can you think of a project you’ve developed this way? Example: my mail tool

Code-and-fix model Advantages Dangers Low overhead Applicable to small, short-lived projects Dangers No way to assess progress and manage risks Hard to accommodate changes Unclear what and when will be delivered Hard to assess quality

Waterfall model Phases don’t overlap, document/signoff driven, result not until end. No integration until end! Linear, inflexible ** Refer to Computerworld Article **

Waterfall model advantages Works well for well-understood projects tackles all planning upfront no midstream changes leads to efficient software development process Supports experienced teams Orderly, easy-to-follow sequential model Reviews help determine readiness to advance In real life, overlap. Design finds a flaw in requirements. Coding finds problem with design. Example use: critical software where spec needs to be complete Example use: second generation of the software

Waterfall model limitations Difficult to do all planning upfront No sense of progress until the end Integration occurs at the very end Defies the “integrate early and often” rule Without feedback, solutions are inflexible Final product may not match customer’s needs Phase reviews are massive affairs It takes a lot of inertia and $ to make changes

Spiral Model Determine objectives Identify and resolve risks Evaluate alternatives Develop and verify deliverables Plan next spiral Commit (or not) to next spiral Risk oriented model. Breaks project up into miniprojects. Each miniproject addresses a set of major risks until all major risks have been addressed. “risk” has broad interpretation … such as poorly understood requirements, poorly understood architecture, performance problems. Example: port linux to compute nodes. Doesn’t have to be a risky domain (ie. Car racing …). Start small, explore risks, make a plan to handle, then commit to the next set. Note the time of the spirals (phases) increases as you get further into the project. And risk is lowered as project completes. Note the prototypes at the stages!

Spiral model Oriented towards phased reduction of risk Take on the big risks early are we building the right product? do we have customers for this product? is it possible to use existing technology? tomorrow’s technology? Progresses carefully toward a result early cancellation of bad projects is a major benefit confidence that you're building the right product is a major benefit Example: Linux on compute nodes

Spiral model advantages Especially appropriate at the beginning of the project, allowing requirement fluidity Provides early indication of unforeseen problems Allows for change As costs increase, risks decrease! Cost – skills to do the assessments Also good for less understood/new projects Addresses the biggest risk first

Spiral model disadvantages A lot of planning and management Requires customer and contract flexibility Developers must be able to assess risk Cost – skills to do the assessments Also good for less understood/new projects

Staged delivery model first, waterfall-like Refer to pages in the text book SG: 54-59 first, waterfall-like then, short release cycles: plan, design, execute, test, release with delivery possible at the end of any cycle

Staged delivery model advantages Can ship at the end of any release cycle Intermediate deliveries show progress, satisfy customers, and lead to feedback Problems are visible early (e.g., integration) Facilitates shorter, more predictable release cycles Most used model at Cray – makes sense Prioritize features for delivery Fun with themed releases/capabilities (marketing likes it too), ie. Move from Catamount to Linux Another risk – feature creep Very practical, widely used and successful

Staged delivery model disadvantages Requires tight coordination with documentation, management, marketing Product must be decomposable Extra releases cause overhead Most used model at Cray – makes sense Prioritize features for delivery Fun with themed releases/capabilities (marketing likes it too), ie. Move from Catamount to Linux Another risk – feature creep

What’s the best model? Consider The task at hand Risk management Quality / cost control Predictability Visibility of progress Customer involvement and feedback 1. Reasonable understanding of what to deliver. Waterfall: Has been done before; requirements well understood. Staged delivery or Spiral are also appropriate for this software dev project. 2. More progressive models, showing intermediate progress, good for this situation are Staged delivery or Spiral. Could also map Waterfall to this situation, as it's an overhaul of a current system.  3. Need interaction with the customers to see how well the system is working. All features needed may not be known upfront. Evolutionary prototyping most appropriate to get that feedback. Aim for good, fast, and cheap. But you can't have all three at the same time.