Models and Standards for Software Process Improvement

After discussing some basic concepts of Software Quality, it is time to start talking about some of the models and standards that are used in the software industry. These models exist in order to help the improvement of processes and identify inefficiencies. But before jumping into the models themselves, let’s define Software Process Improvement (SPI). Which can be stated as:

“A set of applied theories, methods and techniques oriented towards quality management in order to achieve higher product quality, greater product innovation, faster cycle times, and lower development costs, simultaneosly.”

SPI consists of 4 main cycle steps: Current Situation Evaluation, Improvement Planning, Improvement Implementation, and Improvement Evaluation. SPI can bring so many benefits to a company, such as cost reductions, process consistency, reduction of time to market, customers satisfaction, automation, autonomy. There is many evidence of for the value that SPI can bring. Of course, it has its tolls that make a lot of companies think very carefully about implementing SPI on their projects. It adds a lot of time pressure and it is not recommended on budget constraints, also, on smaller companies it could be very difficult to measure the improvements on the processes.

Now that a basic understanding of SPI was set, it is time to talk about some SPI methods and standards.

CMMI

“The Capability Maturity Model Integration (CMMI) is a set of best practices”

This model was developed by the Software Engineering Institute at Carnegie Mellon University as a process improvement tool for projects, divisions or organizations.

CMMI starts with an appraisal to evaluate three specific areas:

  • Process and service
  • Service establishment and management
  • Product and service acquisition

It is a process and behavioral model. That means it can not only improve performance by developing measurable benchamarks, but can also encourage productive and efficient bahavior throughout the organization.

Even though the model was shaped for software engineering, it has evolved for hardware, software and service development across every industry, aiming to become easier to understand an use, more cost-effective, and easier to integrate and deploy.

In order to measure the CMMI methods, 5 levels were created:

  • Initial (Level 1): The worst stage a business can find itself in. Work gets completed but it’s often delayed and over budget.
  • Managed (Level 2): There are still a lot of issues to address, but there is an improvement on project management.
  • Defined (Level 3): Projects are guided by organization wide standards, and businesses understand what are the goals for improvement.
  • Quantitatively managed (Level 4): The business is ahead of risks, being more data driven.
  • Optimizing (Level 5): Processes are stable and flexible. The environment is more predictible and the organization is in constant improvement.

Once an organization reaches level 5 of maturity the next step is maintainance and continuous improving.

Certifications for CMMI are offered directly by the CMMI Institute, to certify individuals, appraisers, instructors and practitioners.

  • Individual certifications
    • Certified Enterprise Data Management Expert
    • Certified SCAMPI Lead Appraiser (People CMM)
    • Certified Introduction to People CMM Instructor
  • Appraiser certifications
    • Certified SCAMPI B&C Team Leader Certification
    • Certified SCAMPI Lead Appraiser (CMMI for Acquisition)
    • Certified SCAMPI Lead Appraiser (CMMI for Development)
    • Certified SCAMPI Lead Appraiser (CMMI for Services)
    • Certified SCAMPI High Maturity Lead Appraiser
  • Instructor certifications
    • Certified Introduction to CMMI for Development Instructor
    • Certified Introduction to CMMI for Services Instructor
    • Certified CMMI for Acquisition Supplement Instructor
    • Certified CMMI for Services Supplement Instructor
    • Certified CMMI for Development Supplement Instructor
  • Practitioner certifications
    • Certified CMMI Associate
    • Certified CMMI Professional

CMMI is a model that seeks to create predictable environments, to facilitate the efficiency, proactiveness and productiveness of products, services and departments.

TSP/PSP

“Team Software Process (TSP) and Personal Software Process (PSP) allows an organization to create self-directed teams that establish goals, processes and plans, to track their work”

As CMMI, TSP/PSP was developed by the Software Engineering Institute at Carnegie Mellon University. As the self explanatory names state, PSP is more focused on the individual improvement, while TSP is a team improvement. PSP gathers, registers and evaluates data for the improvement of the individual processes of a member to help the whole team. TSP takes the concept of PSP and applies it to the whole team. This model is a nice compliment to the CMMI method.

PSP has different levels

  • PSP 0: Time and defects registration.
  • PSP 0.1: Phase to set standards and measurements.
  • PSP 1: Estimation of the magnitud of the project and testing.
  • PSP 1.1: Task planification.
  • PSP 2: Code and design review
  • PSP 2.1: Design specification and analysis techniques.

A PSP certification can be obtained by the SEI at Carnegie Mellon University through an exam.

In order to have TSP, PSP has to be implemented first. TSP is implemented through cycle processes, that include launching, execution and the end of the process. TSP assings duties to the members of the team:

  • Team leader
  • Customer interface manager
  • Design manager
  • Implementation manager
  • Test manager
  • Planning manager
  • Process manager
  • Quality manager
  • Support manager

TSP can be certified in the same way as PSP.

ISO-15504

“ISO/IEC 15504 is an International standard for Software Improvement Capability Determination, also known as SPICE, to evaluate the processes in software development products”

This standard takes 3 elements into account:

  • A 6 level schema to evaluate the capabilties of processes
  • A set of requirements to define processes
  • A set of requirements to implement consisten evaluations

The 6 levels of process capabilites are:

  • Level 0: Incomplete
  • Level 1: Performed
  • Level 2: Managed
  • Level 3: Established
  • Level 4: Predictable
  • Level 5: Optimizing

These levels are similar to the levels to the CMMI method, this is due to the fact that CMMI is an alternative to ISO 15504. And as such, ISO 15504 is focused on the improvement of the processes.

In order to assing a level to a process there exist classification attributes, whose values serve to that purpose:

  • N: not implemented (0-15%)
  • P: partially implemented (> 15-50%)
  • L: highly implemented (> 50-85%)
  • F: fully implemented (> 85%)

It is more accesible to get an ISO 15504 certification than a CMMI, and cheaper to implement. Also CMMI is not an international standard.

MOPROSOFT

MOdelo de PROcesos de SOFTware is a software maintainance model in order to help companies improve their work in a competitive environment”

It was created by the Secretaria de Economía in order to be the basis for the Norma Mexicana para la Industria de Desarrollo y Mantenimiento de Software. Moprosoft is structured in 3 categories:

  • Direction: It establishes the guidelines for the management processes, and uses the information that receives in order to get feedback that helps the improvement.
  • Management: It defines processes and gives directions to the operations sector, according to the strategy developed by the Direction category, and reports results to the former.
  • Operations: in charge of generating products with the information fed by the management, and deliver reports.

Its levels of process capability levels are the same as the ones in ISO 15504: Performed, Managed, Established, Predictible, and Optimizing. It offers also different categories to the processes that are grouped in the 3 different structure categories:

  • Direction:
    • Business
  • Management:
    • Proyects
    • Human resources and Work Environment
    • Goods, Services and Infrastructure
  • Operations:
    • Specific Management of Projects
    • Development and Maintainance of Software
IDEAL method

“Initiating, Diagnosing, Establishing, Acting, Learning (IDEAL) method serves as a guide for initiating, planning and implementing actions that help the process improvement in the context of a CMMI product suite.”

Also created by the SEI at Carnegie Mellon University, it was created as a process-improvement and defect reduction methodology. It consists of 5 phases:

  • Initiating: establishes context for change. It decides which level of risk is addecuate for the organization. It also should be decided who will be taking action.
  • Diagnosing: Identify problems within the processes and gives recommendations to get from the current state to a decided state.
  • Establishing: Sets priorities based on many elements, develops a path to obtain the desired state and plans the actions that will be taken.
  • Acting: Creates, tests, refines and installs the solution.
  • Learning: proposes future actions based on the analysis and validation of the solution.
References

Sami, M. (2018). The Software Process Improvement (SPI) – Reward or Risk. Mohamed Sami. Retrieved from https://melsatar.blog/2018/06/26/the-software-process-improvement-spi-reward-or-risk/

Keshta, I. (2019). Approaches to Software Process Improvement: A State-of-the-Art Review. ResearchGate. Retrieved from https://www.researchgate.net/publication/337327204_Approaches_to_Software_Process_Improvement_A_State-of-the-Art_Review

White, S. (2018). What is CMMI? A model for optimizing development processes. CIO. Retrieved from https://www.cio.com/article/2437864/process-improvement-capability-maturity-model-integration-cmmi-definition-and-solutions.html

CMMI. (n.d.). What is CMMI®?. CMMI Institute. Retrieved from https://cmmiinstitute.com/cmmi/intro

TSP/PSP. (n.d.). ¿Qué es PSP y TSP?. Avantare. Retrieved from http://www.avantare.com/0/materiales-de-referencia/que-es-psp-y-tsp/print

TSP/PSP. (n.d.). PERSONAL AND TEAM SOFTWARE PROCESSES (PSP/TSP). European Software Institute. Retrieved from https://www.esicenter.bg/processes/tsp_psp

ISO 15504. (n.d.). Consigue la certificación ISO 15504 de forma sencilla. calidad y gestión. Retrieved from https://www.calidadygestion.com/iso-15504/

IDEAL (n.d.). IDEAL — Initiating, Diagnosing, Establishing, Acting & Learning. Play-In-Business. Retrieved from https://www.plays-in-business.com/ideal-initiating-diagnosing-establishing-acting-learning/

ISO 15504. (n.d.). EL ESTÁNDAR INTERNACIONAL ISO/IEC 15504. Normas ISO. Retrieved from https://www.normas-iso.com/iso-iec-15504-spice/

Humphrey, W. (2000). The Team Software ProcessSM (TSPSM). Carnegie Mellon Software Engineering Institute. Retrieved from https://resources.sei.cmu.edu/asset_files/TechnicalReport/2000_005_001_13754.pdf

Moprosoft. (2011). Moprosoft. Allsoft. Retrieved from https://www.allsoft.mx/recursos/AS-Moprosoft.pdf

Moprosoft. (n.d.). ¿Qué es Moprosoft?. Hospisoft. Retrieved from https://www.hospisoft.mx/moprosoft/

Modelos y estándares para la mejora de procesos de software

En este blog hablaremos acerca de los modelos y estándares que tenemos en la industria para la mejora de procesos de software.

Por lo que tocaremos diferentes de estos tales como:

  • CMMI (Modelo de Madurez de Capacidades de Integración)
  • TSP/PSP
  • ISO-15504
  • MOPROSOFT
  • IDEAL method

CMMI (Modelo de Madurez de Capacidades de Integración)

Este modelo tiene las mejores practicas de la industria dentro del desarrollo de software, tanto para el desarrollo del mismo, como para su mantenimiento, adquisición y operación de productos y servicios.

¿Qué es CMMI?

Es el modelo esencial para que los procesos de negocios de las mismas sean efectivos, este modelo esta inspirado por el modelo de madurez Manufacturing Maturity Model de Crosby.

Un dato curioso de este modelo es que inicialmente solo se utilizaba para los programas de defensa pero con el paso del tiempo se fueron adaptando para diversos ámbitos mas allá del software.

¿Por qué es importante usar un modelo para el desarrollo de software?

La importancia de usar un modelo en un proyecto es comprender cuales son los elementos que tenemos que tener en una organización. Todo esto nos da una ventajas que se mencionara:

  • Permite que los usuarios puedan enfocarse específicamente en la mejora, ya que ayudan a que no pierdan la idea global.
  • Ayudan a mejorar la satisfacción del cliente.
  • Permiten producir productos y servicios de alta calidad.