| 
The Business of Software Development PDF Print E-mail
Tuesday, 19 December 2006
CM Is a Cost Center, Not a Revenue Center

Let's face it, unless you are a member of a consulting service or produce CM products for sale, CM will not gain you anything monetarily. Nothing. Nada. It is not our job to "produce" or to create revenue. In fact, when CM is present in an organization, they have to devote a significant amount of direct and indirect fiscal resources to fund CM. Why would any sane manager do this?

We sputter and try to justify ourselves with ROI and increased quality of final product. We point to study after study that says a lack of CM is directly related to many product failures. We use all of the normal, "Of course we have value to the company!" arguments. We point to government regulations and process improvement efforts all requiring CM. We point to our historical charter of activities, "Identification, Control, Status Accounting and Audit." When it all comes down to budget time, those organizations that "get it" will direct resources to CM and those that don't, won't. bwsdecjour06-1

So what are we really? We are the pain in Management's side when they try to cut corners. We are paranoid and proud of it. We nit-pick and make sure everything is done properly. We are the conscience of an organization.

CM is like Accounting in a lot of ways. Accounting can be done simply when things are small and grow to more and more complexity as organizations grow. They start out just making sure the company gets paid what it is owed and pays what it owes to others in turn. In a timely fashion. Things get a little more complicated when inventory, regulatory requirements, licensing, etc. get brought into the Accounting realm.

CM makes sure the proper CIs are used to generate the final product, that QC receives a controlled copy for testing and that we can integrate the appropriate third party components into our product consistently and reliably. CM, along with Accounting, ensure that all expiration dates and licenses are tracked. CM, along with Legal, ensure that all third party licenses are compatible with each other and with our products.

CM monitors component changes for unplanned or unexpected changes. We may or may not be the one responsible for deciding what to do with them, but you can bet we will be tasked with either doing the "repair" or monitoring it. We set up automated builds, track both planned and unplanned changes though the codebase, identify what has changed for use by others in generating release notes and firewalled regression tests, and last, but not least, explain what CM is to new hires who don't have a clue.

So why is it so hard to justify CM? We are the Accounting function of Engineering, so why do we keep having to justify not just our tools and infrastructure, but ourselves. Accounting makes sure we get paid for products we sell and/or license. We make sure the products we produce are available for sale. We are not even alone in this; Quality has just as hard a battle for funds and resources as CM. So let's take a step back and look at the big picture.
bwsdecjour06-2
The diagram shows a representation of the 5 key component groups within a Development Organization. It shows the relationship between Development and CM to be much more intimate than with either QA or QC, just as the relationship between QA and QC is more intimate. Management permeates all aspects of the organization.

In this diagram, only Development can be considered to be a Revenue Center; all others, including any not shown on the diagram, are Cost Centers. This is why Development generally tends to get the, "What Development wants, Development gets," response when other groups try to enforce anything that drops productivity. We all have to keep in mind that the end product is what pays our salary and benefits. Management worries about Profit and Market Share. They worry about Competitive Deadlines as the first to market generally holds an advantage, regardless of quality or feature set. This is why each of the Cost Center groups must justify themselves in terms of Process Improvement first, Meeting Customer Expectations a close second and only then in terms of overall quality improvement. Of course, if a company has been bit by poor quality products enough in the past, the Customer Expectations (or lack thereof) may make it much easier to get Quality related justifications looked at seriously.

So what is the basic Development Process? The second diagram shows the basic process flow with the same color coding as above. Let's try to expand these somewhat as bullet points:
bwsdecjour06-3

  • Management determines the basic product needs and customer expectations.
  • Requirements are elicited and documented describing the details of the product, or the changes needed to the product, in order to meet needs and expectations. For the sake of simplicity, this is assumed to occur in the Management sphere, not CM, though CM will be used as the repository.
  • The requirements are reviewed by QA to ensure they are objective, testable and non-conflicting. This function is occasionally performed in a Peer Review situation with QA participation.
  • Designs are created or modified to meet the requirements. The Development group will be responsible for this activity, though once again CM will be used as the repository.
  • In parallel with the Design effort, the appropriate test plans are designed. These take into account the necessity to track back to the sourcing requirements.
  • The designs, both product and test plan, are reviewed by QA to ensure they implement the requirements. If allowed, they also ensure that the designs do not exceed the requirements (prevent scope creep). This function is also occasionally performed in a Peer Review situation with QA participation.
  • Development implements the designs and performs Unit Tests and Peer Reviews as appropriate. All development artifacts used in the implementation are considered Configuration Items (CIs) and are versioned in a CM controlled repository. CM, in the form of Build Management, also performs the controlled builds of the product that are to be tested by QC and released by Release Management.
  • In parallel with Development, QC implements the tests necessary to perform the test plans. Depending on Development Methodology, some testing may be performed in conjunction with Development's implementation of the product.
  • Depending on the implementation period, QA may perform reviews of the implementation to ensure design compliance and to prevent scope creep. If the period is short enough, this may be an exit criterion instead of an on-going activity.
  • QC Performs Integration, System (Functional), End-to-End, Interface (External), Performance and Load Testing as appropriate for the product. Any defects found are recorded in a Defect/Issue/Enhancement Tracking (DIET) system whose content is owned jointly by QC and QA, but whose repository is owned by CM.
  • In parallel, and as an exit criterion, QA reviews both the tests performed by QC and the results obtained from the execution of those tests. QA, in conjunction with QC, issues the Go/No-go decision to release the product.
  • CM, in the form of Release Management, performs the actual release of the product to Production.
Note that CM only has one block on the Development Process Flow diagram, but is referenced repeatedly as a background set of activities in the bullets. This is one of the reasons CM has to be justified by others, especially by Development, for it to be taken seriously in many commercial firms. At first glance, Development can do their own versioning and builds, and Quality can do everything else. The fact that CM and the repositories "owned" by CM should last past the life of a product are not things the current product development effort needs to worry about. This is something only Management and Quality might be concerned with, and Quality sees it somewhat as a conflict of interest for it to do the CM functions.

Where does CM really live in the Development Process Flow? We live "above" it. We pervade it to a large extent. We are, to a large extent, the process watch dogs and the whistle blowers. We hold tight to the product assets and assist QA in bringing a halt to bad practices. We are the cops who just gave you a speeding ticket and are asking for raises, newer and faster cars and better radar. Organizations with an effective CM program do produce better and faster with an overall better quality of product in the end. But prove it before the fact? Not gonna happen - unless there is already a belief that it will.

A Final Note
No keyboards were actually destroyed during the creation of this article; however one UPS did give up its smoke to the cause. It was buried by IT with full honors.


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).
 
 

Trackback(0)
Comments (2)add comment
17073
vreddy: ...
Excellent Article.

Is it wise to club Dev and CM; QA and QC to make one group as far as the mgmt is concerned?

This could simplify some of the mgmt activities.

Any thoughts?

Also, from the above illustartion, how much interaction does CM team got to do with QA team?
1

January 03, 2007
Votes: +0
0
Patrick Hinde: ...
I found this artical very accurate and interesting. As a CM manager it made me both smile and frown.
2

December 21, 2006
Votes: +0

Write comment
smaller | bigger

security image
Write the displayed characters


busy
Last Updated ( Thursday, 26 July 2007 )
 
< Prev   Next >
If you already have an account on CM Crossroads, Login Now. If you do not, register using the link below...

NOTE: Once you register you will need to activate your account by clicking the link sent to you by email.

Video News