¿El software se puede medir en realidad? ¿Qué no es un proceso intelectual?

Estas son preguntas que se hacen muchas personas, desde practicantes hasta investigadores, y algunos me las han hecho con cierta incredulidad al respecto, debemos partir del hecho que el software es un producto intelectual y por consiguiente generado por las personas (desarrolladores).

Cuando se inició a desarrollar el software cada persona lo hacía como podía, y se empezaron a presentar algunos problemas, como, por ejemplo, que pasa si una persona se va de la empresa y alguien más debe de continuar su trabajo, cómo entiende lo que quiso hacer o hizo, o si hay alguien que hace desarrollos de software y frecuentemente lo hace bien ¿por qué no los demás pueden seguir los mismos pasos? O ¿qué pasa si alguien tiene que dar un mantenimiento a un software después de mucho tiempo? O ¿cómo definimos los requerimientos que debe cumplir el software?, en fina muchas preguntas se fueron haciendo y respondiendo conforme se avanzó en el entendimiento y la necesidad de generar software más complejo y de mayor calidad, naciendo así la Ingeniería de software.

Se entendió entonces que, así como en otras industrias, para ser más productivos era necesario automatizar, pero ¿qué puedes automatizar cuando los que transformas los insumos son personas?, bueno se automatizan las prácticas, es decir se generan procesos repetibles y susceptibles de mejorarse de manera continua.

Hay que notar que en ningún momento se elimina a las personas, de hecho, son parte fundamental ya que tienen que transformar los insumos para poder producir el software, es decir, cada persona hace algunas actividades utilizando su conocimiento y habilidades. Entonces  ¿para qué definir un proceso si cada uno lo va a realizar como quiera? Esta es la clave del tema, los procesos son definidos para garantizar que se hacen las mismas actividades y se generan los mismos productos en cada una de ellas, no significa necesariamente que se harán exactamente igual, ya que depende de cada persona, lo que garantizan es que a la salida vas a tener lo mismo.

Consideremos como proceso mínimo, las actividades que se deben de realizar para desarrollar un software independientemente de cualquier metodología, las cuáles se basan en los principios definidos en el SWEBOK (https://www.computer.org/education/bodies-of-knowledge/software-engineering), podemos mencionar que dichas actividades son: definir requisitos del software, analizar y diseñar la solución, codificación, y probar el software.

Si se define una funcionalidad a ser desarrollada por 3 equipos distintos, donde cada uno de ellos realizará de manera independiente las actividades antes mencionadas, al final del día tendremos la funcionalidad propuesta, unos terminarán antes y otros después, las soluciones no serán las mismas, los artefactos generados, diagramas y algoritmos no son iguales, pero la funcionalidad debería de ser la misma.

Justo así funciona la medición de software, de hecho, lo que se puede medir es la funcionalidad, hasta el momento no puedes interpretar como una persona piensa y desarrolla un algoritmo, o un diagrama entidad relación, pero lo que si puedes medir es que un cierto tamaño de funcionalidad conlleva más o menos esfuerzo para hacer el diseño, o la codificación en función de la plataforma o de la metodología o de la persona que lo hace.

No podemos medir lo que pasa en el cerebro, y está bien, eso es lo que hace que se tenga software mediocre y también excelente o innovador. Pero lo que es necesario es medir y principalmente la funcionalidad porque existe una relación que, a mayor funcionalidad, mayor esfuerzo es necesario para desarrollarla.

Por otro lado, el software hoy en día está completamente involucrado en la industria, es decir, los negocios, por ejemplo, bancos, aseguradoras, farmacéuticas, empresas de retail, etc., desarrollan o contratan software para implementar sus proyectos de transformación, y es fundamental para ellos estimar costos, hacer casos de negocio, priorizar algunas iniciativas sobre otras y en general obtener una rentabilidad de cada proyecto de software, si no se mide el software, esto no se puede llevar a cabo de una forma profesional, se va a hacer de manera subjetiva generando que los proyectos fracasen y sean más costosos, hay una estadística que indica que prácticamente todas las empresas han tenido en un año al menos un proyecto de software que fracasó.

SPINGERE es una empresa enfocada en dar servicios de medición y estimación profesional de software desde hace más de 14 años, incrementando la rentabilidad de los proyectos en más de 200%, aumentando la velocidad en que se hacen las estimaciones y la precisión de estas, si quieres obtener resultados diferentes, haz cosas diferentes, visita los testimonios de distintos clientes que ya han obtenido resultados tangibles. https://spingere.com.mx/testimonios

Dr. Francisco Valés Souto

Fundador de SPINGERE y la Asociación Mexicana de Métricas de Software (AMMS)

“La realidad de tus proyectos de software en métricas”

Deja un comentario

Tu dirección de correo electrónico no será publicada.