120 likes | 231 Views
This document outlines key processes, tools, and best practices in software development, drawing on 15 years of experience at Lexmark. It compares traditional Waterfall methodologies with modern Agile practices, illustrating the advantages of iterative development and the importance of customer feedback. Essential topics include requirement gathering, project planning, development and testing phases, and recommendations for effective communication and tool usage. The aim is to foster adherence to common standards and practices across project teams to enhance collaboration and improve outcomes.
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