Post on 26-Dec-2015
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
Definition Planning Production Termination
Charter Approved
Project Plan Approved
Deliverables Approved
Closeout Report Approved
Gates:
Phases:
Need for Project Met
High-level Software Design
Software & Test Implementation
Integration & Rollout
Test/PTR
High-level Design Approved
Full Function AcceptanceGates:
Phases:
Low-level Software & Test Design
Rollout Readiness Review
Low-level Design Approved
Production
Project Under Change Management
-Business Need-Deliverables-Scope-Success Criteria
Activities:-Scope-Milestone schedule-Risks-Team
-Execute-Monitor-Adjust
-Gather feedback-Analyze project-Improve
Time: A week or twoFew days Weeks to years A week
Iterative Development
Definition Planning Production Termination
Charter Approved
Project Plan Approved
Deliverables Approved
Closeout Report Approved
Gates:
Phases:
Need for Project Met
-Business Need-Deliverables-Scope-Success Criteria
Activities:-Scope-Milestone schedule-Risks-Team
-Execute-Monitor-Adjust
-Gather feedback-Analyze project-Improve
Time: A week or twoFew days Weeks to years A week
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
?