martes, 17 de abril de 2012

Procesos de desarrollo Ligeros vs Pesados, ciclos de vida, MSF, MOF, ITIL

PROCESOS DE DESARROLLO LIGEROS VS PESADOS
Actualmente con el creciente desarrollo tecnológico y la aparición de nuevos modelos de producción, han ido apareciendo nuevas metodologías de proceso de desarrollo, estos procesos han ido tomado características marcadas, lo que ha conllevado en agruparlos en dos grandes grupos, los llamados "métodos pesados" y los "métodos ligeros", la diferencia más saltante entre estos dos grandes grupos es que mientras los métodos pesados intentan obtener los resultados ayudándose principalmente de la documentación ordenada, los métodos ligeros tienen como base de sus resultados a la comunicación e interacción directa con todos los usuarios involucrados en el proceso.


Metodología Ágil

Metodología No Ágil (Tradicional)

Pocos artefactos Más artefactos
Pocos roles Más roles
No existe un contrato tradicional o al menos es bastante flexible Existe un contrato prefijado
El cliente es parte del equipo de desarrollo (además in-situ) El cliente interactúa con el equipo de desarrollo mediante reuniones
Grupos pequeños (< 10 integrantes) y trabajando en el mismo sitio Grupos grandes
Menos énfasis en la arquitectura La arquitectura es esencial

RUP (Rational Unified Process)
Este es uno de los procesos más generales que existe, esta enfocado a cualquier tipo de proyecto así no sea de software, se basa en la documentación generada en cada uno de sus cuatro fases:

1. Intercepción (puesta en marchar)
2. Elaboración (definición, análisis y diseño)
3. Construcción (implementación)
4. Transición (fin del proyecto y puesta en producción) 


En cada fase se ejecutarán una o varias iteraciones (según el tamaño del proyecto) y dentro de cada una de ellas seguirá un modelo de cascada o waterfal para los flujos de trabajo que requieren las nuevas actividades anteriormente citadas.

RUP se basa en UseCase(casos de uso) para describir lo que se tiene y lo que se espera del software, está muy orientado a la arquitectura del sistema a implementarse, documentandose de la mejor manera, basándose en UML (Unified Modeling Language - Lenguage de Modelado Unificado).

Para poder usar RUP antes hay que adaptarlo a las características de la empresa, y medir de manera exacta el tiempo, costos y todos los demás recursos involucrados en el proceso.

XP (eXtreme Programming - Programación Extrema)

XP, se basa en el trabajo orientado directamente al objetivo, basándose para esto en las relaciones interpersonales y en la velocidad de reacción para la implementación y para los cambios que puedan surgir durante el desarrollo del proceso.

Esto se logra, minimizando el riesgo de fallo del proceso manteniendo dentro del equipo a un representante "competente" del cliente, este representante es quién responderá a todas las preguntas y dudas que surjan por parte del equipo de desarrollo durante el proceso, de forma que no se retrase la toma de decisiones.

XP se basa en UseStories (historias de uso), estas historias las escribe el cliente o su representante dentro del equipo y describen los escenarios claves del funcionamiento del software, a partir de estas se generan los releases (entregas) entre el equipo y el cliente. Estos releases son los que permiten definir las iteraciones necesarias para cumplir con los objetivos, de manera que cada resultado de la iteración sea un programa aprobado por el cliente de quien depende la definición de las siguientes iteraciones.

Una característica saltante de XP, es que el código siempre se produce en parejas, parejas que van cambiando constantemente para lograr así que todo el equipo sepa y pueda modificar según necesidades el código generado, esto logra en el equipo que los integrantes aprendan entre sí y compartan todo el código.



MSF (Microsoft Solution Framework)
La metodología MSF es del tipo de metodologías agiles, esta enfocada a dirigir proyectos o soluciones de innovación, en ella no se detalla ni se hace énfasis de la organización ni el tamaño del equipo de desarrollo, esta mas bien centrada en la gestión y administración del proyecto para lograr el impacto deseado.AInvolucra indudablemente la calidad ya que prevee liberar una solución si esta aun tiene fallos o desperfectos para ello propone seleccionar un grupo de prueba piloto el cual es una VERSIÓN BETA y cumplido un tiempo de prueba ya es liberada la versión formal o VERSIÓN ALFA en la cual esta garantizada la calidad.

El modelo de proceso de MSF se compone de 5 fases:
  • Previsión
  • Planificación
  • Desarrollo
  • Estabilización
  • Implementación



MOF (Microsoft Operation Framework)
MOF ofrece directrices sobre el modo de planear, implementar y mantener procesos operativos de TI que respalden las soluciones de servicio críticas. MOF es un modelo genérico y, por este motivo, debe adaptar muchas de las recomendaciones para usarlas en su empresa. Cuando encuentre referencias a "funciones" en el modelo MOF, tenga en cuenta que se puede asignar a una misma persona a varias funciones, sobre todo en las empresas pequeñas. No obstante, aunque represente a todo el departamento de TI, los procedimientos y recomendaciones de este modelo se pueden aplicar de forma general.
MOF es un modelo estructurado y flexible que está basado en lo siguiente:
  • Los equipos de consultoría y soporte técnico de Microsoft y su experiencia de trabajo con clientes empresariales y socios, además de grupos internos de operaciones de TI en Microsoft. 
  • La Biblioteca de infraestructuras de TI (ITIL), que describe los procesos y las prácticas recomendadas necesarios para el suministro de soluciones de servicio críticas. 
  • ISO/IEC 15504, de la Organización Internacional de Normalización (ISO), que proporciona un enfoque normalizado para evaluar la madurez del proceso de software.
MOF ofrece recomendaciones para la implementación de varios productos de Microsoft, como Microsoft Windows Server 2003 y Microsoft Exchange Server 2007.
El modelo de proceso MOF está formado por cuadrantes, revisiones de la administración de las operaciones y revisiones de la administración de los servicios. El modelo de proceso MOF se desplaza en sentido de las agujas del reloj y se divide en los cuatro cuadrantes integrados siguientes:
  • Cambios 
  • Operaciones 
  • Soporte técnico 
  • Optimización


ITIL (Information Technologies Infrastructure Library )

La Biblioteca de infraestructuras de informática (ITIL) es un conjunto de códigos completos y coherentes de recomendaciones para la administración de servicios informáticos. La Agencia central de equipos y telecomunicaciones (CCTA) desarrolló una biblioteca de más de 40 libros en el Reino Unido.

El objetivo de CCTA era aumentar la eficacia empresarial en el uso de los sistemas de información. La demanda de que las organizaciones pudieran reducir los costos al mismo tiempo que mantenían los servicios informáticos demostró la necesidad de un conjunto de estándares.

Así, se desarrollaron los conceptos de ITIL de recomendaciones para servicios informáticos en colaboración con expertos, consultores y profesionales líderes del sector.
Muchas organizaciones han adoptado el concepto de ITIL porque ofrece un enfoque sistemático y profesional de la administración de los servicios informáticos. Mediante la adopción de las guías proporcionadas por ITIL, las organizaciones obtienen muchas ventajas, entre las que se incluyen:
  • Aumento de la satisfacción de los clientes. 
  • Reducción del costo de desarrollo de prácticas y procedimientos. 
  • Mejora en los flujos de comunicación entre el personal de informática y los clientes. 
  • Aumento de la productividad y del uso de capacidades y experiencia. 

CONCLUSIONES

Los procesos de software ligeros actualmente están ganando terreno ante los pesados, es probable con el tiempo solo queden en uso los ligeros. Así mismo Microsoft ha notado esto y desarrollo su propia metodología: MSF.

En su tiempo se pensó tal vez que los procesos crecerían tomando lo mejor de los anteriores, pero ha sido todo lo contrario, se les ha quitado lo que tenían de mas y se los ha vuelto mas ligeros. Sin lugar a dudas el mercado mismo los esta empezando a demandar.


REFERENCIAS

lunes, 16 de abril de 2012

MODELOS DE CALIDAD EN EL SOFTWARE MCCALL, NORMA ISO/IEC 9126 Y NORMA 25000

MODELOS DE CALIDAD EN EL SOFTWARE MCCALL, NORMA ISO/IEC 9126 Y NORMA 25000


1. Introducción

En la industria del software, al igual que en cualquier otra industria, necesitamos medir el  producto que realizamos para conocer el esfuerzo y costes de producir dicho producto. De esta manera será posible ofrecer productos de calidad, es necesario por ello seguir alguna metodología que nos garantize esto. Hoy en dia hay diversos modelos de calidad y normas, en el presente trabajo se verán: el modelo de McCall, las normas ISO/IEC 9126 e ISO 25000

2. El Modelo de McCall

El modelo de Jim McCall, desarrollado inicialmente para la Fuerza Aérea de los EE.UU en 1977. , es uno de los más renombrados actualmente. Este modelo busca reducir la brecha entre usuarios y desarrolladores enfocándose en un número de factores de calidad que reflejen las prioridades de ambos.
El modelo establece una jerarquía de Perspectivas (3), Factores (11), Criterios de Calidad (23) y Métricas (41). Describe la calidad como un concepto elaborado mediante relaciones jerárquicas entre factores de calidad, en base a criterios y métricas de calidad.
Este enfoque es sistemático, y permite cuantificar la calidad a través de las siguientes fases:
·        Determinación de los factores que influyen sobre la calidad del software
·        Identificación de los criterios para juzgar cada factor
·       Definición de las métricas de los criterios y establecimiento de una función de normalización que define la relación entre las métricas de cada criterio y los factores correspondientes
·        Evaluación de las métricas
·        Correlación de las métricas a un conjunto de guías que cualquier equipo de desarrollo podría seguir
·        Desarrollo de las recomendaciones para la colección de métricas
En el modelo de McCall, los factores de calidad se concentran en tres aspectos importantes de un producto de software: características operativas, capacidad de cambios y adaptabilidad a nuevos entornos.

Puntos De Vista O Ejes Factor Criterios
OPERACIÓN DEL PRODUCTO
Facilidad de uso
  • Facilidad de operación: Atributos del software que determinan la facilidad de operación del software.
  • Facilidad de comunicación: Atributos del software que proporcionan entradas y salidas fácilmente asimilables.
  • Facilidad de aprendizaje: Atributos del software que facilitan la familiarización inicial del usuario con el software y la transición del modo actual de operación.
  • Formación: El grado en que el software ayuda para permitir que nuevos usuarios apliquen el sistema.
Integridad
  • Control de accesos. Atributos del software que proporcionan control de acceso al software y los datos que maneja.
  • Facilidad de auditoría: Atributos del software que facilitan la auditoría de los accesos al software.
  • Seguridad: La disponibilidad de mecanismos que controlen o protejan los programas o los datos.
Corrección
  • Completitud: Atributos del software que proporcionan la implementación completa de todas las funciones requeridas.
  • Consistencia: Atributos del software que proporcionan uniformidad en las técnicas y notaciones de diseño e implementación.
  • Trazabilidad o rastreabilidad: Atributos del software que proporcionan una traza desde los requisitos a la implementación con respecto a un entorno operativo concreto.
Fiabilidad
  • Precisión: Atributos del software que proporcionan el grado de precisión requerido en los cálculos y los resultados.
  • Consistencia.
  • Tolerancia a fallos: Atributos del software que posibilitan la continuidad del funcionamiento bajo condiciones no usuales.
  • Modularidad: Atributos del software que proporcionan una estructura de módulos altamente independientes.
  • Simplicidad: Atributos del software que posibilitan la implementación de funciones de la forma más comprensible posible.
  • Exactitud: La precisión de los cálculos y del control.
Eficiencia
  • Eficiencia en ejecución: Atributos del software que minimizan el tiempo de procesamiento.
  • Eficiencia en almacenamiento: Atributos del software que minimizan el espacio de almacenamiento necesario.
REVISIÓN DEL PRODUCTO
Facilidad de mantenimiento
  • Modularidad.
  • Simplicidad.
  • Consistencia.
  • Concisión: Atributos del software que posibilitan la implementación de una función con la menor cantidad de códigos posible.
  • Auto descripción: Atributos del software que proporcionan explicaciones sobre la implementación de las funciones.
Facilidad de prueba
  • Modularidad.
  • Simplicidad.
  • Auto descripción.
  • Instrumentación: Atributos del software que posibilitan la observación del comportamiento del software durante su ejecución para facilitar las mediciones del uso o la identificación de errores.
Flexibilidad
  • Auto descripción.
  • Capacidad de expansión: Atributos del software que posibilitan la expansión del software en cuanto a capacidades funcionales y datos.
  • Generalidad: Atributos del software que proporcionan amplitud a las funciones implementadas.
  • Modularidad.
TRANSICIÓN  DEL PRODUCTO
Reusabilidad
  • Auto descripción.
  • Generalidad.
  • Modularidad.
  • Independencia entre sistema y software: Atributos del software que determinan su dependencia del entorno operativo.
  • Independencia del hardware: Atributos del software que determinan su dependencia del hardware.
Interoperabilidad
  • Modularidad.
  • Compatibilidad de comunicaciones: Atributos del software que posibilitan el uso de protocolos de comunicación e interfaces estándar.
  • Compatibilidad de datos: Atributos del software que posibilitan el uso representaciones de datos estándar.
  • Estandarización en los datos: El uso de estructuras de datos y de tipos estándar a lo largo de todo el programa.
Portabilidad
  • Auto descripción.
  • Modularidad.
  • Independencia entre sistema y software.
  • Independencia del hardware.


3. La Norma ISO/IEC 9126

El estándar ISO/IEC 9126 ha sido desarrollado en un intento de identificar los atributos clave de calidad para un producto de software. Este estándar es una simplificación del Modelo de McCall,  e identifica seis características básicas de calidad que pueden estar presentes en cualquier producto de software.
El estándar está dividido en cuatro partes las cuales dirigen, respectivamente, lo siguiente: modelo de calidad, métricas externas, métricas internas y calidad en las métricas de uso.
El modelo de calidad establecido en la primera parte del estándar, ISO 9126-1, clasifica la calidad del software en un conjunto estructurado de características y subcaracterísticas de la siguiente manera:
  • Funcionalidad - Un conjunto de atributos que se relacionan con la existencia de un conjunto de funciones y sus propiedades específicas. Las funciones son aquellas que satisfacen las necesidades implícitas o explícitas.
§  Idoneidad
§  Exactitud
§  Interoperabilidad
§  Seguridad
§  Cumplimiento de normas.
  • Fiabilidad - Un conjunto de atributos relacionados con la capacidad del software de mantener su nivel de prestación bajo condiciones establecidas durante un período establecido.
§  Madurez
§  Recuperabilidad
§  Tolerancia a fallos
  • Usabilidad - Un conjunto de atributos relacionados con el esfuerzo necesario para su uso, y en la valoración individual de tal uso, por un establecido o implicado conjunto de usuarios.
§  Aprendizaje
§  Comprensión
§  Operatividad
§  Atractividad
  • Eficiencia - Conjunto de atributos relacionados con la relación entre el nivel de desempeño del software y la cantidad de recursos necesitados bajo condiciones establecidas.
§  Comportamiento en el tiempo
§  Comportamiento de recursos
  • Mantenibilidad - Conjunto de atributos relacionados con la facilidad de extender, modificar o corregir errores en un sistema software.
§  Estabilidad
§  Facilidad de análisis
§  Facilidad de cambio
§  Facilidad de pruebas
  • Portabilidad - Conjunto de atributos relacionados con la capacidad de un sistema software para ser transferido desde una plataforma a otra.
§  Capacidad de instalación
§  Capacidad de reemplazamiento
§  Adaptabilidad
§  Co-Existencia
La subcaracterística Conformidad no está listada arriba ya que se aplica a todas las características. Ejemplos son conformidad a la legislación referente a usabilidad y fiabilidad.
Cada subcaracterística (como adaptabilidad) está dividida en atributos. Un atributo es una entidad la cual puede ser verificada o medida en el producto software. Los atributos no están definidos en el estándar, ya que varían entre diferentes productos software.
Un producto software está definido en un sentido amplio como: los ejecutables, código fuente, descripciones de arquitectura, y así. Como resultado, la noción de usuario se amplía tanto a operadores como a programadores, los cuales son usuarios de componentes como son bibliotecas software.
El estándar provee un entorno para que las organizaciones definan un modelo de calidad para el producto software. Haciendo esto así, sin embargo, se lleva a cada organización la tarea de especificar precisamente su propio modelo. Esto podría ser hecho, por ejemplo, especificando los objetivos para las métricas de calidad las cuales evalúan el grado de presencia de los atributos de calidad.
Métricas internas son aquellas que no dependen de la ejecución del software (medidas estáticas).
Métricas externas son aquellas aplicables al software en ejecución.
La calidad en las métricas de uso están sólo disponibles cuando el producto final es usado en condiciones reales.
Idealmente, la calidad interna no necesariamente implica calidad externa y esta a su vez la calidad en el uso.
La calidad de uso es definida como “la capacidad del software que posibilita la obtención de objetivos específicos con efectividad, productividad, satisfacción y seguridad”.


Es interesante destacar que los factores de calidad que contempla el estándar ISO/IEC 9126 no son necesariamente usados para mediciones directas, pero proveen una valiosa base para medidas indirectas, y una excelente lista para determinar la calidad de un sistema.

4. La Norma ISO 25000

El estándar ISO/IEC 25000 SQuaRE (Evaluación de Calidad de Productos de Software) constituye una serie de normas basadas en la ISO 9126 y en la ISO 14598 (Evaluación del Software), y su objetivo principal es guiar el desarrollo de los productos de software con la especificación y evaluación de requisitos de calidad. Establece criterios para la especificación de requisitos de calidad de productos software, sus métricas y su evaluación.
SQuaRE está formada por las divisiones siguientes.
  • ISO/IEC 2500n. División de gestión de calidad. Los estándares que forman esta división definen todos los modelos comunes, términos y referencias a los que se alude en las demás divisiones de SQuaRE. 
  • ISO/IEC 2501n. División del modelo de calidad. El estándar que conforma esta división presenta un modelo de calidad detallado, incluyendo características para la calidad interna, externa y en uso.
  • ISO/IEC 2502n. División de mediciones de calidad. Los estándares pertenecientes a esta división incluyen un modelo de referencia de calidad del producto software, definiciones matemáticas de las métricas de calidad y una guía práctica para su aplicación. Presenta aplicaciones de métricas para la calidad de software interna, externa y en uso.
  • ISO/IEC 2503n. División de requisitos de calidad. Los estándares que forman parte de esta división ayudan a especificar los requisitos de calidad. Estos requisitos pueden ser usados en el proceso de especificación de requisitos de calidad para un producto software que va a ser desarrollado ó como entrada para un proceso de evaluación. El proceso de definición de requisitos se guía por el establecido en la norma ISO/IEC 15288 (ISO, 2003).
  • ISO/IEC 2504n. División de evaluación de la calidad. Estos estándares proporcionan requisitos, recomendaciones y guías para la evaluación de un producto software, tanto si la llevan a cabo evaluadores, como clientes o desarrolladores.
  • ISO/IEC 25050–25099. Estándares de extensión SQuaRE. Incluyen requisitos para la calidad de productos de software “Off-The-Self” y para el formato común de la industria (CIF) para informes de usabilidad.
La norma ISO 25000 ha sido desarrollada por el subcomité SC 7 (Ingeniería de software y sistemas) del Comité Técnico Conjunto ISO/IEC JTC 1.

Al igual que la norma ISO/IEC 9126, este estándar define tres vistas diferenciadas en el estudio de la calidad de un producto:
  • Vista interna: esta vista se ocupa de las propiedades del software como: el tamaño, la complejidad o la conformidad con las normas de orientación a objetos.
  • Vista externa: vista que analiza el comportamiento del software en producción y estudia sus atributos, por ejemplo: el rendimiento de un software en una máquina determinada, el uso de memoria de un programa o el tiempo de funcionamiento entre fallos.
  • Vista en uso: mide la productividad y efectividad del usuario final al utilizar el software.
La primera puede utilizarse desde las primeras fases del desarrollo, permitiendo detectar deficiencias en el software en edades muy tempranas del ciclo de vida del software.

La segunda, sin embargo, necesita que el producto software este completo y se utilizará por tanto en el pase a producción del producto, siendo muy dependiente de la máquina donde se ejecute.
 .
Por último la tercera vista que también estudia el producto software finalizado será dependiente del usuario y estará condicionada a los factores personales del mismo.
 .
Puede observarse que las distintas vistas se interrelacionan, afectando los valores de la vista interna a los de la vista externa y los de la vista externa a los de la vista en uso. Así por ejemplo: un software con una alta complejidad probado sobre una máquina con bajas prestaciones tendrá un rendimiento bajo que provocará que el usuario final tenga un rendimiento inferior al esperado independientemente de sus factores humanos.

La serie ISO 25000 no establece los niveles de calidad deseables para cada proyecto, si bien se recomienda que los requisitos de calidad deberán ser proporcionales a las necesidades de la aplicación y lo crítico que sea el correcto funcionamiento del sistema implementado.
.
 El modelo de referencia para la medición de la calidad del producto software de la norma ISO/IEC 25000 establece que la calidad del producto software está compuesta de características de calidad, las cuales a su vez se componen de subcaracterísticas. Así mismo, establece que las medidas de calidad software (Software Quality Measures) indican las características y subcaracterísticas de calidad del producto software.
 .
El valor de estas medidas de calidad software se obtiene por la aplicación de una función de medida (Measurement Function) a los elementos de medida de calidad (Quality Measure Elements). Los elementos de medida de calidad son medidas base o medidas derivadas obtenidas según describe el método de medición correspondiente (measurement method), de acuerdo a la ISO/IEC 15939.
 .
Aunque las normas ISO/IEC 9126 y 25000 establecen cuáles son las características de la calidad de un producto software y sus subcaracterísticas, no indica qué medidas de calidad indican una subcaracterística.


Modelo de Referencia de Medición de la Calidad del Producto Software, según la ISO/IEC 25000.

Conclusión  

Si bien no todos los modelos los llaman de la misma forma, todos ellos evalúan el software considerando los mismos factores (como los llama McCall). Se interesan en medir estos factores desde la planificación del proyecto, siguiendo a lo largo de su ciclo de vida hasta su conclusión; es así que cada modelo a su manera ve la forma de garantizar la calidad del producto final.

Referencias