Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93...

12
Processes, Tools, & Best Practices

Transcript of Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93...

Page 1: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

Processes, Tools, & Best Practices

Page 2: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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

Page 3: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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.

Page 4: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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

Page 5: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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

Page 6: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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, …)

Page 7: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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

Page 8: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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

Page 9: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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

Page 10: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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

Page 11: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

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

Page 12: Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

Questions

?