|
Everyone knows the difference between Products and Projects – right? I mean, doesn’t everyone understand what these terms mean and what functions Software Configuration Management (SCM) provides to them? Maybe so, but not in my personal experience. The tasks associated with Product Management and Project Management vary as much as their definitions. In the following sections, I will give a few definitions and show how SCM supports the various stages in both Product and Project life cycles[1]. Definitions Before we get too carried away, let’s define the terms we are discussing:
A Product can be implemented by one or more Projects and it is SCM’s responsibility to ensure that the result is accurate, testable and traceable back to requirements. It is not SCM’s job to perform the Requirements Engineering (RE), do the design, perform the coding, do the testing or deliver the end result to the customer. It is SCM’s responsibility to ensure that everything is traceable from one stage to the next, that all required artifacts are kept and that all data necessary for the performance of audits is made available. It may also be SCM’s responsibility to control the build and release processes, manage the tool chains, etc. in order to guarantee reproducibility. Product Management has oversight over the various Projects needed to implement it. Sometimes those Projects are sequential and are intended to augment and refine the Product. Sometimes Projects operate in parallel and are intended to implement different component parts of the Product. And sometimes both sequential and parallel development occurs. Regardless, it is up to Product Management to coordinate the various Projects and to ensure that the “big picture” is kept in mind at all times. For the sake of simplicity, it will be assumed that all of a Product development’s Projects will use the same SDLC and that Subcontractor Management is not an issue. Let’s take a look at a single iteration within a Project’s Software Development Life Cycle (SDLC). For simplicity’s sake, we will initially assume that the phases below are not performed in parallel. The figure below illustrates the relationships between the SDLC phase names, the organization unit that is normally tasked with the implementation of those phases, and the SCM phase or function required to properly support each SDLC phase.
As you can see, the SCM phases span multiple SDLC phases and are not always aligned on SDLC phase start/stop boundaries. Using Version Control (VC) as an example, this is because there is nothing to version until after there are requirements to version. Similarly, there are changes to source code, documentation, test data, test scripts, etc. until near the end of Operational Readiness Testing (ORT). There is also a SCM phase that is relatively unrecognized – Site Management (SM). This is the part of SCM that supports Production Control / Production Support by tracking the component release levels present at customer sites. SM is obviously not needed if the customer has control over pulling releases and installing them but it is needed for organizations whose products require specific releases of companion products. One thing rarely shown on SDLC diagrams, including the one above, is the support SCM can (and should) play in project ramp-up and ramp-down. As a project is getting started there are Management activities that go on such as risk analysis, planning and meetings that have a direct bearing on how a project will be implemented and what will be its scope. The related documents should be versioned and appropriate entries made in the DIET system for tracking purposes. When a project ramps down, it is necessary to capture (and version) all documents, Management or otherwise, necessary for postmortem audits and to allow for the future project estimation and planning. Getting back to comparing Product and Project Life Cycles, one of the biggest differences is that Project phases are often minimally performed or are not required at all; whereas Product phases are, except for the simplest Products, all performed. At the inception of a Product, specific activities take place that require (or should require) SCM’s participation. The figure below illustrates this.
N ote that this is a one-time effort on a per-Product basis. It involves SCM performing startup tasks in its own right, plus supporting the Product Management, Requirements Engineering and Development groups as they get the effort off the ground. There is a similar Wrap-up or End-of-Life (EOL) phase that is performed at the end of a Product’s Life, illustrated in the following figure.
Note that the final task performed is actually the IT department’s backup and archival of the various SCM repositories. This phase is often not performed for commercial Products unless there is either a hope for partial reuse of the material generated or such practices are mandated by either contract or regulatory agencies. Unfortunately, without the final wrap-up there is a good chance that any “lessons learned” will never propagate forward into other new Products. Example An example of a Product could be the hamburger. It is basically a piece of cooked ground beef between two halves of a bun with optional condiments on it. The first Project is to:
The second Project could be the introduction of multiple variations of the hamburger such as thicker patties of meat, multiple patties of meat, additional condiments, addition of vegetable augmentations (cheese, lettuce, pickles, tomatoes, onions, etc.).
Regardless, Product Management, including Marketing, would
establish the actual Project requirements based on market and other research,
determine the delivery names (should all variants be called a hamburger or
should each major variant be given a unique product name), advertising hooks,
etc. It is up to the Projects to select components, determine implementation
methods, perform Quality testing, ensure requirements are met prior to release,
etc.
Project Life Cycles are where the core of the planning, implementation and testing occur in order to develop a Product. Projects have a reduced scope of requirements to be met and allow iterative Production releases in order to meet market pressures and to satisfy customer expectations. This is especially true when the “final” Product is intended to satisfy the needs of a diverse customer base. Each subsequent Project allows for features to be added to satisfy more and more customer needs as well as to fill in the holes identified by the existing customers.
Projects are what we are most used to thinking of when SDLC
is mentioned. This is what most of our tools are intended to help us with. And
that’s OK, so long as we never forget that the Product is what earns us our
pay, not the Project! [1] In this article, the words life cycle stages and life cycle phases are used interchangeably. In both situations they mean the tasks performed over time associated with the described function. [2] product. Dictionary.com. Webster's Revised Unabridged Dictionary. MICRA, Inc. http://dictionary.reference.com/browse/product (accessed: July 07, 2008). [3] project. Dictionary.com. Webster's Revised Unabridged Dictionary. MICRA, Inc. http://dictionary.reference.com/browse/project (accessed: July 07, 2008). [4] Configuration_management. Reference.com. Wikipedia, the free encyclopedia. http://www.reference.com/browse/wiki/Configuration_management (accessed: July 07, 2008). [5] See also: http://www.reference.com/search?q=configuration+management&x=&y=. Ben Weatherall is currently based in Fort Worth, Texas where he practices Practical CM on a daily basis using a combination of CVS and custom tools to support a modified Agile-SCRUM development methodology. He is a member of IEEE, ASEE (Association of Software Engineering Excellence – The SEI’s Dallas based SPIN Affiliate), NTLUG (North Texas Linux Users Group), and PLUG (Phoenix Linux Users Group)
Set as favorite
Bookmark
Email this
Hits: 6045 Trackback(0)Comments (1)
|
|
... Nice and clear - good article. I prefer to see some form of version control available right at the start because even if you don't have requirements to version, you do have plans and other documents! I have seen many times that documents are the poor relation - get saved on some file share (hopefully), or even worse emailed around - people often not quite sure which version is the master or where Fred's comments went. Then with multiple copies in the same folder, someone sorts them alphabetically and accidentally opens up ProjectPlan-v9.doc instead of ProjectPlan-v10.doc ! Given that most projects don't start in a vacuum, this is the sort of thing that organisations gain huge benefit from having a standard framework (and preferably tools in place) for and have in place from day 1. Robert |
|



