Monday, September 17, 2012

Product Management and Software Product Development Lifecycle

Software product development is a complex activity and product managers play an important role all through the product development cycle. As companies mature, a standard way of new product development is developed. Product managers will have to focus on internal product development process along with focus on customer requirements and market conditions.

The product development activity is internal to the organization and from product management activities perspective, it is often referred to as "Inbound Product Management". This article is a brief description of all what roles product management plays in the product development life cycle - a.k.a "Inbound Product Management".


Typical software product development lifecycle consists of six distinct stages:

1. Requirements definition
2. Product design
3. Product Development  & QA
4. User Acceptance or Beta program
5. General release
6. Operation & maintenance

Product management plays an important role in each of these six stages.  In this article, I will briefly go over the activities done during each of the six stages.

Requirements Definition 

Requirements definition stage focuses primarily on what the final software product should do. This is often documented in terms of what functions to be performed,  on what platform (hardware/software & other dependencies) This may include performance details, functional details, serviceability details etc..

Each requirements must be prioritized and ranked in the Product Requirement Document (PRD). External dependencies, if any, must also be listed - so that proper project risk assessment can be done.  The requirements must be "unambiguous," "complete," and "traceable."

The PRD must be written in such a way that both development and quality assurance teams must be able to understand the requirements in its completeness,   consistency, stability, verifiability, modifiability, and traceability.

Project management takes this PRD and develops a project plan based on effort estimations and estimated risks. Once the PRD & project plan is approved, any change to the product requirements or project plan must be approved by the change control board. The project management tasks include monitoring the assessed risk and planning risk mitigation strategies as needed. As the project goes into execution, project management refines planned budgets and schedules.

Note that it is very important to establish the change control board (CCB) early in the project planning stage. As the project progresses, both the requirements and product designs get further refined.

As the project proceeds, the various project dynamics result in the need to refine the requirements or the design implementation. Any change to the agreed-upon project plan must be presented to CCB and it is the duty of CCB to approve or reject the proposed changes. The CCB meetings continue throughout the product development life cycle stages.

In some organizations, CCB function will be done by Program Management Teams (PMT) or/and by Program Leadership Management Teams (PLMT)

Product Design Stage

The main activity in this stage to define how the software accomplishes the stated requirements.

A specific requirement can be implemented in several different ways, it the software architecture and design teams responsibility to decide on how the system must be designed to meet the specific requirements including:

1. Hardware & Software platform definition
2. Defining all major systems & subsystems
3. Splitting of functions across different Systems or subsystems.
4. Data-flows into and out of different Systems or subsystems.
5. Defining data transformations in each System or subsystems.
6. Defining Algorithms & Design for Systems or subsystems.
7. Defining system validation methods for Systems or subsystems.
8. Defining quantitative performance measurement & evaluation criteria.
9. Design to confirm to various standards
10. Developing test procedures & test strategy.
11. Product documentation plan
12. User Acceptance Or Beta program Plans

In addition other design activities may be required depending on the type of software being developed.

The designs are then submitted to management team for approval. Once the designs are approved, any changes to the design will require explicit approval from CCB (or PMT/PLMT)

The product management tasks is to understand the design and how the design meets the customer requirements. Product managers play the role of customer and give valuable design inputs during the design phase.

The role of project management is to monitor closely the schedules and refine the project plan, Identify dependencies & project risks. Many times the product design work does not finish as planned and the product schedules are affected. Project planning activities should account for such potential schedule risks.

Product Development Stage 

In software product development, the main activity in this stage is mainly coding and testing. The main objective in this stage is to convert the detailed design into language that computer hardware can understand and perform.

The product management tasks is to monitor the development process and deciding whether the computer code is ready to ship to the customer. As software development progresses, there will be bugs: i.e.., defects and implementation variance from the actual design. Some of these bugs are show stoppers, some are critical and some are minor. Bugs are often classified based on severity: Sev-1,2,3,4 etc..

Management function is to determine the severity of the bug and then decide on whether the software is ready for release.

These management decisions are made at CCB meetings in presence of quality assurance team, engineering development teams, product marketing and all stake holders. The stake holders define the "acceptance criteria" and then make the final call on when to release the product.

User Acceptance Testing or Beta program

In User Acceptance Testing (UAT) or Beta program stage, the software product is actually deployed and tested in customer environment. This is a product assurance task where the customer and developed will examine the software for mutual approval.

Often times, the internal testing and quality assurance procedures may not be able to replicate the complex customer environments and customers may need time to really use and test the product before buying it. From product development perspective, customer acceptance is the ultimate quality assurance - implying that the newly developed product meets the stated requirements.

The beta programs can be extensive - running into several months, or a short cycle to test out certain new features, depending on the software maturity and reliability.

Product management tasks in this stage include monitoring the delivery of the product to the customer and soliciting customer feedback, improving the product based on the feedback. This may include tailoring the product or the customer environment - if the product is intended for a range of customers with specialized needs. Many enterprise software products (e.g.: SAP, Oracle, etc..) may require changes in customer's system environment to make the product work. These customizations and customer validation will be done in this phase.

Successful completion of this User Acceptance Testing or Beta program includes

1. Developing software systems that meet customer needs - including all customizations and system changes.

2. Packaging the final tested software code along with user documentation. All customizations and changes must become part of the final product.

Today companies capture the "golden image" of the OS, supporting databases, servers etc. into a shrink-wrapped system software - that can be deployed off the shelf for each custom deployment. This helps in operational & sustenance stage.

General Release

Once the software product completes the UAT or quality acceptance testing, the finished product is then released for distribution. Software is often distributed in form of physical kits - which consists of installable code, product documentation & license keys. Software products are now being distributed over Internet - where customers can download the entire product.

Product Management activities during this stage include training the users or in many times training the trainers, conducting product road shows, product demos and various product marketing activities.

The general release also indicates the end of the software development project, project teams & CCB are disbanded.

Operation & Maintenance Stage 

The main activity in this stage is to support customers' use of the product. Customer support groups are actively involved in educating customers to use the product, collecting product feedback from customers, documenting product bugs & providing fixes.

As the main activity in this stage happens at the customer site, product mangers must monitor operational use of the product, collect customer feedback, collect customer suggestions on product improvement, compiling and analyzing customer feedback and determining potential follow-on work.

A byproduct during this stage is customer detection of latent software defects and customer definition of enhancements or new capabilities that helps define the next product development cycle.

Closing Thoughts

Product development is often thought as an ongoing cycle of continuous development where one version of the software replaces the older version. From a product development lifecycle perspective, this is partially true. Product management can implement a phased development of new features through multiple releases - and thus minimize the risks and also enhance product acceptance in the market.

Eventually, all products will reach its logical end - i.e., no more new development, and then enter the death phase, where all product functions are also stopped. Product managers play a very important role in determining when to terminate a product. Usually product termination is also carried out in a planned and phased manner called as "End-Of-Life" (EOL) planning.

See: Software Product Management  & Product End of Life


No comments: