Team Formation Dr. Tallman. ECE297 Tutorials, Jan 21 & Jan 23 Your team will meet your Communication Instructor (CI) and schedule a weekly 30- minute.

Slides:



Advertisements
Similar presentations
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Advertisements

Agile Planning Dealing with Reality. Reality Basic agile principle – don’t expect static plans to hold, be flexible and expect changes.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
Computer Engineering 203 R Smith Project Tracking 12/ Project Tracking Why do we want to track a project? What is the projects MOV? – Why is tracking.
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
Applied Software Project Management INTRODUCTION Applied Software Project Management 1 5/20/2015.
Agile
March 25, 2002R McFadyen a lightweight approach to software development. about 5 years old has been used at: Bayerische Landesbank, Credit Swiss.
Individuals and interactions
Computer Science 162 Section 1 CS162 Teaching Staff.
1 CMSC 132: Object-Oriented Programming II Software Development I Department of Computer Science University of Maryland, College Park.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Chapter 3.1 Teams and Processes. 2 Programming Teams In the 1980s programmers developed the whole game (and did the art and sounds too!) Now programmers.
SE is not like other projects. l The project is intangible. l There is no standardized solution process. l New projects may have little or no relationship.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
SM3121 Software Technology Mark Green School of Creative Media.
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
Roles Managers Technical Team Leaders Programmers Customers Database Administrators Instructors.
Ch 2: Software Life-Cycle Models CSCI Ideal Software Development.
Dr. Tom WayCSC Software Processes CSC 4700 Software Engineering.
Software Project Planning CS470. What is Planning? Phases of a project can be mostly predicted Planning is the process of estimating the time and resources.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
T Project Review Magnificent Seven Project planning iteration
22 Jul 2005CSE403, Summer'05, Lecture 12 Lecture 12: Scheduling, Estimation, and Prioritization (Part II) Valentin Razmov.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
(A radical interpretation) Tomo Lennox Bow Tie computer services Why Agile Works.
IT253: Computer Organization
XP – Extreme Programming
13-January-2003cse LifeCycle © 2003 University of Washington1 Lifecycle CSE 403, Winter 2003 Software Engineering
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
AP-1 5. Project Management. AP-2 Software Failure Software fails at a significant rate What is failure? Not delivering it on time is an estimation failure.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Fall CS-EE 480 Lillevik 480f06-l10 University of Portland School of Engineering Senior Design Lecture 10 Webs Scheduling MS Project (Optional)
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
IS3320 Developing and Using Management Information Systems Lecture 20: Project Management Rob Gleasure
CS 5150 Software Engineering Lecture 2 Software Processes 1.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Graphs, Continued ECE 297.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
CREATING GREAT STANDS: A STEP-BY-STEP GUIDE TO CREATING A TEAM’S MOST VALUABLE TOOL DFA Coaches DoLE Team.
Version Control and SVN ECE 297. Why Do We Need Version Control?
ECE297 TA GUIDE Project supervision. Agenda M0 feedback Project overview M1 overview Project supervision.
Marking and Feedback CPD Student approach to marking.
Continuous Improvement. Start Simple and Continually Improve E.g., Gmail Labels 1.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Making more hours in the day Managing your time at university This workshop was originally produced at the.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Software Development - Methodologies
Software Development.
Agile Development & Companies
Sample Wiki Comments?.
CS 5150 Software Engineering
Administrative Items ECE 297.
Client Management Managing Client Expectations
Project Management.
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Coming up: What is Agile?
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Agile Development – a new way of software development?
Presentation transcript:

Team Formation Dr. Tallman

ECE297 Tutorials, Jan 21 & Jan 23 Your team will meet your Communication Instructor (CI) and schedule a weekly 30- minute meeting beginning the following week. Wed, Jan 21, 1-3pm, students go to GB404 Fri, Jan 23, 9-11am, students go to GB412 Fri, Jan 23, 3-5pm, students go to GB412 If you do not have a full team formed by these dates, come to your scheduled tutorial, and Dr. Tallman will assist you.

Team Formation & Performance ECE 297

Four Stages of a Team By Bruce Tuckman, Psychology Professor 1.Forming –Picking team, getting to know each other 2.Storming –Figuring out who does what & how, often contentious 3.Norming –Team has figured out who does what, members understand and accountable for their roles 4.Performing –Only high-performance teams reach this stage; continuous improvement, open discussion, high trust You are here! Want to get here (or beyond)

High-Performing Teams Open discussion –Tell it like it is! –Don’t let things fester –But be constructive Transparency –If you’re behind or some of your code doesn’t work, say so clearly –Don’t hide or evade Accountability –Take responsibility for your part of the project –Own your mistakes, delays, etc. and find a solution Trust –Helped by all the above –Plus spend time working together (in person!)

Team Status Meeting Two per week: 1 with CI & 1 with TA –Typical industry practice: weekly team meeting –With written status (usually wiki) –Good meetings help make good teams Show transparency and accountability –Concise statement of what is done and not done –Clear (single person) ownership of various tasks With a target completion date Leverage the CI & TA’s expertise –Mentors are valuable  ask questions

Team wiki Team’s memory and to-do list –Key data –What’s done –What’s next Can have lots of detailed data –If so, add a summary for weekly CI & TA meeting Should have with initial password –Change it! Your wiki: for your team, TA and CI Wiki Quick Start Guide Go to 297 wiki

Coding in a Team

Coding Productively in a Team Want –Parallel development  multiple team members working at once –Without getting in each others way / wasting work How? “Adding manpower to a late software project makes it later.” -- Fred Brooks

1. Split Up Functionality Work in different files or functions Feature 1Feature 2 f1.cpp f2.cpp builds tests prog.exe builds tests prog.exe svn update svn commit

Features Not Totally Independent? Feature 1Feature 2 f1.cpp f2.cpp builds tests prog.exe builds tests prog.exe svn update svn commit common Common More communication during planning & coding common Frequent commits more important. Continuous integration!

Coding Routine 1.svn update to latest code 2.fix a bug, or enhance a feature, or … 3.build 4.test 5.svn commit What if someone else changed repository code? svn update build test then re-try svn commit

Update/Commit Often Continuous integration –Otherwise can run out of time at the end Easier to move tasks between team members –Don’t have a lot of new code in one team member’s working copy only But don’t break the build –Do not commit broken code Won’t compile Or breaks previously working tests –Halts development by other team members

2. Split Development and Test Test & debug is massively parallel –Can add many people, even late in project, and get gains Developing new features Testing & Debugging

3. Pair Programming One computer, two programmers –Driver: Writing code Focus on details –Navigator: Reading code, giving feedback Focus on strategy: “What if there’s a NULL ptr”? –Switch roles frequently –Talk a lot –Stop when you get tired Pair Programming Tutorial

Pair Programming Two people writing one thing: productive? 1.Less code written But higher quality Saves debugging & future issues 2.Helps a team become cohesive 3.Grows expertise of team members  mentoring 4.Helps team members read each others code Most studies say more productive for new teams, and/or one programmer not expert image: llewellynfalco.blogspot.com

Project Management

Waterfall Development Up front planning Phases: concept to detailed implementation Motivation: early changes cheaper Changes cheap Changes expensive Does not really work for complex projects  no one can plan well enough!

Iterative/Agile Development Test & Evaluate Refine Prototype Includes end-user / customer evaluation Plan, but quickly Later parts of the plan more coarse

One Flavour of “Agile”: Scrum Choose features for 21-day sprint Team meets each day for 15 min scrum End of each sprint  working SW for customer image: ecomcanada.org

21 Big Projects Altera: Plan as far ahead as you can, but don’t paralyze yourself –Plan gets coarse as you go out in time Have measurable milestones –3 year project  need to break up schedule –Hold people to these milestones! –Clear must have features –Everything else: nice to have Get something working and improve  still iterative –Define quantitative metrics, and measure constantly Weekly status meeting –wiki, crisp reporting –Big picture  progress toward milestones + $200 M State of the art for 2 years!

22 Project Management: Schedule

23 Design: Prototype Early Not having a working system is very dangerous –Don’t know when/if the system will work –Engineers can’t test their work in the whole system –Don’t know where the problem areas to improve / optimize will be Get something simple working Test & Measure Add features / Improve problem areas Repeat Keep it simple! –Use simplest approach that works Can be HW + SW

Case Study:

25 Background My PhD thesis: new CAD System for FPGAs Results best published to date Commercial interest Formed company to commercialize  4 people initially First customer was Altera  10 months to produce a new placement and routing system for Altera’s chips  Aggressive goal: 10X better than current system

26 Place and Route Example

27 Managing Complexity Have: 25,000 lines of C code  Don’t target Altera’s chips or deal with full complexities of commercial chips  Have to write a lot more code Maybe C++ would be better long-term?  If we re-write now, much easier than re-writing later  But, extra work and we had more experience in C

28 Design: Limit Scope! Stick with C  Project already complex, full of uncertainties, tight schedule  Don’t add more complexity and work  Not right time to become expert in new language  Customer doesn’t care what language we use: wants better placement and routing results Solve the problems you need to, and skip the rest Several companies have destroyed themselves trying to move to the “next big programming language”

29 Project Management Created fairly detailed schedule  What would each person work on  How long would each task take Added 50% extra time for each task for problems / unknowns  Defined measurable milestones Every 3 months, we had a specific test to show more of the project worked Otherwise we didn’t get paid by Altera  Schedule & milestones were crucial  focus

30 Measure Something Quantitative Best way to spiral and track a project: measure Define quantitative metrics  Then measure them throughout the project Right Track CAD: measured  Circuit Speed  Compile Time  Fraction of circuits that completed 3 numbers made it clear where we stood at all times Everyone measured on all important changes “You cannot improve what you cannot measure”

Outcome Hit all milestones, except first (2 weeks late)  Focused! CAD system exceeded expectations  30X less runtime  38% faster circuits  Altera replaced their P & R engine with the prototype Started simple, measured where to improve  Some simple algorithms still in current Quartus II  didn’t need more! 31

Case Study: Quartus (First Version)

33 Background Altera had highly successful CAD system: Max+PlusII Decided to do a complete re-write to a new CAD system  Quartus  Started ~ Goals:  C++ (not C)  Cleaner, more extensible code  Allow multiple engineers to collaborate on a project easily  Allow fast, “incremental” recompiles

34 Complexity Quartus was complex  Re-write of multi-million line software system  New language (C++), engineers not as familiar with it  Object-oriented design became a goal  Features that no one knew exactly how to implement (incremental recompile, workgroup computing) were considered key Hadn’t defined how to measure these features either

35 Planning and Prototyping No working prototype for much of the project Spent a year planning, with no coding  Too much Waterfall  paralysis

36 Scheduling & Measuring Schedules repeatedly missed  Task list not detailed enough  Too much complexity Didn’t see lateness and scale back soon enough  Lack of clear milestones  Not measuring quantitative metrics toward the real goal True key goal:  Stable CAD system that optimized well  Ready for the next chip (APEX 20K) when silicon available  Everything else secondary

37 Outcome Software not ready in time for chip Software rushed to market  Not stable enough, didn’t optimize well enough  Very bad customer experiences Lost sales: $billions! Rewrote & renamed later versions:  Now very good!

Case Study: Parallel Placement 38

39 The FPGA Compile Time Challenge Chip size growing more rapidly than CPU speed How to keep CAD tool runtime under control? (CPU speed)

40 Parallel Background 1 million line placement & routing system  Complex algorithms & code  Excellent quality results  Need to add new features & chips regularly Academic parallel placement work  Mostly non-deterministic (results change every run)  Much simpler algorithms

41 The Approach Keep it simple! Minimize code to make parallel  Measure to find key code  10,000 lines of code out of 1 million Use very few parallel primitives  Threads, mutexes Must be deterministic  No race conditions; always get same answer  Much easier to debug & test Leverage tools  Dynamic: Intel thread checker  Static: wrote tool to find thread-unsafe code

42 Results ~4X speed-up on 8 CPUs  Stable: ~2 customer bugs, both in first 2 releases Another parallel effort at Altera (timing engine)  Created rich set of APIs first  Decided on parallel approach without measuring  Failed! APIs buggy & parallel approach not fast