El objetivo de este Manual del Desarrollador es el de introducir a los nuevos desarrolladores y colaboradores en el estado actual del proyecto eOPSOA, así como de las herramientas y procesos que se deben seguir en el desarrollo.
eOPSOA es una herramienta de Software Libre con licencia Eclipse Public License v1.0. El lenguaje de programación usado en el desarrollo es Java, la aplicación se distribuye como un conjunto de plugins para la plataforma Eclipse.
El objetivo general de eOPSOA es el de proveer al analista y testeador de una herramienta que les facilite la aplicación del marco metodológico OPSOA (OPen SOurce Assessment). Además, están establecidos los siguientes requisitos secundarios: Además del objetivo anterior, eOPSOA debe cumplir además los siguientes requisitos:
Durante el desarrollo de eOPSOA se intentarán primar el uso de herramientas Software Libre sobre otras propietarias, aunque dependerá de la calidad y disponibilidad de las primeras.
Las herramientas que se han venido usando hasta ahora para desarrollar eOPSOA son las siguientes:
El proyecto se encuentra hospedado en la forja de Molinux, siendo la página principal del proyecto eOPSOA dentro de esta https://forja.molinux.info/projects/eopsoa. Aunque no es necesario estar registrado para usar la mayoría de los servicios, se aconseja registrarse si se participa en el desarrollo de eOPSOA.
Entre otros, eOPSOA utiliza los siguientes servicios de la forja:
svn://, svn+ssh://, y https://. Sin embargo, los protocolos svn:// y svn+ssh:// no están en realidad soportados, y es por tanto necesario utilizar obligatoriamente https://.
Dentro de la forja de Molinux, en la página del control de versiones del proyecto hay instrucciones para la configuración del cliente para el acceso al repositorio SVN. Puedes usar cualquier cliente SVN, aunque se recomiendan los proyectos Subversive o Subclipse. Ambos son plugins para Eclipse que se integran dentro de la plataforma, son muy maduros, y están configurados por defecto para no subir al repositorio ficheros binarios.
Hay dos formas de acceso, como usuario anónimo y como desarrollador.
Tiene la ventaja de poder acceder al SVN sin registrarse en la forja, pero el acceso es exclusivamente como solo lectura. Para acceder de forma anónima al repositorio, debes configurar tu cliente para que use la URL https://forja.molinux.info/svnroot/eopsoa y el usuario anonsvn, o escribir en la consola:
svn checkout --username anonsvn https://forja.molinux.info/svnroot/eopsoa
en ambos casos, cuando se pregunte por una contraseña esta es anonsvn.
Para poder acceder al repositorio SVN como usuario registrado, primero debes registrarte en la forja y a continuación pedir solicitar participar en el proyecto. Una vez aceptada tu participación, puedes configurar tu cliente SVN para que utilice la URL https://forja.molinux.info/svnroot/eopsoa y el usuario y contraseña que has registrado previamente en la forja. Otra opción es escribir en la consola:
svn checkout --username developername https://forja.molinux.info/svnroot/eopsoa
sustituyendo developername por el nombre de tu usuario en la forja.
El repositorio SVN se encuentra estructurado según una jerarquía de directorios de la siguiente manera:
trunk es la rama principal del proyecto, y contiene la última versión de desarrollo del programa. Debe intentar mantenerse razonablemente estable.branches se alojan ramas de desarrollo paralelo que por la razón que sea, no están integradas en trunk. Estas ramas no tienen la restricción de estabilidad que si tiene la rama trunk.tags se marcan revisiones de interés, como por ejemplo el punto en el que se liberó una versión determinada del programa./code/ /code/trunk /code/branches /code/tags
/management/analysis_design almacena los ficheros del modelo de Rational Rose. En este modelo se almacenan los diagramas UML utilizados durante la implementación./management/planning contiene la planificación del proyecto en el fichero planning.planner. Debe ser editado con la última versión de Planner./management/requirements almacena el modelo de requisitos en formato de Rational RequisitePro. Durante las distintas iteraciones del proyecto se han ido identificando una serie de requisitos funcionales, a partir de los cuales se realiza el diseño UML y posteriormente su implementación. El modelo de requisitos de RequisitePro y Rose están enlazados, de tal forma que los requisitos funcionales están asociados con su correspondiente documentación./management/templates plantillas propias, diseñadas para ser utilizadas con RequisitePro./management/ui_sketches almacena un proyecto Eclipse, conteniendo ficheros del tipo fichero.screen. Son los prototipos de la interfaz que se van desarrollando al principio de cada iteración, los cuales son sometidos a revisión y cuando están maduros son utilizados como plantilla para programar finalmente la interfaz./management/ /management/analysis_design /management/planning /management/requirementse /management/templates /management/ui_sketches
/proof-of-concept/
Las guías de estilo que se procuran seguir durante la codificación son:
En todo el desarrollo se procura seguir el patrón Modelo Vista Controlador, así como gran cantidad de Patrones de diseño.
Al día de hoy, la feature eOPSOA está compuesta por 6 plugins:
org.uclm.eopsoa.core org.uclm.eopsoa.core.edit org.uclm.eopsoa.core.editor org.uclm.eopsoa.core.tests org.uclm.eopsoa.ui org.uclm.eopsoa.ui.navigator
Es el núcleo de la feature eOPSOA, responsable del modelo de datos de la aplicación, y de la gestión de los ficheros del proyecto.
Fundamentalmente se trata de un metamodelo Ecore, a partir del cual se ha generado un modelo GenModel, usado a su vez para generar código Java, que representa el modelo. Además con el modelo GenModel se generan los plugins org.uclm.eopsoa.core.edit, org.uclm.eopsoa.core.editor y org.uclm.eopsoa.core.tests que proveen a su vez de una serie de clases, adapters y editores para el modelo.
Los modelos Ecore y GenModel, que se pueden encontrar respectivamente en los ficheros model/eopsoa.ecore y model/eopsoa.genmodel, pueden ser usados en futuras aplicaciones de forma fácil, y de esta forma facilitar la integración de aquellas herramientas que quieran usar los proyectos eOPSOA.
Aunque la serialización/deserialización está delegada a EMF, es de interés la interfaz IOPersistenteManager que gestiona la creación, el acceso y la destrucción de los recursos de los proyectos eOPSOA.
Provee de las clases necesarias para las vistas, editores, cuadros de diálogo y asistentes que se puedan encontrar en eOPSOA. Hace uso del modelo de datos que provee core. El toolkit gráfico utilizado en eOPSOA es exclusivamente SWT. Además se emplean una gran cantidad de JFace Viewers que emplean el patrón MVC. Se ha intentado seguir en todo momento las recomendaciones de las Eclipse User Interface Guidelines.
Se ha usado ampliamente el patrón de Eclipse Master/Details en el diseño de los editores de los distintos tipos de documentos.
También ha sido necesario utilizar el widget experimental CDateTime del proyecto Nebula, en el cual se desarrollan una serie de widgets SWT experimentales que no se han incluido en la distribución oficial de SWT.
Provee de la vista eOPSOA Explorer, basada en Common Navigation Framework, así mismo como de las acciones con las cuales el usuario puede interactuar con el modelo y con los ficheros del proyecto. Al igual que en ui, se hace un uso intensivo de JFace Viewers
con el objetivo de seguir el patrón MVC. Se apoya en core para las tareas relacionadas con la manipulación de ficheros y del modelo EMF, y en ui para los asistentes, cuadros de diálogo, editores… etc.
Uno de los requisitos de eOPSOA era la interoperabilidad entre las aplicaciones, y que los datos que pudiera generar fueran fácilmente exportables a otras aplicaciones. La decisión que se tomó para cumplir este requisito fue la de usar XML para almacenar los datos que pudiera generar la aplicación. El framework http://www.eclipse.org/emf es el responsable de la serialización/deserialización del modelo eOPSOA en XMI.
Cuando creas un nuevo proyecto eOPSOA, su directorio está compuesto por los siguientes ficheros:
.project: descriptor del proyecto de Eclipse.project.checklist: contiene los datos del documento Cuestionario.project.glossary: contiene los datos del documento Glosario.project.usecase: contiene los datos de los documentos de especificación de Casos de Uso.project.vision: contiende los datos del documento de Visión.root.testcase: contiene referencias a Conjuntos de Tests de Prueba. test-cases/: contiene directorios que contienen Conjuntos de Tests de Prueba.TCXX/set.testcase: datos del conjunto de Tests de Prueba con identificador XX.