Abstract: This document provides an introduction to the Capability Maturity Model, descriptions of the five maturity levels, an operational definition of the CMM and its structure, a discussion of how organizations can use the maturity model, and some remarks on the future directions of the CMM. [pp] Developing reliable and usable software that is delivered on time and within budget is a difficult endeavor for many organizations. As software projects continue to increase in size and importance, these problems become magnified. These problems can be overcome by a focused and sustained effort at building a process infrastructure of effective software engineering and management practices. [pp] To build this process infrastructure, organizations producing software need ways to appraise their ability to perform their software process successfully. They also need guidance to improve their process capability. Customers such as Department of Defense (DoD), need ways to evaluate more effectively an organization's capability to perform successfully on software engineering contracts. Prime contractors need ways to evaluate the capability of potential subcontractors. [pp] To help organizations and customers like the DoD and prime contractors, the Software Engineering Institute (SEI) has developed the CMM for software, that delineates the characteristics of a mature, capable software process. The progression from an immature, unrepeatable software process to a mature, well-managed software process also is described in terms of maturity levels in the model.
Abstract: This document describes the key practices that correspond to each maturity level of the Capability Maturity Model. It is an elaboration of what is meant by maturity at each level of the CMM and a guide that can be used for software process improvement, software process assessments and software capability evaluations. [pp] Developing reliable and usable software that is delivered on time and within budget is a difficult endeavor for many organizations. As software projects continue to increase in size and importance, these problems become magnified. These problems can be overcome by a focused and sustained effort at building a process infrastructure of effective software engineering and management practices. [pp] To build this process infrastructure, organizations producing software need ways to appraise their ability to perform their software process successfully. They also need guidance to improve their process capability. Customers such as Department of Defense (DoD), need ways to evaluate more effectively an organization's capability to perform successfully on software engineering contracts. Prime contractors need ways to evaluate the capability of potential subcontractors. [pp] To help organizations and customers like the DoD and prime contractors, the Software Engineering Institute (SEI) has developed the CMM for software, that delineates the characteristics of a mature, capable software process. The progression from an immature, unrepeatable software process to a mature, well-managed software process also is described in terms of maturity levels in the model.
Abstract: The Software Process Framework (SPF) is a document that provides information contained in the Software Engineering Institute's Capability Maturity Model (CMM) for Software V. 1.1 [Paulk93a] in a format suitable for process definition and improvement. The SPF allows users to determine if their organization's software process documentation is consistent with the recommendations made by the CMM. When organizational software process documentation is found to be inconsistent with the CMM, the SPF provides the ability to make informed decisions regarding the applicability of specific CMM recommendations.
Hardcopy Available
ABSTRACT:The People Management Capability Maturity Model (P-CMM) is an adaptation of the Capability Maturity Model for Software (CMM) to focus on developing the organization's talent, especially in software and information systems development. The motivation for the P-CMM is to radically improve the ability of software organizations to attract, develop, motivate, organize, and retain the talent needed to steadily improve software development capability.
Abstract: Software process improvement is not usually covered in standard software engineering textbooks. However, because it is a topic of great interest to the software industry, both faculty and students should be familiar with it. The goal of this package is to provide the basis for an introductory 30 to 60 minute lecture on the software process and its improvement. [pp] The material in the main body of the document is intended primarily for instructors. In conjunction with the student-oriented document described below, it provides technical information from which an instructor can prepare a lecture. Two appendices provide additional information for instructors. Appendix A is a brief description of the use of the software process material in a university software engineering class at the University of Texas at Austin. This classroom example might be used as an illustration for students to relate the process concepts to their own software development work. Appendix B presents the Software Engineering Institute's (SEI) process maturity questionnaire from which instructors and students can gain some insight into how a software process is assessed. [pp] A document titled "Introduction to Software Process Improvement" is attached; it is intended for students. It describes the SEI capability maturity model (CMM), the maturity questionnaire, and SEI procedures that are based on the questionnaire, software process assessment and software capability evaluation. [pp] Finally, the package contains overhead transparency masters that instructors may find useful in delivery of their lectures.
Abstract: Data from 13 organizations were collected and analyzed to obtain information on the results of CMM-based software process improvement efforts. We report the cost and business value of improvement efforts, as well as the yearly improvement in productivity, early defect detection, time to market, and post-release defect reports. Improvement efforts and results in five organizations are reported in more depth in case studies. In addition, technical issues that we confronted as we tried to measure the results of software process improvement are discussed. We end with conclusions about the results of SPI efforts.
Abstract: The Software Engineering Laboratory (SEL) was established in 1976 for the purpose of studying and measuring software processes with the intent of identifying improvements that could be applied to the production of ground support software within the Flight Dynamics Division (FDD) at the National Aeronautics and Space Administration (NASA)/Goddard Space Flight Center (GSFC). The SEL has three member organizations: NASA/GSFC, the University of Maryland, and Computer Sciences Corporation (CSC). The concept of process improvement within the SEL focuses on the continual understanding of both process and product as well as goal-driven experimentation and analysis of process change within a production environment.
Abstract: The scientific treatment of the software process is relatively new and, as with any new field, the initial terminology is often confusing. When terms can have a diversity of meanings, technical communication is more difficult and technological progress is constrained. This paper defines a core set of concepts about the software process. These concepts are intended to facilitate communications and to provide a framework for further definitions. The definitions focus on essential concepts; however, they do not represent a comprehensive glossary of common software process terms. Following an initial overview, this paper outlines the basic process concepts which underlie the definitions. The definitions are then grouped in four sets: a framework for process definition, an engineering of process, an enactment of process, and process properties. This is followed by illustrations of the use of these concepts in several domains. The paper concludes with some observations on the definition process.
Hardcopy Available
Abstract: A defined software process is needed to provide organizations with a consistent framework for performing their work and improving the way they do it. An overall framework for modeling simplifies the task of producing process models, permits them to be tailored to individual needs, and facilitates process evolution. This paper outlines the principles of entity process models and suggests ways in which they can help to address some of the problems with more conventional approaches to modeling software processes.
Hardcopy Available
Abstract: This technical report describes version 1.0 of the CMM Appraisal Framework (CAF). This framework describes the common requirements used by the CMM-Based Appraisal (CBA) project in developing appraisal methods based on the Capability Maturity Model (CMM) for Software, Version 1.1 [Paulk 93a]. The CAF provides a framework for rating the process maturity of an organization against the CMM. The CAF includes a generic appraisal architecture for CMM-based appraisal methods and defines the requirements for developing CAF compliant appraisal methods.
Hardcopy Available
Abstract: This package contains a copy of the software process maturity questionnaire. It is intended for those interested in performing and learning about software process appraisals. This version differs in several important ways from its predecessor, "A Method for Assessing the Software Capability of Contractors" (CMU/SEI-87-TR-23). The most important difference is that this questionnaire is not an appraisal method itself; rather, it is one component that is used in different appraisal methods. The software process maturity questionnaire (MQ) replaces the1987 version of the maturity questionnaire, CMU/SEI-87-TR-23, in the1994 set of SEI appraisal products. This version of the questionnaire is based on the capability maturity model (CMM) v.1.1. It has been designed for use in the new CMM-based software process appraisal methods: the CMM-based appraisal for internal process improvement (CBA IPI) which is the update of the original software process assessment (SPA) method, CMM-based software capability evaluations (SCEs), and the interim profile method. This questionnaire focuses solely on process issues, specifically those derived from the CMM. The questionnaire is organized by CMM key process areas (KPAs) and covers all 18 KPAs of the CMM. It addresses each KPA goal in the CMM but not all of the key practices. By keeping the questions to only 6 to 8 per KPA, the questionnaire can usually be completed in one hour. The MQ incorporates many changes based on customer feedback, internal and external reviews, and extensive field testing. The questionnaire includes a glossary of terms and KPA descriptions to assist respondents who may be unfamiliar with CMM terminology. Ample space is provided beneath each question to allow respondents to provide additional information regarding their answers. This space can be used by respondents to provide further explanation of their answers or references to supporting documentation.
Hardcopy Available
Abstract: This report describes efforts that have been initiated by the Software Engineering Institute to improve the practice of software cost and schedule estimating. These efforts involve support and participation from both industry and government. They are motivated by the Capability Maturity Model, which identifies the key roles estimating and cost management play in establishing repeatable software processes. Products from the initiative will include templates, criteria, and guidelines for establishing defined estimating processes, training materials, and examples for teaching good estimating practice, and evaluations of the abilities of contemporary cost models to meet today's estimating needs.
Hardcopy Available
Abstract: [Slide Presentation at Software Engineering Process Group National Meeting, April 1993] This tutorial is divided into modules with the following topics: improving the software process- it's been done, good software is good business, setting the stage, process definition baseline, metrics baseline, goal setting, software quality improvement and software productivity improvement.
Hardcopy Available
Abstract: This document describes a set of software measures that are compatible with the measurement practices described in the Capability Maturity Model for Software. These measures, in the form of software indicators, cover thirteen different categories that include progress, effort, cost, and quality. Each indicator category contains example figures which illustrate behavior that may occur on a project. The text provides users with tips on how to use these figures or similar ones on their projects. Project software managers and software engineering process groups can use these indicators during the software development life cycle to gain insight into the software development process and software process improvement activities. The indicators chosen have been successfully used on projects in the software industry.
Hardcopy Available
Abstract: The software community initially became aware of process improvement from the works of Deming, Juran, and Crosby. The current awareness and activity regarding software process improvement was sparked by the Software Engineering Institute (SEI) with the release of its original software process maturity model. Following the advice of the SEI, many software organizations initiated software process improvement efforts to improve the quality of their products by improving the processes that produce those products. The question that many managers are continually asking today, though, is: How much has my organization benefited from the changes we have made? Unfortunately, many organizations did not include a method of measuring those benefits in their improvement activities. This report describes some concepts that organizations can tailor and build upon to develop a method for determining the benefits they have received from their software process improvement activities.
Hardcopy Available
Abstract: [Slide Presentation at Software Engineering Institute Symposium, September 1992] The software capability evaluation (SCE) method is currently being used by several government organizations as a tool to gain insight into software processes and to evaluate the software development capability of contractors. The software development community, as a major stakeholder for the SCE method, has a need to understand what SCE is how it is being used by the government. This tutorial will be an introduction to the SCE method. The presenter will explain the relationship of SCE to the capability maturity model (CMM), the site visit process, and how the government is using SCE in source selections. Time will also be spent reviewing current project activities that are implementing the SCE transition strategy.
Hardcopy Available
Abstract: This paper provides an overview of the merging of a paradigm and a process, the object-oriented paradigm and the software product measurement process. A taxonomy of object-oriented software measures is created, and existing object-oriented software measures are enumerated, evaluated, and placed in taxa. This report includes an extensive bibliography of the current object-oriented measures that apply to the design and implementation phases of a software project. Examples of computation of representative measures are included.
Hardcopy Available
Abstract: Very little published evidence exists about the impact of the Capability Maturity ModelSM (CMM) or CMM-based appraisals on subsequent software process improvement and organizational performance. A few credible case studies do exist, but it is uncertain how widely their results apply. We present evidence here from a much broader cross section of software organizations. Our results suggest that process maturity does indeed payoff in better product quality, ability to meet schedule commitments, and other indicators of organizational performance. The vast majority of survey respondents also report that their appraisals proved to be highly accurate and useful in guiding their subsequent process improvement efforts. Not all organizations have been equally successful, however, and improvement often takes longer and costs more than expected. We identify several factors, most of them under management control, that distinguish more successful from less successful organizations.
Hardcopy Available
Abstract: An analysis of Software Process Assessment results from 48 organizations undertaking 2 or more assessments is presented in this report. The analysis focuses on the time required to increase process maturity, as well as the most prevalent process issues faced the 48 organizations. Results of the analysis are used to provide guidance to organizations embarking on a software process improvement effort.
Hardcopy Available
Abstract: This document presents the strategic plan of the Software Engineering Institute (SEI) for the next five years (1997-2001). The SEI technical program is organized into three broad areas: technical engineering practices, enhanced software management capabilities, and transition readiness. Because technical engineering practices potentially cover a very wide set of issues, we intend to use information survivability as a unifying application problem for this aspect of our work. This document was written in early 1996 and delivered to our sponsor (the Defense Advanced Research Projects Agency [DARPA]) as a contract deliverable in July 1996. As such, it was a draft plan; its execution depends primarily on approved resource allocations.The planning starts long before the Congress completes its budget authorization and appropriation. Historically, circumstances such as changing customer needs and shifting resource allocations have made it necessary to change our plans.
Abstract: Cleanroom software engineering is a theory-based team-oriented process for development and certification of high-reliability software systems under statistical quality control [Mills 92, Linger 93, Linger 94]. A principal objective of the Cleanroom process is development of software that exhibits zero failures in use. The Cleanroom name is borrowed from hardware Cleanrooms, with their emphasis on rigorous engineering discipline and focus on defect prevention rather than defect removal. Cleanroom combines mathematically based methods of software specification, design, and correctness verification with statistical, usage-based testing to certify software fitness for use. Cleanroom projects have reported substantial gains in quality and productivity. This report defines the Cleanroom Software Engineering Reference Model, or CRM. The CRM is expressed in terms of a set of 14 Cleanroom processes and 20 work products. It is intended as a guide for Cleanroom project management and performance, process assessment and improvement, and technology transfer and adoption.
Abstract: Type checking is considered an important mechanism for detecting programming
errors, especially interface errors. This report describes an experiment to assess
the error-detection capabilities of static intermodule type checking.
The experiment uses ANSI C and Kernighan&Ritchie (K&R) C. The relevant
difference is that the ANSI C compiler checks module interfaces (i.e., the
parameter lists of calls to external functions), whereas K&R C does not. The
experiment employs a counterbalanced design in which each subject writes two
non-trivial programs that interface with a complex library (Motif). Each subject
writes one program in ANSI C and one in K&R C. The input to each compiler
run is saved and manually analyzed for errors.
Results indicate that delivered ANSI C programs contain significantly fewer
interface errors than delivered K&R C programs. Furthermore, after subjects
have gained some familiarity with the interface they are using, ANSI C
programmers remove errors faster and are more productive (measured in both
time to completion and functionality implemented).
This report describes the design, setup, and results of the experiment including
complete source code and error lists.
Abstract: Software process automation is a new technology with significant promise. However, practical experience in the field is still limited and there appears to be a variety of potential barriers to its use. The objective of this empirical study is to document current practical experience and to identify what works and what does not. Lessons learned from the study will be disseminated to help others who wish to implement the technology. This report documents results from the first phase of the study in which 14 in-depth interviews were conducted. Personnel interviewed were involved in projects in which process-centered environments were developed and adopted.
Abstract: This paper presents a holistic vision of the risk-based methodologies for Software Risk MAnagement (SRSM) developed at the Software Engineering Institute (SEI). SRM methodologies address the entire life cycle of software acquisition, development, and maintenance. This paper is driven by the premise that the ultimate efficacy of the developed methodologies and tools for software engineering is to buy smarter, manager more effectively, identify opportunities for compatible information and databases more efficiently, improve industry raise the community's playing field, and review and evaluate progress. The methodologies are based on seven management principles: shared product vision, teamwork, global perspective, forward-looking view, open communication, integrated management, and continuous process.
Abstract: Software architecture is a field of study enjoying unprecedented growth and interest. This report identifies a set of promising lines of research related to software architecture and architecture-based system development that are expected to lead to advances available soon to practitioners. Some of the goals of software architecture are enumerated, and the investigatory efforts are structured according to work in the design or selection and creation, representation, evaluation and analysis, utilization, or legacy recovery of software architectures. Promising research is described in each area. These opinions are correlated with those of other experts in the field. Finally, a timeline for achieving some of the predicted results is offered.
Abstract: A model is presented that allows the characterization of the maturity of a profession in terms of eight infrastructure components: initial professional education, accreditation, skills development, certification, licensing, professional development, a code of ethics, and a professional society. Several mature professions are examined to provide examples of the nature of these components. The current states of the components of software engineering are described, and predictions are made for the evolution of those components as the profession matures.
Abstract: Software architecture is an area of growing importance to practitioners and researchers in government, industry, and academia. Journals and international workshops are devoted to it. Working groups are formed to study it. Textbooks are emerging about it. The government is investing in the development of software architectures as core products in their own right. Industry is marketing architectural frameworks such as CORBA. Why all the interest and investment? What is software architecture, and why is it perceived as providing a solution to the inherent difficulty in designing and developing large, complex systems? This report will attempt to summarize the concept of software architecture for an intended audience of mid to senior level management. The reader is presumed to have some familiarity with common software engineering terms and concepts, but not to have a deep background in the field. This report is not intended to be overly-scholarly, nor is it intended to provide the technical depth necessary for practitioners and technologists. The intent is to distill some of the technical detail and provide a high level overview.
Abstract:The software engineering process group (SEPG) of Raytheon Electronic Systems (RES) is responsible for defining and implementing the Software Engineering Initiative, which outlines the policies, practices, and procedures to be followed in developing complex software for large-scale commercial and defense projects. To accomplish these objectives, the SEPG has had to develop the organizational structure and techniques to meet the growing challenges of developing, maintaining, and improving its software engineering process in significant and measurable ways, including quantifying return on investment (ROI) and increasing the quality of the deliverable product.
ABSTRACT: This paper presents some of the steps in an emerging architecture tradeoff analysis method (ATAM). The objective of the method is to provide a principled way to understand a software architecture's fitness with respect to multiple competing quality attributes: modifiability, security, performance, availability, and so forth. These attributes can interact or conflict;improving one often comes at the price of worsening one or more of the others, thus it is necessary to trade off among multiple software quality attributes at the time the software architecture of a system is specified, and before the system is developed. This report illustrates typical quality attribute models, analyses, and tradeoffs using a small real-time industrial application.
ABSTRACT: Architectural decisions have a great impact on the consequent quality of software systems. As a result, it is important to evaluate how a software architecture meets its quality demands. Though much focus has been placed on modeling and describing the software architecture as a design artifact, we found that relatively little is known about the current experience with software architecture evaluation.
This report details the results of two workshops on software architecture evaluation, held at the Software Engineering Institute (SEI) on November 9-10, 1995 and May 9-10, 1996. The purpose of the workshops was to determine the state of industrial practice in the evaluation of software architectures with respect to a set of desired quality attributes, and to uncover recommendations for best practices. In this report, we summarize the findings of the two workshops, define a set of dimensions to characterize various software architecture evaluation techniques, and make concrete recommendations for implementing architecture evaluation practices.
ABSTRACT: This report is one in a series of Software Engineering Institute (SEI) case studies on software architecture. It describes structural modeling, a technique for creating software architectures based on a small set of design elements called structural types. Structural modeling resulted from the efforts of the Air Force Aeronautical Systems Command (ASC/YW) and has been used by Air Force contractors since the late 1980s to design large-scale, high-fidelity aircrew trainer simulation software. This report examines the changes, resulting from the use of structural modeling, to the trainerŐs software architecture and to the development methods used.
This document
Created: January 26, 1996
by RLU
Modified: June 15, 1998