====== Crear Componentes ====== {{:mda:de:mda-pr-1.0-de-crear_componentes.png|}} ====== Objetivos ====== El objetivo de este proceso es **la creación de los componentes del código fuente desarrollado por los programadores**, tanto para los componentes de un proyecto FundeWeb (paginas HTML-XHTML, CSS, Javascript, Java, informes Birt, etc.) como los artefactos de la base de datos (Script de tablas; procedimientos, funciones y paquetes PL/SQL, script de vistas, etc.). Este proceso, es la primera parte de cada iteración que se realiza en la metodología de desarrollo. ====== Roles ====== ^ Nombre ^ Descripción ^^^ | **Desarrollador** | | | |MDA-TR-1.0-DE-Crear y/o Modificar Componente | | |MDA-TR-1.0-DE-Crear y Ejecutar Test Unitarios del Componente | | |MDA-TR-1.0-DE-Subida de los Artefactos del Componente y los Test Unitarios al Repositorio SVN | ====== Tareas ====== ===== MDA-TR-1.0-DE-Crear y/o Modificar Componente ===== ==== 1. Iniciar Progreso ==== Debe de existir previamente, un **JIRA** indicando que se va a crear o modificar un componente. El desarrollador, debe indicar en dicho JIRA que se va a trabajar en dicha tarea iniciando su proceso mediante el botón //Iniciar Progreso// que tienen todas las tareas de JIRA. También tenemos que tener actualizado el proyecto a la ultima revisión del SVN, para minimizar los posibles conflictos de código. ==== 2. Creación o Modificación del Componente ==== Antes de empezar a realizar esta tarea, es recomendable tener actualizado el proyecto relativo a la rama del SVN con la que vamos a trabajar (ya sea un //branch// o el //trunk//). Este es el proceso basico de desarrollo de software. Podemos crear o modificar principalmente dos tipos de componentes: los artefactos de la aplicación (clases Java, Paginas XHTML o HTML, ficheros Javascript, CSS, informes Birt, etc.) y los artefactos de la base de datos (Script de definición de tablas, configuración de segments y tablespaces, triggers, funciones, procedimientos y paquetes PL/SQL). Para realizar esta tarea tendremos que seguir algunas normativas de desarrollo, por ejemplo: - Para aplicaciones FundeWeb, seguiremos la [[fdw2.0:fundeweb2.0|Normativa de Desarrollo de Aplicaciones FundeWeb]] (también podemos consultar la antigua [[https://svn.um.es/svn/MNCS/proyectos/fundeweb/normativa/NORfundeweb.pdf | Normativa de Desarrollo con FundeWEB v1.0]]. - Para artefactos de la Base de Datos, seguiremos la [[plsql:normativa_desarrollo_bd | Normativa de Desarrollo de Artefactos de Base de Datos]], y crearemos el modelo físico de datos, a partir del [[mda:ana:mda-pr-1.0-ana-diseno_del_proyecto#crear_modelo_logico_de_datos|modelo lógico]], usando también [[plsql:normativa_desarrollo_bd#crear_modelo_de_datos_e_r_con_oracle_sqldeveloper_data_modeler|Oracle Data Modeler]]. ==== 3. Acumulación de tiempo en la tarea ==== Cada día de trabajo, el desarrollador debe de indicar las horas trabajadas en la tarea. Lo puede hacer desde [[https://jira.um.es/jira/| JIRA]], vamos a la tarea, y en el menú asociado a esta pinchamos en, //Más Acciones --> Registrar Horas de Trabajo// y en la pantalla que aparece, introduciremos la información sobre el trabajo realizado en dicho periodo de tiempo. O bien se puede hacer con el [[mda:eclipse_jira|plugin de JIRA para el Eclipse]]. En ambos casos tendremos que rellenar la siguiente información. ^ Campo de Formulario ^ Descripción ^ ^ Tiempo de Trabajo | Tiempo trabajo en la tarea en un determinado tiempo. Se acumula al tiempo de trabajo realizado en la tarea Por ejemplo, tiempo trabajado durante 3 horas y 5 minutos, pondremos: 3h 5m. | ^ Date Started | La fecha de inicio a partir de la que se calcula el tiempo trabajado | ^ Remaining Estimate | Tipo de calculo a utilizar para el tiempo estimado que queda para acabar la tarea | ^ Descripción del Trabajo | Descripción del trabajo realizado, y del estado actual de la tarea | Para almacenar la información en [[https://jira.um.es/jira/| JIRA]] utilizaremos el botón //Registrar//. ===== MDA-TR-1.0-DE-Crear y Ejecutar Test Unitarios del Componente ===== ==== 1. Iniciar Progreso ==== Debe de existir previamente, un **JIRA** indicando que se va a crear o modificar un test unitario. El desarrollador, debe indicar en dicho JIRA que se va a trabajar en dicha tarea iniciando su proceso mediante el botón //Iniciar Progreso// que tienen todas las tareas de JIRA. También tenemos que tener actualizado el proyecto a la ultima revisión del SVN, para minimizar los posibles conflictos de código. Se creara un test unitario cuando el componente no tenga ningún test unitario. Se modificara un test unitario, cuando exista previamente y haya que modificarlo para soportar la modificación del componente asociado al test. Podemos crear o modificar test unitarios para los siguientes componentes: los artefactos de la aplicación (clases Java) y los artefactos de la base de datos (triggers, funciones, procedimientos y paquetes PL/SQL). Hay que realizar una pila de test unitarios por cada componente y además se deben añadir test unitarios para comprobar los errores controlados de la aplicación se lanzan correctamente. Para las aplicaciones FundeWeb, los test unitarios se realizan a nivel de método de la clase. Para los artefactos de base de datos se realizan a nivel de llamada. Para realizar esta tarea tendremos que seguir algunas normativas de desarrollo, por ejemplo: * Para aplicaciones FundeWeb, seguiremos la [[https://fundeweb.um.es/prototipo/gt/testing/testing0.seam | Guía Técnica de Test Unitarios]] que se indica en la [[https://svn.um.es/svn/MNCS/proyectos/fundeweb/normativa/NORfundeweb.pdf | Normativa de Desarrollo de Aplicaciones FundeWeb v1.0]]. También puedes consultar la [[fdw2.0:fundeweb2.0|Normativa de Desarrollo de Aplicaciones FundeWeb v2.0]]. * Para artefactos de la Base de Datos, seguiremos la [[plsql:normativa_desarrollo_bd | Normativa de Desarrollo de Artefactos de Base de Datos]]. ==== 2. Ejecutar los Test Unitarios ==== Para aceptar a una pila test unitarios de un componente, todas los test unitarios tienen que ser satisfactorios. Hay que realizar test que comprueben también los errores. Los test se ejecutaran en las siguientes herramientas: * En el IDE Eclipse mediante el plugin TestNG para aplicaciones FundeWeb. * En el TOAD para test de los artefactos de Base de Datos. ==== 3. Acumulación de tiempo en la tarea ==== Cada día de trabajo, el desarrollador debe de indicar las horas trabajadas en la tarea. Lo puede hacer desde [[https://jira.um.es/jira/| JIRA]], vamos a la tarea, y en el menú asociado a esta pinchamos en, //Más Acciones --> Registrar Horas de Trabajo// y en la pantalla que aparece, introduciremos la información sobre el trabajo realizado en dicho periodo de tiempo. Tendremos que rellenar la siguiente información. ^ Campo de Formulario ^ Descripción ^ ^ Tiempo de Trabajo | Tiempo trabajo en la tarea en un determinado tiempo. Se acumula al tiempo de trabajo realizado en la tarea Por ejemplo, tiempo trabajado durante 3 horas y 5 minutos, pondremos: 3h 5m. | ^ Date Started | La fecha de inicio a partir de la que se calcula el tiempo trabajado | ^ Remaining Estimate | Tipo de calculo a utilizar para el tiempo estimado que queda para acabar la tarea | ^ Descripción del Trabajo | Descripción del trabajo realizado, y del estado actual de la tarea | Para almacenar la información, en [[https://jira.um.es/jira/| JIRA]], utilizaremos el botón //Registrar//. ===== MDA-TR-1.0-DE-Subida de los Artefactos del Componente y los Test Unitarios al Repositorio SVN ===== ==== 1. Subida al Repositorio SVN ==== Para finalizar el proceso, tenemos que subir al servidor de control de versiones los componentes creados o modificados y los test unitarios asociados a estos. **Dependiendo del tipo de artefacto** utilizaremos una herramienta u otra para subir al repositorio SVN: - **Aplicaciones FundeWeb**: se puede utilizar tanto el **IDE Eclipse con su plugin subeclipse como Tortoise SVN**. - **Artefactos de la Base de Datos**: utilizaremos **[[plsql:sqldeveloper|Oracle SQL Developer]] o Tortoise SVN**, siguiendo las indicaciones de la [[plsql:normativa_desarrollo_bd#control_de_versiones | Normativa de Control de Versiones de Código PL/SQL]]. :!: **IMPORTANTE**: al subir un cambio al repositorio SVN tenemos que **rellenar el “mensaje de log” que nos pide el servidor SVN, incluyendo el código del jira correspondiente al trabajo que estamos haciendo**, da igual q pongamos el código del jira al inicio, medio o final del comentario. Podemos indicar varios códigos de jiras distintos en el mismo comentario. De ese modo podremos ver lo que hemos subido al servidor SVN en la pestaña Subversion del jira correspondiente. Una vez subidos los componentes y los artefactos al repositorio SVN, podemos resolver los JIRAs asociados a las tareas de //Crear o Modificar Componente// y a //Crear y Ejecutar Test Unitarios de los Componentes//. ==== 2. Resolución de la Tarea ==== Para resolver un JIRA, podemos hacerlo desde [[https://jira.um.es/jira/|JIRA]], vamos a la tarea, y en el menú asociado a esta pinchamos en, //Resolver Incidencia// y en la pantalla que aparece, introduciremos la información sobre el trabajo realizado en dicho periodo de tiempo. ^ Campo de Formulario ^ Descripción ^ ^ Resolución | Indicaremos el tipo de resolución, que normalmente será 'Resuelta' si se ha completado correctamente. | ^ Tiempo de Trabajo | Tiempo trabajo en la tarea en un determinado tiempo. Se acumula al tiempo de trabajo realizado en la tarea. Por ejemplo, tiempo trabajado durante 3 horas y 5 minutos, pondremos: 3h 5m. | ^ Date Started | La fecha de inicio a partir de la que se calcula el tiempo trabajado | ^ Remaining Estimate | Tipo de calculo a utilizar para el tiempo estimado que queda para acabar la tarea | ^ Descripción del Trabajo | Descripción del trabajo realizado, y del estado de la resolución de la tarea | Una vez rellenada la información relativa a la imputación en la tarea del trabajo realizado no computado anteriormente tenemos que pinchar el botón //Resolver//. De esta forma se resuelve la tarea. ====== Artefactos ====== ===== De entrada ===== ^ Plantilla del Artefacto ^ SIGLAS ^ Nomenclatura ^ Ubicación ^^^ |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/3.AnalisisYdiseno/DocumentoDiseno.odm|DocumentoDeDiseño]]| DIS | XXX-DIS-1.2.3-Documento de Diseño | ///Proyecto/Documentacion/3.AnalisisYdiseno //|| |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/2.Requisitos/DocumentoRequisitos.odm|DocumentoDeRequisitos]]| REQ | XXX-REQ-1.2.3-Documento de Requisitos | ///Proyecto/Documentacion/2.Requisitos //|| ^**NOTAS**: * XXX: Código del proyecto. * 1.2.3: Número de versión del documento.^ ===== De salida ===== ^ Plantilla del Artefacto ^ SIGLAS ^ Nomenclatura ^ Ubicación ^^^ |Código Fuente de los componentes creados y los test unitarios asociados subidos en el repositorio SVN| | | /Proyecto/Fuentes/| |[[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Ejemplos/AnalisisYdiseno/XXX-MDT-1.2.3-ModeloDatos.zip|Modelo Fisico de Datos ]]| MDT | XXX-MDT-1.2.3-ModeloDatos | //3.AnalisisYDiseno/3.3.BaseDatos//| ^**NOTAS**: * XXX: Código del proyecto. * 1.2.3: Número de versión del documento.^ ====== Herramientas ====== ===== Herramientas ===== ^ Herramienta ^ Version ^ Utilizada en ^ Descarga ^^^ |FrameWork FundeWeb | >=1.2.3 (Ultima Versión) |Creación de Proyectos y Componentes FundeWeb | [[https://fundeweb.um.es/prototipo/paginas/downloads/downloads.seam | Portal FundeWeb - Descargas ]]| |TortoiseSVN | >=1.6.x |Operaciones con el repositorio SVN | [[http://tortoisesvn.net/downloads.html|TortoiseSVN Downloads]]| |[[https://jira.um.es/jira/| JIRA]] | >=4.2.x | Modificación de las tareas para acumular tiempo o resolverlas. | | |Oracle Data Modeler | >=3.0 |Modelo Entidad / Relación | Novell | ====== Métricas ====== ===== Tiempo dedicado al Proceso ===== Las métricas del proyecto se guardarán dentro de la carpeta del proyecto en //Proyecto/Documentacion/1.Gestionproyecto/1.4.Metricas//. Las métricas de este proceso en concreto se almacenan en la Hoja //DE//. ^**NOTA:** Todos los tiempos se miden en horas, salvo que se indique expresamente lo contrario.^ - Entra en Jira en el navegador de incidencias. Realiza una query simple y selecciona todas las tareas del proyecto. * project = //ClaveDelProyecto// * Disciplina-Proceso = //Desarrollo//-//DE-Organizar el código// Pulsa el botón //Search// Usa la [[https://svn.um.es/svn/MNCS/NuevaMNCS/MEDEA/web_iuturna/Proyecto/Fuentes/Documentacion/1.GestionProyecto/PlantillaSeguimiento.ots|Plantilla de Seguimiento]] tal y como se indica en el apartado [[mda:Calcular_Tiempos|Calcular tiempos con Jira]]. ===== Aplicaciones FundeWeb ===== ==== Número de Paquetes de Código Fuente ==== Número de paquetes de código fuente totales al final de un Sprint, Build o Release. - Tenemos que dirigirnos al despliegue de la aplicación en Jenkins. - Ir a la página del proyecto comprobar que esta la ejecución del Sprint, Build o Release. - Entrar en el informe del Sprint, Build o Release. - Ir al informe JavaNCSS, en este informe nos muestra todos los paquetes de código fuente del proyecto, solo hay que contar las filas de la tabla. ==== Número de Clases de Código Fuente ==== Número de clases totales al final de un Sprint, Build o Release. - Tenemos que dirigirnos al despliegue de la aplicación en Jenkins. - Ir a la página del proyecto comprobar que esta la ejecución del Sprint, Build o Release. - Entrar en el informe del Sprint, Build o Release. - En el resumen de JavaNCSS aparecen el número total de clases de código fuente. ==== Número de Métodos o Funciones del Código Fuente ==== Número de métodos o funciones totales al final de un Sprint, Build o Release. - Tenemos que dirigirnos al despliegue de la aplicación en Jenkins. - Ir a la página del proyecto comprobar que esta la ejecución del Sprint, Build o Release. - Entrar en el informe del Sprint, Build o Release. - En el resumen de JavaNCSS aparecen el número total de funciones en el código fuente. ==== Número de Javadocs del Código Fuente ==== Número de Javadocs del código fuente al final de un Sprint, Build o Release. - Tenemos que dirigirnos al despliegue de la aplicación en Jenkins. - Ir a la página del proyecto comprobar que esta la ejecución del Sprint, Build o Release. - Entrar en el informe del Sprint, Build o Release. - En el resumen de JavaNCSS aparecen el número total de javadocs del código fuente. ==== Número de Lineas de Código Fuente - NCSS ==== Número de lineas de código fuente totales al final de un Sprint, Build o Release. - Tenemos que dirigirnos al despliegue de la aplicación en Jenkins. - Ir a la página del proyecto comprobar que esta la ejecución del Sprint, Build o Release. - Entrar en el informe del Sprint, Build o Release. - En el resumen de JavaNCSS aparecen el número total de NCSS del código fuente. El valor del NCSS, no es el del numero de lineas de un fichero de código fuente, sino el número de lineas de código fuente, eliminando comentarios, javadoc y lineas en blanco. ==== Número de Páginas Web ==== Número de páginas web totales al final de un Sprint o Release. - Tendremos que contar el número de ficheros con extensión XHTML y HTML del proyecto. ==== Número de Clases de Test Unitarios ==== Número de clases de test unitarios totales al final de un Sprint, Build o Release. - Tenemos que dirigirnos al despliegue de la aplicación en Jenkins. - Ir a la página del proyecto comprobar que esta la ejecución del Sprint, Build o Release. - Ir al informe TestNG, en este informe nos muestra los paquetes de código con test. - Seleccionamos en cada enlace referente a un paquete de código de test. En la página a la que se navega, aparecen dos tablas, en la primera aparecen las clases de Test, en la segunda aparecen los test ejecutados en el paquete. - Para el calculo de la métrica, hay que contar las filas de la primera tabla. ==== Número de Test en las Clases de Test Unitarios ==== Número de test totales que hay en las clases de test unitarios al final de un Sprint, Build o Release. - Tenemos que dirigirnos al despliegue de la aplicación en Jenkins. - Ir a la página del proyecto comprobar que esta la ejecución del Sprint, Build o Release. - Entrar en el informe del Sprint, Build o Release. - En el resumen de TestNG aparecen el número total de test. ===== Base de Datos ===== Para el calculo de las métricas de Base de Datos, tenemos que dirigirnos al SVN a la carpeta del proyecto en '/Proyecto/Fuentes/BD' como se indica en el [[mda:gc:mda-pr-1.0-gc-establecer_el_sistema_de_gestion_de_configuracion#plan_de_la_configuracion | Plan de Gestión de la Configuración]]. En esta carpeta tendremos diferentes carpetas para organizar los diferentes artefactos de base de datos. ==== Número de Tablas ==== Número de tablas totales al final de un Sprint o Release. - Nos tenemos a la carpeta '/Proyecto/Fuentes/BD/Tablas' y contar el número de ficheros. ==== Número de Vistas ==== Número de vistas totales al final de un Sprint o Release. - Nos tenemos a la carpeta '/Proyecto/Fuentes/BD/Vistas' y contar el número de ficheros. ==== Número de Funciones y Procedimientos ==== Número de funciones y procedimientos totales al final de un Sprint o Release. - Nos tenemos a la carpeta '/Proyecto/Fuentes/BD/Funciones' y contar el número de ficheros. - Nos tenemos a la carpeta '/Proyecto/Fuentes/BD/Procedimientos' y contar el número de ficheros. - La suma de los dos cálculos anteriores nos da el número de total. ==== Número de Paquetes ==== Número de paquetes totales que contienen funciones y procedimientos al final de un Sprint o Release. - Nos tenemos a la carpeta '/Proyecto/Fuentes/BD/Paquetes' y contar el número de ficheros con extensión 'PKS'. ==== Número Funciones y Procedimientos de los Paquetes ==== Número de paquetes totales que contienen funciones y procedimientos al final de un Sprint o Release. - Nos tenemos a la carpeta '/Proyecto/Fuentes/BD/Paquetes'. - Para cada fichero con extensión 'PKS', tenemos que contar el las funciones y procedimientos. - La suma de los cálculos anteriores nos da el número de total. ==== Número de Triggers ==== Número de triggers totales al final de un Sprint o Release. - Nos tenemos a la carpeta '/Proyecto/Fuentes/BD/Vistas'. - Para cada fichero correspondiente a una tabla, lo abrimos y contamos el numero de triggers. - La suma de los cálculos anteriores nos da el número de total. ====== Instrucciones ====== ===== Como subir los Componentes y Test Unitarios al SVN ===== Tenemos dos clientes de SVN a disposición de los desarrolladores: Subeclipse en el IDE Eclipse y TortoiseSVN desde el Explorer de Carpetas. ==== Código Fuente del Proyecto y Test Unitario ==== Utilizaremos el cliente de SVN que esta disposición de los desarrolladores en el IDE Eclipse llamado Subeclipse. Seguiremos los siguientes pasos: - Lo primero que tenemos que hacer es realizar una sincronización del proyecto con el repositorio SVN para comprobar los posibles conflictos (marcados en rojo) que se pueden producir. Esto lo realizamos Seleccionando el proyecto y abriendo el menú contextual //Team --> Syncronize with Repository//, que nos llevara a la perspectiva de sincronización. - Una vez solucionados los conflictos, pasamos a realizar el commit, donde seleccionamos los ficheros a subir y abrimos el menú contextual seleccionando la opción //Commit//. - Nos aparece una ventana donde podemos repasar los ficheros seleccionados y añadir el comentario asociado donde se debe de indicar el JIRA asociado a la tarea. ==== Artefactos de la Base de Datos ==== Utilizaremos el cliente de SVN que esta disposición desde el Explorer de Windows llamado TortoiseSVN. Seguiremos los siguientes pasos: - Lo primero que tenemos que hacer es dirigirnos a la carpeta que según el plan de configuración contiene los artefactos de la base de datos en nuestro //checkout// del proyecto, mediante el Explorador de Carpetas. - Ahora tenemos que realizar una comprobación para ver si se ha modificado algún artefacto y comprobar los posibles conflictos. - Una vez solucionados los conflictos, pasamos a realizar el commit, donde seleccionamos la carpeta raiz que contiene los artefactos de la base de datos y abrimos el menú contextual seleccionando la opción //SVN Commit// - Nos aparece una ventana donde podemos repasar los ficheros seleccionados y añadir el comentario asociado donde se debe de indicar el JIRA asociado a la tarea.