domingo, 13 de septiembre de 2015

Metodología de desarrollo iterativo y creciente

Buscando información acerca de la metodología de trabajo planteada para el desarrollo del proyecto, encontré algunas definiciones acerca de la metodología de desarrollo iterativo e incremental, la cual es la mas usada hoy en día por los beneficios que esta ofrece.

                                        
Si en un ciclo de vida en cascada las fases del ciclo de vida (requisitos, análisis, diseño, etc.) se realizan una única vez, y el inicio de una fase no comienza hasta que termina la fase que procede, en un ciclo de vida iterativo e incremental se va liberando partes del producto (prototipos) periódicamente, en cada iteracion y cada nueva versión normalmente, aumenta la funcionalidad y mejora la calidad respecto a la anterior.

Los pasos claves en el proceso son comenzar con una implementacion simple de los requerimientos del sistema, e iterativamente mejorar la secuencia evolutiva de versiones hasta que el sistema completo este implementado. En cada iteracion, se realizan cambios en el diseño y se agregan nuevas funcionalidades y capacidades al sistema. El proceso en si mismo consiste en crear una versión del sistema. La meta es crear un producto con el que el usuario pueda interactuar y por ende retroalimentar el proceso sin dificultad alguna de que estas modificaciones no den lugar en la planeacion del mismo.

Separando la metodología en los dos procesos fundamentales, tenemos:

  • Proceso incremental:  La esencia de este proceso, es desarrollar por partes el producto de software, para después integrarlas a medida que se completan. Un ejemplo de un desarrollo puramente incremental puede ser la integración de módulos en diferentes fases.
  • Proceso iterativo: En cada ciclo del producto, de manera iterativa este se revisa y mejora. De esta forma se mejora cada vez mas la calidad del producto y esto no implica tener que añadir nuevas funciones al mismo.

De esta manera podemos apreciar que las ventajas que nos ofrece esta metodología de trabajo es muy beneficioso, ya que nos puede ayudar a resolver problemas de alto riesgo en tiempos tempranos del proyecto, realizar adaptaciones al proyecto que no se identificaron en la planeacion y con esto una menor tasa de fallo del proyectos o que no se cumplan con los objetivos del mismo.




CALIDAD DE SOFTWARE

Apropósito de  la descripción de calidad de software, que nos da la norma ISO 25000, quise buscar un poco acerca de investigaciones realizados en el tema de la calidad de software, y encontré este articulo el cual compartiré con uds en esta ocasión.

                   

Como primera medida lo importante para este tema seria tener una referencia acerca de que es la calidad de software y una definición amplia de calidad, planteada en la norma UNE-EN ISO 8402, expresa que “la calidad es el conjunto de propiedades y características de un producto o servicio que le confieren su aptitud para satisfacer unas necesidades explícitas o implícitas”. 

Al intentar definir el concepto de calidad del software se debe diferenciar entre la calidad del Producto de software y la calidad del Proceso de desarrollo del mismo. Hay un vínculo claro entre la calidad del proceso y del producto en producción debido a que el proceso es relativamente fácil de estandarizar y monitorizar. Cada sistema de producción se calibra, y debe producir una y otra vez productos de alta calidad. Sin embargo, el software no se manufactura, sino que se diseña. El desarrollo de software es un proceso más creativo que mecánico, donde las experiencias y habilidades individuales son importantes. La calidad del producto, sea cual fuere el proceso utilizado, también se ve afectada por factores externos, como la novedad de una aplicación o la presión comercial para sacar un producto rápidamente.

Modelos de calidad de software

 A lo largo del tiempo se han desarrollado diferentes modelos para evaluar la calidad del software, que intentan descomponer la calidad en una categoría de características más sencillas. Entre ellos puede mencionarse el de McCall, Evans y Marciniak, Deutch y Willis, FURPS, entre otros. 

Un hito en la definición de estándares de calidad de producto software, lo constituye la publicación del ISO9126 en el año 1991. Luego, en el año 2001, este estándar fue reemplazado por dos estándares relacionados: el ISO/IEC 9126, que especifica características y métricas de la calidad del software; y el estándar ISO/IEC 14598, que especifica la evaluación de productos de software. 

El estándar ISO/IEC 9126 se compone de cuatro partes: 
  • modelo de calidad
  • métricas externas 
  • métricas internas  
  • métricas para la calidad en uso. 
Propone un modelo de calidad categorizando la calidad de los atributos software en seis características
  • funcionalidad
  • fiabilidad
  • usabilidad
  • eficiencia
  • mantenibilidad
  • portabilidad
Las cuales son subdivididas en subcaracterísticas.
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”. El modelo más actual está representado por las normas ISO 25000:2005, conocidas con el nombre de SQuaRE (Software Quality Requirements and Evaluation), basada en ISO 9126 y en ISO 14598, se desagrega en 5 tópicos: 
  1. Gestión de la Calidad (2500n), 
  2. Modelo de Calidad (2501n), 
  3. Medidas de Calidad (2502n), 
  4. Requerimientos de Calidad (2503n) 
  5. Evaluación de la Calidad (2504n). 
La especificación de requisitos de calidad y la evaluación de productos software son dos procesos que por su inherente complejidad pueden beneficiarse del proceso que regule su realización. Sin embargo, y como señala el estándar SQuaRE, es importante que sus objetivos estén alineados. Por ello, la creación de una norma que regule su realización pueda ser muy beneficiosa, en cuanto a la consistencia de los resultados obtenidos. Otro aspecto destacable de SQuaRE es la incorporación de una normalización de la terminología, considera la Metrología como la ciencia de la medida y la necesidad de amoldar los conceptos usados en Ingeniería del Software a los utilizados en otras disciplinas que hacen uso de la medición.



http://sedici.unlp.edu.ar/bitstream/handle/10915/19762/Documento_completo.pdf?sequence=1