Todo proyecto de ingeniería de software debe partir con un buen plan. Uno de los aspectos que dificultan la labor de administradores y jefes de proyecto en torno a la planificación es la difícil tarea de realizar una estimación de costos y plazos realista.
La diferencia en la estimación de costos entre ingeniería de software y otras disciplinas es que en ingeniería de software lo principal para las personas es el costo; y en otras disciplinas el costo de las cosas materiales depende de la actividad.
Existen técnicas para la estimación de costos, pero para ello se requiere experiencia, acceso a una buena información histórica y coraje para confiar en medidas cuantitativas cuando todo lo que existe son datos cualitativos.
El manejador de costo principal para un proyecto de desarrollo de software es sin duda el tamaño del producto. La medida del tamaño debe ser tal que esté en relación directa con el esfuerzo de desarrollo, por lo que las métricas de tamaño tratan de considerar todos los aspectos que influyen en el costo, como tecnología, tipos de recursos y complejidad.
MÉTRICAS PARA LA PRODUCTIVIDAD Y CALIDAD DEL SOFTWARE
La medición es esencial para cualquier disciplina de ingeniería y la ingeniería de software no es una excepción.
Las métricas de software se refieren aun amplio rango de medidas para el software de computadoras dentro del contexto de la planificación del proyecto de software, las métricas de calidad pueden ser aplicadas a organizaciones, procesos y productos los cuales directamente afectan a la estimación de costos.
Las mediciones en el mundo físico pueden ser catalogadas en dos campos: medidas directas (por ej. La longitud de un tornillo), y medidas indirectas (por ej. Calidad de tornillos producidos, medida por la cuenta de los tornillos rechazados). Las métricas de software pueden ser catalogadas de forma parecida.
Se puede clasificar en:
Métricas de productividad, se centran en el rendimiento del proceso de la ingeniería de software.
Métricas de Calidad, proporcionan una indicación de cómo se ajusta el software, a los requerimientos implícitos y explícitos del cliente.
Métricas Técnicas, se centran en el carácter del software mas que en el proceso, a través del cual el software a sido desarrollado.
Métricas Orientadas al tamaño, son utilizadas para obtener medidas directas del resultado y la calidad de la ingeniería del software.
Métricas Orientadas a la Función, son medidas indirectas del software y del proceso por el cual se desarrollará; se centran en la funcionalidad o utilidad del programa (Puntos de Función)
Métricas Orientadas a la persona, consiguen información sobre la forma en que la gente desarrolla software de computadora y sobre el punto de vista humano de la efectividad de las herramientas y métodos.
CoCoMo
El Modelo Constructivo de Costes (o COCOMO, por su acrónimo del inglés COnstructive COst MOdel) es un modelo matemático de base empírica utilizado para estimación de costes de software. Incluye tres submodelos, cada uno ofrece un nivel de detalle y aproximación, cada vez mayor, a medida que avanza el proceso de desarrollo del software: básico, intermedio y detallado.
Modelos de estimación
La función básica que utilizan los tres modelos es:[2]
E = a(Kl)b * m(X) donde:
a y b son constantes con valores definidos en cada submodelo
Kl es la cantidad de líneas de código, en miles.
m(X) Es un multiplicador que depende de 15 atributos.
El resultado se da en unidades salario/mes y horas-hombre.
A la vez, cada submodelo también se divide en modos que representan el tipo de proyecto, y puede ser:
* modo orgánico: un pequeño grupo de programadores experimentados desarrollan software en un entorno familiar. El tamaño del software varía desde unos pocos miles de líneas (tamaño pequeño) a unas decenas de miles (medio).
* modo semilibre o semiencajado: corresponde a un esquema intermedio entre el orgánico y el rígido; el grupo de desarrollo puede incluir una mezcla de personas experimentadas y no experimentadas.
* modo rígido o empotrado: el proyecto tiene fuertes restricciones, que pueden estar relacionadas con la funcionalidad y/o pueden ser técnicas. El problema a resolver es único y es difícil basarse en la experiencia, puesto que puede no haberla.
Modelo básico
Se utiliza para obtener una primera aproximación rápida del esfuerzo
y hace uso de la siguiente tabla de constantes para calcular distintos aspectos de costes:

Estos valores son para las fórmulas:
* Personas necesarias por mes para llevar adelante el proyecto (MM) = a*(Klb)
* Tiempo de desarrollo del proyecto (TDEV) = c*(MMd)
* Personas necesarias para realizar el proyecto (CosteH) = MM/TDEV
* Costo total del proyecto (CosteM) = CosteH * Salario medio entre los programadores y analistas.
Se puede observar que a medida que aumenta la complejidad del proyecto (modo), las constantes aumentan de 2.4 a 3.6, que corresponde a un incremento del esfuerzo del personal. Hay que utilizar con mucho cuidado el modelo básico puesto que se obvian muchas características del entorno
Modelo intermedio
Este añade al modelo básico quince modificadores opcionales para tener en cuenta en el entorno de trabajo, incrementando así la precisión de la estimación
Para este ajuste, al resultado de la fórmula general se lo multiplica por el coeficiente surgido de aplicar los atributos que se decidan utilizar.
Los valores de las constantes a reemplazar en la fórmula son

Se puede observar que los exponentes son los mismos que los del modelo básico, confirmando el papel que representa el tamaño; mientras que los coeficientes de los modos orgánico y rígido han cambiado, para mantener el equilibrio alrededor del semilibre con respecto al efecto multiplicador de los atributos de coste.
Atributos
Cada atributo se cuantifica para un entorno de proyecto. La escala es muy bajo - bajo - nominal - alto - muy alto - extremadamente alto. Dependiendo de la calificación de cada atributo, se asigna un valor para usar de multiplicador en la fórmula (por ejemplo, si para un proyecto el atributo DATA es calificado como muy alto, el resultado de la fórmula debe ser multiplicado por 1000).
El significado de los atributos es el siguiente, según su tipo:
* De software
RELY: garantía de funcionamiento requerida al software. Indica las posibles consecuencias para el usuario en el caso que existan defectos en el producto. Va desde la sola inconveniencia de corregir un fallo (muy bajo) hasta la posible pérdida de vidas humanas (extremadamente alto, software de alta criticidad).
DATA: tamaño de la base de datos en relación con el tamaño del programa. El valor del modificador se define por la relación: D / K, donde D corresponde al tamaño de la base de datos en bytes y K es el tamaño del programa en cantidad de líneas de código.
CPLX: representa la complejidad del producto.
* De hardware
TIME: limitaciones en el porcentaje del uso de la CPU.
STOR: limitaciones en el porcentaje del uso de la memoria.
VIRT: volatilidad de la máquina virtual.
TURN: tiempo de respuesta requerido.
* De personal
ACAP: calificación de los analistas.
AEXP: experiencia del personal en aplicaciones similares.
PCAP: calificación de los programadores.
VEXP: experiencia del personal en la máquina virtual.
LEXP: experiencia en el lenguaje de programación a usar.
* De proyecto
MODP: uso de prácticas modernas de programación.
TOOL: uso de herramientas de desarrollo de software.
SCED: limitaciones en el cumplimiento de la planificación.
El valor de cada atributo, de acuerdo a su calificación, se muestra en la siguiente tabla:

Requerimiento
Provee un mecanismo apropiado para entender que quiere el consumidor, analizar sus necesidades valorar la factibilidad de construccion, negociar una solucion razonable.
tareas de la ING de Requerimientos
Inico de proyecto con conversaciones informales o formales, donde se realiza preguntas generales para entender un punto basico del problema y verificar como esta la comunicacion con el consumidor y el desarrollador, palabras mas, palabras menos Identificar a o los Stakeholder(s).
Obtencion
Definir los requerimientos de la solucion
problemas
definicion de alcances
entendimiento entre los involucrados
volatilidad(los requerimientos cambian con el tiempo)
todo esto se logra con:
definir casos de usos
definir modelo conceptual
definir diagramas de colaboracion
definir diagramas diseño de clases
Elaboracion
Expande y refina la informacion obtenida en la tarea d Iniciacion
dominio del problema desde varios puntos:informacion,funciones,comportamiento.
Negociacion
los usuarios y consumidores normalmente piden mas que con lo que se puede hacer con los recursos que se cuenta, aveces piden cosas diferentes lo que hace necesario conciliar intereses a traves de negociaciones
Especificacion
describe la funcion y desempeño de un sitema y la restriccion que tiene
validacion
evalua terminos de con congruencia y calidad, se debe averiguar si el producto cumple con las expectativas del usuario
Administracion
identificar, controlar y seguir los requerimeintos y cambios que ocurren en ellos a traves de todo el proceso de desarrollo
se generan tablas
caracteristicas
fuentes
dependencias
subsistemas
interfaces
Caracteristicas de un Buen Ingeniero de Requerimientos
Habilidad para captar conceptos abstractos y entenderlos
Habilidad para obtener hechos importantes en situaciones confusas
Habilidad para entender el medio ambiente
Habilidad para comunicarse bien en forma verbal y escrita
La diferencia en la estimación de costos entre ingeniería de software y otras disciplinas es que en ingeniería de software lo principal para las personas es el costo; y en otras disciplinas el costo de las cosas materiales depende de la actividad.
Existen técnicas para la estimación de costos, pero para ello se requiere experiencia, acceso a una buena información histórica y coraje para confiar en medidas cuantitativas cuando todo lo que existe son datos cualitativos.
El manejador de costo principal para un proyecto de desarrollo de software es sin duda el tamaño del producto. La medida del tamaño debe ser tal que esté en relación directa con el esfuerzo de desarrollo, por lo que las métricas de tamaño tratan de considerar todos los aspectos que influyen en el costo, como tecnología, tipos de recursos y complejidad.
MÉTRICAS PARA LA PRODUCTIVIDAD Y CALIDAD DEL SOFTWARE
La medición es esencial para cualquier disciplina de ingeniería y la ingeniería de software no es una excepción.
Las métricas de software se refieren aun amplio rango de medidas para el software de computadoras dentro del contexto de la planificación del proyecto de software, las métricas de calidad pueden ser aplicadas a organizaciones, procesos y productos los cuales directamente afectan a la estimación de costos.
Las mediciones en el mundo físico pueden ser catalogadas en dos campos: medidas directas (por ej. La longitud de un tornillo), y medidas indirectas (por ej. Calidad de tornillos producidos, medida por la cuenta de los tornillos rechazados). Las métricas de software pueden ser catalogadas de forma parecida.
Se puede clasificar en:
Métricas de productividad, se centran en el rendimiento del proceso de la ingeniería de software.
Métricas de Calidad, proporcionan una indicación de cómo se ajusta el software, a los requerimientos implícitos y explícitos del cliente.
Métricas Técnicas, se centran en el carácter del software mas que en el proceso, a través del cual el software a sido desarrollado.
Métricas Orientadas al tamaño, son utilizadas para obtener medidas directas del resultado y la calidad de la ingeniería del software.
Métricas Orientadas a la Función, son medidas indirectas del software y del proceso por el cual se desarrollará; se centran en la funcionalidad o utilidad del programa (Puntos de Función)
Métricas Orientadas a la persona, consiguen información sobre la forma en que la gente desarrolla software de computadora y sobre el punto de vista humano de la efectividad de las herramientas y métodos.
CoCoMo
El Modelo Constructivo de Costes (o COCOMO, por su acrónimo del inglés COnstructive COst MOdel) es un modelo matemático de base empírica utilizado para estimación de costes de software. Incluye tres submodelos, cada uno ofrece un nivel de detalle y aproximación, cada vez mayor, a medida que avanza el proceso de desarrollo del software: básico, intermedio y detallado.
Modelos de estimación
La función básica que utilizan los tres modelos es:[2]
E = a(Kl)b * m(X) donde:
a y b son constantes con valores definidos en cada submodelo
Kl es la cantidad de líneas de código, en miles.
m(X) Es un multiplicador que depende de 15 atributos.
El resultado se da en unidades salario/mes y horas-hombre.
A la vez, cada submodelo también se divide en modos que representan el tipo de proyecto, y puede ser:
* modo orgánico: un pequeño grupo de programadores experimentados desarrollan software en un entorno familiar. El tamaño del software varía desde unos pocos miles de líneas (tamaño pequeño) a unas decenas de miles (medio).
* modo semilibre o semiencajado: corresponde a un esquema intermedio entre el orgánico y el rígido; el grupo de desarrollo puede incluir una mezcla de personas experimentadas y no experimentadas.
* modo rígido o empotrado: el proyecto tiene fuertes restricciones, que pueden estar relacionadas con la funcionalidad y/o pueden ser técnicas. El problema a resolver es único y es difícil basarse en la experiencia, puesto que puede no haberla.
Modelo básico
Se utiliza para obtener una primera aproximación rápida del esfuerzo
y hace uso de la siguiente tabla de constantes para calcular distintos aspectos de costes:
Estos valores son para las fórmulas:
* Personas necesarias por mes para llevar adelante el proyecto (MM) = a*(Klb)
* Tiempo de desarrollo del proyecto (TDEV) = c*(MMd)
* Personas necesarias para realizar el proyecto (CosteH) = MM/TDEV
* Costo total del proyecto (CosteM) = CosteH * Salario medio entre los programadores y analistas.
Se puede observar que a medida que aumenta la complejidad del proyecto (modo), las constantes aumentan de 2.4 a 3.6, que corresponde a un incremento del esfuerzo del personal. Hay que utilizar con mucho cuidado el modelo básico puesto que se obvian muchas características del entorno
Modelo intermedio
Este añade al modelo básico quince modificadores opcionales para tener en cuenta en el entorno de trabajo, incrementando así la precisión de la estimación
Para este ajuste, al resultado de la fórmula general se lo multiplica por el coeficiente surgido de aplicar los atributos que se decidan utilizar.
Los valores de las constantes a reemplazar en la fórmula son
Se puede observar que los exponentes son los mismos que los del modelo básico, confirmando el papel que representa el tamaño; mientras que los coeficientes de los modos orgánico y rígido han cambiado, para mantener el equilibrio alrededor del semilibre con respecto al efecto multiplicador de los atributos de coste.
Atributos
Cada atributo se cuantifica para un entorno de proyecto. La escala es muy bajo - bajo - nominal - alto - muy alto - extremadamente alto. Dependiendo de la calificación de cada atributo, se asigna un valor para usar de multiplicador en la fórmula (por ejemplo, si para un proyecto el atributo DATA es calificado como muy alto, el resultado de la fórmula debe ser multiplicado por 1000).
El significado de los atributos es el siguiente, según su tipo:
* De software
RELY: garantía de funcionamiento requerida al software. Indica las posibles consecuencias para el usuario en el caso que existan defectos en el producto. Va desde la sola inconveniencia de corregir un fallo (muy bajo) hasta la posible pérdida de vidas humanas (extremadamente alto, software de alta criticidad).
DATA: tamaño de la base de datos en relación con el tamaño del programa. El valor del modificador se define por la relación: D / K, donde D corresponde al tamaño de la base de datos en bytes y K es el tamaño del programa en cantidad de líneas de código.
CPLX: representa la complejidad del producto.
* De hardware
TIME: limitaciones en el porcentaje del uso de la CPU.
STOR: limitaciones en el porcentaje del uso de la memoria.
VIRT: volatilidad de la máquina virtual.
TURN: tiempo de respuesta requerido.
* De personal
ACAP: calificación de los analistas.
AEXP: experiencia del personal en aplicaciones similares.
PCAP: calificación de los programadores.
VEXP: experiencia del personal en la máquina virtual.
LEXP: experiencia en el lenguaje de programación a usar.
* De proyecto
MODP: uso de prácticas modernas de programación.
TOOL: uso de herramientas de desarrollo de software.
SCED: limitaciones en el cumplimiento de la planificación.
El valor de cada atributo, de acuerdo a su calificación, se muestra en la siguiente tabla:
Requerimiento
- Un requerimiento es una condicion o capacidad que el sistema debe cumplir.
- capacidad que el sistema debe poseer o brindar a fin de satisfacer un contrato, especificacion estandar o alguna otra documentacion formalmente impuesta.
- Los sistemas siguen fallando
- Retrasos
- Presupuesto no respetado
- Altas espectativas
- Problemas de calidad
- Usiarios no satisfechos
Provee un mecanismo apropiado para entender que quiere el consumidor, analizar sus necesidades valorar la factibilidad de construccion, negociar una solucion razonable.
tareas de la ING de Requerimientos
- Iniciacion
- Obtencion
- Elaboracion
- Negociacion
- Especificacion
- validacion
- Administracion
Inico de proyecto con conversaciones informales o formales, donde se realiza preguntas generales para entender un punto basico del problema y verificar como esta la comunicacion con el consumidor y el desarrollador, palabras mas, palabras menos Identificar a o los Stakeholder(s).
Obtencion
Definir los requerimientos de la solucion
problemas
definicion de alcances
entendimiento entre los involucrados
volatilidad(los requerimientos cambian con el tiempo)
todo esto se logra con:
definir casos de usos
definir modelo conceptual
definir diagramas de colaboracion
definir diagramas diseño de clases
Elaboracion
Expande y refina la informacion obtenida en la tarea d Iniciacion
dominio del problema desde varios puntos:informacion,funciones,comportamiento.
Negociacion
los usuarios y consumidores normalmente piden mas que con lo que se puede hacer con los recursos que se cuenta, aveces piden cosas diferentes lo que hace necesario conciliar intereses a traves de negociaciones
Especificacion
describe la funcion y desempeño de un sitema y la restriccion que tiene
validacion
evalua terminos de con congruencia y calidad, se debe averiguar si el producto cumple con las expectativas del usuario
Administracion
identificar, controlar y seguir los requerimeintos y cambios que ocurren en ellos a traves de todo el proceso de desarrollo
se generan tablas
caracteristicas
fuentes
dependencias
subsistemas
interfaces
Caracteristicas de un Buen Ingeniero de Requerimientos
Habilidad para captar conceptos abstractos y entenderlos
Habilidad para obtener hechos importantes en situaciones confusas
Habilidad para entender el medio ambiente
Habilidad para comunicarse bien en forma verbal y escrita