Sponsors

Microsoft


TechWell

We have 2550 guests and 3 members online

Home Behaviorally Speaking Behaviorally Speaking: Project Management - What Does CM Have to do With it?

Behaviorally Speaking: Project Management - What Does CM Have to do With it?

E-mail
Written by Bob Aiello   
Wednesday, 30 April 2003 16:00
Project Management can mean a lot of different things to software development professionals. For many it is the discipline of delivering the project on time and according to specification. For senior business managers it is controlling the cost of developing business systems while maximizing the return on investment. Often it is the project manager who must communicate what is being done and how much it will cost to non-technical business experts. As a veteran of many software development efforts, I have begun to feel that the project manager is the person who juggles the many (constantly changing) variables and unknowns while trying to keep the team on track to deliver something that management will accept as a deliverable for the overspent budget (six months to a year later than promised). In fact there have been times when I have felt that the project manager was simply living the tale of the Emperors Clothes (which I have read to my children many times). The truth is that CM has a lot to offer the field of project management. Read on if you would like to improve your ability to use CM best practices to support the project management effort.

So What is Project Management Anyway?

The project management institute (PMI) has a wealth of information on Project Management best practices including research a practitioners certification program.

The following is from their website (www.pmi.org):

As defined in the 2000 edition of A Guide to the Project Management Body of Knowledge (PMBOK® Guide), project management is the application of knowledge, skills, tools, and techniques to a broad range of activities in order to meet the requirements of a particular project. Project management is comprised of five processes – Initiating, Planning, Executing, Controlling, and Closing – as well as nine knowledge areas. These nine areas center on management expertise in Project Integration, Project Scope, Project Time, Project Cost, Project Quality, Project Human Resources, Project Communications, Project Risk Management and Project Procurement. 

The phrase “project management” began to emerge in the late 1950s and early 1960s when the size, scope, duration, and resources required for new projects began to deserve more analysis and attention. Today, project management is used globally by multi-billion-dollar corporations, governments, and smaller organizations alike as a means of meeting their customers’ or constituents’ needs by both standardizing and reducing the basic tasks necessary to complete a project in the most effective and efficient manner. As a result, project management leadership is a highly desirable and sought-after skill as intense global competition demands that new projects and business development be completed on time and within budget.

It is obvious how Project Management best practices would help the CM practitioner be more effective. Let’s examine how CM can support the Project Management Framework.

The CM repository

Software Configuration and Release Management best practices should always contain a centralized and controlled source code repository. This source code “vault” must have proper security access, audit, backup and integrity controls. The project manager must be able to rely upon the CM repository to contain all of the artifacts that are necessary to deliver the release in a reliable and repeatable fashion. 

Architecture is Key

The architecture of the repository is essential to managing the overall software development effort. In our projects we create a suite of separate source code repositories (in ClearCase terminology we create vobs). Third party products are secured in repositories with an extension of _tpp. Project plans, test scripts and word documents are secured, labeled and released in documentation vobs. Development vobs are structured either by technical product or team (or both!). The architecture of the CM repository can tell you a great deal about the overall software development effort. For example, common code is published to software development teams via a Release vob. Some developers have write access to specific vobs and others have only read access. Often we keep the security permissions open so that in an emergency anyone can update the code, if necessary. However, all changes are fully tracked and logged securely.

Release Management Made Easy

Version Labels specify the exact versions of the code that are released at any particular time. Version labels are controlled and “tested” (e.g. independently built) so that we are certain that we can rebuild any release if necessary. The project manager can easily ascertain exactly what gone into any particular release. Similarly, the release management process can help the PM determine exactly what should go into a particular release. Features that are critical (e.g. banking regulatory issues) can be pushed through, while cosmetic features can be held back (to reduce the risk of a critical release failing the testing process). Bug fixes can be introduced quickly and easily and allow a great deal of flexibility to reacting to critical issues.

Big Brother is Watching

Enterprise wide CM tools allow the Project Manager to monitor the software development effort. Files that are checked out indicate that changes are still being worked on. Metrics can be applied to ascertain which source code is being changed constantly (sometimes an indicator or poorly written code or ill defined business requirements). The Project Manager can use History logs to ascertain who is making changes to the code for specific sections of the code. 

Reverse Engineering Anybody?

Software developers can also use these tools to ascertain what changes have been made in previous releases often to fix common problems. Meta data such as comments, version labels and defect numbers (if a defect tracking system has been integrated) can turn the source code repository into a data dictionary with a wealth of information and value.

Branching and Organizing the Team’s Work

I used to work with one of the top C++ development experts. John Lakos (author of the classic text Large Scale C++ Development) used to always say that “less is more”. I believe that is absolutely true with regard to branching in CM repositories. Often, CM practitioners think up overly complex branching schemes to (over) manage the software delivery effort. Every CM repository has a main branch. Branches are necessary when making changes to a previous release when the code has been since updated (and is not ready for deployment just yet). These branches are usually called "bug fix" branches and I personally teach our developers to “branch off of a version label”. 

Branches can also be used to organize work from different geographical locations and the use of an integration branch is also common. While branches (also called variants) can help the project manager organize which features will be delivered, keeping things simple is absolutely essential. As John used to tell me, “less is more!”.

Iterative Development

CM best practices make iterative development possible and practical. The wise project manager can make excellent use of good CM practices to manage the rapid development and deployment of code to meet the demanding requirements of today's software development efforts.

Project Management is All About Predictability
 
Above all else, Project Management is about predictability and governance. The use of CM best practices can be of tremendous value to the Project Manager and the entire software development effort. 



Bo
b Aiello is a Senior Contributing Editor for Crossroads News and an Associate Director at Bear Stearns & Co. where he is engaged in Software Process Improvement on a large scale basis. He is also on the Board of Directors for the Organizational Development Network of Greater New York (ODNofGNY) and a member of the Steering Committee of CitySPIN in New York. Mr. Aiello has a Masters in Industrial Psychology and a BS in Computer Science.

You can reach Mr. Aiello by email at
raiello@acm.org

Trackback(0)

Comments (0)add comment


Write comment

You must be logged in to post a comment. Please register if you do not have an account yet.

busy
Last Updated on Tuesday, 01 April 2008 10:54