Where do Builds fit into the CM process?

bglangston's picture
bglangston asked on March 16, 2012 - 6:15pm | Replies (31).

IEEE 610.12-1990 – “CM is a discipline applying technical and administrative direction and surveillance to:

(a) Identify and document the functional and physical characteristics of configuration items (CIs)
(b) Audit the configuration items to verify conformance to specifications, interface control documents, and other contract requirements
(c) Control Changes to configuration items and their related documentation
(d) Record and report information needed to manage configuration items effectively, including the status of proposed changes and the implementation status of approved changes"

Thus we extrapolate that CM consisted of four functions:
> Configuration Identification
> Configuration Control
> Configuration Status Accounting
> Configuration Auditing

The old Mil-Std-973 from 1992 (cancelled circa 2000) and all other "official" sources had the same functions, no more and no less. Later, “Planning” was added to the mix for a total of six functions.

Question, under which of these functions does “Performing Builds” fall?

Some CM technicians may perform builds, but that task does not make Builds a function of CM any more than the task of assembling a car. And yet, we now read that “Builds” is a pillar of CM. Not so, I say; rather, CM is a pillar of Builds.

Again, the question is: Under which of the five functions would Build be placed?

31 Answers

jptownsend's picture

Billy I will try to answer your questions:

Then we get to “Proving that you use those CI's to make something…” Isn’t this activity actually performed by the tester/auditor/verifier (QA function)?

No, the QA or QC person does not test the fact that version 1.3 of foo.c and revision 2.8 of billy.vbp was used, they have no idea. They test the final product, the executable, the war file, the website, whatever. The job of knowing what is in the build belongs to CM. Now in a sense someone could say they are testing the individual files, but from a QA/QC perspective they aren't.

Does the product provide shelter, cooking facilities, personal storage, etc. (functional requirements) and is it built according to design and specifications? In other words, “Did we build the right thing and did we build the thing right?”

I have no issue with your statement about functional requirements, however, QA/QC has no idea if we built the right things or built it right, they only have visibility into the outputs of a build, not the inner parts, to use the example of the house, they have no idea if we put 2 x 4's every 24 inches or 16 inches. They only know if there is a wall there or not.

Many people seem to forget that configuration management is the management of configurations (as a set of product characteristics), not the creation of those configurations.

When a CM person does a build, they also baseline the CI's that make up that build. Is baselining not managing the configuration? So lets say the CM Person is not the person who does the build, are you going to trust the developer to baseline the code and not make changes to that baseline without permission? Isn't the CCB who controls that baseline and any changes made to it must go through the CCB??? Now for me I as the CM person want to not only identify the baseline and its changes, but also make sure that no one is changing that baseline without approval. If you think a developer or a QA person can do that, good luck, I will guarantee that within a month the baseline will be so jacked up and CM will be reporting something very different than what development or QA are reporting the baseline to be.

I still maintain that projects assign the build task to the assigned “CM Specialist” for two reasons and two reasons only: Money and Build Integrity

I think money is a moot point, of course its economics. As far as Build Integrity, my sentiments exactly. No one on the project should be more trusted than the CM person and who better to determine the integrity of your CI's and all things related to the CI's than the CM person. Since CM is responsible for the baseline and any changes, they should be responsible for the build that determines if the changes to the baseline are truly legitimate. If they aren't the build fails, if they are the build succeeds and QA/QC puts their stamp of approval that all of the functional requirements have been met.

While the four activities of CM have not changed and never will. How we manage them and verify them has, and every position evolves and CM is no exception.

Regards,

Joe

bglangston's picture

Joe,

You said “No, the QA or QC person does not test the fact that version 1.3 of foo.c and revision 2.8 of billy.vbp was used, they have no idea. They test the final product, the executable, the war file, the website, whatever. The job of knowing what is in the build belongs to CM. Now in a sense someone could say they are testing the individual files, but from a QA/QC perspective they aren't.”

I didn’t say, “QA person;” I said “QA function.” However, your comment that “they have no idea” begs the question: Then what do they do? I would suggest also that while your first sentence above might be true [i]in your environment[/i], it is not a universal truth. In some environments, such verification is one of the tasks assigned. It might or might not be the QA person. It might be the CM person (I send the files to the build engineer, then go down and make sure he/she used only the sent files.) or some other member of the project team.

But more generally, your first two sentences are not necessarily true. Maybe the QA or QC person does not test the fact (in your or other’s environments). But historically, especially in very large, very complex, very expensive, and very critical projects (where people's lives depended on the product), performing builds often are done by dedicated build engineers. The second sentence is also not true. Testers do the testing. (And, depending on the type of test, those testers might in fact be users rather than members of the “test team.”) (In fairness, I think I caused at least a part of the problem with paragraph. When I used the phrasing “tester/auditor/verifier,” I was thinking in terms of “someone who would perform the verification.” I probably would have been clearer if I had said “tester, auditor, verifier or whatever you want to call the person who checks the correctness of the contents.”

Anyway, there are several ways to ensure the proper set of files gets used. Here are three:

1. The low-hanging fruit is to have the CM person verify the files by doing the build him/herself. But who verifies the files that the CM person used. (Single point of failure!)
2. Have the CM person send the files to the build engineer. The weakness here is that the build engineer could still use files from his/her desktop.
3. Have the CM person send the files to the build engineer and have a third person (QA function) verify the files used. (Not often done this way because it's expensive!)

On the second question, your response seems to look only at the final product. There is nothing that I'm aware of that says QA/QC is not a continuous activity throughout the process. In fact, quite the opposite is true. In the case of the house, the final inspector, which in this case would be the “tester,” might not check locations of studs and spacers. On the other hand, if he’s conscientious he might well bring a stud finder with him for that very purpose. As a practical matter, the Construction Manager or foreman should/will know and verify spacing [i]as the house is being built [/i](when they can see the innards). You are right in saying “they only have visibility into the outputs of a build, not the inner parts” [i]IF the CM person does the build[/i]. But even then, wouldn’t the Release Review Team look at the inner parts that went into the build?

On the third point, you stated that when a CM person does a build, they also baseline the CI's that make up that build. Of course they do and that is part of the CM function of Configuration Identification. But relative to the build, that is part of build preparation and has nothing to do with whether or not performing builds is a function of CM.

“(Am I) going to trust the developer to baseline the code and not make changes to that baseline without permission?” Of course not! That would be a blatant conflict of interest. Your response seems to assume the developer is the only alternative. In fact, I worked on one project where the build engineer was a qualified programmer (but not from the development team or even the same contractor). His problem was his ego. To show his expertise in the language, he would go in and correct code to “force” the build by modifying code on the fly; and, yes, it did cause major problems. When he was informed of the error of his ways, he refused to change (because it is “easier to change the code than to prepare those $#^%& error reports”), and was replaced. (It was the QA person who “discovered” that he was not following the rules.) The new build engineer worked wonders by providing the appropriate error reports for proper processing so the developers could make the corrections.

You further state: “Now for me I as the CM person want to not only identify the baseline and its changes, but also make sure that no one is changing that baseline without approval.” And so you should make sure. That is called Configuration Control, and is only one strong reason why “CM is a pillar of the builds;” but again has no bearing on “performing builds” as a function of Configuration Management. It also does not explain how performing builds yourself reveals unauthorized changes. That revelation comes before the build package is created. Again, that comes from proper Configuration Control, not from personally performing the build. (It also begs the question of how do you know there are no unauthorized changes to the SRC unless you read all the lines.)

For example, while correcting an error on line 5, the developer notices and changes something else on line 7. You look and see that the line 5 change is correct as authorized. Unless you can read code, how do you even know the change to line 7 occurred? – but that is another issue that really has nothing to do with performing builds.)

On the section about money and integrity:

Money is not a “moot point.” Money IS the point. Regarding trust, does the position of CM Specialist somehow guarantee trustworthiness? If said trustworthiness is such a non-issue, then why does the Configuration Management Audit exist. Everybody knows the CM Specialist is totally trustworthy so why do we need to audit the CM holdings usually with at least a QA person and the project manager in company.

You said, “Since CM is responsible for the baseline and any changes, they should be responsible for the build that determines if the changes to the baseline are truly legitimate.” As I asked above, how does performing the build determine if the changes to the baseline are legitimate? That revelation can only occur prior to the build (during normal Configuration Control process or during the build preparation.) The build will only tell you whether the product will build or not. Oh, the build machine might tell you where it hangs up, in which case you can research to find out if the hang was caused by an unauthorized change. (Is that any less true if someone other than the CM person does the build?) But, if it builds, how do you know it’s because ONLY legitimate changes were made? It is not necessarily true that non-legitimate changes will cause a build failure. In fact, the build might be successful precisely because a non-legitimate change was made in line 7 to go along with the legitimate one in line 5. (And yet you would have no record (CR, CCB approval, etc.) of that line 7 change.)

To your last point: “While the four activities of CM have not changed and never will. How we manage them and verify them has, and every position evolves and CM is no exception.” I disagree. First, you speak of the “position.” Nowhere have I said that the CM person should not do builds. My point has been that [i]whoever performs the build, doing a build is not a function of CM[/i]. CM as a discipline has not changed for a long time, except for the addition of Planning. All the principles and requirements remain. What has changed is the manner in which CM activities are performed. These changes derive from many sources – instead of pencil and paper and large file cabinets with voluminous manila folder, we now use computers and specialized CM applications for maintain and tracking iterations of files, preparing and tracking configuration change requests (ECP, TPR, DR, TIR, etc.), and automations of various other activities. But performing a build is not a CM activity; it is merely a task that is often assigned to the CM specialist, much like washing cake pans is not a function of baking, but is often assigned to the junior baker.

jptownsend's picture

Billy,

I think the main disagreement we have is the function or activity of doing a build does not necessarily belong to the CM person. I understand why you are arguing this and it has validity, however, I feel that since this activity has historically been the responsibility of the CM person hence it has become part of the duties of CM. I close my argument with this, Pharmacists have an oath they live by, much like doctors and lawyers and it is as follows, this was taken off of the AACP (American Association of Colleges of Pharmacy) website"

OATH OF A PHARMACIST
The revised Oath was adopted by the AACP House of Delegates in July 2007 and has been approved by the American Pharmacists Association. AACP member institutions should plan to use the revised Oath of a Pharmacist during the 2008-09 academic year and with spring 2009 graduates.

"I promise to devote myself to a lifetime of service to others through the profession of pharmacy. In fulfilling this vow:

I will consider the welfare of humanity and relief of suffering my primary concerns.
I will apply my knowledge, experience, and skills to the best of my ability to assure optimal outcomes for my patients.
I will respect and protect all personal and health information entrusted to me.
I will accept the lifelong obligation to improve my professional knowledge and competence.
I will hold myself and my colleagues to the highest principles of our profession’s moral, ethical and legal conduct.
I will embrace and advocate changes that improve patient care.
I will utilize my knowledge, skills, experiences, and values to prepare the next generation of pharmacists.
I take these vows voluntarily with the full realization of the responsibility with which I am entrusted by the public.”

Where in this oath does it say anything about giving flu shots? Where in here does it say they are supposed to warn you of drug interactions?

No where does it say those things, however, we have come to expect it. It has become their job to give flu shots, and to warn patients over time about drug interactions.

Builds are a function of CM, why, because it is expected of us, plain and simple, right or wrong, its the way it is.

Regards,

Joe

bglangston's picture

Joe,
You said [quote]I feel that since this activity has historically been the responsibility of the CM person hence it has become part of the duties of CM.[/quote] Since when? Only in recent history has it been a "part of the duties of CM." I would add that there is a far cry from "duties of CM" (which I previously referred to as "task(s) often assigned to the CM Specialist") and a part of the function of the CM discipline.

As to your query [quote]Where in this oath does it say anything about giving flu shots?[/quote] You're right, it doesn't say anything about "giving flu shots." But, the fact that a pharmacist gives flu shots doesn't make it a pharmaceutical function. If it did, then all nurses would have to be pharmacists and all pharmacists would give flu shots. It is merely a task that the drugstore assigns to the pharmacist. That simply makes it a part of the store's function of customer service. Does that mean the nurse is doing a pharmaceutical function. In fact, until relatively recently, pharmacies did not offer in house flu shots.

For your second question [quote]Where in here does it say they are supposed to warn you of drug interactions?[/quote] I offer the following from the oath you presented: [quote]I will consider the welfare of humanity and relief of suffering my primary concerns.[/quote]and[quote]I will apply my knowledge, experience, and skills to the best of my ability to assure optimal outcomes for my patients.[/quote]Not informing us of a drug interaction could hardly be construed as "consider(ing) the welface" or "relief of suffering." Also, not informing us of a drug interaction is not likely to "assure optimal outcomes" for the patient."

In closing you said[quote]Builds are a function of CM, why, because it is expected of us, plain and simple, right or wrong, its the way it is.[/quote}I would add that I never said it wouldn't, couldn't, or shouldn't be a task performed by the CM person. In fact, if you had said "Builds are a task often (or usually or best) performed by the CM Specialist," then I would have no argument. I am simply saying that when that person does the build, they are not performing a CM function, they are simply a CM person performing a production line task (for lack of a better phrase). That does not make it a CM function any more than giving out lollipops is a function of dentistry. It's just something that the CM Specialist (often but NOT ALWAYS) does.

Most of the time the CM Specialist does it because of cost savings (as in salary of an additional person as build engineer).
Sometimes it's because the CM person wants to do it (many think it's fun and satisfying).
Other times its a practical arrangement for the environment (as in size and relative simplicity of the product and project.
And, probably on a few occasions it's because some CM Specialist wants to claim it as a CM function to enhance their career. In other words, taking on builds as a CM function and being the lead on a build team (who can then call themselves CM Specialists), allow him to claim supervisory positon over a number of CM specialists.

Let me point out that by your definition of build as a CM function, anyone who performs a build is, by that same definition, a CM Specialist. Let's be honest, many who do builds could maybe spell "CM" if you removed 24 letters of the alphabet and gave them two tries. Fact is, you don't have to know a thing about CM to perform builds. Fact is, I as the CM Specialist can give the build package to the designated build engineer to perform the build. Fact is, sometimes it is best to have builds performed by an expert in the product type rather than the CM Specialist (especially true in complex database schemas, hardware, networks).

Simply making a statement, as you did at the bottom of your last post, plain and simple, right or wrong, does not make it true.

bglangston's picture

Or much shorter,
If the PM assigns you to vacuum the office every day, does that make janitorial service a function of CM?

bglangston's picture

Thank you, Mark.

Having just read the blog you reference, I agree with most of what's there. I think I could make a case for Release Management being Configuration Management - the rub is that RelMgt occurs at a different gateway in the life cycle than the areas where it is more typically thought to exist and may require a little less formality (depending on the product).

My reasoning goes:

We must designate a set of components in the release package and provide an identification for the package.

If there are any changes to the package as prepared, there must be some form of documented error or correction report. This might be as serious as an app produced for OS1 but the system was upgraded to OS2 over the weekend (there's always 3% that didn't get the word) or as minor as "Hey guys, the contents of the package match the list, but someone forgot to include the install instructions as a necessary part of the package." And that change has to be tracked and accounted for until completion.

Obviously, verification will need to take place - not only before the package is sent, but upon receipt of the package (acceptance testing?)

And, all this release process has to be planned.

So, I guess what I'm saying is that RelMgt has the same principles and definitions as CM, but RelMgt has a narrower focus on a particular point in the life cycle than does CM with its more expansive project focus. Or, to put it another way, for CM it's a matter of what goes into the meal, for RelMgt it's what the waiter takes to the table.

Am I missing something?

bglangston's picture

I just remembered one more thing.

The argument that "CM Specialist do builds; therefore, build is a function of CM" reminds me of an incident about #%#%$ years ago. When in college, I was working on a construction job one summer. One day a new guy, John, showed up.

Henry, an old friend of his, after the mutual greetings, asked, "I haven't seen you since Christmas. What you been doing?"
John replied, "I've been over at Washington City carpentering."
"Carpentering?"
"Yeah," said John. "Well, not really carpentering, but I was helping get the boards off the trucks."

Bob Aiello's picture

Hi everyone,

recently the IEEE published a new version of the awesome IEEE 828 standard. I was privileged to serve on the IEEE 828 working group and one of the things that we focused on was making the IEEE standard a full lifecycle standard. All of these activities can occur at any point in the application - especially when you include planning.

It is still true that virtually all of the industry standards and frameworks mention the four classic CM functions in some way or another. My opinion is that this is not an easy way to understand CM. So while I agree that the four functions are correct, I am promoting looking at CM in terms of six functions:

* Source Code Management
* Build Engineering
* Environment Management
* Change Control
* Release Engineering
* Deployment

I think that these functions provide a more intuitive framework for understanding what we really do on a day-to-day basis. This is what I have described in my book on Configuration Management Best Practices.

Bob Aiello
Editor in Chief

mbools's picture
mbools replied on March 23, 2012 - 12:14pm.

Billy:

Hmm. I see where you're coming from with the Release Management argument, but I think release management is a much broader discipline than the one you characterise here.

To me, release management (RM) is the discipline that plans, coordinates and delivers releasable configuration items into a production environment (or to clients). It is not responsible for the construction of, or the verification of, the releasable CI (RCI), but it is responsible for defining and validating (quality controlling) the content of that RCI.

When I say RM are responsible for validating the content of the RCI, I do not mean they are responsible for [i]performing[/i] the validation (that's for testing and QA), but they are responsible for ensuring this validation is done and recorded to a satisfactory standard.

CM are responsible for the accurate curation of the RCI, but have no direct responsibility for validating the functionality of the RCI.

RM are responsible for signing off on the functional content of the RCI (based on evidential results provided by testing and QA), CM are responsible for verifying the content of the RCI and ensuring all appropriate records associated with the progress of the RCI through the release process are maintained and available.

The difference between the validation performed by testing/QA and the sign-off by RM is that RM may be coordinating many individual Testing/QA activities for a single RCI.

--------

For clarity, it is important to understand I am defining [i]roles[/i] here. It is generally acceptable, and often the case, that one person will fill all of these roles; build, release, and configuration management. It is this conflation of role with 'job' that causes this confusion. (An important caveat to one person filling all roles is that one must be careful in some environments to maintain a separation of responsibilities to meet legislative requirements.)

(As an aside, I've started [early days, but it's already ahead of the old Book of Knowledge stuff] putting together a wiki based around my own breakdown of these ideas, but being a wiki http://wiki.itslm.com it may not end up that way :), I encourage everyone to dive in and make it their own.)

bglangston's picture

Makes sense. Not sure I agree entirely, but that may be because I'm addressing the issue from the standpoint of CM, the discipline.

It seems to me that RelMgt uses the same principles and features as the CM discipline, but at a more focused point and, at that point, on a larger item with less emphasis on the minutiae contained within it. (Heck, I just reread what I wrote and I find it confusing.) I think we have a common understanding, at least in the main, of what we mean by RelMgt.

I'm pretty sure I follow you explanation and you've well explained the scenario. Everything you stated in that scenario appears to me to be a variation on the performance of CM principles. I would maintain, at this point, that the difference is that CM covers the CI start-to-finish, whilst RelMgt is CM focused on a particular point. Could you please explain those things in your scenario that make RelMgt different from CM?"

I understand your explanation and understand that different people are doing the activities. I also understand that the activities are perhaps done differently and have different names. But, I am having difficulty understanding any real difference between your explanation of RelMgt and CM principles.

As an editorial note, I have tried throughout this thread to be distinct when using the term "CM." For example, I have tried to call the discipline "the CM discipline" (not simply "CM") and the CM functionary I have consistently referred to as the "CM person" or "CM Specialist" (not "the CM").

mbools's picture
mbools replied on March 23, 2012 - 5:24pm.

Things a release manager does that a configuration manager should not:
[ol]
[li]Marshal resources for deployment, including but not limited to:
[ol]
[li]Coordinate teams toward a specific release (most obvious for larger projects where many different teams are contributing, including development [if needed to assist in deployment -- *shudder*], deployment/operations team, infrastructure, administrators, etc.)[/li]
[li]formulating the release plan (the 'what we do on release day' plan, rather than the overall release plan, maybe 'deployment plan', but that seems to parochial as large releases involve much more than deployment?)[/li]
[li]formulating the roll-back plan[/li]
[li]ensuring all appropriate personnel are available at appropriate times[/li]
[/ol]
[/li]
[li]Maintain and drive the release plan (alongside the project plan(s))[/li]
[li]Ensure appropriate certification for each releasable configuration item (note, the CM person ensures that these certificates are retained and related to the RCI, but does not have any responsibility for their production, or, where CI are obtained externally, acquisition).
[/li]
[/ol]
It may be that the CM function can (or even should) prevent a RCI from progressing unless appropriate certification is available, but I strongly oppose the idea that the CM function has any responsibility for acquiring it -- this is a function of release management as part of that role's responsibility for marshalling RCI.

Often I (as the project CM person) have played the RM role, especially for deployments into test environments where these are often automated (or semi-automated) as part of a CI build environment (where I play the 'build manager' role :)), but just because I do these things does not make them part of the CM function any more than doing the build manager things makes those part of the CM function.

Release management is more akin to a focussed project management role, dealing solely with the delivery of the project from the development team to the operations team. It is possible that one could define away the RM role as I perceive it (shifting these things off to project management, for example), and that would be fine, but if the RM role is reduced to the extent it becomes just a specialised view of the CM function then it becomes redundant and we can drop if from our vocabulary (perhaps we call it RCM, release configuration management, in much the same way that SCM is a specialisation of the more general CM :dry:).

Bottom-line, it seems to me there are too many things the Release Management role does that do not fall under the four CM disciplines for them to be subsumed into the CM function.

To my mind, this is much the same situation we have with build management. Sure, the RM function uses (or in some organisation encompasses/reproduces) the CM disciplines, but I don't see how this makes release management a part of the CM function any more than it makes build management a part of the CM function.

There are more, but these hopefully help to clarify my position a little.

bglangston's picture

It does indeed clarify not only your position but the RelMgt/CM relationship as well. I think my major, but not only, difficulty was viewing the involvement of the CM discipline in RelMgt activities as the essence of RelMgt functionality. Your explanation dispelled that notion. Thanks much.

Interestingly, I checked IEEE-Std-610.12 and under "Software Configuration Mangement" that source says "[i]See[/i] Configuration Management."

Nota Bene: I keep using "RelMgt" as the abbreviation because "RM" out this context could apply to several product life cycle activities.

bglangston's picture

Bob,
What we (with the job title "CM Specialist") do every day does not define the discipline. If it did, then we could say that the Accounting discipline included paying the bills because in some companies that is one of the duties is assigned to a person with the job title "Accountant."

If doing a briefing or some other informative talk, it might be fair to say that "in some organizations the CM Specialist does builds." As Mark pointed out in another venue, it is folly to define a discipline by all the things done by a person with a job title.

I really think the problem here is one of confusing "function of the discipline" with "other duties as assigned to (or assumed by) the discipline expert."

Let me also point out that your list does not address identification, configuration control, configuration status accounting or verification of requirements and specifications, designs, or test materials that are part of a product under configuration management. It sounds like a view strictly from within the code development shop.

mbools's picture
mbools replied on March 23, 2012 - 6:25pm.

Thanks Billy. Glad it clarified my position.

Thanks for the pointer to IEEE-Std-610.12, it's absolutely on point and I could not agree more :)

Haha. Typing RelMgt is [i]way[/i] more work than typing RM :D, but your point is taken; out of context I would disambiguate (or at least define my abbreviations more clearly).

jptownsend's picture

Billy and Mark,

I agree that your arguments have a lot of validity and Mark after re-reading your blog about why you feel Bob's approach is plain ole wrong, I have to wonder if there is a chance at a middle ground. Or are we simply so far apart on this topic there is no chance at reconciling. CM is fractured enough for other reasons, another schism could very well put our field in even more jeopardy than it is already in.

I can't speak for Bob, but I can tell you two reasons why I prefer his model of CM, which includes the four activities, which I feel we all agree are the basis for any CM discipline It fits closely with what I have done as a CM person and it fits with what I feel is a more modern view, ie I can explain this much easier than the four funtions and still get my audiences to understand. The second reason is that CM folks tend to grasp the larger picture than others in the IT Discipline even Project Managers. Since I feel with have this expanded view, who better to be involved in those areas than the ones who actually do the work.

Regards,

Joe

bglangston's picture

Joe,
First to address Bob's list, isn't Source Code Management just a part of Change Control?
The disagreement with Build Engineering has already been discussed, indeed, was the initial focus of this thread.
Environment Management is nothing more than the CM discipline applied to hardware and networks; so it's not a function of CM, rather a product for the application of CM.
I think Mark pretty well covered Release Management. While we agree that effective Release Management requires involvement of the CM discipline, that by no means implies that Release Management is a function of the CM discipline. In fact, the other way around would be closer to reality.
As to Deployment, that is the last step in the production line. Of course CM (discipline and specialist) is involved. It is after all a baseline that is being deployed. It is also a part of Change Control, not on the product being deployed but on the product to which the deployment is taking place.

Oftentime, the person hired as the CM Specialist may do these things, but that makes it a function of the organization's job description, not a function of the discipline or even the function of the job title. Just as in a previous post on this thread, I said that paying bills is not a function of the Accounting discipline but in many companies, usually small ones, paying bills may be in the job description for the title of Accountant.

To specifically address what you said:[quote]It fits closely with what I have done as a CM person [/quote]So, are we to define the discipline by what a few CM specialists have done. Again, does it include Janitorial Services because you have swept the floor of your office?
[quote]Since I feel with have this expanded view, who better to be involved in those areas than the ones who actually do the work.
[/quote]So you have done all the work that Bob suggests should be included in the discipline. He includes Change Control." I would ask, what changes have you controlled or do you control. I would submit that no CM Specialist as a CM Specialist has controlled many, if any. As you know, changes are controlled by the decision makers who determine which change, what needs changing, when, where and how.
[quote]I can explain this much easier than the four funtions and still get my audiences to understand.[/quote]As I said before, it is one thing to say "Sometimes the CM Specialist does these things (Bob's list). It is no doubt beneficial to point out the participation in those activities, especially if you're trying to get management to "buy into" CM (What will CM do for me - what's the return on my CM investment?), but it is quite another to state that those are part of the CM discipline (at best misleading and probably disingenuous).
[quote]...who better to be involved in those areas than the ones who actually do the work.[/quote] Part of the problem here is that "the ones" don't always "do the work." Often the CM Specialist does not do the build, or the deployment or engineer the release or manage the environement. The second problem here is that [i]involvement[/i] does not mean [i]function[/i]. I'm reminded of the difference between "involvement" and "commitment." That difference can easily be described using the example of breakfast of eggs and bacon. A hen is involved; a pig is committed. But note that [i]neither laying eggs nor growing a pig belly is a function of preparing breakfast[/i].

mbools's picture
mbools replied on March 27, 2012 - 9:38pm.

Gentlemen, it may be beneficial to all concerned (and perhaps especially any bystanders/observers) if we had a more interactive debate.

Perhaps, myself and Billy on the one hand, and Bob and Joe on the other? I would certainly enjoy such a debate.

I'm content for us to follow whatever debate format is deemed appropriate. As for forum, again, I'll go with whatever people prefer (and given that I'm the odd man out -- being the only non-US participant -- I'll forego a night's sleep to take part). With Bob's promotional skills I think we can attract a reasonable audience.

Your thoughts?

jptownsend's picture

Mark,

I would welcome that, not sure of Bob's and Billy's schedule, but I feel this debate needs to take place, I don't see this as a us vs. them thing, this is about who we are and what we do. But I feel that we can debate this and come to an agreement. There is a similar discussion going on in LinkedIn and here is a quote from Robert Falkowitz that sums up my argument in favor of Bob's view which I feel doesn't oppose what you and Billy see CM as, it just takes it to another level:

"What does this mean for the present and for the future of CM? I think it means that the good old goals of CM need to be retained, but that the skills of the configuration managers, the tools they use, the scope of what they manage and the techniques by which they manage shall have to evolve, too, and keep pace with the changes in the underlying systems."

Regards,

Joe Townsend

bglangston's picture

With respect to Mr. Falkowitz, the only place I MIGHT disagree is where he says "scope," and my POSSIBLE disagreement depends on what he means by the term. For example, he might mean anything from the scope of detailed duties (keeping records, sweeping floors and such) or to the scope of a given project (within the coding shop, across the software life cycle) or even the scope of application of CM principles (to software, to computer hardware, to networks, to ships, tanks and airplanes, or even to a company's organization structure).

As to the debate idea, I applaud it but would not be able to participate except intermittently. The only reason I can contribute the time as of now is due to a lull in work activities. That may change momentarily.

mbools's picture
mbools replied on March 28, 2012 - 4:53pm.

I never intended for this to be confrontational Joe (well, not aggressively so), just direct ;)

As for the debate idea, I just thought that a little more formal structure would give everyone a good reference point for the back and forth which, as has been pointed out by Joe, is taking place in several places.

If you chaps are agreeable, I'll put something together. Perhaps we can start with a formalised correspondence debate (to which we can all contribute using whatever time we have available). Something along the lines of:

[ul]
[li]Resolution (tentative suggestion, something along the lines: 'The discipline of Configuration Management (distinct from the job title 'configuration manager') is more than the four functions: yada, yada, ...'). Bob and Joe taking the affirmative, Billy and myself the negative. I am more than happy for suggestions to refine the resolution.[/li]
[li]Each team member to present a construction (in the order first affirmative, first negative, second affirmative, second negative), constructions to be limited to 1000 words.[/li]
[li]Each team member to present a rebuttal (in the order first negative, first affirmative, second negative, second affirmative), rebuttals to be limited to 500 words [/li]
[/ul]

Constructions and rebuttals to be posted in the order above. I suppose we need to limit time for each, I suggest one week.

I'm not sure how we might handle cross examinations, or even if we need them. Perhaps limited questions (3?) and responses limited to 200 words? Cross examinations after each presentation by the opponent not presenting next (so second negative construction, cross examines first affirmative construction, for example).

Nothing too fancy.

If I can find a suitable home (debate.org perhaps, not sure) for this we may be able to have a before/after vote? I'm not sure how rebust online debating is or how available the tools are. Failing any formalised system I'm sure we can muddle something together :)

If we still feel that there's value to be had after this exchange we could do a Google+ hangout, or a Skype meeting, or whatever other live forum seems appropriate.

Thoughts?

bglangston's picture

Joe,
I noticed several LinkedIn groups for Configuration Management. Could you give us the link for the one you referenced with the Robert Falkowitz quote?
Thanks,
Billy

Mark,
Let me ponder your suggestion. First thing for me is to figure out the definition of term in context of "debate." I always thought debate's what you use to catch de fish.

baynes's picture
baynes replied on March 28, 2012 - 8:32pm.

[quote="bglangston" post=103244]Joe,
So you have done all the work that Bob suggests should be included in the discipline. He includes Change Control." I would ask, what changes have you controlled or do you control. I would submit that no CM Specialist as a CM Specialist has controlled many, if any. As you know, changes are controlled by the decision makers who determine which change, what needs changing, when, where and how.
[/quote]
At a previous large employer, it was a standard part of the CM persons role to facilitate and scribe for the change control meeting. They were not there to make the decisions but to make sure the meeting happened and the results were recorded. Much as the CM person is not expected to change the source but is there to make sure it managed properly when it is changed. On that line to return to the original question one would say the CM person should provide the build system and facilitate its use but is not responsible for performing the builds and if I remeber correctly that was that companies definition too - though many people had the role of CM expert and the role build manager (or builder) at the same time.

There is a chain of things here - tool creation, tool installation, tool configuration, tool use. For some large tools like a major CM system these are clearly separate steps. For a small tool like a simple script they might not be distinguished. So depending on the context you will get different opinions about what is in or out of a particular role.

Bob Aiello's picture

Hi everyone,

change control is one of the big four functions (defined in almost any related standard or framework) and it is our job to see that change control happens. The Change Control board (CCB) is usually the entity that is responsible for running the change control process and if you follow the ITIL v3 framework, the Change Advisory Board (CAB) is the group of subject matter experts who can tell you the downstream impact of a change. While the big four (configuration identification, status accounting, change control, configuration audit) are completely correct - I think people have an easier time understanding CM as source code management, build engineering, change control, release management and deployment.

Bob Aiello
Editor in Chief

TechWell Contributor's picture

[b]Bob Aiello wrote[/b]: [quote]I think people have an easier time understanding CM as source code management, build engineering, change control, release management and deployment[/quote]

Hi Bob! I can understand wanting to come up with descriptions people have an easier time understanding. I am curious however as to why you chose "[i]source code management[/i]" over "[i]version control[/i]" (or "[i]version management[/i]") in your list above.

Are there things you feel are included in "[i]source code management[/i]" that are missed by the term "[i]version control[/i]" and if so could you say what those are?

My issue with "[i]source code management[/i]" is that it seems limited to source-code, and [b]I grow increasingly more and more annoyed with ALM tool vendors who seem to think CM applies only to source-code artifacts and not to all the other lifecycle artifacts too[/b].

I need to make and configure and control and deploy baselines and versions of more than just code. I need to do those same things for requirements, and designs/models and test/simulation scripts.

And in agile/iterative projects there is often the need for an end-of-iteration baseline that includes ALL lifecycle-artifacts across all the requirements, designs, code, data, web-content, and tests (etc.) in the scope of that iteration.

None of these ALM tools seem to be capable of doing that (e.g., creating and managing a baseline that crosses multiple types of lifecycle artifacts) and that's a real pet peeve of mine.

So I'd think that "[i]version control[/i]" is no less easy to understand than "[i]source code management[/i]" and also applies across all lifecycle artifacts (not just code). What (if anything) does source-code management entail that version-control does not?

Marc Girod's picture

[quote="bradapp" post=103261]I can understand wanting to come up with descriptions people have an easier time understanding. I am curious however as to why you chose "[i]source code management[/i]" over "[i]version control[/i]"[/quote]
Somebody else who doesn't like concept hijacking! Hooray!

I fully agree: [i]source code management[/i] brings nothing that wouldn't be in [i]version control[/i] (or in fact, even in [i]revision control[/i].)

This is clear when git users want to stress its 'distributed' aspects, and switch without a hunch to [i]dvcs[/i].

As you all know, I have been fighting against a similar unjustified concept hijacking by the CM community, with their (your...) using SCM for nothing more than what they (you) already termed CM.

Maybe the start of this confusion was the excellent eponymous book by Wayne Babich in 1986. Clearly, this was a book about CM [i]applied[/i] to software development, possibly with some support from the revision/version control tools available at that time, and maybe even (I do not have the book at hand, and have not read it for 15 years) with an agenda to enhance this support.

Anyway, in my, necessarily limited, experience, the only tool which radically took the road of making of software configuration management a reality, with a difference significant enough to justify a new name, was (base) ClearCase.

It did that precisely by answering the original question of this thread, and bringing to the front [i]build management[/i].

Now, this changed everything! Or rather, could have changed everything, if it had been acknowledged. Build management à la clearmake did provide identification of universal configuration objects (not only sources!), as part of their 'versioning', i.e. as members of families. It did produce objective data that allowed for automatic sanity checking (auditing) and a support for reporting.

In short, it made at once all four [i]activities[/i] of traditional CM, as well as the infamous CCB, obsolete, and subsumed everything under the single build management.
The remaining work was to write and maintain correct makefiles, and possibly script tools for specific reporting...

This revolution was never completed (still lacking in many ways), and was not followed up in a timely manner when laptops, then Java came in the picture.
It was however never surpassed, so that I believe it is still relevant to take software development out of the dead ends and of the mess into which it has been driven for the past decade.

Marc

bglangston's picture

Brad,
At the risk of diverging from the subject of the thread...

You said:[quote]None of these ALM tools seem to be capable of doing that (e.g., creating and managing a baseline that crosses multiple types of lifecycle artifacts)...[/quote]Maybe I don't understand what you mean, but I'm thinking that such tools as Dimensions CM, the ClearCase/ClearQuest set, MKS, Razor and a couple of others have that capability. Dimensions, for example, does provide for gathering multiple types of artifacts into a baseline.

Marc,
[quote]It did that precisely by answering the original question of this thread, and bringing to the front build management.
[/quote]It is adherence to the principles of the CM discipline that ensures the success of the build (whether adherence is achieved manually or by tool); that is, the build not only completed its "run" but also comprised all the correct components. Thus, my point -- the CM discipline is a pillar of the build.

TechWell Contributor's picture

Hi Bill,

[quote="bglangston" post=103263]Brad,
At the risk of diverging from the subject of the thread...

You said:[quote]None of these ALM tools seem to be capable of doing that (e.g., creating and managing a baseline that crosses multiple types of lifecycle artifacts)...[/quote]Maybe I don't understand what you mean, but I'm thinking that such tools as Dimensions CM, the ClearCase/ClearQuest set, MKS, Razor and a couple of others have that capability. Dimensions, for example, does provide for gathering multiple types of artifacts into a baseline.
[/quote]

Does it support that when the multiple artifact-types in question each use a different tool+repository of the "ALM system" to hold those artifacts? For example, if the requirements, tests, models, and code are each in 4 different repositories, each managed by a different (sub)product (e.g., a reqts-mgmt tool, a test-mgmt tool, a code-mgmt tool, etc.)? So I could give a single query or command and get the set of each artifacts and their artifact versions that participated in that baseline?

Similarly, if one needed to create a new branch/stream of development (to support parallel development efforts), then the ALM "system" lets me create a single entity with the specified name, and allows that name to represent the "stream" of work/changes across all artifact-types and their corresponding repositories/tools?

mbools's picture
mbools replied on April 3, 2012 - 10:57am.

Brad:

This idea of 'baseline across tools' is just one of the drivers behind Omneity], a project I'm starting — very early days.

bglangston's picture

Thanks, Brad.

I'm guessing that, as you say, none currently would do that. There are a couple of them that allow plug-ins of file management systems of different types. I would see inter-tool licensing as a major obstacle, although a couple of the ALM breed do allow a few plug-ins. (As an example, Dimensions has a plug-in for Eclipse.) But for a company to produce a tool that would accommodate ALL the possibilities would probably be considered cost prohibitive. Shame that!

As I'm sure you know, most of them will HOLD files of virtually any type but generating a fully integrated product of multiple types of files from a single engine is a pretty tall order.

Bob Aiello's picture

I agree that source code management includes version control of all configuration items including config files, documents and anything else where getting the right version matters.

The term version control has been historically associated with old school version control systems (VCS). Today's enterprise ready source code management solutions include automated workflow solutions that are integrated with version control systems. Maybe I am being too old school in my thinking and glad to get input from others on this.

Now where did I put my deck of IBM punch cards?

CMCrossroads is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.