Modeling

These are the topics that I will be focusing regarding software models and standards:

  • CMMI
  • TSP/PSP
  • ISO-I15504
  • MOPROSOFT
  • IDEAL method

CMMI

Capability Maturity Model Integration (CMMI) refers to a model that helps organizations to improve their processes. So the creators of this are the SEI along with the US government.

This model evaluates three specifics sections:

  • Process and service development.
  • Service establishment and management.
  • Product and service acquisistion.

But its also supposed to be a behavioral model that can help on the behaviour of the organizations, so they identify different levels of maturity which indicates how an organization will act on different situations:

  • Initial
  • Managed
  • Defined
  • Quantitatively managed
  • Optimizing

At first this model was supposed to be focused in software engineering only but now it can be used in service development.

TSP/PSP

Both PSP (Personal Software Process) and TSP (Team Software Process) are based on processes that involves stablishing goals, the plan, measure and tracing of the work, however, as their names implies PSP focuses on personal processes while TSP focuses on team work but using the same principles of PSP but with aditional steps.

It kinds remind me of…

A little image to represent PSP,TSP and CMMI

ISO-15504

The Software Process Improvement Capability Determination is a model for the evaluation of the processes on software development products.

Objectives:

  • Develop a standard evaluation for software processes
  • Evaluate the development of such processes in the industry

Why is importan this model?

The technology industry increased vigorously and it seems that different organizations need to adapt and follow certification processes so they face a competitive market.

But in the other hand it seems that pretty much the organizations are “force” to follow this since other ogranizations impose the necessity to guarantee a detail evaluation regarding IT processes.

MOPROSOFT

It focuses on software development and maintenance by following of practices and processes of management.

Some characteristics:

  • Facilitates the compliance of other models (Pretty much othe ISO).
  • It’s simpe to adopt.
  • Low cost on implementation.

This model focuses more in management and it has three categories:

  • High Management (Management of business)
  • Management (Management of processes, projects and resources)
  • Operation ( Management of specific projects and development and maintenance)

IDEAL method

Initiating, Diagnosing, Establishing, Acting and Learning method its and improvement model for CMMI and other similiar processes

As it’s a process improvement that realiseas a methodical framework for organizations in planning and implementing processes.

The IDEAL model structure:

That’s it for all the 5 models…

Quality

Software is like entropy. It is difficult to grasp, weighs nothing, and obeys the second law of thermodynamics, i.e., it always increases.

— Norman Ralph Augustine

That’s a good idea to start this topic, entropy’s simple definition is “lack of order or predictability; gradual decline into disorder”

Software as it gets more complex, it can become like the dots in the image: unpredictable and lacking order/structure, it can decline into chaos.
As I researched I found different perspectives of what quality means for a product, for the user is how fit it is to satisfy his needs, in the view of the production it is how well meets the specifications, in the view of the product itself quality lies in the internal characteristics that then defines the external, and in the capital way to see it is, how the product holds its value.

Getting High on Animated GIFs – Part 2 | Geometry, Animation, Geometric

For me the animation reflects the meaning of quality, the dots represent the components, features, image, etc. and what quality does is the process of organizing all of these particles into a shape, a cohesive and solid product, and as more dots are added, it already has its place, and as it grows becomes a solid object in space. Quality is how well did we organized the dots, how close it is to something with form. Maybe the software has not a lot of features, so what is the scale of the shape we try to form, how strong its the structure, will it crumble?

Particle Shape

But of course, this is a visualization, we can easily identify if the dots are part of a form, or if it has deformities, or if it has low density, in software and in other areas it isn’t as easy to ensure the quality of the product.

Software Quality Assurance its the practice of monitoring the processes and methods used in the project to ensure the quality of the computer software, this monitoring starts as early as the first phases of development, and even in the design phase. As we build something, like in a 3d modelling software, we can use the tools the software has in order to identify errors and correct them, SQA provides these tools in order to identify errors and correct them in order to ensure the highest quality possible.

The standards of software quality (work in progress).

“Quality is not an act, it is a habit.”— Aristotle

The first thing that comes to my mind when I think of the words software quality is “is it good?”, but how can we define good in this context?… good as in it performs perfectly?, is better than other alike software?

I’ve been searching for an exact definition of software quality and I found that there isn´t an exact definition but rather a vast of them,which most of them share that some requirements needs to be accomplished in order to meet some expectactions

But, how do we accomplish quality?

I supposed there were some rules or standards that developers need to follow to achieve quality and I found two main topics:

  • SOFTWARE QUALITY ASSURANCE (SQA) 
  • SOFTWARE QUALITY CONTROL (SQC)

Both focus on different activities to ensure software qualitiy, however SQA focus more on prevention while SQC focus on detection, so one is more oriented to the early stages (Design, managment etc.) while the other to the last ones (Reviewing and testing)

Introduction

I am currently taking a semester long class (August – December 2020) on the subject of Software Quality and Testing, and in this blog I am documenting what I learn and from which sources.

The topics I’ll cover will be divided into six different entries, with several subtopics in each one.

They are the following:

  1. Software Quality
  2. Models and Standards for Software Process Improvement
  3. Verification and Validation of Software (V&V)
  4. Software Review
  5. Software Testing
  6. Tools for V&V

I’ll be discussing each one of those in detail in posts to come.