CLINKER. Ecosistema de Desarrollo Software



Documentos relacionados
Ecosistema de Desarrollo de Software

Gestor de Contenidos CMS. Prof: Ing. Henrry Servitá

1 El trabajo expuesto está subvencionado por el proyecto de la URJC PGRAL-2001/14

SIEWEB. La intranet corporativa de SIE

Análisis de aplicación: Virtual Machine Manager

WINDOWS : TERMINAL SERVER

NBG Asesores Abogados

Elementos requeridos para crearlos (ejemplo: el compilador)

Visión General de GXportal. Última actualización: 2009

elastic PROJECTS INFORMACIÓN COMERCIAL PROJECTS

Ministerio de Educación, Cultura y Deporte. Joomla! La web en entornos educativos. Guía del alumnado

Introducción a las redes de computadores

Solución de una Intranet bajo software Open Source para el Gobierno Municipal del Cantón Bolívar [IOS-GMCB] Gobierno Municipal del Cantón Bolívar

Tutorial: Primeros Pasos con Subversion

Manejo de versiones 392

Windows Server 2012: Infraestructura de Escritorio Virtual

El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos.

Gestión de proyectos

GedicoPDA: software de preventa

Ley Orgánica de Protección de Datos

MANUAL COPIAS DE SEGURIDAD

Traslado de Data Center

Primaria Digital. Índice

5.2. PROYECTO RODA. (6/07/04).

Unidad 1. Fundamentos en Gestión de Riesgos

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

ADT CONSULTING S.L. PROYECTO DE DIFUSIÓN DE BUENAS PRÁCTICAS

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Guía de Instalación. Glpi

Solución GeoSAS. Otros módulos

Qué es SPIRO? Características

Gestión de la Configuración

TeCS. Sistema de ayuda a la gestión del desarrollo de producto cerámico

Ministerio de Educación,Cultura y Deporte. Aulas en Red. Windows. Módulo 2: Servicios Básicos. Directorio Activo

SIMAD CLOUD. La Gestión Documental ahora en la nube, más eficiente SISTEMA INTEGRADO DE ADMINISTRACIÓN DOCUMENTAL

INSTRUCTIVO DE ADMINISTRADOR ALFRESCO COMMUNITY 4.2

Introducción a la extensión de scripting en gvsig 2.0

Manual de NetBeans y XAMPP

INTRANET DE UNA EMPRESA RESUMEN DEL PROYECTO. PALABRAS CLAVE: Aplicación cliente-servidor, Intranet, Área reservada, Red INTRODUCCIÓN

comunidades de práctica

Sistema de diseño y seguimiento de Procesos WT - WorkFlow.

WINDOWS : COPIAS DE SEGURIDAD

Internet Information Server

Transacciones y bloqueos en SQL-Server

INSTALACIÓN A3ERP INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Planificación en Team Foundation Server 2010

PERFIL DEL PUESTO POR COMPETENCIAS Sepa cómo construirlo y evitar bajos desempeños posteriores

Análisis de aplicación: XMind

Una plataforma de trabajo colaborativo

Plataforma de expediente

Está creado como un organizador y gestor de tareas personalizables para generar equipos de alto desempeño en diferentes rubros de empresas.

Redes de área local: Aplicaciones y servicios WINDOWS

Content Management System

DESARROLLA TU BLOG O PÁGINA

System Center. la plataforma para una gestión ágil de los entornos de TI IDG COMMUNICATIONS, S.A.

Arquitectura de sistema de alta disponibilidad

Internet aula abierta

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Una puerta abierta al futuro

3. GESTIÓN DE CONFIGURACIÓN DE SOFTWARE

Módulos: Módulo 1. El núcleo de Linux - 5 Horas

PLAN DIRECTOR DE SISTEMAS DE INFORMACIÓN DEL MINISTERIO DE TRABAJO Y ASUNTOS SOCIALES: ALGUNAS CONSIDERACIONES

UNIVERSIDAD DE SALAMANCA

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

Unidad III. Software para la administración de proyectos.

David Erosa García Programador del C.G.A. de la D.G. de Innovación Educativa y Formación del Profesorado. Consejería de Educación, Junta de Andalucía

CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES, BILIB RECETA TECNOLÓGICA REALIZACIÓN DE COPIAS DE SEGURIDAD CON GSYNC

GeneXus BPM Suite X. Última actualización: 01 de Setiembre de 2008

<Generador de exámenes> Visión preliminar

MODULO: MERCADEO. Acuerdo de Nivel de Servicio (ANS) Service Level Agreement (SLA) MODELO DE MUESTRA SIN VALOR COMERCIAL

"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios

Capítulo 5. Cliente-Servidor.

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

Introducción. Definición de los presupuestos

SCGDoc. SisConGes & Estrategia

Análisis de aplicación: Cortafuegos de la distribución clearos

Ventajas del almacenamiento de correo electrónico

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Gestión de Procesos de Compra. Documentación Técnico Comercial

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Modelo de Política de Privacidad

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

Introducción. Componentes de un SI. Sistema de Información:

Metodología básica de gestión de proyectos. Octubre de 2003

Instalar y configurar W3 Total Cache

SISTEMA DE PAPELES DE TRABAJO PARA AUDITORÍA SPT AUDIT

Introducción a la Firma Electrónica en MIDAS

Centro de Interoperabilidad Semántica y Sistema de Gestión de Mensajes de Intercambio

Guía para Desarrollo de Sitios Web - Gobierno de Chile

SOLUCIÓN HOSPEDADA. Introducción a los modelos de asociación de partners de Microsoft Dynamics CRM

Manual de uso. Sonar. Manual usuario Testlink 1/20

Plantilla para Casos de Éxito

CAPITULO 8. Planeamiento, Arquitectura e Implementación

1. Introducción: Qué es la Gestión Documental-TI o Gestor Documental?

CRM. Customer Relationship Management Sistema de Gestión Inteligente de Mercadeo y Ventas. Sistema de Gestión Inteligente de Mercadeo y Ventas

Transcripción:

CLINKER Ecosistema de Desarrollo Software klicap - ingeniería del puzle, S.L. Parque Empresarial PISA C/Industria 1, Edificio Metropol 1, planta 3ª, módulo 3 41927 Mairena del Aljarafe Sevilla, España C.I.F. B-91858241 hello@klicap.es +34 664 00 06 29 +34 954 89 43 22 Inscrita en el Registro Mercantil de Sevilla, Tomo 5192 Libro 0 Folio 175 Sección 8 Hoja SE-85148. Presentación de CLINKER Ecosistema de Desarrollo Software por klicap - ingeniería del puzle, S.L. se encuentra bajo una Licencia Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported.

Índice de contenido 1 Introducción...3 2 Modelo conceptual... 4 3 Características... 8 4 Arquitectura...10 5 Detalles...12 2

1 Introducción Este documento es una presentación de CLINKER, un proyecto diseñado y construido por KLICAP INGENIERÍA DEL PUZLE, S.L. que nace a comienzos del año 2010. Para poder entender qué es y cuáles son sus objetivos es necesario conocer las distintas actividades que intervienen en el ciclo de vida del software. Para facilitar al lector la comprensión del presente documento, se va a proporcionar la siguiente definición: Un ecosistema de desarrollo software es un espacio de trabajo en el que conviven una serie de herramientas que acompañadas de unas buenas prácticas permiten a un equipo de desarrollo modelar una metodología de trabajo Esta es una de las múltiples definiciones que se pueden encontrar para definir este concepto. Concretamente esta definición fue elaborada por uno de los integrantes de KLICAP y publicada 1 en su blog personal el 9 de agosto de 2008. Este documento gira en torno a esta definición y es por ello, que no debe resultar extraño que a lo largo del documento se citen fragmentos de la misma. CLINKER es para su equipo un claro ejemplo de proyecto de integración. Desde el principio se coincidió en la idea de que ya existían herramientas que apoyaban en las múltiples actividades que se realizan en el complejo camino que conlleva desarrollar software. La mejor forma de garantizar esas integraciones era buscando herramientas que estuvieran pensadas para interoperar con otras o bien fueran libres y de fuente abierta. Y si fuera posible ambas cosas, más favorable aun la integración. 1 http://www.manuelrecena.com/blog/archives/219 3

2 Modelo conceptual En este bloque se presenta el modelo conceptual en el que está basada la implementación. Este modelo es simplemente una visión particular de KLICAP y que únicamente debe considerarse como línea base. A continuación se presentan los distintos componentes propuestos. Diagrama 1: Componentes que forman parte de un ecosistema de desarrollo software 2.1 Source Code Management También podemos referirnos como Software Configuration Management, en ambos casos se usa el acrónimo S.C.M. 2. Es quizás uno de los componentes clave del ecosistema, básicamente porque será donde persista el código de fuente, documentos, perfiles de configuración, etc. Precisamente su versatilidad es lo que hace que se pueda emplear para múltiples fines. Para este componente tenemos muchas opciones, que van desde la mítica herramienta CVS, hasta Git pasando por Subversion y Mercurial. En cualquier caso los objetivos más destacados de este componente es: 1. Contenedor de archivos 2. Histórico de cambios 3. Control de acceso 2.2 Instant Messaging Podemos encontrar este tipo de herramientas en soluciones HelpDesk, asistentes, redes sociales y en servicios destinados al ocio y el entretenimiento. Su finalidad parece evidente, poder intercambiar mensajes de texto con una o varias personas facilitando así un nuevo canal de comunicación. A diferencia de otras herramientas de comunicación, es bidireccional y aumenta el grado de participación e interacción. Puede jugar un papel muy importante dentro del ecosistema si por ejemplo además de poder intercambiar impresiones con otros miembros del equipo la usamos para recibir notificaciones (comunicación unidireccional) de eventos que surgen dentro del ecosistema. 2.3 Repository Manager Están muy relacionados con la herramientas de modelado y construcción de proyectos. Dentro de una 2 http://es.wikipedia.org/wiki/revision_control 4

organización, división o departamento se crean y mantienen muchas líneas de código. Un pilar importante dentro de la ingeniería del software es la modularidad que conlleva consigo la reutilización de código. Cuando todo esto comienza a crecer se establecen dependencias que no pueden ser mantenibles de forma manual. Pues bien, para poner solución a este inconveniente y a otros que no se han descrito, existen herramientas que los solucionan proporcionando: 1. Administración de repositorios locales y externos 2. Información sobre las dependencias 3. Respaldo 4. Control de acceso 5. Búsquedas 6. Caché 2.4 Mailing List Manager Una herramienta muy común en cualquier entorno colaborativo que se precie. Permiten gestionar un conjunto de listas de correo, incluir moderación, procesos de suscripción, etc. Las listas de correo proporcionan un canal de comunicación bidireccional y pasivo, es decir la información fuye entre emisor y receptores en ambos sentidos y no se requiere que los receptores respondan en un tiempo determinado. A diferencia de la mensajería instantánea que sí requiere que existan receptores participando activamente. 2.5 Build Tool Sin lugar a dudas, constituyen el alma del ecosistema. Estas herramientas modelan nuestros proyectos de una forma reglada con independencia del modelado que ofrecen distintos IDEs. El modelado puede ir desde algo básico hasta propuestas más completas y sofisticadas. En este modelado podemos distinguir varias partes: 1. Datos básicos: nombre, descripción, licencia, clasificación, etc. 2. Versionado 3. Gestión de dependencias 4. Ciclo de vida del proceso de construcción 5. Definición de artefactos 3 Lo realmente importante y que no podemos dejar pasar por alto es que nuestros proyectos descritos y caracterizados con estas herramientas pueden ser entradas de otras herramientas que sepan manejarlos y manipularlos. 2.6 Project Management Son ese tipo de herramientas que según en qué contexto se traten pueden tener connotaciones distintas. Existen empresas que tienen soluciones para gestionar la dedicación de sus empleados a proyectos y otras incluyen este aspecto dentro del propio ecosistema. Dependiendo de si consideramos el esfuerzo o no, añadiremos una nueva dimensión a este tipo de herramienta. Ligado al esfuerzo está la estimación y como resultados de ambos, la desviación. Sobre estas herramientas se ha centralizado la mayor actividad dado que son el punto de referencia de los proyectos, aunque según el tipo de tarea que estemos realizando puede que no sea necesaria su intervención directa (p.e. haciendo un commit en el SCM). Son ese punto de entrada porque en ella recae la responsabilidad del seguimiento, organización y planificación. 3 http://es.wikipedia.org/wiki/artefacto_(diseño_de_software) 5

Los módulos más comunes en este tipo de herramientas son: 1. Wiki: herramienta que revolucionó la forma de generar documentación, publicar contenidos e interactuar de forma colaborativa 2. Roadmap: planificación detallada de hitos (entradas, releases, etc) 3. SCM Viewer: navegación por el código fuente, coloreado, búsquedas, históricos, etc. 4. Tickets: el ticket es un concepto muy general para modelar tareas que deben realizarse. Desde este módulo se proporciona una descripción, asignación y se realiza el seguimiento (trazabilidad) 5. Dashboard: vista resumida cubriendo funciones propias de los cuadros de mando 2.7 Continuous Integration & Build Se las puede considerar un planificador de tareas. Normalmente tienen como entradas: 1. Código fuente del proyecto modelado con una herramienta de construcción 2. Eventos que condicionan la ejecución de las tareas Son precisamente estos dos puntos los que nos permiten hablar de integración continua. Una forma de entenderlo es considerar como causa, cambios en 1 y 2, y como efecto, sus implicaciones (el resultado). También podemos hablar de sus salidas pero son tan amplias que se escapan del alcance de este documento. La automatización sería difícilmente alcanzable sin estas herramientas, sus beneficios son evidentes y necesarios. 2.8 Content Management System Es obvio que no todo lo que se genera en un proyecto es código fuente, y que no todo proyecto tiene por qué tener código fuente. Sólo tenemos que fijarnos en los proyectos de consultoría donde los objetivos quedan plasmados en documentos. La gestión documental es un concepto amplio y que en este contexto involucra a distintos módulos propuestos. Con el paso de tiempo se genera gran cantidad de información que debemos gestionar si queremos evitar una pérdida de conocimiento. Esta información (conocimiento) se puede encontrar en distintos formatos, podemos destacar documentos de texto tradicionales y formatos más ágiles como páginas wiki. Por lo tanto, es necesario: 1. Facilitar la recuperación de la información 2. Organización y clasificación 3. Auditoría y control de acceso 2.9 Source Code Quality Existen herramientas que analizan el código fuente y obtienen un conjunto de indicadores que nos proporcionan información sobre su estado. Además de estos indicadores se pueden obtener recomendaciones para actuar de forma preventiva ante errores potenciales. Digamos que estas herramientas ayudan a obtener una radiografía en un determinado momento del estado de salud de nuestros proyectos. Si relacionamos estas herramientas con la integración continua lo que se obtiene es una inspección continua que nos permite estudiar su evolución con respecto al tiempo. Siempre que nos refiramos a este componente lo estaremos haciendo desde su punto vista estático, es decir, dejando a un lado el comportamiento en ejecución (dinámico). 6

2.10 Single Sign On Siendo un modelo conceptual basado en la integración no podía ser otra forma, tenía que estar presente. Como se verá en secciones posteriores las distintas soluciones propuestas ya proporcionan sus propios mecanismos para gestionar usuarios, permisos, roles, etc. El objetivo de este componente es precisamente centralizar y delegar en un solo punto: 1. Almacén de credenciales (autenticación) 2. Administración de permisos, grupos y roles/perfiles (autorización) 3. Proporcionar un mecanismo para la integración de otras herramientas no contempladas 2.11 Backup Hoy en día existen soluciones de backup muy potentes y fexibles, y no es objetivo de este componente plantear alternativas sino complementar. La idea es poder realizar copias de seguridad con la información que gestiona nada herramienta y su configuración. De esta forma conseguiremos: 1. Facilitar la actualización de componentes. Tendremos copias de seguridad accesibles en caso de que algo falle. 2. Exportación de configuraciones en caso de necesitemos replicar en distintas instancias 3. Posibilidad de trasladar las copias de seguridad a otros soportes mediante ftp, rsync, ssh, etc. 2.12 Deployment Environment Un entorno de despliegue es un máquina -normalmente- virtualizada que proporciona un sistema operativo, librerías base, herramientas, servidores (web, bases de datos, ldap, etc.) y otras piezas de software para satisfacer requisitos no funcionales de nuestro proyecto. Estos entornos son realmente útiles para llevar a cabo buenas prácticas relacionadas con el aseguramiento de la calidad del software. En esta línea, klicap está trabajando en Clinker DE Library. Una colección de entornos que cubran escenarios comunes y estén disponibles de forma cómoda y sencilla. 7

3 Características En el apartado anterior se ha introducido un modelo conceptual sobre ecosistemas de desarrollo software. En la introducción se han descrito sus componentes dando una pincelada de las funcionalidades que aportan. En este apartado se mostrarán las características de la implementación que se ha llevado a cabo. Basado en soluciones maduras y consagradas Las herramientas propuestas son maduras, estables y poseen importantes comunidades. Esto asegura el mantenimiento y evolución de las mismas. Además están respaldadas por una gran colección de plugins, documentación, listas de distribución y foros. Solución flexible basada en la integración La implementación propuesta es sólo una línea base a modo de referencia. Su diseño ha sido concebido para que nuevas herramientas y sistemas de información puedan ser incorporados y se puedan interactuar con la información que gestionan. Las integraciones están basadas en estándares para mejorar la interoperabilidad. Un aliado en la externalización del desarrollo y factorías de software Define un espacio de trabajo colaborativo ideal para la externalización del desarrollo y las factorías de software. La definición de roles y permisos permite controlar qué funcionalidades están disponibles y la visibilidad de la información según el rol de cada participante. La actividad de los proyectos queda recogida en un único lugar, evitando islas de información. Ahorro en el mantenimiento de infraestructura a medida Podrás centrarte en el desarrollo de tu software en lugar de gastar tiempo y dinero en mantener tu propia solución a medida. Dejarás de preocuparte de actualizaciones, optimización y comprobar compatibilidades entre versiones. Sólo tendrás que estar pendiente de que el almacenamiento sea suficiente. Escalabilidad Desde la organización del sistema de ficheros hasta el aprovisionamiento de usuarios han sido pensados para que las tareas básicas de administración resulten cómodas y sencillas. El objetivo principal es que la incorporación de nuevos proyectos y participantes no suponga una carga en tareas propias de un administrador de sistemas, es más, ahora esta labor puede recaer en cualquier otro rol. Accesibilidad Sólo necesitarás una conexión a internet y un navegador web para poder acceder a toda la información que se gestiona en tu ecosistema. Todas tus herramientas disponibles a través de protocolos y puertos estándares. No intrusivo Si estás familiarizado con las herramientas propuestas perfecto, porque seguirás usándolas de la misma forma. Las integraciones que se han diseñado no modifican el modelo de datos propio de las herramientas, por lo que los plugins de terceros seguirán funcionando correctamente. 8

Un sólo login para acceder a todo La propuesta de Single Sign-On permite que los participantes hagan login una sola vez en cualquier de las herramientas y sus credenciales se propaguen entre el resto. Si ya dispones de un almacén de credenciales (LDAP, base de datos, SSO, etc) será muy sencillo usarlo como fuente de datos para el proceso de autenticación. Su gestión de identidades permite definir permisos al mismo nivel que lo permiten las herramientas propuestas y que sólo tengas que dar de alta a los participantes una sólo vez. 9

4 Arquitectura Diagrama 2: Componentes Con este diagrama se pone de manifiesto el estado actual de la implementación. Algunas notas importantes: 1. Se opta por MySQL como motor de base de datos para los componentes Redmine, Trac, Sonar y Clinker SSO Gateway 2. El tráfico de red entre los usuarios y las herramientas se realiza a través de puertos estándares (HTTP/S) 3. En el componente Clinker SSO Gateway queda delegada la responsabilidad de gestionar las autenticaciones y autorizaciones 4. Actualmente los componentes integrados en el SSO son Redmine, Subversion, Sonar y Jenkins

Diagrama 3: Piezas 11

5 Detalles El sistema operativo elegido es Debian Squeeze GNU/Linux con kernel 2.6.32-5-amd64 y se ha instalado: Software Versión Licencia Instalación Apache Web Server 2.2.16 Apache License v2 Paquetes Apache Tomcat 6.0.32 Apache License v2 Binario MySQL Server 5.1.49 MySQL License Policy 4 Paquetes OpenSSH Server 5.5 BSD License Paquetes NTPd 4.2.6 Paquetes rsync 3.0.7 GNU GPL Paquetes Nexus 1.9.1.1 GNU Afferro General Public License Binario Sonar 2.13 GNU LGPL v3 Binario Jenkins 1.427 MIT License Binario Alfresco 3.4.0 (d3370) Binario Trac 0.11.7 BSD License (modified) 5 Fuentes Redmine 1.1.3 Fuentes Subversion 1.6.17 Apache License v2 Fuentes Lambda Probe 1.7b GNU GPL v2 Binario Awstats 7.0 GNU GPL Binario JDK 1.6.0-27 Binario Apache Maven 2.2.1 Apache License v2 Binario Apache Maven 3.0.4 Apache License v2 Binario PHP 5.3.3 PHP License v3.01 6 Paquetes Python 2.6.6 PSF License 7 Paquetes CMIS Trac Plugin 1.0.1 GNU GPL v3 Fuentes Stractistics Trac Plugin 0.4.3 GNU GPL v2 Fuentes Clinker SSO Gateway 1.1.0 Comercial Fuentes Jenkins Auth Clinker Plugin 1.1.1 Comercial Fuentes Sonar Auth Clinker Plugin 1.1.0 Comercial Fuentes Redmine Auth Clinker Plugin 1.0.0 Comercial Fuentes La máquina virtual se distribuye con la misma licencia que el presente documento, lo que implica: 1. Puedes copiar y distribuir la máquina virtual siempre y cuando quede clara su autoría 2. Puedes copiar y distribuir la máquina virtual siempre y cuando no existan fines comerciales 3. Puedes copiar y distribuir la máquina virtual sin realizar modificaciones 4 http://www.mysql.com/about/legal/licensing/index.html 5 http://trac.edgewall.org/wiki/traclicense 6 http://www.php.net/license/3_01.txt 7 http://docs.python.org/license.html#terms-and-conditions-for-accessing-or-otherwise-using-python 12