UC Santa Barbara. CS189A - Capstone. Christopher Kruegel Department of Computer Science UC Santa Barbara

Similar documents
System integration and software process

Project Management. Software Projects vs. Engineering Projects

Scheduling. Adapted from John Musser

Project Planning. COSC345 Software Engineering 2016 Slides by Andrew Trotman given by O K

Announcements. INF 111 / CSE 121: Software Tools and Methods. Class Overall & Quiz 3. Class Averages. Today s Lecture. Previously in INF 111/CSE 121

Project Management. CHAOS Survey results. Denver Airport Automated Baggage System One of the worst technology failure the US government funded.

CS 307: Software Engineering. Lecture 14: Project Management

Lecture 22 System Development

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 11: Managing the Software Process

Selecting Software Development Life Cycles. Adapted from Chapter 4, Futrell

Chapter 3 Project Management

Session 2: A Phased Life Cycle for a modern system development project. COMP 377/477 Spring 2016 Conrad Weisert

CSE 331 Software Design & Implementation. Hal Perkins Winter 2018 System Integration and Software Process

Sources of Error in Software Cost Estimation

Software Project Management

Project Planning & Scheduling

Prepared by: Mr.M.SYED SHAHUL HAMEED CHAPTER 3 SYSTEMS PLANNING - MANAGING SYSTEMS PROJECTS

Management of Software Engineering. Ch. 8 1

Project Time Management

Today s Lecture. Fall 2004 SE 101 Introduction to Software Engineering 2

Lecture 11: Managing Your Project. Starting point

Darshan Institute of Engineering & Technology for Diploma Studies

KINGS COLLEGE OF ENGINEERING DEPARTMENT OF INFORMATION TECHNOLOGY QUESTION BANK

Announcements. Lecture 22 System Development. Announcements. Announcements. CSE 331 Software Design and Implementation. Leah Perlmutter / Summer 2018

Project Management is only a tool - it is never a substitute for effective managers.

6 PROJECT TIME MANAGEMENT

Measuring Effort and Productivity of Agile Projects

ECE-492 SENIOR ADVANCED DESIGN PROJECT

developer.* The Independent Magazine for Software Professionals Automating Software Development Processes by Tim Kitchens

cis20.2 design and implementation of software applications 2 spring 2010 lecture # I.2

the software world... software engineering? software engineering: one definition

Professor Hausi A. Müller PhD PEng FCAE Department of Computer Science Faculty of Engineering University of Victoria

BCS HIGHER EDUCATION QUALIFICATIONS Level 6 Professional Graduate Diploma in IT. October 2012 EXAMINERS REPORT. Software Engineering 2

Software Engineering

Importance of Software Testing with Study of Various Testing Techniques & Automation Tools

Lecture- 11. Project Scheduling. Dronacharya College of Engineering

Chapter 2 The Project Management Life Cycle

// How Traditional Risk Reporting Has Let Us Down

Chapter 3 Managing Systems Projects

Volume 8, No. 1, Jan-Feb 2017 International Journal of Advanced Research in Computer Science RESEARCH PAPER Available Online at

How to improve the quality of your processes

Information Technology Project Management. Copyright 2012 John Wiley & Sons, Inc.

Managing System Performance

Understanding and Managing Uncertainty in Schedules

Darshan Institute of Engineering & Technology for Diploma Studies Rajkot Unit-1

Week 5 Project Work Plan

MBP1123 Project Scope, Time and Cost Management Prepared by Dr Khairul Anuar

Test Workflow. Michael Fourman Cs2 Software Engineering

How to improve the quality of your processes

Information Technology Project Management, Seventh Edition

Deeper. Deeper. Deeper. Deeper. Deeper. Deeper. What is the advantage of breaking a project down into tasks and sub-tasks?

Estimating Project Schedule-Time and Cost

Chapter 24. Software Project Scheduling

Welcome to lecture 4 of Topic 2.9. In this lecture we focus on Phase 2 of the Project Management Lifecycle the planning phase

Lectures 2 & 3. Software Processes. Software Engineering, COMP201 Slide 1

E2-E3: MANAGEMENT. CHAPTER-3 PROJECT MANAGEMENT (Date of creation: )

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING UNIT-1

Introduction to Agile Life Cycles. CSCI 5828: Foundations of Software Engineering Lecture 07 09/13/2016

Goals of course. Themes: What can you do to evaluate a new technique? How do you measure what you are doing?

Introduction to Software Metrics

Test your Understanding-The Answers

Project Planning. CITS3220 Software Requirements & Project Management

Daitan White Paper The Software Development versus Maintenance Dilemma COMMON MISCALCULATIONS IMPACT REVENUE AND MARKET SHARE

By: Ronny Trefftzs CSCI 5828: Foundations of Software Engineering Spring 2012 Professor: Kenneth Anderson

This tutorial also elaborates on other related methodologies like Agile, RAD and Prototyping.

7. What is planning? It is an act of formulating a program for a definite course of action. Planning is to decide what is to be done.

Software Processes. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 4 Slide 1

Time Management PLANNING

SWE 211 Software Processes

PROJECT PLANNING AND SCHEDULING

Project Time Management

Chapter 4 Project Management

TickITplus Implementation Note

ENGINEERING MANAGEMENT (GE

Chapter 1: Introduction

Software Development Life Cycle

Software Processes. Objectives. Topics covered. The software process. Waterfall model. Generic software process models

White Paper Using S-Curves to improve Project Performance

Objectives. The software process. Topics covered. Waterfall model. Generic software process models. Software Processes

Software Cost estimation

Topics covered. Software process models Process iteration Process activities The Rational Unified Process Computer-aided software engineering

Basics of Software Engineering. Carmen Navarrete

CMPT 275 Software Engineering

Schedule metric analysis: a formalized approach to more realistic planning...

Lecture 28: Software metrics

Cambridge International AS & A Level Computer Science

2017 Construction CPM Conference Ron Winter, PSP, FAACE Schedule Analyzer Software CPM ACTIVITY STATUS

Project Time Management

Planning Tools and Techniques Part 2

Whitemarsh Project Management Overview

MGT/437. Project Management. Session #2 University of Phoenix 02/12/2004 Brian Smithson. 02/12/2004 MGT/437 #2 -- Brian Smithson 1

A Review Paper on Software Testing

DOCUMENTING FUNCTION POINT MEASUREMENTS. By Thomas Stein CFPS, CPA, CDFM

Project Planning, Scheduling and Preparation of Quality Assurance Control Documents

turning data into dollars

Chapter 3 Software Process Model

Transcription:

CS189A - Capstone Christopher Kruegel Department of Computer Science http://www.cs.ucsb.edu/~chris/

Announcements Next Project Deliverable: Software Requirements Specifications (SRS) are due Wednesday, February 2 nd Presentations on Friday

Project Management The Mythical Man-Month, F. B. Brooks, 1975 A common disaster in software projects is not being able to deliver the project on time Why is this common? Techniques of estimating cost of a project is poorly developed Most estimating techniques confuse effort with progress, relying on the fact that man and months are interchangeable Since the estimates are not very reliable software managers are not firm on the product delivery times Progress in the project schedule is poorly monitored When a slippage in the schedule is recognized the common response is to add more manpower which makes matters worse

Mythical Man-Month Unit of effort used in estimating and scheduling: Man-month Cost may vary as the product of the number of men and the number of months, but progress does not. Man-month as a unit for measuring the size of a job is wrong For most cases, a job that takes a software developer two months cannot be done by two software developers in one month

Mythical Man-Month Men and months are interchangeable only when a task can be partitioned among many workers with no communication among them Which is not true for software development projects There are sequential constraints in software development: For example, you cannot integrate and do integration testing on two modules before implementing both of them When a task cannot be partitioned because of sequential constraints, the application of more effort has no effect on the schedule You can not cook one pie faster with two ovens

Mythical Man-Month In tasks that can be partitioned but which require communication among subtasks, the effort of communication must be added to the amount of work to be done Added communication has two parts: Training The added worker must be trained in the technology, the goals of the effort, the overall strategy, the plan of the work Training cannot be partitioned Intercommunication If each part of the task must be separately coordinated with each other part, the communication effort increases quadratic: n(n-1)/2 3 developers require 3 times as mush communication effort as 2 developers, 4 developers require 6 times as much communication effort as two developers

Communication Effort 3 developers, 3 communication paths 4 developers 6 communication paths 5 developers 10 communication paths

Project duration Adding More People Months Months Number of people Due to sequential constraints the relationship will not be linear Number of people Actually, since software development is a complex task the communication overhead is big, therefore adding more people to a project can lengthen rather than shorten the schedule Brook s Law: Adding more manpower to a late software project makes it later.

A Side Note: Parallel Programming The same issues come up in parallel programming In parallel programming the main idea is to partition a computer program to a set of sub-programs which will run on different processors so that the result is obtained faster Useful for scientific computing applications that require a lot of computing power such as weather forecast

A Side Note: Parallel Programming The speed-up on P processors is defined as S(P) = (exec. time on 1 processor) / (exec. time on P processors) In an ideal situation one would want the speed-up to increase linearly with the number of processors However, sequential constraints and communication overhead prevents this Hence, most of the time, one cannot trade execution time with number of processors

A Side Note: Parallel Programming S(P) (Speed-up) S(P) (Speed-up) P (number of processors) Sequential constraints: due to parts of the program that cannot be parallelized (e.g., initialization) speed-up is not linear P (number of processors) Typical speed-up curve: Added communication overhead will eventually degrade the performance, i.e., adding more processors will actually slow down the program.

Cost Estimation, Metrics Estimating how long a software project will take is difficult Monitoring the progress in a project is crucial for project management For both of these, one needs good metrics It is hard to measure software Different phases of software require different metrics: requirements, design, implementation

Size of Code as a Metric KLOC: Thousand Lines of Code Different languages imply different lengths of code The number of lines in the code will vary based on the programmer s ability DSI: Delivered Source Instructions The number of lines of code delivered to customer NCSS: Non-Commented Source Statements Ignore comments

Cost Estimation, Metrics Function points: weighted sum of the following the number of inputs: distinct number of items the user provides to the system (weight 4) the number of outputs: distinct number of items that the system provides to the user (weight 5) In counting inputs and outputs a group of similar items are counted as one item the number of inquiries: distinct interactive queries to the system that require an action (weight 4) the number of files (weight 10) the number of external interfaces to other systems (weight 7)

Causes of Inaccurate Cost Estimation Lederer and Prasad investigated cost estimation practices in 115 different organizations: Nine Management Guidelines for Better Cost Estimating, Lederer and Prasad, Communications of the ACM, 35, pp, 51-59, February 1992. 35% indicated that their estimates were moderately unsatisfactory or very unsatisfactory Key causes for inaccurate estimates were: Frequent requests for changes by customers Overlooked tasks Customers lack of understanding of their own requirements Insufficient analysis when developing an estimate Lack of coordination during development Lack of an adequate method or guidelines for estimating

Causes of Inaccurate Cost Estimation In Lederer and Prasad study, the key influences on estimates were found to be Complexity of the proposed application system Required integration with existing systems Complexity of the programs in the system Size of the system expressed in number of functions or programs Capabilities of the project team members Project team s experience with the application Anticipated frequency of extent of potential changes in user requirements Project team s experience with the programming language Number of project team members Extent of programming or documentation standards Availability of supporting software tools

Planning and Monitoring One can use PERT (Program Evaluation and Review Technique) charts or Gantt charts (developed by Henry L. Gantt) for planning and monitoring a project Break the project into tasks Estimate the amount of time required for completing each task Tasks should not be too large (it is harder to estimate larger tasks) Write the dependencies among the tasks There is a dependency between two tasks if one has to be completed before the other one starts

PERT Charts PERT charts and critical path method can be used for project planning and monitoring Task 4: 2 days E Task 9: 5 days A Task 1: 6 days B Task 2: 6 days Task 5: 4 days F Task 10: 5 days H Task 12: 3 days Task 3: 2 days C Task 6: 4 days Task 7: 7 days J D Task 8: 4 days G Task 11: 5 days Arcs represent the activities, nodes represent end or beginning of activities. Dashed arcs show the critical path (longest path from the Start node to Finish node)

Monitoring with PERT charts A Task 1: 6 days B Task 2: 7 days Task 3: 10 days Task 4: 2 days Task 9: 4 days E C Task 5: 5 days F Task 6: 4 days Task 7: 7 days Task 10: 5 days H Task 12: 3 days J D Task 8: 4 days G Task 11: 5 days Thick lines indicate completed tasks. Project has to be monitored constantly and PERT chart should be updated. As seen above, the critical paths may change after the estimates are updated with the exact time spent on completed activities.

Gantt Charts UC Day Santa 18 Barbara Gantt Charts can also be used for project planning and scheduling Day 1 Task 1 Task 4 Task 9 Task 12 Task 5 Task 6 Task 10 Task 2 Task 7 Task 3 Task 8 Task 11 Days of the project are shown with vertical dashed lines. Tasks are shown with horizontal rectangles Lengths of the rectangles show the amount of time each task will take Tasks are scheduled based on the dependencies

An Example A simple compiler project is divided in to following tasks with the associated cost estimates: Design (6 days) Implement Scanner (4 days) Implement Parser (5 days) Implement Code Generator (7 days) Integration and Testing (7 days) Write Manual (4 days) The dependencies among these tasks are as follows: Implementation of Scanner, Parser and Code Generator and Writing of the Manual can start after the Design is finished Integration and Testing can start after Implementation of Scanner, Parser and Code Generator are all finished

An Example: PERT Chart Implement Scanner: 4 days Project Start Design: 6 days Design Finished Implement Parser: 5 days Implement. Finished Integration and Testing: 7 days Implement Code Generator: 7 days Project Finished Write Manual: 4 days Dashed arcs show the critical path

An Example: Gantt Chart Day 1 Day 20 Design Imp. Parser Imp. Code Generator Imp. Scanner Integration and Test Write Manual

Team Organization To limit the amount of interaction needed, one has to think about team organization in software development Chief-programmer teams (the cathedral approach) One of the programmers is the chief programmer Other programmers interact with the chief programmer Limits the number of communication channels Chief Programmer Programmer Programmer Programmer

Democratic teams Team Organization Team members review each other s work and are responsible as a group for what every member produces Team members have to own all of the system, not only the part they develop. Every team member is responsible for the whole product Finding faults have to be encouraged and faults have to be expected Due to communication overhead democratic teams have to be small

The Cathedral and the Bazaar In a famous article Eric Stevens Raymond argues the merits of Open Source Software Development (the Bazaar approach): The Cathedral and the Bazaar, 1997, http://www.catb.org/~esr/writings/cathedral-bazaar/ Based on his experiences in Open Source development he states a set of observations/lessons about Open Source development These principles articulate the reasons behind the success (e.g., Linux) of Open Source development Let s go over his observations/lessons

The Cathedral and the Bazaar On choosing a task: 1. Every good work of software starts by scratching a developer s itch. If you want to produce good software, work on a problem that you care about. On evolutionary, incremental development: 2. Good programmers know how to write. Great ones know how to rewrite (and reuse). The software evolves incrementally with a lot of reuse. 3. Plan to throw one away; you will, anyhow. It is hard to understand a problem (requirements) until after the first time you implement a solution (implementation) Prototyping

The Cathedral and the Bazaar On maintaining open source software 4. If you have the right attitude, interesting problems will find you. 5. When you lose interest in a program, your last duty to it is to hand it off to a competent successor. These rely on the open source model where there are a large set of developers who volunteer for the tasks. It is important that the code is maintained by someone who cares about it and understands it well.

The Cathedral and the Bazaar On debugging open source software: 6. Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging. This of course is assuming that users are programmers 7. Release early. Release often. And listen to your customers. In order to take full advantage of the previous observation. 8. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. Linus s Law: Given enough eyeballs, all bugs are shallow Debugging does not suffer from the quadratic communication cost that makes large development teams problematic

The Cathedral and the Bazaar On software design 9. Smart data structures and dumb code works a lot better than the other way around. 12. Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong. 13. Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.

The Cathedral and the Bazaar On beta-testers and users 10. If you treat your beta-testers as if they re your most valuable resource, they will respond by becoming your most valuable resource. 11. The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better. 14. Any tool should be useful in the expected way, but a truly great tool lends itself uses you never expected. The lifetime of the program may be much longer than what the developers expected and therefore it is important that the code is maintainable.