software development processes: how to create great software, doing it right the first time and keep...
TRANSCRIPT
Software Development Processes: How to create great software, doing it right the first time and keep your sanity Matt Howland
Francesca Noli
Agenda
Software development processes: case studies Traditional Consulting/Services
Release Timelines
Best practices
Development Roles Employee vs. consultant Roles in a development organization
Q&A
Software dev process: traditionalEnterprise Software: release cycle is often 12-18 months and involves between 15 and 50 products
(family pack vs. Division or Applications) MRD (Market Requirement Document) FDD (Functional Requirement Document) TDD (Technical Requirement Document) Code Unit Test Acceptance QA Release Changes after formal hand off to dev (post FDD) through change control requests
reviewed by SVP of development
Software development process: Extreme DevelopmentI.E. Oracle: used in some divisions informally: Same release length as traditional development Used internally to the development organization (no QA or release impact) Developer and Product manager meet every morning for 30 min to decide
which function to implement that day Product manager gives feedback on previous day code
Software Development Process: Start Up
Release every 6-10 weeks Vision or Product Direction from CEO and VPs Detailed product roadmap from product management MRDs/PRDs (Market Requirement Document/ Product Requirement Document) Functional Specs Development (Integrated Research and Development) QA
Regression testing
Release
Software Development Process: Consulting/Services
Largely client defined/negotiated release schedule JAD (Joint application development) Sessions PRD Functional Spec Integration/Migration Plan Negotiated client milestones/deliverables Integrated QA
Software Release Schedule
One major challenge is that you are juggling multiple releases at any time:
Example: January 2006
Release 2 is ready to “go out” (end of qa) Heavy on dev to fix critical issues Heavy on QA and release to package it
Release 3 is code complete and “ready” to be handed off to QA Heavy on development to wrap up the code Heavy on QA to complete their test cases
Release 4 is in planning phase Heavy on product manager to complete PRDs
While this is all going on, the customer is still on release 1
And this is the good news because on license based software, you don’t even know what release your customer is on
Sample Timeline
January
customer on 1
QA on 2
Dev on 3
PM on 4
February
customer on 2
QA on 3
Dev on 3 and 4
PM on 4 and 5
March
customer on 2
QA on 3
Dev on 4
PM on 5
April
customer on 3
QA on 4
Dev on 4 and 5
PM on 5 and 6
Jan 06 Feb06 March 06 April 06
It all starts with good people…but once you have good people you still need more…
Unit tests done by dev and PM before QA starts Additional automated/integrated unit test for complex processes (JUnit, NUnit)
Strong process for QA and release No changes after PRD hand off Document, document, document (includes robust commenting as well as formal
document both user and technical) (JDoc, NDoc are great time savers)
Customer Driven feature set Peer code reviews Revision Managment Up front design (UML, Functional Spec)
Best Practices
Development Role: Traditional Employee
Perks Project Ownership Training on New Technologies Camaraderie Advancement to roles outside of Engineering, Management, Product Management,
Etc. Traditional employee benefits
Downside More distance between you and the customer Less flexibility
Development Role: Consultant
Perks “Guru” status More flexible schedules Extensive customer interaction Pay
Downside Less Project Ownership Career advancement and training are your responsibility and will have to
be actively sought out. No traditional benefits package
Development Roles
Customer Product Management
Architect User Interface Dev manager/Developer QA Release Documentation
Q&A