Sunday, December 21, 2014

TOP 6 BENEFITS OF ADOPTING CAPABILITY MATURITY MODEL – CMMI

The quality of a software product is only as good as the process used to develop and maintain it. Whether a software organization is competing in the marketplace or trying to satisfy internal requirements, its software process is a critical success factor. Well thought out improvements to the process will significantly contribute to the organization’s performance.
Capability Maturity Model Integration (CMMI) is a process improvement training and certification program and service administered and marketed by Carnegie Mellon University and required by manyDOD and Government programs for government contracts, especially software development. Carnegie Mellon University claims CMMI can be used to guide process improvement across a project, division, or an entire organization.

SOME INTERESTING STATS

There are over 5,000 businesses that use CMMI models from over 70 countries, including the U.S., China, Germany, Italy, Australia, India, Turkey, Pakistan, Egypt,Chile,  and Russia.
CMMI Performance Result summary
A research by University of Missouri – St. Louis IS6840 – Fall 2008

TOP 6 BENEFITS OF ADOPTING CMMI QUALITY FRAMEWORK?

CMMI not only rates the maturity of companies’ process, it gives a level of assurance that the company being given the work will be able to complete the job in the time and price quoted for the project.
In order for the local software development industry to become more competitive on a global scale, it will need to fall into line with international standards, so that local companies seeking international contracts will be able to meet the CMMI level specified by international companies.
Having originated in the US defense sector, CMMI is now being adopted increasingly widely to drive Business Improvement in diverse organisations.

1 – CONSISTENCY

CMMI provides a proven approach that has enabled diverse organisations to drive out real benefits in terms of dramatically improved project predictability and consistency. Whilst any or all of the above factors may drive an organisation’s initial interest in CMMI, the key benefit from implementing the model that executives focus on is consistency in delivery.

2 – COST SAVING

CMMI driven process improvement also delivers real cost savings such as earlier and more effective error detection, and hence reduced cost of remediation, more effective management of change so you spend less on re-work, reductions in schedule variability and increased cost predictability.

3 – SELF IMPROVEMENT

There is also the aspect of self improvement. Companies will be able to use CMMI as a way of differentiating themselves locally and by achieving a level of CMMI will have naturally improved their processes which will make them more competitive. The heat of competition is now driving significant interest in CMMI.  Development, Service Provider and Acquisition/Outsourcing organisations are all adopting CMMI both as a differentiator and as an enabler to enhanced performance.

4 – MARKET DEMAND

Competing companies are utilizing CMMI for  industry best practices and reaping the benefit of it. Companies have adopted this approach to best meet the customer demands and competition. —Growing popularity of CMMI in the market is also a big reason of adoption of this practice by companies.
—Subcontractors providing custom software to companies creating solutions for the federal government must either themselves be following CMMI, or be covered by their client.  All the parts of the software product delivered to the government must be following CMMI somewhere in the supply chain.

5 – PERFORMANCE DEMAND

—The purpose of CMMI is to improve upon the performance of the existing organizational standards, processes and procedures and NOT to redefine or them. —CMMI is meant to help organizations improve on their “capability” to consistently and predictably deliver the products, services, and sourced goods their customers want, when they want them and at a price they’re willing to pay.
CMMI can be applied to create a process improvement solution appropriate to the context of each unique organization and can provide a path for an organization to achieve its performance goals.

6 – PROCESS IMPROVEMENT

A CMMI driven improvement project will deliver a framework to standardize your processes, ensuring that your business’s best practices are captured, shared and adopted so that you can move staff around your organization and leavers won’t take business critical information away with them.
—CMMI includes 25 different process areas to cater comprehensive business process improvement solution. —Each process area is made of two kinds of goals, two kinds of practices, and a whole lot of informative information helping management to make strategies.

WHY USE A MODEL?

Without a model of how an organization work, which functions it need, and how those functions interact, it is difficult to lead efforts to improve. A model gives us an understanding of discrete elements in an organization and helps to formulate language and discussion of what needs to be improved and how such improvement might be achieved. A model offers the following benefits:
  • provides a common framework and language to help communicate
  • leverages years of experience
  • helps users keep the big picture in mind while focusing specifically on improvement
  • is often supported by trainers and consultants
  • can provide a standard to help solve disagreements

CHARACTERISTICS OF THE MATURITY LEVELS

Under the CMMI methodology, processes are rated according to their maturity levels, which are defined as: Initial, Repeatable, Defined, Quantitatively Managed, Optimizing. Currently supported is CMMI Version 1.3. CMMI is registered in the U.S. Patent and Trademark Office by Carnegie Mellon University.
Maturity Levels


CMMI MODEL FRAMEWORK

—3 Constellations are defined to help improve a given business need.  Currently there are three (3) constellations:
—Development: For improving the development of solutions.
—Acquisition: For improving the purchasing of products, services and/or solutions.
—Services: For improving delivery of services and creation of service systems (say, to operate a solution but not buy it or build it in the first place).
CMMI Core Process Areas
 

MATURITY LEVELS IN CMMI FOR DEVELOPMENT

There are five maturity levels. However, maturity level ratings are awarded for levels 2 through 5. The process areas below and their maturity levels are listed for the CMMI for Development model:
  • Maturity Level 2 – Repeatable
  • Maturity Level 3 – Defined
  • Maturity Level 4 – Quantitatively Managed
  • Maturity Level 5 – Optimizing

MATURITY LEVELS IN CMMI FOR SERVICES

The process areas below and their maturity levels are listed for the CMMI for Services model:
  • Maturity Level 2 – Managed
  • Maturity Level 3 – Defined
  • Maturity Level 4 – Quantitatively Managed
  • Maturity Level 5 – Optimizing

MATURITY LEVELS IN CMMI FOR ACQUISITION

The process areas below and their maturity levels are listed for the CMMI for Acquisition model:
  • Maturity Level 2 – Managed
  • Maturity Level 3 – Defined
  • Maturity Level 4 – Quantitatively Managed
  • Maturity Level 5 – Optimizing

SUMMARY

A high maturity organization where all individuals recognize their role and responsibility for business success is an organization that is more likely to achieve success.
What an organization gets out of process deployment and CMMI appraisals is a reflection of what the organization puts into it. Organizations that focus on a just wining the CMMI certification hardly find the real benefits of adopting the quality framework.
High maturity, with its focus on quality and process performance objectives, puts organizations and projects in a position to succeed.

Why is CMMI Appraisal Important for Software Development Companies?

As a software development professional that has been in the IT industry for over 30 years, I think it is fair to say I have a qualified perspective on the effect that process and standardization have on producing software products and services. Back in the day, however, I didn’t always understand the need for these formalities. I would ask questions like, “Is it really necessary to ‘document’ my code?” or “Do we really need to do ‘that’ on ‘all’ of our deliverables?” or say, “I can get so much more done if I didn’t need to worry about ‘dotting the I’s and crossing the T’s.’” I make sure my code is documented and tested; why do I have to consider other approaches?” It all just seemed to be a waste of time and money to me.
Well, that was me as a coder, many moons ago, and I’m sure that these types of concerns still resonate with others today. Now I have a different perspective as an owner and partner ofSegue Technologies, and the current Director of Software Engineering. There are a whole host of challenges that arise with answering those core questions while still maintaining productivity and quality across the enterprise of services and development platforms. As a business owner, I am fully cognizant of the acronym ROI (Return on Investment) and how most decisions, if not all, are based on what the ROI expectations tell us. This both applies to the operations and success of Segue, and to the value and quality of our services for our customers.
Can a balance be achieved between administration and management costs and just “cranking out the code?” Should a formal analysis be conducted and investments made with the hope of the coveted ROI? Or was I right in my junior years? As an organization, you can start to find this balance by delving into process organizations whose whole mission in life is centered on identifying everything under the sun coupled to “best practices.” You know who they are: ISO,ITILSix SigmaIEEE, and a host of others. They all have white-papers and checklists that are truly inspirational and offer practical guidance in possibly achieving that necessary “balance.”

The Importance of a CMMI Appraisal

The Software Engineering Institute (SEI), at Carnegie-Melon University, was initiated by the U.S. Department of Defense. SEI has long been the organization which not only researches and recommends development improvements, processes and practices, but provides an independent and objective “appraisal” as to whether an organization is actively practicing these standards. This last fact alone justifies a CMMI appraisal from a purely compliance perspective. It has become increasingly more common to see the requirement for a development company to have had a successful CMMI appraisal conducted in order to even qualify for Federal Government contracts. Bottom line: if you do work for the Federal government, you better get started with a CMMI Appraisal, if you haven’t already!

The Benefits of CMMI Accreditation

Through experience and (dare I say) wisdom, I have seen first-hand the benefits that CMMI accreditation has brought to our organization, to include:
1.   Expectation of Sustainment for the long haul
2.   A balance between productivity and process by aligning our internal processes, with the Process Areas called out in the CMMI guidance.
Repeatability is the key for process success, and as they have now become the norm and not painful, everyone is in synch with the expectations.
Without an appraisal, it is doubtful that our organization would have implemented a sustainable and measurable process that everyone is aware of and that drives operations. We have seen ROI through optimization of tasks, estimation techniques, ownership/accountability, management, and how all corporate components play a role in quality through a consistent work-flow, just to list a few!

What to Expect During a CMMI Appraisal

This is where the bulk of your investment takes place. It involves all facets of your organization and requires training and management. You will also need to pay for the independent appraisal itself, from a qualified SEI appraiser. In addition, there are options to work with certified CMMI organizations that can consult and guide you through the appraisal preparation. There are also a series of tools and guides available from SEI, at no cost, that allow you to conduct the preparation without need of consultation.
In our journey toward CMMI appraisal, our organizational “pains” occurred when we embarked on the inventory and mapping of what we were currently doing, as compared to the CMMI process areas and generic and specific practices. Gaps were identified and addressed and all of those were found to add value to our organization. It was well worth it though, as we did realize ROI and can measure it routinely now!
The beauty of CMMI is its different levels of maturity. These help guide an organization to continually improve and implement practices in chunks rather than having to deal with everything at once. We can now progress and refine improvement as we mature by building on the CMMI foundation we have established. The more mature your organization becomes, following the CMMI progression/capability levels, the more you become competitive through optimization and quality. Most important to my business and to the value I can provide my customers, is continually improving ROI.

Sunday, December 7, 2014

How to Achieve Level 5 Maturity for QA and Testing Process

For any process whether it is a QA process, development process or any non-technical process, there are levels of its maturity. By levels of maturity we mean that the level of formality and processes improvement, like ad-hoc processes – to formally defined steps – to managed result metrics – to optimization of the processes.
CMM (Capability Maturity Model) is process based model which is used to assess the maturity of an organization for different domains. Although this model is normally termed as the software development model but eventually it was used for other processes as well like QA and testing.
It has 5 different levels of maturity from 1 to 5. As we go towards level 5 from 1, variability and inconsistency reduces. Below are the details of 5 levels. Here we will go through the 5 CMM levels with respect to QA process and what all output/result is expected for each level to mature a QA/testing process and reach up to level 5.
CMM Levels

Level 1 – Ad-Hoc: Unplanned, unsystematic, and inconsistent

As the word ‘Ad-Hoc’ states: unplanned, unprepared, at this level significance is not given to planning, following processes, guidelines and standards. There is no standardized & consistent way of doing any task. The only thing which is important at this level is meeting the timelines, irrespective of the quality of the end product and deliverables.
As there are no pre-defined standards and processes, same task is done in different ways by different people.
And this becomes even more unsystematic and inconsistent if same task is done differently next time.
Example -
QA – The example would be that in an organization although QA is 1 of the phases in a product life cycle but there are not any standard & no process defined, no templates for QA deliverables like plan, strategy, scenarios, and cases are standardized. Even if these are documented then all team members have their own way of doing it and not consistent at all.

Level 2 – Control: initiate defining processes at high level:

Solution to the problem which we saw at Level 1 of unavailability of QA processes, methodology & standards would be to have all these in place. The standards and processes are not only finalized but also are well documented, so that those can be re-used by any one for similar task.
Example -
QA – Define overall QA process and methodology for different types of testing like functional, data, performance etc. Define the role of a QA engineer in project’s life cycle and prepare templates for deliverables in each phase. Not only define and prepare rather share within team

Level 3 – Core Competency: Come up with a generalized process for wider audience and domains:

At this level 3, people are motivated to follow the standards and processes defined at level 2. For this first of all the processes need to be conveyed to all people and need to identify what all skills are needed to use those effectively and efficiently and also if any training is required for that and then motivated and supported to follow those standards and processes. Here people having more experience share their knowledge with others.
Example -
QA – Conduct webinars and training sessions to let people get acquainted about the newly defined QA process and standards and motivate them to make use of those during their day to day project’s life

Level 4 – Predictable: Measure the processes

At this level processes defined at level 3 are measured quantitatively. This is done to control the effort required on any task. Based on this quantitative analysis, processes can be adjusted if needed, and that to without degrading the quality of the end product. Analysis is done by dividing complete process into smaller sub-processes and then quantitative techniques are applied on these sub-processes and as per the result, sub-processes are adjusted if needed. This level is called predictable as based on prior experience; we can predict the process quantitatively and make use of that for the upcoming processes.
Example -
QA – Performing regular audits would be a good idea here. This can include to check if teams are actually following the processes defined, using the standard templates, adhere to methodology or not.

Level 5 – Innovative: Continuous Improvement

At this level, innovative ways are identified to further improve the pre-defined processes and standards. This is a continuous process. For this our own processes are watched and re-engineered continuously by adding new tools technologies, by continuous studies and by keeping ourselves updated with new information in the market. This can also be achieved by benchmarking other organizations and learn from them and try to improve our process by adding new innovations to it.
Example -
QA – Keep on improving the methodology, processes defined based on prior audit results.
Based on some studies it has been concluded that the organizations at level 1 may spend $1000 for any particular task then for the same task organization at level 5 needs to spend $10.
After going though all 5 levels mentioned above, looks like reaching up to level 3 is difficult. Once it achieved then next levels are not too far and difficult to achieve

What is SEI? CMM? ISO? IEEE? ANSI?

· SEI = ‘Software Engineering Institute’ at Carnegie-Mellon University; initiated by the U.S. Defense Department to help improve software development processes.
· CMM = ‘Capability Maturity Model’, developed by the SEI. It’s a model of 5 levels of organizational ‘maturity’ that determine effectiveness in delivering quality software. It is geared to large organizations such as large U.S. Defense Department contractors. However, many of the QA processes involved are appropriate to any organization, and if reasonably applied can be helpful. Organizations can receive CMM ratings by undergoing assessments by qualified auditors.
Level 1 - characterized by chaos, periodic panics, and heroic efforts required by individuals to successfully complete projects. Few if any processes in place; successes may not be repeatable.
Level 2 – software project tracking, requirements management, realistic planning, and configuration management processes are in place; successful practices can be repeated.
Level 3 – standard software development and maintenance processes are integrated throughout an organization; a Software Engineering Process Group is in place to oversee software processes, and training programs are used to ensure understanding and compliance.
Level 4 – metrics are used to track productivity, processes, and products. Project performance is predictable, and quality is consistently high.
Level 5 – the focus is on continuous process improvement. The impact of new processes and technologies can be predicted and effectively implemented when required.

· ISO 

= ‘International Organization for Standards’ – The ISO 9001, 9002, and 9003 standards concern quality systems that are assessed by outside auditors, and they apply to many kinds of production and manufacturing organizations, not just software. The most comprehensive is 9001, and this is the one most often used by software development organizations. It covers documentation, design, development, production, testing, installation, servicing, and other processes. ISO 9000-3 (not the same as 9003) is a guideline for applying ISO 9001 to software development organizations. The U.S. version of the ISO 9000 series standards is exactly the same as the international version, and is called the ANSI/ASQ Q9000 series. The U.S. version can be purchased directly from the ASQ (American Society for Quality) or the ANSI organizations. To be ISO 9001 certified, a third-party auditor assesses an organization, and certification is typically good for about 3 years, after which a complete reassessment is required. Note that ISO 9000 certification does not necessarily indicate quality products – it indicates only that documented processes are followed.

· IEEE = ‘Institute of Electrical and Electronics Engineers’ – among other things, creates standards such as ‘IEEE Standard for Software Test Documentation’ (IEEE/ANSI Standard 829), ‘IEEE Standard of Software Unit Testing (IEEE/ANSI Standard 1008), ‘IEEE Standard for Software Quality Assurance Plans’ (IEEE/ANSI Standard 730), and others.
· ANSI = ‘American National Standards Institute’, the primary industrial standards body in the U.S.; publishes some software-related standards in conjunction with the IEEE and ASQ (American Society for Quality).

Wednesday, December 3, 2014

What is Capability Maturity Model Integration? (CMMI)

What is Capability Maturity Model Integration? (CMMI)

Capability Maturity Model Integration (CMMI) is a process improvement approach that provides organizations with the essential elements of effective processes.
CMMI for Development Ver 1.2 consists of 22 process areas with Capability or Maturity levels. CMMI should be adapted to each individual company, therefore companies are not "certified." A company is appraised at a certain level of CMMI.

History

The CMMI is the successor of CMM. The goal of the CMMI project is to improve usability of maturity models for software engineering and other disciplines, by integrating many different models into one framework. It was created by members of industry, government and the SEI.

Appraisal

There are three different types of appraisals, type A, B and C. In Appraisal Requirements for CMMI (ARC) the requirements for CMMI appraisal methods are described. The Standard CMMI Assessment Method for Process Improvement (SCAMPI) is the only appraisal method which meets all of the ARC requirements for a Class A appraisal method. The results of the appraisal can be published on the SEI website.

Evaluation

The SEI states that 25 organizations measured increases of performances in the categories cost, schedule, productivity, quality and customer satisfaction. The median increase in performance varied between 14% (customer satisfaction) and 62% (productivity). However, the CMMI model mostly deals with what processes should be implemented, and not so much with how they can be implemented. SEI thus also mentions that these results do not guarantee that applying CMMI will increase performance in every organization. A small company with few resources may be less likely to benefit from CMMI.
Interestingly, Turner & Jain (2002) argue that although it is obvious there are large differences between CMMI and agile methods, both approaches have much in common. They believe neither way is the 'right' way to develop software, but that there are phases in a project where one of the two is better suited. They suggest one should combine the different fragments of the methods into a new hybrid method. The combination of the project management technique Earned value management (EVM) with CMMI has been described (Solomon, 2002). To conclude with a similar use of CMMI, Extreme Programming (XP), a software engineering method, has been evaluated with CMM/CMMI (Nawrocki et al., 2002). For example, the XP requirements management approach, (which relies on oral communication), was evaluated as not compliant with CMMI.

Structure

The CMMI comes with two different representations - staged and continuous. The staged model, which groups process areas into 5 maturity levels, was also used in the ancestor software development CMM, and is the representation used to achieve a "CMMI Level Rating" from a SCAMPI appraisal. The continuous representation, which was used in the ancestor systems engineering CMM, defines capability levels within each profile. The differences in the representations are solely organizational; the content is equivalent.
The CMMI uses a common structure to describe each of the 25 process areas (PAs). A process area has 1 to 4 goals, and each goal is comprised of practices. Within the 22 PAs these are called specific goals and practices, as they describe activities that are specific to a single PA. There is one additional set of goals and practices that apply in common across all of the PAs; these are called generic goals and practices. Table 1 describes CMMI terminology in more detail. The page numbers refer to the Staged Representation. Common Features are historical artifacts from the software CMM; they do not appear in the CMMI v1.2.

CMMI concept definition list

·         Capability Level
o    These levels belong to the continuous representation, apply to an organization’s process-improvement achievement for each process area. There are six capability levels, numbered 0 through 5. Each capability level corresponds to a generic goal and a set of generic and specific practices.
·         CMMI Model
o    Since the CMMI Framework can generate different models based on the needs of the organization using it, there are multiple CMMI models. Consequently, the phrase “CMMI MODEL” could be any one of many collections of information. The phrase “CMMI models” refers to one, some, or the entire collection of possible models that can be generated from the CMMI Framework.
·         Continuous Representation
o    Uses capability levels to measure process improvement.
·         Discipline Amplification
o    These are model components that provide guidance for interpreting model information for specific disciplines (e.g., systems engineering, or software engineering). Discipline amplifications are added to other model components where necessary. These are easy to locate because they appear on the right side of the page and have a title indicating the discipline that they address (for example, “For Software Engineering”).
·         Generic Goals
o    These are called “generic” because the same goal statement appears in multiple process areas. In the staged representation, each process area has only one generic goal. Achievement of a generic goal in a process area signifies improved control in planning and implementing the processes associated with that process area, thus indicating whether these processes are likely to be effective, repeatable, and lasting. Generic goals are required model components and are used in appraisals to determine whether a process area is satisfied.
·         Generic Practices
o    These provide institutionalization to ensure that the processes associated with the process area will be effective, repeatable, and lasting. Generic practices are categorized by generic goals and common features and are expected components in CMMI models. (Only the generic practice title, statement, and elaborations appear in the process areas.)
·         Generic Practice Elaborations
o    After the specific practices, the generic practice titles and statements appear that apply to the process area. After each generic practice statement, an elaboration may appear in plain text with the heading “Elaboration.” The GPE provides information about how the generic practice should be interpreted for the process area. If there is no elaboration present, the application of the generic practice is obvious without an elaboration.
·         Goal
o    A required CMMI component that can be either a generic goal or a specific goal. When you see the word “goal” in a CMMI model, it always refers to model components.
·         Maturity Level
o    This is a defined evolutionary plateau of process improvement. Each maturity level stabilizes an important part of the organization’s processes. Maturity levels, which belong to the staged representation, apply to an organization’s overall maturity. There are five maturity levels, numbered 1 through 5. Each maturity level comprises a predefined set of process areas.
·         Process Area
o    This is a cluster of related practices in an area that, when performed collectively, satisfy a set of goals considered important for making significant improvement in that area. All CMMI process areas are common to both continuous and staged representations. In the staged representation, process areas are organized by maturity levels.
·         References
o    These are informative model components that direct the user to additional or more detailed information in related process areas. Typical phrases expressing these pointers are “Refer to the Organizational Training process area for more information about identifying training needs and providing the necessary training” or “Refer to the Decision Analysis and Resolution process area for more information about evaluating and selecting among alternatives.”
·         Specific Goals
o    These apply to a process area and address the unique characteristics that describe what must be implemented to satisfy the process area. Specific goals are required model components and are used in appraisals to help determine whether a process area is satisfied.
·         Specific Practice
o    This is an activity that is considered important in achieving the associated specific goal. The specific practices describe the activities expected to result in achievement of the specific goals of a process area. Specific practices are expected model components.
·         Staged Representation
o    This uses maturity levels to measure process improvement.
·         Statement
o    This is designed to be used for process-improvement and appraisal purposes.
·         Subpractice
o    These are detailed descriptions that provide guidance for interpreting specific or generic practices. Subpractices may be worded as if prescriptive, but are actually an informative component in CMMI models meant only to provide ideas that may be useful for process improvement.
·         Work Product
o    The term is used throughout the CMMI Product Suite to mean any artifact produced by a process. These artifacts can include files, documents, parts of the product, services, processes, specifications, and invoices. Examples of processes to be considered as work products include a manufacturing process, a training process, and a disposal process for the product. A key distinction between a Work Product and a product component is that a work product need not be engineered or part of the end product.