Capability Maturity Model and Support For Systems Analysis

Mike Good

MSIS 488

            There are various methodologies that organizations have embraced for systems analysis.  These methodologies are a process and ideology that the software analysis and development effort has embraced.  These methodologies give a framework to be followed that gives a path to be followed by Information Technology.  These methodologies range from the Boehm spiral model to joint application development.  Microsoft even developed their corporate standard called the Microsoft Solutions Framework (Rada, 69).  You are seeing industries such as construction adopting the methodology (pS577).  The methodology that has been adopted greatly is the capability maturity model.

            Capability Maturity Model (CMM) was developed at the Carnegie Mellon Software Engineering Institute, which is an Institute founded by the United States Department of Defense (Phan, 56).  There are capability maturity models for various areas ranging from people to integrated product development.  All these CMMs want to address various broad goals, which are:

The CMM provides a way for various processes to have a standard that will be adhered to.  This standard provides a baseline and then the organization works towards levels of maturity.  Each level has certain key process areas that are identified and are of focus to obtain that next level of maturity.  The CMM that relates to systems analysis is the CMM for software (SW-CMM).

            CMM has various components to its model.  The first component is the maturity levels.  These are well-defined points, which are a guide toward a mature software process.  The five distinct levels, which are initial, repeatable, defined, managed, and optimized, provide the high level design of CMM.  Next, there is the process capability, which describes the range of expected results that can be achieved by following a process.  This gives the organization a good idea of the results that will come from a project if the process is at a certain level.  Third, the component called key process areas or KPAs are a group of actions that when perform collectively achieve a set of goals considered important for establishing process capability at that level.  These process areas are defined at each distinct maturity level.  Next, the goals component summarizes the important practices of a key process area and can be used as a baseline to determine if an organization has effectively implemented a KPA (Parzinger, 359).  The goals define the scope and the intent of each KPA.  Another component is the common features which these are the common features to key practices and include: Commitment to Perform, Ability to Perform, Activities Performed, Measurement and Analysis, and Verifying Implementation.  The common features are properties that show whether the implementation of a key process area is effective, repeatable, and lasting.  The final component, key practices are practices, that when implemented, help to satisfy the goals of that key process area.  The practices are the infrastructure and activities that contribute most to the effective implementation of a KPA.

Now, the discussion of each maturity level should be defined and an idea of each level’s composition.  The vast majority of the companies are CMM level 1 (Marco, 27).  This level is composed of ad hoc work and the IT staff is not sure what the plans are.  This causes a very chaotic situation with a few heroes who come in and save the day (Gray, 93).  This method of development has very adverse effects on the people of the department, the quality of software produced and the speed and efficiency that the software can be produced.  CMM level 2 is called repeatability and has these key processes areas:

 

These affect systems analysis in various ways.  First, requirements management is very crucial.  Requirements management involves getting this common understanding between the clients and the project that the expectations of the client are met by the system (Paulk, L2-1).  This is one of the core roles of systems analysis; that is finding if the system should be done, i.e. is it helping the entity that it should, the clients.  In managing this relationship and understanding, this ensures that the systems analysis is even more successful since the analysis is being based on correct and current requirements that the client is aware of and has approved as being what they want.  If the requirements are not what the clients are wanting, then the systems analysis process can be successful for what it is analyzing, but since the analysis is being done on incorrect information then the ultimate outcome will be wrong.  Also, since there is some tractability with the changes in documentation being versioned, it assists the analyst by the analyst being able to see the differences in the documentation as contrasted with what they were using prior to the changes.  There is also some built in support to the system analysis procedure by CMM in the requirements management by doing a feasibility analysis to determine if the requirements can be met with the software or if they should even be included in the software.

            Another key area in level 2 is software project planning.  The purpose of this area is to establish appropriate plans for the engineering and management of the software project.  This plan includes the work to be performed and any bounds and goals that aid the scope of the project.  The planning process includes steps to estimate the size of the work, resources needed, produce a schedule, identify and evaluate software risks, and negotiate commit points.  There are three goals for the software project planning.  The first is that software estimates are documented for use in planning and tracking the project (Paulk, L2-12).  This tracking is crucial so that the status of the project is easier to manage and track the performance.  This also a function of the analysis that can uncover situations and uncover opportunities for greater efficiencies such as items in the process that can be completed in parallel.  The second goal is for software project activities and commitments to be planned and documented (Paulk, L2-12).  This provides a way of measuring the accuracy of the estimates and determining any inefficient areas in the project and problems along the timeline.  The final goal is to have the groups and individuals related to the project agree to their commitments to the project (Paulk, L2-12).  This ensures that all parties have a mutual understanding in what their role is and any additional information associated with that role and has agreed that they can commit to those activities.  The software project planning area in level 2 is important for having a clear road of the activities for the project.

            Software project tracking and oversight is another KPA for CMM level 2, which provides visibility into the actual progress of the project so that management can take corrective actions when the project deviates from the plan.  This step is taking a look at the accomplishments and reviewing them against the documented estimates and plans and then adjustment of the plans based on the actual accomplishments.  Management reviews software activities and progress is evaluated by the actual software size, cost, and schedule to the plan when certain efforts are completed and at pre-determined milestones.  When there is a determination that the plan is not being met, then action is taken including revision of the plan, reallocation of resources, or actions to improve the performance.  There are three goals to software project tracking and oversight.  The first goal is that actual results and performances are tracked against the project plan (Paulk, L2-32).  This uncovers problems and also provides an instant snapshot of where the project is at on the timeline.  The next goal is that corrective actions are taken and managed to closure when actual results and performance deviate substantially from the plan (Paulk, L2-32).  If the deviation is noted and nothing is done to correct the deviation, then noticing the deviation wasn’t of any value to the project.  The final goal is that the interested parties and people agree to changes to commitments (Paulk, L2-32).  This allows the communication to be open across the effort so that all parties have a contribution in changes and everyone has an equilateral position in the software project.

            Another key process area at level 2 is the software subcontract management.  This area is to select qualified software subcontractors and manage them effectively.  The first goal is that the prime contractor selects qualified subcontractors (Paulk, L2-46).  There has to be subcontractors that are knowledgeable and proficient in the areas of expertise that the prime contractor is wanting to hire them on for.  Since the rates are higher for a resource on contract than they are for a permanent resource then their must be evaluations to be sure the resource has those skills and it doesn’t just look good on the resume.  This can be done by looking at previous code or by arranging a one-week trial period that if the resource is not up to the expectations that he or she may be dropped from the project without any further commitments by the prime contractor.  Another goal is that the prime contractor and subcontractor agree to their commitments to each other (Paulk, L2-46).  This forms a consensus between both parties of what is expected, when it is expected, and any other details so that each party knows their role and what to bring to the table as far a deliverables for the project.  The prime contractor and the subcontractor maintain ongoing communications is another goal (Paulk, L2-46).  This helps the prime contractor know how the resource is doing and if there are any items the prime contractor needs to provide for the subcontractor for support in obtaining his commitments and this also lets the subcontractor know that the prime contractor is there for them.  The final goal for this process area is that the prime contractor tracks the software subcontractor’s actual performance and results against the commitments (Paulk, L2-46).   This tracking is a good reference mechanism for justifying the selection of the subcontractor or for reasons to break commitments to the resource based on the results from the subcontractor.

            The next area is the software quality assurance.  This area is to provide management with visibility into the process being used by the software project and of the products being built.  The key practices uncover the functions that need to be performed by this group in the software process.  The first goal is that software quality assurance activities are planned (Paulk, L2-64).  Like all processes, they must be planned so that expectations are outlined from the onset and there are scheduled activities.  The second goal is that adherence of software products and activities to the applicable standards, procedures, and requirements are verified objectively (Paulk, L2-46).  This activity shows that the policies and frameworks that have been established have been adhered to so that the consistency is evident.  The next goal is that affected groups and individuals are informed of software quality assurance activities and results (Paulk, L2-46).  This is in staying consistent with having open communication across all parties.  For example, if quality assurance uncovers a problem that affects the quality of a software effort such as a bug, then this should be notified to parties such as development, clients, and management so that everyone knows the level of quality for the product as well as potential problems and so that development can fix the code if this truly is a bug.  The final goal is that senior management will address noncompliance issues that cannot be resolved within the project. (Paulk, L2-46).  This provides a path of escalation so that the people skilled in resolution of issues are the ones handling those issues.  The quality assurance component is a complement to the analysis and the design since they will most likely be the last one seeing the product and are ultimately responsible for what the clients see.

            The final key process for CMM level 2 is software configuration management, which is responsible for maintaining the integrity of the products of the project throughout the lifecycle.  There are four goals for this key process area and they are important to maintaining the integrity of the product.  The first goal is that the software configuration management activities are planned (Paulk, L2-76).  This is consistent with all activities of the software process needing to be planned to create a meaningful timeline and analyze the plan for task dependencies.  The next goal is that selected software work products are identified, controlled, and available (Paulk, L2-76).  This ensures that licensing activities never become an issue and that products are selected before the project begins to ensure that their will not be lost time in having to research products in the middle of the project for this work not being done in the beginning of project.  The third goal is that changes to identified software work products are controlled (Paulk, L2-76).  This keeps resources from changing software at the drop of a hat, which could cause compatibility issues, and other complexities that could further delay the project.  The final goal is that affected groups and individuals are informed of the status and content of software baselines (Paulk, L2-76).  This is additional support for the open communications of where the project is and how well is it going. (Paulk, L2-46).  The software configuration management is a crucial component needed to maintain the integrity of the software being developed as well as the products needed to create the software.      

            The final level that is applicable to industry use and not theoretical is CMM level 3.  The key process areas for CMM level 3 are as follows:

§       Organization Process Focus

§       Organization Process Definition

§       Training program

§       Integrated software management

§       Software product engineering

§       Intergroup coordination

§       Peer reviews

The first key process area, organization process focus, has a purpose of establishing the

organizational responsibility for software process activities that improve the capability of the overall software process.  One goal for this KPA is that software process development and improvement activities are coordinated across the organization (Paulk, L3-1).  This means that the processes are managed at more of an enterprise level instead of at the departmental or district level.  The next goal is that the strengths and weaknesses of the processes used are identified relative to a process standard (Paulk, L3-2).  There is some baseline or benchmark that is used to determine the level to which the process is operating at to determine if changes need to be brought about.  The final goal for the organization process focus is that the organization-level process development and improvement activities are planned (Paulk, L3-2).  These are the goals of the first KPA for CMM level 3.

      The next KPA for CMM level 3 is organization process definition, whose purpose is

to develop and maintain a usable set of process assets, which improve the performance across projects and provide a long-term benefit to the organization.  The goals for this process area are that a standard software process for the organization is developed and maintained and that information related to the use of the organizations standard software process by the project is collected, reviewed, and made available (Paulk, L3-12).  These processes being developed at an organizational level provides a standardization which benefits the organization by having a more flexible organization in which people can move about easily since the process is the same across all areas.  The information being made available is key so that workers are more efficient by being able to get the information themselves and not having to rely on peers for the information.

      The next KPA is that of a training program that allows the workers to perform their role

efficiently and accurately.  One goal of this KPA is that training activities are planned (Paulk, L3-25).  This makes expectations and training plans known from the onset of a resource taking a role in the organization.  The next goal is that training for developing the skills and the knowledge needed to perform software management and technical roles is provided (Paulk, L3-26).  The final goal is that individuals in the software engineering group and software related groups receive the training necessary to perform their roles (Paulk L3-26).

      The fourth KPA for CMM level 3 is integrated software management, which is

responsible for integrating the software unit into one coherent process.  The first goal is that the project’s defined software process is a tailored version of the organization’s standard software process (Paulk, 3-38).  This means taking the process and customizing it to support the needs of the organization.  The next goal is that the project is planned and managed according to the project’s defined software process (Paulk, L3-38).  This looks at actually performing the activities that have been done and documented.

      The next KPA, software product engineering, has the purpose of consistently performing

a well-defined engineering process to produce consistent, correct software products.  The goals of this process are that software engineering tasks are defined, integrated, and consistently performed to produce the software and that software work products are kept consistent with each other (Paulk L3-60.  The consistency reduces the variability and leads to less errors and consistency in the process.

      Another key area, intercrop communication, is to ensure groups participate actively with

each other.  The first goal is that there is agreement by all affected parties of the customer’s requirements. (Paulk, L3-86).  This is a good way to ensure a consensus that the project has been given a seal of approval and avoids surprises and conflicts.  The next goal is for the affected groups agree to the commitments between the engineering groups.  The final goal is that the engineering groups identify, track, and resolve intergroup issues (Paulk, L3-86).  This aids in forming a knowledge base for recurring issues and also allows recurring issues to be analyzed to determine if there is an underlying problem that needs to be addressed.

      The final key area is peer reviews, which serve to remove defects from the software work

as early and efficiently as possible.  The goals are that peer revisions are planned and defects in the software work products are identified and removed (Paulk, L3-97).  Peer reviews provide more people analyzing a product so that different perspectives can contribute ideas as well as detect defects.

There have been many applications for the CMM methodology in industry.  This example

is directed towards the Defense Contract Management Agency (DCMA).  Using CMM, the agency can have an evaluation of the maturity of a contractor’s software development process without incurring the cost of doing a complete evaluation (Lang, 32).  In addition, it would also reduce costs by not having a contractor reviewed by every government agency that considers them for a contract.  They will use the CMM insight goals to provide consistent data about the maturity of contractor’s software processes.  This is going to be a phased approach with phase 1 being validation of the approach at the home locations of the SEI (Lang, 33).  Phase 2 will be the evaluation of the effectiveness of the approach in the typical field environment (Lang, 33).  Phase 3 will be the validation of the capture and transmission of the data before it is implemented agency wide (Lang, 33).  The benefits realized by the consolidation of the contractor’s CMM level is helpful from a redundancy aspect as well as a monitoring process to ensure the CMM level stays consistent with the DOD’s expectations. 

The CMM methodology is one, which has been around for almost two decades, and industry is now beginning to embrace the concept including countries such as India (Chendakera, 23).  Why has the buy in to the concept taken so long and why have some still not considered a process management methodology?  First, Information technology is a fairly new department in some corporations and just getting a start to the department was difficult enough without starting a defined process.  These departments feel that as long as they are creating software that it doesn’t need to be repeatable and the benefit to the client ad client interaction is not needed.  However, in looking at systems analysis, its role and CMMs support of that role, it is evident that these processes being defined and standardized provide a huge benefit to the process of systems analysis as well as the software development process as a complete entity.

Additional Links

http://www.jeffgainer.com/cmm_applied.html

http://www4.gartner.com/4_decision_tools/measurement/tq/pdf/CMM.pdf

http://www.stellarstudios.com/index.aspx?pageid=83

http://www.itmweb.com/f051098.htm

http://interactive.sei.cmu.edu/Features/1998/September/Introduction/introduction_sept98.pdf

http://www.npd-solutions.com/cmm.html


Bibliography

 

Chendakera, Nair, “Software hub set up in India”, Electronic Engineering Times, March 27, 2000, Issue 1106, pp.22-24

 

Gray, Paul, “IS Productivity”, Information Systems Management, 10580530, Spring96, Vol. 13, Issue 2, pp.92-95.

 

Hutchinson[sup1], A, “Standardized process improvement for construction enterprises”, Finnemore[sup2], M.., Total Quality Management, July1999, Vol. 10 Issue 4/5, pS576-584.

 

Lang, Bob,” Risk Data Based on Capability Maturity Models”, Program Manager, May/Jun2002, Vol. 31 Issue 3, pp.32-37.

 

Marco, David, “Included Meta Data & Knowledge Management: Capability Maturity Model: Applying CMM Levels to Data Warehousing”, DM Review, pp.27-28.

 

Parzinger[sup1], Monica J.; Nath[sup2], Ravinder, “A study of the relationships between total quality management implementation factors and software quality.”, Total Quality Management, May2000, Vol. 11 Issue 3, pp.353-372.

 

Paulk, Mark C., "Key Practices of the Capability Maturity Model - Version 1.1", Software Engineering Institute - Carnegie Mellon University.  

 

Paulk, N.C.,  Extreme programming from a CMM perspective”, IEEE Software, Volume: 18 Issue 6 , Nov.-Dec. 2001, pp.19 –26.

 

Phan, Dien D, “Software Quality and Management”, Information Systems Management, 10580530, Winter2001, Vol. 18, Issue 1, pp.56-68.

 

Rada, Roy; Craparo, John S., “Standardizing Management of Software Engineering Projects.”, Knowledge, Technology & Policy, Summer2001, Vol. 14 Issue 2, pp.67 –78.

 

Woods, W. Addison., “Still No Silver Bullet: Managing and Improving the Software Development Process.” Armed Forces Comptroller, Winter99, Vol. 44 Issue 1, pp.33-37.