lec06-programming (1)

lec06-programming (1) - CS162 Operating Systems and Systems...

Info iconThis preview shows pages 1–7. Sign up to view the full content.

View Full Document Right Arrow Icon
CS162 Operating Systems and Systems Programming Lecture 6 Programming Techniques and Teams February 6, 2012 Anthony D. Joseph and Ion Stoica http://inst.eecs.berkeley.edu/~cs162
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Lec 6.2 2/6/12 Anthony D. Joseph and Ion Stoica CS162 ©UCB Spring 2012 Goals for Today Tips for Programming in a Project Team The Software Process Note: Some slides and/or pictures in the following are adapted from slides ©2005 Silberschatz, Galvin, and Gagne. Slides courtesy of Anthony D. Joseph, John Kubiatowicz, AJ Shankar, George Necula, Alex Aiken, Eric Brewer, Ras Bodik, Ion Stoica, Doug Tygar, and David Wagner.
Background image of page 2
Lec 6.3 2/6/12 Anthony D. Joseph and Ion Stoica CS162 ©UCB Spring 2012 The Role of Software Engineering Developing software efficiently » Minimize time » Minimize dollars » Minimize … First, we’ll go through some tips for working in a team Then, we’ll talk about more formal processes
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Lec 6.4 2/6/12 Anthony D. Joseph and Ion Stoica CS162 ©UCB Spring 2012 Tips for Programming in a Project Team Big projects require more than one person (or long, long, long time) Big OS: thousands of person-years! It’s very hard to make software project teams work correctly Doesn’t seem to be as true of big construction projects » Empire state building finished in one year: staging iron production thousands of miles away » Or the Hoover dam: built towns to hold workers “You just have to get your synchronization right!”
Background image of page 4
Lec 6.5 2/6/12 Anthony D. Joseph and Ion Stoica CS162 ©UCB Spring 2012 Big Projects What is a big project? Time/work estimation is hard Programmers are eternal optimistics (it will only take two days)! » This is why we bug you about starting the project early Can a project be efficiently partitioned? Partitionable task decreases in time as you add people But, if you require communication: » Time reaches a minimum bound » With complex interactions, time increases! Mythical person-month problem: » You estimate how long a project will take » Starts to fall behind, so you add more people » Project takes even more time!
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Lec 6.6 2/6/12 Anthony D. Joseph and Ion Stoica CS162 ©UCB Spring 2012 Techniques for Partitioning Tasks Functional Person A implements threads, Person B implements semaphores, Person C implements locks… Problem: Lots of communication across APIs » If B changes the API, A may need to make changes » Story: Large airline company spent $200 million on a new scheduling and booking system. Two teams “working together.” After two years, went to merge software. Failed! Interfaces had changed (documented, but no one noticed). Result: would cost another $200 million to fix.
Background image of page 6
Image of page 7
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 55

lec06-programming (1) - CS162 Operating Systems and Systems...

This preview shows document pages 1 - 7. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online