Lexmark Solution Builder Toolkit (SBT) 4.3

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