Title: Software Development Processes: How to create great software, doing it right the first time and keep your sanity
1Software Development Processes How to create
great software, doing it right the first time and
keep your sanity
- Matt Howland
- Francesca Noli
2Agenda
- Software development processes case studies
- Traditional
- Consulting/Services
- Release Timelines
- Best practices
- Development Roles
- Employee vs. consultant
- Roles in a development organization
- QA
3Software dev process traditional
- Enterprise 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
4Software development process Extreme Development
- I.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
5Software 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
6Software 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
7Software 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 dont even know what release
your customer is on
8Sample 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
9Best Practices
- It all starts with good peoplebut 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)
10Development 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
11Development 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
12Development Roles
- Customer Product Management
- Architect
- User Interface
- Dev manager/Developer
- QA
- Release
- Documentation
13QA