DESARROLLO DE SOFTWARE Eliseo Castro Jimenez Universidad del Norte, Divisin de Especializaciones, Especializacin en Gerencia de Sistemas de Informacin Resumen - Desarrollar productos de software se ha convertido en una labor no solo para las empresas dedicada a este negocio, sino por empresas que cuentan con un rea de Desarrollo de Software dentro de su departamento de Tecnologia de la Informacin y se preocupan por la calidad con que se elabora el producto. El objetivo de esta lectura, es repasar las diferentes alternativas con que cuentan las organizaciones para gestionar el ciclo de vida de desarrollo de software orientado a la calidad.
INTRUCCIN La exigencia del mercado, la competencia globalizada, la evolucin de las tecnologas, satisfacer a los clientes, reducir costes, la preocupacin de entregar productos con calidad y libre de defecto, ha permitido que la Ingeniera de Software encuentre una madurez y crecimiento en sus estndares y procesos, permitiendo cumplir con estos desafos en estos das. Por eso, existen metodologas que han entrado en su etapa de madurez, que han logrado evolucionar y permiten ser utilizada en cualquier tipo de organizacin que desarrolle software, pero enfocado a la Calidad. La calidad se ha convertido en un pilar fundamental para cualquier organizacin, por ende la Ingeniera de Software no se ha quedado atrs y gracias a los modelos y normas existentes, han permitido que las organizaciones logren sus objetivos. Apoyndonos con los modelos como es el caso de ISO/IEC 90003, ISO/IEC 15504, CMM, CMMI, SCAMPI, normas como la ISO 9001, estndares como la ISO/IEC 12207 y metodologas de desarrollo de software como UP, RUP, MSF, ESPIRAL, TSP/PSP, entre otras. Ahora bien, para poder saber el grado de madurez en que se encuentra una organizacin sobre su modelo de desarrollo de software, grado de calidad, conocer cunto tiempo se puede demorar la construccin de un producto con el objetivo de costear y gestionar sus recursos, en necesario la medicin y estimacin. La medicin y estimacin nos va a permitir lograr con los siguientes objetivos fundamentales: ayudarnos a entender que ocurre durante el desarrollo y el mantenimiento, permitirnos controlar que es lo que ocurre en los proyectos y poder mejorar los procesos y productos [2].
II METODOLOGIAS PARA LA GESTIN DEL CLICLO DE VIDA DE DESARROLLO DE SOFTWARE En la Ingeniera de Software existen diversas metodologas que permite la gestin del ciclo de vida de desarrollo de software y que se encuentran enfocados a la calidad o no, como los es la programacin extrema. A continuacin describiremos brevemente algunas de ellas. A. PSP (Personal Software Process) Permite gestionar de manera individual las prcticas de ingeniera de software, creando una disciplina de control de sus procesos y la mejora continua. El proceso PSP apoya a las empresas que estn llevando a cabo o tienen planeado implementar un plan de mejora de procesos basados en un modelo como CMM, ayudando a crear personal capacitado y disciplinado en su trabajo [1]. B. TSP (Team Software Process) Permite gestionar equipos para el desarrollo de software de calidad y que se construye bajo la base del PSP. El proceso TSP se define a travs de una seria de guiones en los que se describen todos los aspectos de planificacin de proyectos y desarrollo de productos [1].
C. RUP(Rational Unified Process) Proceso para la gestin de desarrollo de software bajo los requisitos del usuario, basado en componentes interconectados entre si y que est diseado bajo el enfoque incremental e iterativo. Para el diseo de los sistemas utiliza el lenguaje de modelamiento unificado (Unified Modeling Language, UML) y est compuesto por 4 fases: Inicio, Elaboracin, Construccin y Transicin. D. XP (Extrem Programming) Es una metodologa que no est enfocada a la calidad ya que se basa en lo simple, en la retro-alimentacin continua entre usuario y desarrollador y poca documentacin. Su principal objetivo es la satisfaccin del usuario y potenciar al mximo el trabajo en equipo [3]. E. SCRUM Es una metodologa gil enfocada en el proceso iterativo e incremental teniendo como principal objetivo producir mayor cantidad de software con calidad en periodos de tiempo llamado Sprint. Un aspecto importante de Scrum es que al final de cada Sprint hay una demostracin, con el objetivo de mostrar al cliente las funcionalidades finalizadas y de esta manera involucrarlo en el proyecto [3].
II INGENIERIA DE REQUISITOS COMO COMPONENTE PRINCIPAL PARA EL DESARROLLO DE SOFTWARE La Ingeniera de requisitos es [4]: La disciplina para desarrollar una especificacin completa, consistente y no ambigua, la cual servir como base para acuerdos comunes entre todas las partes involucradas y en donde se describen las funciones que realizar el sistema. Es tan importante los requisitos dentro la construccin de un software ya que define el alcance del mismo, la prioridad del desarrollo, entrega y establece el tiempo y coste del mismo, convirtindose en un contrato entre el proveedor y su cliente. En los Sistemas de Informacin existen diferentes tipos de requerimientos, los funcionales y no funcionales. Los requisitos funcionales son aquellos expresados por los usuarios y describe el problema a resolver y sus deseados para alcanzar el objetivo. Los requisitos no funcionales son las caractersticas o capacidades tcnicas que debe contar el sistema, permitiendo satisfacer las necesidades del usuario; los requerimientos no funcionales pueden estar categorizados de diferentes en diferentes tipos: usabilidad, seguridad, desempeo y estabilidad, mantenimiento, soporte, hardware, restricciones, entre otras. A pesar de lo importante y crtico que son los requerimientos, no se le presta la importancia del caso; por consiguiente, es una de las fases ms importante que debe tener cualquier metodologa y que se debe contar con la correcta definicin y madurez dentro de un modelo de desarrollo para poder entregar productos con calidad dentro del costo y tiempo ofrecido.
III MODELO DE MADUREZ PARA EL DESARROLLO DE SOFTWARE Segn las estadsticas, menos del 20 % de los proyectos se completan en costes, plazos, alcance y nivel de calidad. Los factores que influyen son muchos y los puntos ms importantes del fracaso, son: Falta de experiencia generalizada; poco realismo de los planes de negocio; cultura de administracin de los proveedores y exceso de neotecnicismo en los desarrolladores. [5]. Las organizaciones se han adoptados procesos que son informales, preocupndose ms por la parte tcnica que la gestin y madurez de sus procesos. Por lo tanto, existen modelos de madures que nos permite lograr eficientemente procesos eficientes, madurando no solo el mismo sino a los colaboradores, llegando ser predecible y repetible. No enfocaremos en este apartado de CMMI (de las siglas en ingls Capability Maturity Model Integration), que nos ofrece lo descrito anteriormente. CMMI fue un modelo adoptado por el gobierno de los Estados Unidos por intermedio de su secretaria de defensa con el nombre inicial de CMM (Capability Maturity Model), para asegurar que su s proveedores cumplieran unos niveles de calidad. Viendo el xito de este modelo se extendi a la Ingeniera de Sistemas y otras disciplinas.
A. Qu ES CMMI? CMMI (Capability Maturity Model Integration), es un modelo de madurez en busca de la mejora de procesos que provee a las organizaciones en sus elementos esenciales para ejecutarlos eficazmente. Puede ser usado para orientar la mejora de los procesos a travs de la vida de un proyecto, un rea o una organizacin entera. Ofrece un conjunto de buenas prcticas que inicia desde la concepcin hasta la entrega y su mantenimiento. B. DISCIPLINA DE CMMI Existes unas disciplinas de conocimiento que abarca CMMI para su implementacin; estas disciplinas son: Ingeniera de Sistemas: es el desarrollo de sistemas de todo tipo, exista o no software. La ingeniera de sistemas se centran en transformar necesidades del cliente en productos y es soportado a lo largo de su vida. Ingeniera de Software: es el desarrollo de software y va encaminado a aplicar metodologas sistemticas, disciplinadas y cuantificables para el ciclo de vida del desarrollo de software. Desarrollo Integrado de Productos y Procesos (Integrated Product and Process Development IPPD): es un enfoque sistemtico permitiendo la colaboracin eficiente del personal durante la vida del producto con el fin de satisfacer las necesidades o requerimientos de los clientes. Relacin con proveedores: permite la gestin de los proveedores que estn desarrollando un producto a entregar. C. NIVELES DE MADUREZ Un nivel de madurez es una etapa evolutiva bien definida, para convertirse en una organizacin madura [5]. CMMI cuenta con 5 niveles de maduracin de los cuales son: Inicial, Gestionado, Definido, Gestionado Cuantitativamente y En Optimizacin. El primer nivel (Inicial), es el nivel donde se encuentra todas las organizaciones que no tienen un proceso, metodologa o estndar definido o estn en caos. Es el que inicia cualquier organizacin que desee trabajar bajo este modelo. El segundo nivel (Gestionado), los proyectos son gestionados y controlado durante el desarrollo del mismo. El tercer nivel (Definido), es donde los procesos de ingeniera se implantan con mayor efectividad, la organizacin es proactiva, existen procesos estandarizados, hay una mejor estimacin, se gestiona los requisitos, entre otros procesos crticos. El cuarto nivel (Gestionado Cuantitativamente), en este nivel ya hay medicin, los proyectos y procesos de pueden medir para cumplir un objetivo; los ingenieros utilizan datos y tcnicas de medicin para predecir y tomar decisiones. Y el ltimo nivel (En Optimizacin), es donde se dice que la organizacin es totalmente madura y se centra en la mejora continua, generando innovaciones en sus procesos y tcnicas. Este es uno de los modelos de madurez ms utilizado, riguroso, largo y costoso de implementar, apoyado de la metodologa TSP/PSP pero permitiendo integrar tambin con otras como es el caso de RUP, MSF, entre otras y hasta con metodologas agiles como SCRUM.
IV LAS MEDICIONES DEL SOFTWARE
Todo se mide, nuestras vidas, procesos, actividades, deseos, etc. Por lo tanto, la importancia de medir es para saber si se cumple un objetivo, saber el horizonte, si requerimos mejoras y para buscar la excelencia. Ahora, la forma de uno saber si un proceso cumple con un grado de calidad y debe ser mejorado es por intermedio de indicadores; se mide tanto el producto como el servicio, el esfuerzo, tiempo y todo lo que este a su alrededor. Se puede afirmar que una de las formas de madurar es con la medicin y contar con buenos indicadores. La forma de medir con los indicadores es por intermedio de un modelo de anlisis, que se podra catalogar algoritmo o clculo matemticos. Estos algoritmos o clculo matemticos, estn compuesto por un objetivo, valor umbral y patrones para determinar la necesidad de la accin o para describir el nivel de confianza del resultado entregado. Por lo tanto la medicin es el conjunto de operaciones que permite obtener el valor del resultado de medicin para un atributo de una entidad, usando una forma de medir [2]. Por consiguiente, todo software tiene un objetivo final, satisfacer las necesidades del cliente. Dentro del ciclo de vida de un desarrollo de software podemos contar un cien nmeros de indicadores, pero siempre van existir los ms bsico y que permite medir la calidad del mismo. A nivel de estimacin de tiempo de desarrollo podemos hablar de Punto de Funcin o Punto de Casos de Uso, donde el primero nos permite estimar el tamao de un desarrollo basndonos solo con los requerimientos funcionales y el segundo basndonos con los Casos de Uso; para estimar el costo de un proyecto, contamos con el modelo COCOMO II. Tambin existen otras medidas clsicas para estimar tamao del software y bastante utilizadas que dependen de la experiencia y documentacin que se tenga, que est basado en las Lneas de Cdigo (LOC, Lines of Code). Tambin contamos con mtricas de estimacin de tamao de software que son ms precisas, porque se desarrollan en la etapa de diseo del sistema basndonos en el modelamiento con UML; estas mtricas son: MOOSE, tambin conocida como mtricas CK, mtricas MOOD, las de Loren y Kidd, y muchos ms; tambin encontramos en el mundo de la medicin, mtricas a nivel de Base de Datos como lo son: Moody, Piattinni et al, entre otras [2]. Siempre se ha medido y la medicin se posiciona en una disciplina importante en cualquier rama, dentro de la ingeniera de sistemas no debe ser la excepcin teniendo en cuenta las particularidades que tienen los sistemas ante los otros productos y servicios. Por eso los modelos de madurez toman como un alto valor la medicin y definicin de mtricas o indicadores que permiten visualizar ms all de lo que se pueda pensar o establecer y es el apoyo para lograr una madurez dentro de una organizacin y en especial, en el rea de Tecnologia de la Informacin.
CONCLUSIONES Por ms que se cuenta con recursos, herramientas, excelente talentos humanos, personas comprometidas y dems aptitudes que puede contar un buen profesional, debemos proveernos con modelos, metodologas e indicadores que permite la optimizacin del mismo dentro de la organizacin y lograr el grado de madurez enfocado a la calidad, dando como cumplimiento a la satisfaccin de nuestros clientes cumpliendo con los objetivos y necesidades. Lo ms importante en tener en cuenta que la calidad para desarrollar un producto de software no es solo para las organizaciones dedicada a este negocio, sino para todas las organizaciones que dentro de su rea de Tecnologia de la Informacin desempee esta funcin y se debe tener como objetivo estratgico dentro de la organizacin ya que la supervivencia depende muchos de los Sistemas de Informacin con que se cuenta. Durante la existencia de la Ingeniera de Software se han publicado y madurado muchos modelos y metodologas en que las organizaciones se pueden apoyar y lo ms importante es entender cules de esta puede apoyar a cumplir sus objetivos, desarrollar con calidad y llegar a la maduracin requerida.
REFERENCIAS [1] Mario G. Piattini, Flix, O. Garcia e Ismael Caballero, Calidad de Sistemas Informaticos, 1ra ed., Alfaomega Grupo Editores, S.A. de C.V., Mxico, Mayo 2007. [2] Mario G. Piattini, Flix O. Garcia, Javier Garzs P., Marcela F. Genero B., Medicin y Estimacin del Software: Tcnicas y mtodos para mejorar la calidad y la productividad, 1 ra ed., Alfaomega Grupo Editores, S.A. de C.V., Mxico, Agosto 2008. [3] Marlene Arias, Deisy Carrero, Francisca Grimn y Otniel Morales, Software para la evaluacin Online bajo el enfoque de procesos, 2006, [en lnea], Acceso a travs de: http://ezproxy.uninorte.edu.co:2120/login.aspx?direct=true&db=ed soai&AN=edsoai.756122690&lang=es&site=eds-live [4] Caridad Racero Borrell, Importancia de la ingeniera de requerimientos dentro del ciclo de desarrollo de software. (Spanish)." Tono: Revista Tcnica De La Empresa De Telecomunicaciones De Cuba, S.A no. 3: 52-56., Octubre 2006, [en lnea], Acceso a travs de: http://ezproxy.uninorte.edu.co:2120/login.aspx?direct=true&db=bt h&AN=34162106&lang=es&site=eds-live [5] Madeleine Huayta Garcia, CMMI: ASEGURAMIENTO DE LA CALIDAD. (Spanish)." Ingenieria Industrial 27, no. 2/3: 11- 15. Fuente Acadmica Premier, 2006, [en lnea], Acceso a travs de: http://ezproxy.uninorte.edu.co:2120/login.aspx?direct=true&db=fu a&AN=25387643&lang=es&site=eds-live