Design a site like this with WordPress.com
Get started

Let’s talk about software standards and models

As I talked on my previous post, there are software standards and models, a large amount of them in fact. They are useful to serve as a sort of guiding light for our software that helps us bring quality to it. The best part is that you don’t even have to adhere and “marry” with one of the norms, standards and models, you can make your own standards and models by combining them and adapting them to what you need or want to achieve.

But how will you ever make that combination if you don’t know at least the main models and standards used on the industry. That’s why in this post I will be making a short view of the following ones:

  1. CMMI
  2. TSP/PSP
  3. ISO-15504
  4. MOPROSOFT
  5. IDEAL method

CMMI

The Capability Maturity Model Integration (CMMI) is a process level improvement training and appraisal program. Its main focus is to help organizations become more productive and have efficient behaviors to decrease risk in software, product and service development. It was developed by the Software Engineering Institute at Carnegie University. It works by making organizations strive towards maturity levels being level 5 the highest. The levels are the following:

  • Initial : This is the first level, the one where everything is unpredictable and the software being developed is overbudget, costly, inefficient and bug ridden. It has a high amount of risk due to the nature of the environment.
  • Managed: The second level, the one where you start to have plans, goals, measures of achievement and efficiency, but there’s still huge areas of improvement.
  • Defined: In this level, organizations start to follow standards in all of their workspaces. Everyone understands the vision and the goals of the business, while working towards continous improvement.
  • Quantitatively managed: You start to make a predictable organization that works in the basis of data to determine the best decisions and the workflow of the business. The business is ahead of future risks.
  • Optimizing: The level where an organization is stable and flexible, in a constant state of improvement, responsive to change. Since the organization is predictable and under control, that allows everyone to innovate and optimize everything.

TSP/PSP

Team software process (TSP) and Personal Software Process (PSP), are both models used to improve and guide in developing software products. Let’s talk first about PSP since TSP uses the core philosophy of PSP. PSP is a structure that helps engineers find a way to improve and measure their work. It works with levels in a similar way to CMMI:

  • PSP 0: The first level, where you start using basic coding standards and basic size measures.
  • PSP 1: Level where you start planning your time and having a good schedule for working on the code.
  • PSP 2: Level where you use personal quality management, and perform design and code reviews.
  • PSP 3: The last level, where you keep improving and making the whole process of keeping good measures, reviews, and schedules better.

TSP is focused for teams to organize their projects and produce software from small to very large ones. TSP is intended to improve the quality of code, and the productivity of the team, in order to meet their goals. TSP needs first that each one on the team is familiar with PSP. TSP works in way similar to a flow. You start with the launch where you define goals, team roles, start planning, make tasks, requirements, etc. Followed by the execution where the developers track the planned versus the actual, and report the status weekly with the managers. Then it ends on a Post Mortem to assess performance, revise planning parameters and capture lessons learned.

ISO-15504

The ISO-15504 defines a model that can be used on any software development team that is very similar to CMMI working with maturity levels. To evaluate whether an organization is in one level or another they use two dimensions:

  • Process dimension: This dimension defines all the indicators needed to evaluate the processes and workflows of the organization.
  • Capability dimension: This dimension defines the indicators needed to evaluate the capability of the organization
Maturity Levels

In base of the indicators set, the organization can be in one of the above maturity levels, depending on how well they measure on the indicators.

MOPROSOFT

The model of processes of software or MOPROSOFT, is a set of good practices and software engineering techniques to contribute so that organizations can become better at managing their way of working and developing software, so they can increase their efficacy and efficiency, which allows them to compete at a higher level. In the same way as the CMMI and the ISO 15504, it defines levels of maturity based on how well the organization implements MOPROSOFT:

Levels of maturity on spanish

MOPROSOFT structures itself on 3 categories: High Direction, Gerency and Operations. MOPROSOFT is supposed to work in a way in which the individuals on High Direction establish the goals, and standards that the gerency role must follow while taking into account their feedback, while the Gerency role is the one that defines the elements of the operations level taking into account the goals and standards of the High Direction, while keeping a constant communication between high direction and operations. Operations is the one focused on performing the activities of developing and testing based on what the Gerency role sets and they deliver their products to them.

IDEAL method

The IDEAL method means: Initiating, Diagnosing, Establishing, Acting and Learning. which are its 5 phases implemented on organizations wanting to improve themselves. The IDEAL method is best explained with the following image:

IDEAL Cycle — Initiating, Diagnosing, Establishing, Acting & Learning

The image above encapsulates what each phase is supposed to be, where in the Initiating phase, you start planning the infrastructure of the organization and setting goals and a vision, then on Diagnosing you start seeing areas of improvement and recommendations or errors, after that follows Establishing, where you plan future actions to drive improvement or to fix the priority errors/bugs. Then in Acting you create the solutions or the changed needed while improving them as you make them, followed by Learning where you analyze the whole process, and start again.

A final note

As we can see, there are multiple models to choose from to improve organizations and teams of developers, so they can have higher levels of productivity and achieve the software quality that we talked about before. It’s important to note too, that to achieve the models above, you need to follow certain standards of software quality that will guide you towards making the best decisions and setting the goals adequate to your project.

Sources:

https://www.cio.com/article/2437864/process-improvement-capability-maturity-model-integration-cmmi-definition-and-solutions.html

https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=72816

https://www.geeksforgeeks.org/personal-software-process-psp/

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: