Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
DISCLAIMER <replace with the standard disclaimer, if required> Ibustibeate ratur aspelestia deliquia sitae etumquis sande ni nume nectur reped quat. Et enis in commo officat vollabo. Ut volorum sit excesto te venimax imoluptae nulpa quissit faceste non ped moloriate molorenit mo totat res eaquid minctatur ant laborporum. RESUMEN - ESTRATEGIA DE DESARROLLO DE SOFTWARE (DELETE THIS BLANK PAGE AFTER CREATING PDF. IT’S HERE TO MAKE FACING PAGES AND LEFT/RIGHT PAGE NUMBERS SEQUENCE CORRECTLY IN WORD. BE CAREFUL TO NOT DELETE THIS SECTION BREAK EITHER, UNTIL AFTER YOU HAVE GENERATED A FINAL PDF. IT WILL THROW OFF THE LEFT/RIGHT PAGE LAYOUT.) 1 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV 2 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV CONTENIDOS INTRODUCCIÓN 3 DEFINICIÓN DEL PROYECTO. 4 DEFINICIÓN FUNCIONAL 4 DEFINICIÓN NO FUNCIONAL (FURPS+) 4 DESARROLLO DEL SOFTWARE 4 GESTIÓN DEL PROYECTO – DIVISIÓN TECNOLOGÍA 5 ORGANIZACIÓN CAPITAL HUMANO 5 GESTIÓN CAPITAL HUMANO 6 GESTIÓN DESARROLLO SOFTWARE 6 MODELO CONCEPTUAL 6 ESPECIFICACIÓN FUNCIONAL Y NO FUNCIONAL 7 DESARROLLO DE SOFTWARE 8 PROCESO DE GENERACIÓN DE SOFTWARE 8 PROCESO INCREMENTAL E INTERACTIVO 8 ÁMBITO DEL DESARROLLO 9 ASEGURAMIENTO DE CALIDAD Y PRUEBAS 10 IMPLEMENTACIÓN (AMBIENTE DE PRODUCCIÓN) 11 ACTIVIDADES POST IMPLEMENTACIÓN 11 PILA TECNOLÓGICA 11 TRANSFERENCIA DE CONOCIMIENTO 12 3 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV INTRODUCCIÓN La asistencia técnica que brinda el Proyecto de USAID para la Gestión de las Finanzas Públicas – DRM, tiene definido su alcance mediante un instrumento contractual, y a partir de este, se identifican las áreas beneficiarias o áreas de acción en las cuales el proyecto desarrollará no solo componentes informáticos, sino de apoyo técnico. En este sentido, se identifican y priorizan las iniciativas en las que se estará brindando apoyo. Este documento presenta una visión general y resumida de la estrategia de desarrollo informático que implementa DRM en sus iniciativas de construcción de soluciones de software. Si bien es cierto a lo largo de este documento se mencionan varias especificaciones de estándares o mejores prácticas, el proyecto sólo recoge aquellas porciones que considera aportan valor a las iniciativas de desarrollo de software, no se asume un marco de trabajo de forma completa, sino que se toma aquello que se considera será más adecuado para el entorno en el que se desarrolla la asistencia técnica. Es posible, por ejemplo, que de la ISO 38500 solo se tomen algunos aspectos del gobierno de TI y no toda la especificación. De igual forma, con UML, no se utilizan todos los artefactos de la especificación, sino solo aquellos que se consideran oportunos para el escenario del proyecto en el Ministerio de Hacienda, debido a que la definición funcional de los sistemas, que son los artefactos que se adoptan del UML, corresponde al equipo contraparte y deben ser estos documentos de fácil utilización para el área funcional y para el área de programación. Por ejemplo, de RUP se toma la idea del desarrollo iterativo e incremental, así como también la elevación de la abstracción, la cual se logra mediante generación de código se abstrae de la construcción multicapa y se enfoca a los desarrolladores en las tareas de aplicación de reglas de negocio o de aspectos visuales. En otras palabras, las fases y componentes que forman parte de la estrategia de desarrollo tienen aplicabilidad en escenarios como el del Ministerio de Hacienda bajo proyectos como DRM, por las características del entorno, personal contraparte limitado, necesidad de acceder a tecnologías de punta y a estándares de desarrollo internacional. Es de hacer notar que esta es una estrategia probada que data del año 2005 y ha dado buenos resultados, coadyuvando a la construcción de soluciones tecnológicas exitosas. No obstante, con cierta periodicidad se evalúa si es necesaria una actualización o se deben incorporar nuevos estándares o componentes que demanda la industria del software y que han alcanzado madurez. La idea de esta revisión es evitar la obsolescencia tecnológica de las piezas de software que se construyen. Antes de entrar a la explicación del proceso, es necesario abordar algunas fases o etapas que se desarrollan en todo proyecto de DRM. 4 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV DEFINICIÓN DEL PROYECTO. En esta fase se define alcance, las necesidades a nivel 0, es probable que exista un modelo conceptual, se especifica tiempo grosso modo, se realiza un adecuado manejo de expectativas, canales de comunicación, equipos contraparte y otros aspectos relevantes para el proyecto. En esta fase normalmente se define el qué, sin entrar en detalle en el cómo. Se define la coordinación entre las autoridades del Ministerio de Hacienda y DRM, con el objetivo de direccionar los recursos que estarán trabajando bajo el contexto del proyecto. Con la visión de garantizar que el esfuerzo tecnológico esté alineado con la estrategia de la entidad, además, los posibles riesgos vinculados inherentemente al desarrollo tecnológico no son solo conocidos, sino también administrados. En esta definición se identifican las personas que tienen interés o estarán vinculados de alguna forma en el resultado del proyecto, proceso o componente de software. Normalmente tienen características de conocimiento de negocio, tomadores de decisión o liderazgo. Además, deben ser investidas de la autoridad. Finalmente se definen los canales de comunicación válidos para el desarrollo del proyecto, proceso o componente de software. Algunos aspectos fundamentales que se definen en este apartado y que deben quedar claro: • Gobernanza (ISO/IEC 38500:2008). • Alcance, tiempo y calidad. • Interesados. • Establecimiento de canales de comunicación. DEFINICIÓN FUNCIONAL • Documento de visión • Procesos principales • Casos de Uso • Prototipos de pantallas • Diagrama de Casos de Uso DEFINICIÓN NO FUNCIONAL (FURPS+) • Especificaciones suplementarias • Estándar de desarrollo • Generación de código • Aseguramiento de calidad • Separación de Ambientes de desarrollo, pruebas, producción DESARROLLO DEL SOFTWARE • Actualización del plan detallado de Casos de Uso (Seguimiento SCRUM) 5 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV • Análisis y diseño arquitectónico • Arquitectura de la solución • Desarrollo detallado de Casos de Uso • Pruebas Unitaria • Aseguramiento de calidad • Gestión de cambios • Pruebas integrales • Liberación GESTIÓN DEL PROYECTO – DIVISIÓN TECNOLOGÍA Con la finalidad de gestionar el recurso humano designado a desarrollar soluciones de software se utiliza la siguiente organización: ORGANIZACIÓN CAPITAL HUMANO Gerente TI Coordinador TI Coordinador TI Líder IT (pasantes) Arquitecto Líder componente TI Líder Componente TI Líder componente TI Líder Componente TI Pasante IT Pasante IT Pasante IT Líder arquitectura Ingeniería de Requerimientos Lider Aseguramiento Calidad Figura No. 1 Organigrama de TI En la estructura organizativa mostrada en la figura anterior el Gerente de Tecnología en su calidad de responsable de la División del Área de Tecnología tiene a su cargo dos grupos de trabajo de componentes (en función de los subsistemas o módulos a desarrollar). Además, es apoyado por el líder IT para la gestión de pasantes que es parte del compromiso empresarial de la empresa y que sirve de incubadora de nuevos candidatos a incorporar al proyecto de desarrollo de software. Finalmente, gestión las iteraciones que cada generador de código debe realizar con el apoyo de los arquitectos, en donde además se ven temas estructurales del desarrollo con el fin de ir estandarizando funcionalidadestipos. • Coordinador: responsable de gestión del desarrollo del subsistema en cuestión. • Arquitecto de software: encargado de diseñar la solución del software. • Cinco Desarrolladores: encargados de programar la solución informática. • Un analista de negocio: encargado de gestionar/ apoyar en el diseño y validación de los Casos de Uso, así como pruebas de calidad del software desarrollado. • Equipo funcional o contraparte. Definen funcionalmente utilizando Casos de Uso. 6 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV GESTIÓN CAPITAL HUMANO Para maximizar el esfuerzo realizado del Recurso Humano se utiliza la filosofía de trabajo SCRUM, el cual acorde a su definición: Está diseñado para equipos de tres a nueve desarrolladores que rompen su trabajo en acciones que se pueden completar dentro de ciclos de duración fija (llamados "sprints "), seguimiento de progreso y re-planificar en las reuniones diarias de 15 minutos stand-up, y colaborar para entregar viable software cada sprint. “. Adicionalmente como mecanismo de control del trabajo diario realizado se utiliza software de gestión de tareas el cual es responsabilidad de cada uno de los integrantes del grupo registrar sus actividades diarias con la finalidad de: • Control de las actividades y tiempos realizados por cada uno de los miembros del equipo, horas de ingreso y de salida del personal. • Información de análisis sobre costos asociados a las actividades realizadas dado el recurso humano registrado en dichas tareas. GESTIÓN DESARROLLO SOFTWARE Para definición del proyecto del área de tecnología se establece un plan del mismo, que conlleva las fases de Planificación, Diseño, Ejecución y Finalización, la cual está conformada por tareas y estimaciones de tiempo provistas y tomadas en común acuerdo entre Coordinadores, Analistas de Negocio, Arquitecto de la Solución y Programadores, sobre los documentos de Visión y Casos de Uso (Ver Especificación Funcional y No Funcional) a su vez se considera el nivel de prioridad y urgencia que se pueda tener por parte de la Institución beneficiaria sobre la oportunidad que se desea aprovechar o la necesidad no cubierta para la creación del plan. MODELO CONCEPTUAL Fábrica Software Usuarios Expertos Contraparte Técnico Consultor DRM Casos de Uso Documento de Visión Modelo E-R G e n e ra d o Automatización DRM Especificaciones Desarrollo (Generación de Código) Pruebas Lógica de negocio DRM MH Convenciones Estándares Buena Práctica Framework Componentes Pruebas Automatizadas Ambiente Pruebas Bug Tracker Modelo Conceptual – IT Estrategia DRM Ambiente Desarrollo Control Versiones Codigo Fuente Integrador Pruebas Unitarias Casos de Prueba IT Analista de negocio Figura No. 2 Modelo conceptual de la estrategia de desarrollo de software 7 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV El flujo de trabajo que conlleva el modelo conceptual de la estrategia de desarrollo de software considera las siguientes fases: ESTABLECIMIENTO DE REQUERIMIENTOS DESARROLLO DEL SOFTWARE VALIDACIONES PRUEBAS IMPLENTACION EN PRODUCCION 1 2 3 4 Figura No. 3 Flujo de trabajo ESPECIFICACIÓN FUNCIONAL Y NO FUNCIONAL Los Usuarios Expertos / Contraparte Técnico establecen las necesidades o requerimientos del software a desarrollarse, para lo cual, en función de reuniones de trabajo, se discuten y desarrollan los documentos en el siguiente orden: • Documento de Visión. Documento que tiene como finalidad establecer el propósito y alcance del módulo/sistema/subsistema a desarrollar, detallando para ello las oportunidades del negocio a solventar, definición del problema, costos y licenciamiento entre otros. Dicho documento permite identificar a la alta gerencia sobre los beneficios a obtener del desarrollo de la herramienta tecnológica. • Casos de Uso: Documento que describe a nivel granular los actores involucrados que interactuarán con la funcionalidad/opción/proceso descrito en el presente documento, el flujo de trabajo, los campos o atributos que deben almacenarse, pantallas requeridas, reportes, reglas de negocio, subflujos, etc. Lo anterior con el objetivo que dicho documento sirva de guía al programador y minimice la brecha de la expectativa del usuario final con respecto a la necesidad planteada. Ya que será validada la funcionalidad desarrollada con el presente documento. Con la finalidad de apoyar a los usuarios expertos a desarrollar los Casos de Uso y Documento de Visión con el necesario detalle y formato esperado, se destina a personal IT Analista de Negocio, quien tiene la misión de guiar y validar el trabajo desarrollado por los usuarios expertos. Ya que en caso de no cumplir con el detalle esperado en dichos documentos el(los) usuario(s) experto(s) deben corregir y/o ampliar las necesidades descritas, para alcanzar el nivel de especificación necesario para la construcción del software. Adicional a las especificaciones funcionales, se solicita un documento de especificaciones no funcionales que sigue la plantilla de FURPS+ en donde se plasma aspectos de seguridad, W3C, marco de trabajo para el desarrollo, componentes del marco, compatibilidad, adherencia a políticas, entre otros aspectos. 8 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV DESARROLLO DE SOFTWARE Con los documentos debidamente validados por el IT Analista de Negocio en la fase Especificación Funcional y no Funcional, se designa un Arquitecto de la Solución el cual a partir de los Casos de Uso establece el Diseño de la Solución, creando el Modelo Entidad Relación (Estructuras de base de datos) que almacenarán la información necesaria, a partir de ello se inicia el desarrollo del software per se, utilizando para ello herramienta de generación de código automatizado cuya finalidad es agilizar el trabajo a realizar, asegurar la aplicación de estándares, pantallas transaccionales, clases, capas de software, etc. reduciendo el tiempo de trabajo de los programadores y el riesgo de errores en su construcción, ya que la herramienta de generación utiliza un conjunto de convenciones, estándares y buenas prácticas definidas por el mercado de tecnología para la creación de los componentes de software. PROCESO DE GENERACIÓN DE SOFTWARE Se utiliza esta técnica informática dentro de la estrategia de desarrollo de software y que opera en marcos de trabajo Modelo-Vista-Controlador como el que está estipulado en los proyectos que se desarrollan en el Ministerio de Hacienda. La técnica de generación de código, haciendo uso de plantillas estáticas crean fragmentos de código (header, footer, POM, etc) que tienden a no cambiar y que se incrustan en algunos casos dentro de codificación más complejas que son implementadas por las plantillas dinámicas (responsables de crear la vista, servicios y persistencia), entre ambas se realizan convergencias para ir construyendo clases java, jsp, javascript, xml, archivos de configuración o cualquier otro componente necesario de un proyecto de esta naturaleza y todo se hace a partir de una conexión a base de datos. El proceso identifica las entidades en la base de datos y a partir de ahí se generan automáticamente los CRUD dinámicamente para cada entidad en la base de datos. La creación del proyecto se organiza y separa en carpetas que previamente se han convenido para una mejor sostenibilidad del software. Para mayor legibilidad del código se utilizan una serie de tags que encapsulan la complejidad del código, no solo desde el punto de vista funcional, sino desde la parte visual. La única capa en donde se realiza programación de lógica de negocios es en la capa del controlador, a nivel de la capa visual se realizan solo validaciones de entrada de datos, esto implica que el programador desarrolla un software muy estandarizado, legible, escalable. PROCESO INCREMENTALE INTERACTIVO El desarrollo incremental e iterativo es una de las estrategias que mejor se acoplan a los desarrollos informáticos que se tienen definidos realizar en el Ministerio de Hacienda, en donde la especificación funcional se captura mediante Casos de Uso y son los que dirigen el desarrollo. La idea es que cada iteración tome un conjunto de Casos de Uso y transite el flujo definido en cada una de las iteraciones relacionadas a la codificación: análisis, diseño, implementación, prueba y despliegue. Hay una parte arquitectónica que se desarrolla entre la fase del requerimiento y el análisis y diseño que se ha incorporado como parte de nuestra estrategia. En esta etapa se acompaña a 9 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV las áreas de programación con apoyo arquitectónico con el objetivo de asegurar el acoplamiento de cada una de las opciones a desarrollar, puesto que al inicio del desarrollo se ha construido el núcleo de la solución de software y muchos de los Casos de Uso estarán previamente modelados y deberá en estos solo reflejarse la lógica de negocio y no todo el ciclo del análisis y diseño. A diferencia de otros ambientes en donde se utiliza este mismo esquema de manera completa, en DRM las áreas de programación utilizan parcialmente algunas de ellas pues parte de lo que en ella se espera ya tiene algún tipo de desarrollo. Planificación Requerimientos Análisis y diseño Implementación Pruebas Despliegue Evaluación Configuración & Gestión del Cambio Planificación inicial Ambiente Apoyo Arquitectónico Figura No. 4 Desarrollo Iterativo ÁMBITO DEL DESARROLLO Con los componentes de software generados de forma automática, los programadores inician los ajustes por las funcionalidades ad hoc en función de las necesidades descritas en los Casos de Uso, para ello y con la finalidad de controlar los cambios realizados en el proyecto de software utiliza los siguientes subsistemas y/o componentes como herramientas de apoyo: • Software de Control de Versiones: centraliza el código fuente de la solución que se encuentra en desarrollo, permitiendo identificar en todos momentos los cambios que se han realizado, programadores involucrados y fechas de modificación. • Ambiente de desarrollo: consiste en aquellos servidores de base de datos y aplicación que son utilizados como primer punto de validación del desarrollo realizado por los programadores, y en el cual estos últimos validan las funcionalidades en construcción. • Sistema de automatización de pruebas: software que permite definir un conjunto de tareas que tienen como finalidad probar funcionalidades del software desarrollado, de tal forma de reducir el riesgo de errores en el sistema en construcción. 10 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV • Integración continua: Dado el ambiente colaborativo en el cual se desarrollan los componentes, se utilizan herramienta de integración continua, para asegurar que lo persistido en el control de versiones, no de errores a priori, y permita la identificación de problemas de forma proactiva. • Herramienta de validación de uso de estándares de desarrollo: para salvaguardar y certificar el uso de estándares de programación y buenas prácticas en el código fuente en desarrollo, se utiliza herramientas especializadas para validar dicho fin, el cual tiene como insumo el código fuente y a partir de verificaciones de dicha herramienta provee reporte y notificaciones sobre hallazgos para corrección debida por parte de los programadores. ASEGURAMIENTO DE CALIDAD Y PRUEBAS Una vez se tiene una versión del sistema programado informáticamente a un nivel que describe la necesidad esperada en los Casos de Uso, se procede a implementar dicho software en los servidores designados para pruebas de la solución, dicho ambiente es independiente de los servidores utilizados para la fase desarrollo. Sobre éste se ejecutan dos tipos de pruebas: • Pruebas automatizadas: consiste en un conjunto de tareas de validación establecidas en la fase de desarrollo de tal forma de evitar implementar software que no cumpla con necesidades básicas de funcionalidad. Dichas pruebas son ejecutadas de forma automática por herramienta de software al momento de implementar la solución en los ambientes de pruebas, en el caso que alguna de dichas tareas de un error o resultado no esperado, la solución no se implementa en los servidores de pruebas y por consiguiente notifica a los desarrolladores del error encontrado, caso contrario la solución es implementada de forma automática en los servidores de pruebas. • Pruebas de Analistas de Negocios IT: Dado el conocimiento alcanzado en el proceso o área de negocio por los Analistas de Negocios IT durante la fase Especiación Funcional y no Funcional, esta persona realiza validaciones sobre lo establecido en el Caso de Uso vs lo desarrollado, de tal forma que en caso de existir incongruencias o brechas entre lo especificado y lo desarrollado procede a notificar al programador para su debida resolución y/o en caso de no existir inconvenientes se procede al paso c). • Pruebas de usuarios: consiste en aquellas actividades de validación realizadas por los usuarios finales sobre el software desarrollado en los ambientes de pruebas con la finalidad de verificar el cumplimiento de la funcionalidad detallada en los casos de uso vs el componente de software producido. • Pruebas de estrés: en este tipo de pruebas se utiliza sistemas especializados en emular diferentes cantidades de conexiones y tareas sobre el software implementado, de tal forma de validar el desempeño del hardware, aplicación, base de datos y cualquier otro componente relacionado de tal forma de validar los tiempos de respuesta ante alta concurrencia de usuarios “virtuales”. A diferencia de las pruebas anteriores la presente prueba se realiza sobre la plataforma tecnológica designada para el ambiente de producción y es una prueba que debe coordinarse con cada uno de los encargados de los diferentes componentes, servidores ,etc. involucrados, de tal forma que a través de 11 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV software especializado de monitoreo de cada componente se puedan revisar métricas sobre uso de los diferentes componentes para que en caso de existir fallas, o tiempos de respuesta inaceptables en función de las pruebas y las potenciales de ocurrencia de las mismas en caso de implementarse, se provean los pasos a seguir para poder solventar los inconvenientes que puedan suscitarse. Este tipo de pruebas son cíclicas en función de las acciones realizadas y sirven para validar los tiempos de respuestas aceptables y requeridas por el negocio. Dada la naturaleza extrema de estas pruebas, se realizan únicamente para nuevos componentes y se calendarice en horarios que minimizan el impacto a otros subsistemas preexistentes en los ambientes ya productivos. Con el fin de ordenar los hallazgos en caso de existir inconvenientes o anormalidades en las pruebas realizadas por los usuarios finales se utiliza herramienta de software para registrar dicho hallazgo y con ello facilitar la gestión y tratamiento de dichos incidentes para asignación, seguimiento y resolución por parte de los programadores designados a dichas actividades. Una vez que el programador ha solucionado o dado respuesta al incidente reportado se inicia el ciclo de pruebas para validar que se ha superado el incidente. IMPLEMENTACIÓN (AMBIENTE DE PRODUCCIÓN) Concluida la fase Aseguramiento de Calidad y Pruebas se realiza la generación del archivo WAR (Web Application Archive) y script de creación de estructuras de datos (en caso aplique) que debe ser implementado en producción y el cual es trasladado al personal encargado de la contraparte técnica de IT para que realice dicha implementación sobre el ambiente de producción.ACTIVIDADES POST IMPLEMENTACIÓN Una vez la puesta en producción del software desarrollado se provee asesoría a la institución beneficiaria sobre identificación/tunning de querys con mayor impacto para tratar de eficientizar los recursos informáticos, así como a los componentes de software creados. PILA TECNOLÓGICA La herramienta de generación de código más reciente cuenta con los siguientes componentes o da soporte a los siguientes: • Java 7, 8 • Spring Framework MVC 4.1.6 • Jqgrid 5.0.1 • Jquery 2.1.1 • Bootstrap 3.3.5 • IO.Spring.platform 1.1.2 • Hibernate 4.3.8 • Spring Data JPA 1.7.2 • JSON • Lombok 1.16.10 12 | ESTRATEGIA DE DESARROLLO DE SOFTWARE USAID.GOV • Spring Security 3.2.7 • PL/SQL ORACLE 11 y 12 • HTML 5 • JSP 2 • Jasper 5.6.0 TRANSFERENCIA DE CONOCIMIENTO Los proyectos de tecnología impulsados durante DRM tienen el compromiso de asegurar la transferencia de conocimiento a las áreas beneficiadas, es en ese sentido que se imparten diversas capacitaciones como en la que se desarrollan las técnicas de ingeniería de requerimiento a las áreas funcionales y de tecnología, así como capacitaciones en la pila tecnología a las áreas de tecnología. Es frecuente que se incorpore personal de tecnología al proyecto de desarrollo informático, con la intención que se realice el proceso de transferencia de conocimiento bajo la figura de aprender- haciendo. En algunas oportunidades se realiza procesos de coaching a las áreas beneficiadas para que estas asuman componentes de desarrollo de software.
Compartir