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 ef¡ciently » 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, Software development process, Anthony D. Joseph, Ion Stoica, Ion Stoica CS162