Processes, Tools, Best Practices

Document Sample
Processes, Tools, Best Practices Powered By Docstoc
					Processes, Tools, & Best
Practices
My Background
• Lexmark Software Development for 15 years (‘93 – ‘08)
  – Multi-tier Java application servers
  – Window s printer drivers
  – Windows applications
  – Java, C, C++, Visual Basic, Perl, PHP


• IBM co-op in Raleigh, NC for 2 semesters (’91 & ‘92)
  – OS/2 Network Manager Installer


• Siemens co-op in Orlando, FL for 2 semesters (‘89)
  – System testing of telecom switching systems
Project Development Process
Generally 2 camps at Lexmark:
 1. Waterfall (old school)
  •   Greatly depends on getting all of the requirements up front.
  •   Large chunks of separate work (design docs, dev., test, …)
  •   Test and customers come late in the process.
  •   The process is not designed around change.


 2. Iterative (agile)
  •   Light requirements (stories) and documentation.
  •   Small chunks of work. (light docs., small dev., small test.)
  •   Test and customer/stakeholder are part of the process.
  •   The process is designed around change.
Waterfall Development
                     -Business Need         -Scope                             -Execute                    -Gather feedback
  Activities:        -Deliverables          -Milestone schedule                -Monitor                    -Analyze project
                     -Scope                 -Risks                             -Adjust                     -Improve
                     -Success Criteria      -Team


  Time:              Few days               A week or two                 Weeks to years                   A week
  Phases:            Definition                 Planning                   Production                        Termination

                Need for           Charter                 Project Plan                              Deliverables         Closeout
  Gates:        Project Met        Approved                Approved                                  Approved             Report
                                                                                                                          Approved




                                                                   Production


                   High-level               Low-level Software       Software & Test       Integration &        Test/PTR
                   Software Design          & Test Design            Implementation        Rollout
 Phases
 :
                                   High-level                 Low-level            Rollout           Full Function
 Gates:                            Design                     Design               Readines          Acceptance
                                   Approved                   Approved             s Review



                                                                                   Project Under Change
                                                                                   Management
Iterative Development
                    -Business Need      -Scope                              -Execute         -Gather feedback
 Activities:        -Deliverables       -Milestone schedule                 -Monitor         -Analyze project
                    -Scope              -Risks                              -Adjust          -Improve
                    -Success Criteria   -Team


 Time:              Few days            A week or two                  Weeks to years        A week
 Phases:            Definition               Planning                   Production             Termination

               Need for           Charter               Project Plan                    Deliverables        Closeout
 Gates:        Project Met        Approved              Approved                        Approved            Report
                                                                                                            Approved
Project Prerequisites
• Before getting too far into a project, the team needs to buy
  into and adopt a common set of best practices:
  – terminology
  – general process layout
  – coding standards that are automatically enforced by IDEs
  – automated tests & certain code coverage are required
  – communication methods (IM, Twiki, doc. templates, …)
Requirements Gathering
• Requirement sources:
  – Customers (world wide, US, local; technical and non-tech.)
  – Marketing (customer and business needs)
  – Development and Test (technical needs)
• Found it best to focus on a few customers first
• Tools
  – sticky notes
  – web applications (Trac, Redline, Telelogic)
  – spreadsheets and/or Word docs. (user stories to heavy specs.)
  – TWiki pages
Iteration Planning
• Include everyone (dev., test, project management, marketing,
  etc.).

• Break work up into small deliverables so customer(s) can
  be engaged for early feedback.
  – can be discovery work, prototyping, tools dev., code reviews,
   product units, etc.
• Size the deliverables by flash cards in the group
• Light/flexible documentation of planning on
  – TWiki web pages …or
  – spreadsheet …or
  – MS Project
Development/Test/Release
• Code Repository (Subversion)
• Development IDE (Eclipse, MS DevStudio, …)
• Continual Build System (CruiseControl, Rational Suite, …)
• Automated Testing
  – Unit Testing (JUnit, CUnit, etc.)
  – Integration Testing (JUnit)
  – Acceptance Testing (JUnit)
• Problem Tracking System (TeamTrack, Rational Suite)
• Quick, light weight, communications & documentation tools
  (Twiki, web forum app., IM, etc.)
• Stress and Stability Test Environment
Development/Test/Release (cont.)

• Need many PCs for dev., test, and support
 – many OSs to support
   •    Win9x
   •    Win2K
   •    WinXP
   •    2003 Server
   •    Vista
   •    2008 Server
   •    Mac
   •    Linux
   •    … different service pack levels
   •    … 32-bit, 64-bit
   •    … many languages - FIGSBP, Chinese Trad., Chinese Simp.,
       Japanese, Korean, …)
 – tool: using virtual machines more and more
 References
• Agile Estimating and Planning
  – by Mike Cohn

• Lean Software Development: An Agile Toolkit
  – by Mary Poppendieck and Tom Poppendieck

• Interface Oriented Design: With Patterns
  – by Ken Pugh

• Test-Driven Development: A Practical Guide
  – by David Astels

• Design Patterns: Elements of Reusable Object-Oriented
  Software (a.k.a. Gang-of-Four Book)
  – by Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides

• Refactoring: Improving the Design of Existing Code
  – by Martin Fowler, Kent Beck, John Brant, and William Opdyke
Questions




            ?