lunes, 11 de mayo de 2009

Métricas, Estimación y Planificación en Proyectos

Métricas del proyecto
Las métricas del proceso de software se utilizan para propósitos estratégicos. Las medidas del proyecto de software son tácticas. Esto es, las métricas de proyectos y los indicadores derivados de ellos los utilizan un gestor de proyectos y un equipo de software para adaptar el flujo del trabajo del proyecto y las actividades técnicas.La primera aplicación de métricas de proyectos en
la mayoría de los proyectos de software ocurre durante la estimación. Las métricas recopiladas de proyectos anteriores se utilizan como una base desde la que se realizan las estimaciones del esfuerzo y del tiempo para el actual trabajo del software. A medida que avanza un proyecto, las medidas del esfuerzo y del tiempo consumido se comparan con las estimaciones originales (y laplanificación de proyectos). El gestor de proyectos utiliza estos datos para supervisar y controlar el avance.

Se miden los índices de producción representadosmediante páginas de documentación, las horas de revisión,los puntos de función y las líneas fuente entregadas.Además, se sigue la pista de los erroresdetectados durante todas las tareas de ingeniería del software. Cuando va evolucionando el software desde la especificación al diseño, se recopilan las métricas técnicas para evaluar la calidad del diseño y para proporcionar indicadores que influirán en el enfoque tomado para la generación y prueba del código.A medida que mejora la calidad, se minimizan los defectos, y al tiempo que disminuye el número de defectos,la cantidad de trabajo que ha de rehacerse también se reduce. Esto lleva a una reducción del coste global del proyecto.


Mediciones de Software
Las mediciones del mundo físico se pueden categorizar de dos maneras; medidas directas (por ejemplo: la longitud de un tomillo) y medidas indirectas (por ejemplo:la «calidad» de los tomillos producidos, medidos contando los artículos defectuosos). Las métricas del software se pueden categorizar de forma similar.Entre las medidas directas del proceso de la ingeniería del software se incluyen el coste y el esfuerzo aplicados. Entre las medidas directas del producto se incluyen las líneas de código (LDC) producidas, velocidadde ejecución, tamaño de memoria, y los defectos informados durante un período de tiempo establecido.Entre las medidas indirectas se incluyen la funcionalidad,calidad, complejidad, eficiencia, fiabilidad, facilidad de mantenimiento y muchas otras «capacidades» .E l coste y el esfuerzo requerido para construir el software,el número de líneas de código producidas, y otras medidas directas son relativamente fáciles de reunir,mientras que los convenios específicos para la medición se establecen más adelante. Sin embargo, la calidad y funcionalidad del software, o su eficiencia o mantenimientoson más difíciles de evaluar y sólo pueden ser medidas indirectamente.El dominio de las métricas del software se dividenen métricas de proceso, proyecto y producto.



domingo, 10 de mayo de 2009

Métricas, Estimación y Planificación en Proyectos

MÉTRICAS DEL SOFTWARE
Son las que están relacionadas con el desarrollo del software como funcionalidad, complejidad,eficiencia.

MÉTRICAS TÉCNICAS: Se centran en lasa características de software pro ejemplo: lacomplejidad lógica, el grado de modularidad. Mide la estructura del sistema, el cómo esta hecho.

MÉTRICAS DE CALIDAD: proporcionan una indicación de cómo se ajusta el software a losrequisitos implícitos y explícitos del cliente. Es decir cómo voy a medir para que mi sistema seadapte a los requisitos que me pide el cliente.

MÉTRICAS DE PRODUCTIVIDAD: Se centran en el rendimiento del proceso de la ingeniería delsoftware. Es decir que tan productivo va a ser el software que voy a diseñar.

MÉTRICAS ORIENTADAS A LA PERSONA: Proporcionan medidas e información sobre laforma que la gente desarrolla el software de computadoras y sobre todo el punto de vistahumano de la efectividad de las herramientas y métodos. Son las medidas que voy a hacer de mipersonal que va hará el sistema.

MÉTRICAS ORIENTADAS AL TAMAÑO: Es para saber en que tiempo voy a terminar elsoftware y cuantas personas voy a necesitar. Son medidas directas al software y el proceso porel cual se desarrolla, si una organización de software mantiene registros sencillos, se puedecrear una tabla de datos orientados al tamaño como se muestra en la siguiente figura:


La tabla lista cada proyecto del desarrollo del software de los últimos años correspondientes,datos orientados al tamaño de c/u. Refiriéndonos a la entrada de la tabla del proyecto 999-01 sedesarrollaron 12.1 KLDC (miles de líneas de código) con un esfuerzo de 24personas mes y uncosto de 168 mil dólares. Debe tenerse en cuenta que el esfuerzo y el costo registrados en latabla incluyen todas las actividades de la ingeniería de software como son análisis, diseño,codificación y prueba. Otra información del proyecto 222-01 indica que se desarrollaron 365 paginas mientras que se encontraron 29 errores tras entregárselo al cliente, dentro del primeraño de utilización también sabemos que trabajaron 3 personas en el desarrollo del proyecto.En los rendimientos del sistema y los rudimentarios datos contenidos en la tabla se puededesarrollar, para cada proyecto un conjunto de métricas sencillas de productividad y calidadorientadas al tamaño. Se obtienen las siguientes formulas:

Productividad = KLDC/persona-mes
Calidad = errores/KLDC
Documentación = pags. Doc/ KLDC
Costo = $/KLDC
· persona-mes es el esfuerzo

MÉTRICAS ORIENTADAS A LA FUNCIÓN:
Son medidas indirectas del software y del procesopor el cual se desarrolla. En lugar de calcularlas las LDC, las métricas orientadas a la función secentran en la funcionalidad o utilidad del programa.Las métricas orientadas a la función fueron el principio propuestas por Albercht quien sugirió un acercamiento a la medida de la productividad denominado método del punto de función. Lospuntos de función que obtienen utilizando una función empírica basando en medidascuantitativas del dominio de información del software y valoraciones subjetivos de la complejidaddel software.Los puntos de función se calculan rellenando la tabla como se muestra en la siguiente figura:Calculo de métricas de punto de función.



Se determinan 5 características del ámbito de la información y los cálculos aparecen en laposición apropiada de la tabla. Los valores del ámbito de información están definidos de la siguiente manera.
1. Números de entrada de usuario: se cuenta cada entrada del usuario que proporcione al
software diferentes datos orientados a la aplicación. Las entradas deben ser distinguidas
de las peticiones que se contabilizan por separado.
2. Numero de salida del usuario: se encuentra cada salida que proporciona la usuario
información orientada ala aplicación. En este contexto las salidas se refieren a informes,
pantalla, mensajes de error. Los elementos de datos individuales dentro de un informe
se encuentran por separado.
3. Números de peticiones al usuario: una petición esta definida como una entrada
interactiva que resulta de la generación de algún tipo de respuesta en forma de salida
interactiva. Se cuenta cada petición por separado.
4. Numero de archivos: se cuenta cada archivo maestro lógico, o sea una agrupación
lógica de datos que puede ser una parte en una gran base de datos o un archivo
independiente.
5. Numero de interfaces externas: se cuentan todas las interfaces legibles por la maquina
por ejemplo: archivos de datos, en cinta o discos que son utilizados para transmitir
información a otro sistema.

Cuando han sido recogidos los datos anteriores se asocian el valor de complejidad a cadacuenta. Las organizaciones que utilizan métodos de puntos de función desarrollan criterios paradeterminar si una entrada es denominada simple, media o compleja. No obstante ladeterminación de la complejidad es algo subjetivo.Para calcular los puntos de función se utiliza la siguiente relación.

PF = CUENTA_TOTAL * [0.65 + 0.01 * SUM(fi)]
Donde CUENTA_TOTAL es la suma de todas las entradas de PF obtenidas de la tabla anterior.
Fi donde i puede ser de uno hasta 14 los valores de ajuste de complejidad basados en las
respuestas a las cuestiones señaladas de la siguiente tabla.
Evaluar cada factor en escala 0 a 5.


Métricas ampliadas de punto de función
La medida de punto de función se diseñó originalmentepara aplicarse a aplicaciones de sistemas de informaciónde gestión. Para acomodar estas aplicaciones,se enfatizó la dimensión de datos (los valores de dominiosde información tratados anteriormente) para laexclusión de dimensiones (control) funcionales y decomportamiento. Por esta razón, la medida del punto defunción era inadecuada para muchos sistemas de ingenieríay sistemas empotrados (que enfatizan función ycontrol). Para remediar esta situación se ha propuestoun número de extensiones a la métrica del punto de funciónbásica.8%CLAVEla extensión de los puntos de función se utilizaen la ingeniería, en las aplicaciones de tiempo realy en las aplicaciones orientadas al control.Una extensión del punto de función es la llamadapuntos de características [JON9 11; es una ampliaciónde la medida del punto de función que se puede aplicara sistemas y aplicaciones de ingeniería del software. Lamedida de punto de característica acomoda a aplicacionesen donde la complejidad del algoritmo es alta.Las aplicaciones de software de tiempo real, de controlde procesos, y empotradas tienden a tener alta complejidadde algoritmos y por lo tanto son adecuadas parael punto de característica. Además,la métrica del punto de característica cuenta una característicanueva del software -los algoritmos-. Un algoritmo se define como un problema de cálculo limitado que se incluye dentro de un programa de computadoraespecífico. Invertir una matriz, decodificaruna cadena de bits o manejar una interrupción son ejemplos de algoritmos.

sábado, 9 de mayo de 2009

Métricas para la calidad de software

El objetivo primordial de la ingeniería del software es producirun sistema, aplicación o producto de alta calidad.Para lograr este objetivo, los ingenieros del software debenaplicar métodos efectivos junto con herramientas modernasdentro del contexto de un proceso maduro de desarrollode software. Además, un buen ingeniero del software(y buenos gestores de la ingeniería del software) debenmedir si la alta calidad se va a llevar a cabo.La calidad de un sistema, aplicación o producto estan bueno como los requisitos que describen el problema,el diseño quc modcla la solución, el código que conducea un programa ejecutable, y las pruebas queejercitan el software para detectar errores. Un buen ingenierodel software utiliza mediciones que evalúan lacalidad del análisis y los modelos de diseño, el códigofuente, y los casos de prueba que se han creado al aplicarla ingeniería del software. Para lograr esta evaluaciónde la calidad en tiempo real, el ingeniero debe utilizar medidas técnicas que evalúa nla calidad con objetividad, no con subjetividad.Se puede encontrar una excelente fuente de informociónsobre la calidad del software y ternos relacionados(incluyendo métricas) en: www.quol¡tyworld.comEl gestor de proyectos también debe evaluar la calidad objetivamente, y no subjetivamente. A medida que el proyecto progresa el gestor del proyecto también debeevaluar la calidad. Las métricas privadas recopiladas poringenieros del software particulares se asimilan para proporcionarresultados en los proyectos. Aunque se puedenrecopilar muchas medidas de calidad, el primer objetivoen el proyecto es medir errores y defectos. Las métricasque provienen de estas medidas proporcionan una indicaciónde la efectividad de las actividades de control y de la garantía de calidad en grupos o en particulares.


Medida de la calidad
Aunque hay muchas medidas de la calidad de software,la corrección, facilidad de mantenimiento, integridad,y facilidad de uso proporcionan indicadores Útilespara el equipo del proyecto. Gilb [GIL881 ha sugeridodefiniciones y medidas para cada uno de ellos.Corrección. Un programa debe operar correctamenteo proporcionará poco valor a sus usuarios. Lacorrección es el grado en el que el software lleva acabo su función requerida. La medida más común decorrección es defectos por KLDC, en donde undefecto se define como una falta verificada de conformidadcon los requisitos.Facilidad de mantenimiento. El mantenimientodel software cuenta con más esfuerzo que cualquierotra actividad de ingeniería del software. La facilidadde mantenimiento es la facilidad con la que sepuede corregir un programa si se encuentra un error,se puede adaptar si su entorno cambia, o mejorar siel cliente desea un cambio de requisitos. No hayforma de medir directamente la facilidad de mantenimiento;por consiguiente, se deben utilizar medidasindirectas. Una simple métrica orientada altiempo es el tiempo medio de cambio (TMC), es decirel tiempo que se tarda en analizar la petición de cambio,en diseñar una modificación adecuada, en implementarel cambio, en probarlo y en distribuir elcambio a todos los usuarios. Como media, los programasque se pueden mantener tendrán un TMCmás bajo (para tipos equivalentes de cambios) quelos programas que no son más fáciles de mantener.Hitachi [TAJS 11] ha utilizado una métrica orientadaal coste para la capacidad de mantenimiento llamada«desperdicios» -e1 coste en corregir defectosencontrados después de haber distribuido el softwarede un sistema para resistir ataques (tanto accidentalescomo intencionados) contra su seguridad. El ataquese puede realizar en cualquiera de los tres componentesdel software: programas, datos y documentos.Para medir la integridad, se tienen que definirdos atributos adicionales: amenaza y seguridad.Amenaza es la probabilidad (que se puede estimaro deducir de la evidencia empírica) de que un ataquede un tipo determinado ocurra en un tiempodeterminado. La seguridad es la probabilidad (quese puede estimar o deducir de la evidencia empírica)de que se pueda repeler el ataque de un tipodeterminado. La integridad del sistema se puededefinir como:integridad = C [( 1 - amenaza) x (1 - seguridad)]donde se suman la amenaza y la seguridad para cadatipo de ataque.Facilidad de uso. El calificativo «amigable con elusuario» se ha convertido en omnipresente en las discusionessobre productos de software. Si un programano es «amigable con el usuario», frecuentemente estáabocado al fracaso, incluso aunque las funciones querealice sean valiosas. La facilidad de uso es un intentode cuantificar «lo amigable que puede ser con el usuario» y se puede medir en función de cuatro características:(1) habilidad intelectual y/o física requeridapara aprender el sistema; (2) el tiempo requerido parallegar a ser moderadamente eficiente en el uso del sistema;(3) aumento neto en productividad (sobre elenfoque que el sistema reemplaza) medida cuandoalguien utiliza el sistema moderadamente y eficientemente;y (4) valoración subjetiva (a veces obtenidamediante un cuestionario) de la disposición de losusuarios hacia el sistema.Los cuatro factores anteriores son sólo un ejemplode todos los que se han propuesto como medidas de lacalidad del software. 

De Interés.!