Reference model for the software product value estimation in the development process; Modelo de referencia para la estimación de valor del producto software durante el proceso de desarrollo - Castro López, Oscar Jesús (Universidad Autónoma Metropolitana, 2013)
El valor de los productos software es un factor muy importante para posicionarlos en el competitivo mercado que existe hoy en día. En el mercado de productos software el elemento valor es tomado en cuenta cada vez más, es importante señalar que el valor no es lo mismo que el precio, ya que aumentar o disminuir el precio no modifica el valor del producto, en cambio modifica la percepción del cliente o incentiva al cliente para comprar o no comprar un producto de software. Los clientes hacen una gran inversión al adquirir productos de software, y cada vez son más consientes de qué es lo que están comprando, entonces los clientes se encuentran en búsqueda de una solución de software que ofrezca un alto valor para satisfacer sus necesidades a cambio de su dinero. A su vez las compañías desarrolladoras de productos software también invierten grandes cantidades de dinero pero para desarrollar sus productos y posicionarlos en el mercado. Las compañías desarrolladoras que satisfacen las necesidades del cliente y a su vez ofrecen productos con un alto valor están en una mejor posición para competir y tener éxito en el mercado. Sin embargo, un problema con el que se encuentran las compañías de software es que no tienen un sólido entendimiento del factor valor en sus productos de una manera cuantificable, y por ende estos productos no llenan sus expectativas económicas. Una compañía puede comenzar el desarrollo de un producto de software y en el plan de proyecto éste es plasmado como una idea brillante e innovadora, pero a medida que el proceso de desarrollo se lleva a cabo, muy diversos problemas técnicos surgen y una validación del valor de dicho producto rara vez es realizada. Al final se obtiene un producto mediocre y sus posibilidades de éxito en el mercado son prácticamente nulas. Existe un enlace perdido entre la planeación de un producto de alto valor y el producto realmente desarrollado: el plan de producto no es reflejado en el producto final. Para enlazar el valor del plan de producto con el producto final, es necesario que las empresas cuenten con conocimiento y métodos que ayuden a estimar y validar el valor del producto software. La estimación y validación permitiría a las empresas observar cómo el valor de sus productos varían entre aplicaciones y qué es lo que se ofrece al cliente. Por lo tanto, el valor debe ser tomado en consideración cuando se usan técnicas de ingeniería de software para desarrollar productos software, de forma similar como el costo, planeación, recursos y otros aspectos importantes son considerados regularmente para el desarrollo de software. [3]. Es precisamente en las áreas de desarrollo de software en donde problemas técnicos están afectando el valor del producto lanzado al mercado. Por lo tanto, las compañías desarrolladoras necesitan métodos para estimar el valor del producto software durante el proceso de desarrollo, con el objeto de obtener datos cuantificables y visibilidad sobre el valor del producto software que será lanzado al mercado. De acuerdo con diversos autores, el valor es altamente perceptual ([2], [6], [7]), por lo tanto hay que identificar los elementos que definen el valor de productos software. Estos elementos deben ser plenamente identificables y cuantificables. Existen distintos enfoques para estimar el valor del producto software durante el ciclo de desarrollo, pero están principalmente enfocados a la fase de requerimientos de software, como Barney et al. En [2] en el cual los autores se refieren a una propuesta basado en valor de ingeniería de requerimientos, enfocándose en el proceso de crear valor a través de la selección de requerimientos para un lanzamiento de software. De manera similar, Ojala en [19] ofrece una propuesta para la evaluación de valor de productos principalmente a través de la priorización de requerimientos y atributos de calidad, asignando porcentajes a los atributos de calidad de acuerdo a la opinión de involucrados. Pero estas propuestas no están enfocadas a la estimación de valor de productos software. Estos no ofrecen visibilidad para la administración del valor, ni tampoco ofrecen datos cuantitativos acerca de la estimación de valor durante el proceso de desarrollo de software. Se encontraron diferentes definiciones de valor, todas válidas en su contexto de investigación, pero ninguna específica para valor de productos software. Por lo tanto en ésta tesis se propone una definición de valor, pero específica para productos de valor. La definición de valor propuesta considera los factores que influencian el valor en productos finales o intermedios. La definición está basada en los trabajos relacionados de las conclusiones del estado del arte de esta tesis (Sección 2.3). La definición que se propone es la siguiente: Valor es una medida - por lo general en dinero, esfuerzo o intercambio, o en una escala comparativa - de bienes de software o servicios (conjunto de programas, procedimientos, algoritmos y su documentación) que satisfagan las necesidades, deseos y expectativas de los usuarios. Todos estos bienes o servicios son influenciados por los atributos de calidad del producto software. Basados en esta definición de valor específica para productos software, se retoma la ecuación de Ojala en [19] la cual a su vez está basada en un estándar de SAVE [23], que incluye al factor de calidad. Por lo tanto, esta tesis propone utilizar la misma ecuación propuesta por Ojala 1 (introducida en la Sección 2.2.2), pero modificando ligeramente sus elementos para alinearlos a los objetivos de ésta tesis ligeramente sus elementos para alinearlos a los objetivos de esta tesis. V alor = F uncionalidad + Calidad Costo (1) En donde: xxiii Funcionalidad es el trabajo específico que un diseño o ítem (producto, servicio o proceso) debe realizar (Ej. de trabajo: puntos función, necesarios para desarrollar un componente de software). • Calidad es la necesidad, deseos y expectativas del usuario (Ej.: atributos de calidad de software como: usabilidad, portabilidad, seguridad, trazabilidad, etc.). • Costo es la cantidad de esfuerzo necesario para desarrollar el producto, servicio o proceso (Ej.: el esfuerzo expresado en horas-hombre). Como ya se ha mencionado anteriormente, el valor está altamente relacionado a la percepción. Entonces, la identificación y cuantificación de los elementos que contribuyen a disminuir o aumentar el valor proveerán de un método formal y sistemático para obtener una percepción más acercada a lo real en cuanto a valor de producto software. Particularmente para productos software estos elementos de valor deben ser gestionados durante el proceso de desarrollo. Por lo tanto en ´esta tesis se propone la definición de Indicadores de Valor del Producto Software (basada en [20]), los indicadores de valor son los elementos que definen al valor. La definición es la siguiente: Es un medio para proporcionar información específica y cuantitativa sobre el estado o la condición del valor del producto de software. Los indicadores son desarrollados basados en medidas cuantitativas o estadísticas de aquellos elementos que agregan/destruyen el valor de los productos de trabajo. En este sentido, los indicadores permiten obtener visibilidad sobre el valor que es realmente ofrecido al cliente. Esta tesis propone un modelo de referencia para el proceso de estimación de valor (RESVEP), el cual ha sido desarrollado considerando los resultados del análisis del estado del arte (Capitulo 2) con respecto a la estimación de valor en el área de ingeniería de software. RESVEP es un marco abstracto que se compone de un conjunto de procedimientos (tales como actividades, productos de trabajo, sub-procesos, documentos, o tareas) que están relacionadas a través de un flujo de trabajo establecido. El RESVEP describe el proceso para realizar una estimación de valor de productos de trabajo en un proyecto de software. El proceso de la estimación de valor del producto software está dividido en las siguientes fases: 1. La definición del contexto del proyecto para la estimación de valor (PCDVE). Es de suma importancia conocer las circunstancias y datos que rodean el proyecto en donde se va a aplicar el RESVEP, debido a que el contexto del proyecto debe ser definido para establecer diversos aspectos necesarios para el proceso de estimación de valor del producto de desarrollo. Estos aspectos pueden ser el conjunto de indicadores, las mediciones y aplicación de ecuaciones. En este punto se definen fases (disciplinas o procesos, esto depende del modelo de proceso de desarrollo utilizado), actividades, involucrados y productos de trabajo. 2. Estimación de calidad (QE). Esta es la parte más difícil de medir, ya que los atributos de calidad varían y dependen de la percepción de los involucrados en definir la calidad del producto. Los atributos de calidad que son complicados de cuantificar, por ejemplo: usabilidad, portabilidad, reusabilidad o eficiencia. Esta tesis provee una propuesta para estimar la calidad del software, mayormente basada en Software engineering-Software product Quality Requirements and Evaluation (SQuaRE)Quality model [12]. La estimación de calidad se compone de los siguientes pasos: 2.1 Asignación de los indicadores de calidad de valor (VQIA). En este paso se asignan un conjunto de indicadores de calidad a cada producto de trabajo. En este sentido los indicadores de calidad dependen de los atributos de calidad del tipo de producto de trabajo. El RESVEP se enfoca en definir indicadores de calidad para obtener mediciones de calidad (y por ende de valor). Estos indicadores son usados para identificar si el producto va en el camino correcto para alcanzar el valor esperado de acuerdo al plan de producto diseñado por el área de negocios. Los atributos de calidad afectan la calidad en general, y calidad tiene un alto impacto en el valor, por lo tanto en el contexto de esta tesis, los indicadores de calidad son considerados indicadores de valor. 2.2 Medición de indicadores de calidad (VQIM). En este paso se le asignan mediciones a cada indicador de calidad. Se realizan estas mediciones y se aplican las ecuaciones correspondientes para obtener datos cuantitativos. Las mediciones y ecuaciones están principalmente basadas en el estándar ISO 9126 [10]. 2.3 Calculo de Calidad (QC). El cálculo de calidad está basado en el conjunto de indicadores de calidad que son asignados a un producto (Paso 2.1). Después de las mediciones y asignación de ecuaciones (Paso 2.2) para los indicadores de calidad del producto (de acuerdo con los atributos de calidad del producto), entonces la ecuación correspondiente es aplicada para obtener una medida cuantitativa para la calidad del producto estimado. 3. Estimación de funcionalidad (FE). Los datos de funcionalidad son obtenidos a través del plan de proyecto, en el cual la funcionalidad se define. Por lo tanto, para el propósito de calcular la Ecuación 1, esta tesis recomienda utilizar las estimaciones plasmadas en el plan de proyecto, ya que este plan es diseñado en conjunto con los involucrados. En este sentido, el RESVEP considera la funcionalidad de un producto como funcionalidad esperada (la definida antes de iniciar el desarrollo del producto) e implementada (la calculada al realizar la estimación de valor). 4. Estimación de costo (CE). Los datos de costo son establecidos por la compañía que desarrolla el producto, normalmente plasmados en el plan de proyecto. Esta es una medición que normalmente está presente en las estimaciones de un proyecto. Para el propósito de aplicar la Ecuación 1, esta tesis recomienda utilizar las estimaciones de costo del plan de proyecto, ya que son las más cercanas a la realidad. El RESVEP utiliza el costo (estimado y real) para estimar el valor del producto. 5. Estimación de valor (VE). La última fase del RESVEP es la estimación del valor estimado, el cual es el valor con el que realmente cuenta un producto. Utilizando la Ecuación 1, la cual utiliza los indicadores de valor previamente establecidos -funcionalidad, calidad y costo- y calculados en los Pasos 2-4, la estimación de valor entonces es calculada. Además esta tesis provee de la información necesaria para aplicar el RESVEP en la Sección 3.3. Contiene una guía con actividades propuestas para aplicar el RESVEP, estas actividades vienen con una descripción y las roles de los involucrados en estas actividades. También incluye un conjunto de indicadores de calidad con sus medidas y ecuaciones para el proceso de diseño y el proceso de construcción descritos en el estándar ISO 12207 [11]. Además provee de información para calcular la calidad basada en el conjunto de indicadores seleccionados. También explica a detalle que datos son necesarios y como utilizar la ecuación para estimar el valor. RESVEP es aplicado en dos casos de estudio, estos casos de estudio fueron realizados con datos reales. El RESVEP fue instanciado para cada uno de los casos de estudio. Durante las estimaciones, el evaluador revisó la documentación de los casos de estudio y se llevaron a cabo reuniones con los product managers de ambos equipos de desarrollo. Ambos casos de estudio fueron realizados siguiendo las guías propuestas en la Sección 3.3 y los pasos del RESVEP de la Sección 3.2. Basado en los resultados de los casos de estudio, la utilidad de RESVEP fue identificada, se detectaron desviaciones en el proceso de desarrollo que afecta a los indicadores de valor, y principalmente información sobre calidad fue adquirida la cual afectará el valor de los productos cuando sean lanzados al mercado, todo esto surge del análisis cuantitativo de los resultados de los indicadores de valor.