This preview shows pages 1–3. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: Page 1 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 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. Lec 6.3 2/6/12 Anthony D. Joseph and Ion Stoica CS162 UCB Spring 2012 The Role of Software Engineering Developing software efciently 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 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 nished in one year: staging iron production thousands of miles away Or the Hoover dam: built towns to hold workers l You just have to get your synchronization right! z Page 2 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 efFciently 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! Lec 6.6 2/6/12 Anthony D. Joseph and Ion Stoica CS162 UCB Spring 2012 Techniques for Partitioning Tasks unctional 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. ailed! Interfaces had changed (documented, but no one noticed). Result: would cost another $200 million to Fx....
View Full Document
- Spring '02
- Operating Systems