Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal

Similar documents
*ANSWERS * **********************************

Software Engineering Lifecycles. Controlling Complexity

System Development Life Cycle Methods/Approaches/Models

Dilbert Scott Adams. CSc 233 Spring 2012

CMSC 435: Software Engineering Section 0201

User-Centered Development

Incremental development A.Y. 2018/2019

Objectives. Connecting with Computer Science 2

Systems Analysis & Design

Specifying and Prototyping

The requirements engineering process

Reducing the costs of rework. Coping with change. Software prototyping. Ways to Cope with change. Benefits of prototyping

Sample Exam. Advanced Test Automation - Engineer

DESIGN AS RISK MINIMIZATION

Human Computer Interaction Lecture 14. HCI in Software Process. HCI in the software process

Topic 01. Software Engineering, Web Engineering, agile methodologies.

Administrivia. Wednesday: Requirements and Specification. CS169 Lecture 4. We assign teams and you start on Monday. Determining Stakeholders and Needs

CS 490 Design Exhibition Fall 2010

Software Process. Software Process

Human Computer Interaction Lecture 06 [ HCI in Software Process ] HCI in the software process

mywbut.com Software Life Cycle Model

Second. Incremental development model

Software Processes. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 1

COMP6471 WINTER User-Centered Design

(Refer Slide Time: 01.26)

Software Development Process Models

HCI in the software process

HCI in the software. chapter 6. HCI in the software process. The waterfall model. the software lifecycle

What is a prototype?

Up and Running Software The Development Process

The software lifecycle and its documents

Promoting Component Architectures in a Dysfunctional Organization

h(p://ihm.tumblr.com/post/ /word- cloud- for- hci- human- computer- interacbon CS5340 Human-Computer Interaction ! January 31, 2013!

CS162 Operating Systems and Systems Programming Lecture 11 Page Allocation and Replacement"

CS3205 HCI IN SOFTWARE DEVELOPMENT INTRODUCTION TO PROTOTYPING. Tom Horton. * Material from: Floryan (UVa) Klemmer (UCSD, was at Stanford)

Activities Common to Software Projects. Software Life Cycle. Activities Common to Software Projects. Activities Common to Software Projects

Page 1. Goals for Today" TLB organization" CS162 Operating Systems and Systems Programming Lecture 11. Page Allocation and Replacement"

Software Engineering

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

((MARKS)) (1/2/3...) ((QUESTIO N)) ((OPTION_ A)) What is Software?

Prototyping. Oct 3, 2016

Human-Computer Interaction. CA357 Lecture 7 More on Prototyping

Lecture 23: Domain-Driven Design (Part 1)

Defining Project Requirements

Agile Accessibility. Presenters: Ensuring accessibility throughout the Agile development process

Creating an Intranet using Lotus Web Content Management. Part 2 Project Planning

Systems Analysis and Design

Test-driven development

E xtr B e y CS R m oy 6704, e T a P n a Spring r n o d J g ia n 2002 r g a S m hu m ing

RSDs vs Dossiers Best Practices on When and Where to use them

1. i. What are the 3 major components of a information system and show their relationship input output

Process Models. Projects Process. Common Process Models. Typical Student Process Model. Waterfall Model

Main challenges for a SAS programmer stepping in SAS developer s shoes

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014

Lecture 8 Requirements Engineering

Process of Interaction Design and Design Languages

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

FormStream a Workflow Prototyping Tool for Classroom Use

CSC 258 lab notes, Fall 2003

9/17/12! Ion Stoica CS162 UCB Fall 2012!

Kanban One-Day Workshop

dt+ux Design Thinking for User Experience Design, Prototyping & Evaluation Autumn 2016 Prof. James A. Landay Stanford University

Software Life Cycle. Main issues: Discussion of different life cycle models Maintenance or evolution

Senior Design - Spring 2017 EE/CpE 424. Class 2 3/7/17

SFU CMPT week 11

Introduction to Software Engineering

Testing Tools to Support Agile Software Delivery. The Critical Role of Automated Functional Testing in Enterprise Environments

Software Project Management, 9th Sep.

SOFTWARE ENGINEERING DECEMBER. Q2a. What are the key challenges being faced by software engineering?

XP: Planning, coding and testing. Planning. Release planning. Release Planning. User stories. Release planning Step 1.

Software Development Chapter 1

SOFTWARE REQUIREMENTS ENGINEERING LECTURE # 7 TEAM SKILL 2: UNDERSTANDING USER AND STAKEHOLDER NEEDS REQUIREMENT ELICITATION TECHNIQUES-IV

Introduction to Software Architecture. The top level... (and design revisited)

L16: Dynamic Task Queues and Synchronization

Rapid Application Development [RAD]

Continuous Prototyping: Unified Application Delivery from Early Design to Code

Database Management System Prof. D. Janakiram Department of Computer Science & Engineering Indian Institute of Technology, Madras Lecture No.

SOFTWARE LIFE-CYCLE MODELS 2.1

3/3/2014! Anthony D. Joseph!!CS162! UCB Spring 2014!

Adopting Agile Practices

18-642: Software Development Processes

TDDD04 Software Testing

White Paper. Incorporating Usability Experts with Your Software Development Lifecycle: Benefits and ROI Situated Research All Rights Reserved

Object-Oriented Analysis and Design Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology-Kharagpur

Next Generation Backup: Better ways to deal with rapid data growth and aging tape infrastructures

The Software Design Process. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed

Software Engineering

The next generation of Google APIs

Introduction to Extreme Programming

McCa!"s Triangle of Quality

Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute. Week 02 Module 06 Lecture - 14 Merge Sort: Analysis

Lecture 7: Software Processes. Refresher: Software Always Evolves

SOFTWARE LIFE-CYCLE PROCESSES From Waterfall to Extreme Programming

CS/ISE 5714 Usability Engineering. Topics. Introduction to Rapid Prototyping. Rapid Prototyping in User Interaction Development & Evaluation

Systems Analysis and Design in a Changing World, Fourth Edition

Assignments. Assignment 2 is due TODAY, 11:59pm! Submit one per pair on Blackboard.

Design, prototyping and construction

Agile Software Development Agile UX Work. Kati Kuusinen TUT / Pervasive / IHTE

Best Practices for Collecting User Requirements

A developer s guide to load testing

Transcription:

Administrivia Software Process CS169 Lecture 2 Added 20 more so far Will limit enrollment to ~65 students Only one TA so far Start thinking about project proposal Bonus points for proposals that will be popular! (again based on G. Necula slides) Prof. Brewer CS 169 Lecture 2 1 Prof. Brewer CS 169 Lecture 2 2 Review: What is Software Engineering For? Solve two problems: How do we know the code works? How do we develop software efficiently? Minimize time Minimize dollars Minimize To do either we need specifications Software Process Most projects follow recognized stages From inception to completion These steps are a software process Arrived at by trial and (lots of) error Represent a good deal of accumulated wisdom Process = how things are done In contrast to what is done Prof. Brewer CS 169 Lecture 2 3 Prof. Brewer CS 169 Lecture 2 4 Software Engineering Layers Waterfall Process Phases Tools Methods Process Process: framework of the required tasks e.g., waterfall, extreme programming Methods: technical how to e.g., design review, code review, testing, Tools: automate processes and methods Prof. Brewer CS 169 Lecture 2 5 Gather Requirements Specification Implementation Integration Product Prof. Brewer CS 169 Lecture 2 6 1

1. Gather Requirements 2. Specification Figure out what this thing is supposed to do A raw list of features Written down... Usually a good idea to talk to users, clients, or customers! But note, they don t always know what they want Purpose: Make sure we don t build the wrong thing A written description of what the system does In all circumstances For all inputs In each possible state A written document Because it covers all situations, much more comprehensive than requirements Prof. Brewer CS 169 Lecture 2 7 Prof. Brewer CS 169 Lecture 2 8 3. The system architecture Decompose system into modules Specify interfaces between modules Much more of how the system works, rather than what it does 3. The system architecture Decompose system in modules Specify interfaces between modules Much more of how the system works, rather than what it does Prof. Brewer CS 169 Lecture 2 9 Prof. Brewer CS 169 Lecture 2 10 4. Implementation Code up the design First, make a plan The order in which things will be done Usually by priority Also for testability 5. Integration Put the pieces together A major QA effort at this point to test the entire system Test each module Prof. Brewer CS 169 Lecture 2 11 Prof. Brewer CS 169 Lecture 2 12 2

5. Integration 6. Product Put the pieces together A major QA effort at this point to test the entire system Ship and be happy Actually, start maintenance Prof. Brewer CS 169 Lecture 2 13 Prof. Brewer CS 169 Lecture 2 14 A Software Process This is called the waterfall model one of the standard models for developing software Each stage leads on to the next No iteration or feedback between stages The Waterfall Model Gather Requirements Specification Implementation Integration Prof. Brewer CS 169 Lecture 2 15 Product Prof. Brewer CS 169 Lecture 2 16 The Waterfall Model (Cont.) There is testing after each phase Verify the requirements, the spec, the design Not just the coding and the integration The Waterfall Model (Discussion) What are the risks with the waterfall model? Note the top- down design Requirements, spec, design Bottom- up implementation Implement, integrate, product Prof. Brewer CS 169 Lecture 2 17 Prof. Brewer CS 169 Lecture 2 18 3

My Opinions The major risks are: Relies heavily on being able to accurately assess requirements at the start Little feedback from users until very late Unless they understand specification documents Problems in the specification may be found very late Coding or integration Whole process can take a long time before the first working version is seen My Opinions The waterfall model seems to be adopted from other fields of engineering This is how to build bridges I believe very little software is truly built using the waterfall process Where is it most, least applicable? But many good aspects Emphasis on spec, design, testing Emphasis on communication through documents Prof. Brewer CS 169 Lecture 2 19 Prof. Brewer CS 169 Lecture 2 20 An Opinion on Time Time is the enemy of all software projects Taking a long time is inherently risky It is hard to make predictions, especially about the future - Yogi Berra Prof. Brewer CS 169 Lecture 2 21 Why? The world changes, sometimes quickly Technologies become obsolete Many products obsolete before they first ship! Other people produce competitive software Software usually depends on many 3 rd -party pieces Compilers, networking libraries, operating systems, etc. All of these are in constant motion Moving slowly means spending lots of energy keeping up with these changes Prof. Brewer CS 169 Lecture 2 22 A Case Study California DMV software ( 87-93) Attempt to merge driver & vehicle registration systems thought to take 6 years and $8 million Spent 7 years and $50 million before pulling the plug costs 6.5x initial estimate & expected delivery slipped to 1998 (or 11 years)! Prof. Brewer CS 169 Lecture 2 23 The Flip Side: Advantages to Being Fast In the short- term, we can assume the world will not change At least not much Being fast greatly simplifies planning Near-term predictions are much more reliable Unfortunately, the waterfall model does not lend itself to speed... Prof. Brewer CS 169 Lecture 2 24 4

Something Faster: Rapid Prototyping Write a quick prototype Show it to users Use to refine requirements Then proceed as in waterfall model Throw away the prototype Do spec, design, coding, integration, etc. Comments on Rapid Prototyping Hard to throw away the prototype Slogan the prototype is the product Happens more often than you might think! A prototype is useful in refining requirements Much more realistic to show users a system rather than specification documents A prototype exposes design mistakes Experience building a prototype will improve greatly the accuracy of plans Prof. Brewer CS 169 Lecture 2 25 Prof. Brewer CS 169 Lecture 2 26 Opinions on Reality Neither of these models is true to life In reality, feedback between all stages Specifications will demand refined requirements can affect the specification Coding problems can affect the design Final product may lead to changes in requirements I.e., the initial requirements weren t right! Waterfall model with feedback loops What to Do? Accept that later stages may force changes in earlier decisions And plan for it The key: Minimize the risk Recognize which decisions may need to be revised Plan to get confirmation/refutation as soon as possible Prof. Brewer CS 169 Lecture 2 27 Prof. Brewer CS 169 Lecture 2 28 Iterative Models: Plan for Change Use the same stages as the waterfall model But plan to iterate the whole cycle several times Each cycle is a build Smaller, lighter-weight than entire product Break the project into a series of builds which lead from a skeletal prototype to a finished product Gather Requirements Same idea as before Talk to users, find out what is needed But recognize diminishing returns Without something to show, probably can t get full picture of requirements on the first iteration Prof. Brewer CS 169 Lecture 2 29 Prof. Brewer CS 169 Lecture 2 30 5

Specification A written description of what the system does In all circumstances For all inputs In each possible state Still need this Worth significant time Recognize it will evolve Be aware of what aspects are under-specified Prof. Brewer CS 169 Lecture 2 31 Decompose system into modules and specify interfaces for change Which parts are most likely to change? Put abstraction there Prof. Brewer CS 169 Lecture 2 32 Decompose system into modules and specify interfaces Which parts are most likely to change? Put abstraction there Plan incremental development of each module From skeletal component to full functionality From most critical to least critical features Prof. Brewer CS 169 Lecture 2 33 Prof. Brewer CS 169 Lecture 2 34 Implementation: Build 1 Implementation: Subsequent Builds Get a skeletal system working All the pieces are there, but none of them do very much But the interfaces are implemented This allows A complete system to be built Development of individual components to rely on all interfaces of other components Prof. Brewer CS 169 Lecture 2 35 After build 1, always have a demo to show To customers To the team Communication! Each build adds more functionality Prof. Brewer CS 169 Lecture 2 36 6

Integration Integration and major test for each build Stabilization point Continues until last build But may begin shipping earlier builds Advantages Find problems sooner Get early feedback from users Get early feedback on whether spec/design are feasible More quantifiable than waterfall When build 3 of 4 is done, product is 75% complete What percentage have we completed at the implementation stage of the waterfall model? Prof. Brewer CS 169 Lecture 2 37 Prof. Brewer CS 169 Lecture 2 38 Disadvantages Main risk is making a major mistake in requirements, spec, or design Because we don t invest as much time before build 1 Begin coding before problem is fully understood Trade this off against the risks of being slow Often better to get something working and get feedback on that rather than study problem in the abstract In Practice Most consumer software development uses the iterative model Daily builds System is always working Microsoft is a well-known example Many systems that are hard to test use something more like a waterfall model E.g., unmanned space probes Prof. Brewer CS 169 Lecture 2 39 Prof. Brewer CS 169 Lecture 2 40 Conclusions Important to follow a good process Waterfall top-down design, bottom-up implementation Lots of upfront thinking, but slow, hard to iterate Iterative, or evolutionary processes Build a prototype quickly, then evolve it Postpone some of the thinking Prof. Brewer CS 169 Lecture 2 41 7