120 likes | 223 Views
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)
E N D
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: • 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. • 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.
Definition Planning Production Termination Phases: Closeout Report Approved Need for Project Met Charter Approved Project Plan Approved Deliverables Approved Gates: -Business Need -Deliverables -Scope -Success Criteria -Scope -Milestone schedule -Risks -Team -Execute -Monitor -Adjust -Gather feedback -Analyze project -Improve Activities: Time: Few days A week or two Weeks to years A week Production High-level Software Design Low-level Software & Test Design Software & Test Implementation Integration & Rollout Test/PTR Project Under Change Management Phases: High-level Design Approved Low-level Design Approved Rollout Readiness Review Full Function Acceptance Gates: Waterfall Development
Definition Planning Production Termination Phases: Closeout Report Approved Need for Project Met Charter Approved Project Plan Approved Deliverables Approved Gates: -Business Need -Deliverables -Scope -Success Criteria -Scope -Milestone schedule -Risks -Team -Execute -Monitor -Adjust -Gather feedback -Analyze project -Improve Activities: Time: Few days A week or two Weeks to years A week Iterative Development
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