CÓDICE SOFTWARE APOYA A 4 EMPRESAS DE CASTILLA Y LEÓN EN LA OBTENCIÓN DE CMMi

11:12 0 Comments

Desde finales de 2006 Códice Software ha prestado su apoyo al proyecto Competic, una iniciativa enmarcada dentro del Plan Avanza y liderado en Castilla y León por AETICAL, a través del cual 5 empresas de la región han logrado CMMi nivel 2.

La participación de Códice se materializó mediante la aportación de un consultor regional al proyecto, papel desempeñado por Mercedes Quintanilla, responsable de calidad, que previamente había liderado el proyecto CMMi interno de la empresa, que terminó con éxito en Marzo de 2007 convirtiendo a Códice en la primera PYME española en obtener una certificación CMMi.

El proyecto terminó el pasado Junio con un importante éxito: 5 de las 8 empresas participantes lograron una evaluación positiva en CMMi nivel 2. El éxito también fue importante para Códice ya que 4 de las 5 empresas habían recibido el apoyo directo de su consultora regional.

El Proyecto Competic ha sido promovido como parte del Plan AVANZA del Ministerio de Industria, Comercio y Turismo y ha contado con la colaboración de asociaciones autonómicas de TICs. Tras el éxito que ha supuesto esta primera edición, CONETIC pretende continuar a lo largo de los años 2007, 2008 y 2009 con una segunda edición del proyecto en la que participarán de nuevo empresas de todo el país, algunas con el objetivo de alcanzar el nivel 3 de Madurez y otras para lograr el nivel 2.

CMMi (Capability Maturity Model) es el modelo de calidad para empresas de software más reconocido a nivel internacional que clasifica a las empresas en niveles de madurez. Los beneficios que aporta la implantación de este modelo a las empresas pasan por la adherencia en los procesos, ahorro en costes de desarrollo, importante mejora en la productividad así como en la planificación y mejora en la calidad del software terminado lo cual lleva a una mayor satisfacción de los clientes.

Códice Software se centra en el desarrollo de software de control de versiones y gestión de configuración. Su producto, Plastic SCM, se abre camino en el competitivo mercado internacional de soluciones de control de versiones, una de las mayores áreas de crecimiento en los últimos años, dada su fuerte influencia en la producción de software de calidad. Plastic SCM es una alternativa potente y flexible a los sistemas de gigantes del software como IBM, Microsoft o Borland.

0 comentarios:

¡Nueva Versión BL063.3 disponible!

15:08 0 Comments

Acabamos de sacar la nueva versión de Plastic 1.5.63.3 (internamente la denominamos BL063.3), esta vez nos hemos centraddo en corregir pequeños errores pero también hemos incluido varias características nuevas:
La primera es el Sistema Avanzado de Consultas, que está disponible desde la línea de comandos a través del cm query command.
Este sistema ofrece mayores posibilidades de búsqueda que nuestro Sistema de Consultas: ¡si algo está en el repositorio nuestro Sistema de Consultas Avanzado lo encontrará!
Está basado en gramática SQL, por lo que pregunta directamente a la base de datos del servidor de Plastic.
Las consultas se pueden realizar en una entidad o en varias a la vez, siendo las entidades soportadas cualquier objeto del repositorio, como ítems, ramas, revisiones, etiquetas o changesets.

Echa un vistazo a este ejemplo de una consulta bastante compleja:

cm query
"SELECT BR1.NAME, R1.ITEMID as ITEMPATH
from REVISIONS R1, REVISIONS R2, BRANCHES BR1, BRANCHES BR2, LINKEDOBJECTS LO, LINKS L
where LO.SOURCEOBJECTID = R1.OBJECTID
and R1.BRANCHID = BR1.OBJECTID
and LO.DESTINATIONOBJECTID = R2.OBJECTID
and L.OBJECTID = LO.LINKIDand R2.BRANCHID = BR2.OBJECTID AND BR2.Name='main' AND L.NAME='merge' AND R1.ITEMID=SolvePath(c:\workspace)"
--solvePath=ITEMPATH

El resultado sería el siguiente:

NAME ITEMPATH
scm0205 c:\workspace
scm0831 c:\workspace
SCM0562 c:\workspace
SCM1371 c:\workspace
scm1755 c:\workspace


Ejemplo de una consulta sobre las ramas creadas por un usuario:





La otra novedad de esta versión es una mejora en el desarrollo en paralelo en una sola rama.

Plastic soporta diversos patrones de desarrollo, siendo el más aconsejado por nosotros el de "rama por tarea", pero si prefieres trabajar en una sola rama te gustará esto:

Cada desarrollador trabaja desde la última revisión de la rama main; si dos desarrolladores desprotegen esta revisión...cuando el primero de ellos proteja sus cambios lo podrá hacer sin problemas: sus cambios se incluirán como una nueva revisión. ¿Pero qué pasa cuando el segundo desarrollador vaya a proteger sus cambios? Al haberse creado una nueva revisión Plastic antes simplemente le indicaba que era necesario realizar un merge.

Desde ahora, cuando este segundo desarrollador vaya a proteger sus cambios, Plastic actualizará automáticamente el contenido de su repositorio y le mostrará el diálogo de merge; el resultado será una nueva revisión que incluirá los cambios realizados por ambos desarrolladores.

¡Esta mejora no sólo está disponible desde la herramienta gráfica de Plastic sino también desde la integración con Visual Studio, por lo que tu trabajo podrá ser más rápido y productivo!

¡Esperamos que disfrutes de esta nueva versión!

0 comentarios:

Nuevo diseño del árbol en 3D

11:46 0 Comments

Nuestro equipo ha estado trabajando en el nuevo algoritmo de diseño para el árbol de versiones en 3D de Plastic.
Con extensas revisiones, el árbol tiene ahora un comportamiento cónico, se va haciendo más ancho hacia el final, con lo cual es más dificil de comprender.
Así que han cambiado el algoritmo para utilizar un tipo de diseño en espiral: las ramas se distribuyen en el espacio siguiendo una ruta espiral, que comienza desde el centro del árbol en cada bucle para ahorrar espacio.
Daniel también pidió el añadir (finalmente, ya que es una característica por la que se ha esperado mucho tiempo) la funcionalidad de localizar las revisiones y las ramas. También se ha implementado un filtro por fechas: ahora puedes seleccionar una fecha un período de tiempo y sólo se crearán las revisiones en ese período.
El nuevo árbol en 3D estará integrado en la BL067 y se lanzará junto con plastic 2.0. Supongo que los creadores de la GUI de Códice le limpiarán un poco la cara antes :-) pero las nuevas funcinalidades estarán disponibles. Podéis ver un vídeo en el canal de Códice en YouTube:

P.S: el viernes pasado uno de los vídeos de la GUI 2.0 llegó a la lista de los más vistos en YouTube en España... entre un montón de vídeos de fútbol... :-)

0 comentarios:

Más de la nueva GUI

11:39 0 Comments

Acabamos de sacar un nuevo vídeo del nuevo cliente gráfico (aún en desarrollo).

0 comentarios:

Plastic 2.0 pre

11:16 0 Comments

Estamos en estos momentos trabajando en varios proyectos que llevarán a la creación de la próxima versión: Plastic 2.0.

Algunos de los cambios y características se han anunciado con anterioridad (¿que será lo siguiente?).
La característica en la que estoy trabajando es la nueva GUI. Estamos a punto de utilizarla de manera interna esta semana, así que espero que el equipo me pueda dar sus opiniones respecto a usabilidad. La nueva apariencia es una gran cambio respecto a lo que habéis visto hasta ahora de Plastic, con ello intentamos conseguir varios objetivos:

- Crear una mejor interfaz para gestionar diversas vistas de la información
- Ofrecer un diseño atractivo para los usuarios
- Simplificar el obtener información de la herramienta, haciendo que las operaciones más utilizadas sean aún más sencillas
- Crear nuevas posibilidades de integraciones con herramientas de terceros e incluso nuevos desarrollos de Códice para crear algún tipo de entorno virtual en el que colocar ventanas.

Aquí se pueden ver los resultados de una versión preliminar:




¡Espero que os guste y que estéis atentos a las novedades!

0 comentarios:

El servidor de Plastic en Linux

17:18 0 Comments

Linux ha sido para nosotros un objetivo principal desde el principio del proyecto. Todavía estamos intentando poner nuestra herramienta gráfica en la mainline (gracias a nuestros compañeros de mono), pero el servidor lleva varios meses en funcionamiento.

De hecho muchas empresas parecen estar interesadas en desarrollar con servidores Linux y clientes basados en Windows. Y este es el escenario que voy a describir.

Plastic 1.5 (BL063 para nosotros) incluye varias mejoras en el instalador de Linux para facilitar la configuración. Ahora no tienes que instalar un backend DB separado ni la plataforma de mono, ambos están incluidos por defecto.



He utilizado un OpenSuse en blanco (bueno, realment la imagen vmware de http://www.blogger.com/www.go-mono.org) y el proceso no debería tardar más de 5 minutos, a no ser que tu disco duro sea muy lento.



El primer paso será [obvio] descargar el paquete de instalador de Linux que puedes conseguir aquí. El nombre variará de una versión a otra, ahora se llama PlasticSCM-professional-1.5.63.2-linux-installer.bin.

Una vez que lo tengas en tu máquina ajusta los permisos para hacerlo ejecutable.



El instalador se crea con Bitrock InstallBuilder por lo que puede funcionar tanto en instalación de línea de comandos como en modo gráfico. No quiero que ningún administrador de sistema se queje así que seguire el modo basado en texto...



Sólo hay que ejecutar el fichero bin y comenzará a hacer preguntas: seleccionar el idioma, especificar un directorio, aceptar la licencia, seleccionar los componentes que haya que instalar (estamos instalando el servidor así que sería suficiente con instalar los componentes del servidor y el cliente en línea de comandos) y luego comenzará a copiar ficheros. Opcionalmente se pueden instalar los plugins de Eclipse y JDeveloper (y si estás trabajando en Windows también el de Visual Studio).





Una vez que se copien los ficheros (por defecto en /opt/PlasticSCM) se pueden instalar tanto el servidor como el cliente en línea de comandos, que nos ayudará a comprobar si el sistema está en funcionamiento.



La primera pregunta será la selección del idioma, y entonces pasará a configurar el método de seguridad, que se refiere al método de autenticación con el que trabajará el servidor. Este es un paso bastante importante ya que si no se configura bien, los clientes no se podrán conectar al servidor y habrá que arreglarlo....

Echa un vistazo a las opciones disponibles:

  • "Name working mode": el servidor cargará la lista de usuarios de la máquina en la que está funcionando. Si los clientes que se conectan están trabajando en cuentas con el mismo nombre el servidor los reconocerá como usuarios autenticados. Como puedes ver, es un método muy fácil de configurar pero dependerá de lo potente que sea la red. Si no eres un administrador de sistema muy cuidados es muy fácil que haya problemas con los usuarios. Por otro lado es bastante útil si sólo quieres evaluar Plastic o lo necesitas como interoperador entre Windows y Linux. Asegúrese de que el servidor conoce su nombre de usuario.
  • "NameID working mode": es igual que el anterior pero en este caso se comprueba tanto el nombre como el ID. En los sistemas Windows el ID es el SID del usuario. En los sistemas Unix es el id de usuario. Es un sistema más potente que el anterior para Windows pero menos en grupos Linux a no ser que se controle lo que se puede adjuntar a la red. Es una buena opción para autenticación basada en NIS.
  • "LDAP working mode": ¿tienes en tu red un servidor LDAP? Sería muy fácil de utilizar para un escenario mixto Windows/Linux scenario. Tendrás que dar credenciales de conexión al servidor y validar los usuarios con los nombres. Para autenticar se utiliza el ID interno. El servidor necesitará una combinación de usuario/contraseña para poder recuperar la lista de usuarios y IDs. Este método sólo se puede utilizar para conectar sistemas Linux/Unix a servidores de Directorio Activo.
  • "AD working mode". AD se refiere a Directorio Activo. Si estás trabajando en modo de AD en un servidor Windows no tienes que configurar usuarios ni contraseñas, el servidor será capaz de recuperar los usuarios y sus contraseñas de modo automático. Este método es compatible con el método LDAP: puedes configurar el servidor Linux en modo LDAP y los clientes en AD, por ejemplo.



En el ejemplo de la imágen estoy conectando nuestro servidor interno a 192.168.1.3, el nombre del dominio es codicefactory.com, y el servidor utilizará mi propio usuario para autenticarse.

Ahora habrá que indicar si el servidor es un Directorio Activo o un servidor standard LDAP.

También se puede seleccionar el puerto TCP en el que estará el servidor de Plastic.
Después de estas configuraciones el servidor se pondrá en marcha.

El siguiente paso será configurar el cliente. Hemos dicho que utilizaríamos Linux sólo como servidor, pero suele ser una buena idea configurar también el cliente en línea de comandos para comprobar que el servidor está funcionando correctamente.

La imagen muestra los pasos para configurar el cliente.



Ahora podemos teclear un comando para comprobar si el servidor está en funcionamiento. Utilizaremos cm lwk para listar los espacios de trabajo disponibles, y como no se ha creado ninsguno obtendremos un listado vacío.



Ahora deberias instalar el cliente de Plastic en Windows y configurarlo para que se conecte a tu servidor Linux. Tendrás que seleccionar el idioma y después el método de autentiación. Acuérdate de configurarlo según el mecanismo que has indicado en el servidor. El último paso será seleccionar la ubicación del servidor: debes de indicar la dirección IP o el nombre y el puerto. Por defecto se utiliza el puerto 8084 pero se puede cambiar al configurar el servidor.

El servidor está instalado en el /etc/rc directories, por lo que se pondrá en funcionamiento cuando se ponga en marcha el sistema. Para parar el servidor de modo manual run /opt/PlasticSCM/server/plasticd stop. /opt/PlasticSCM/server/plasticd start y se pondrá en marcha.
Si has intentado instalar la nueva versión Plastic 1.5 te habrás dado cuenta de que tardas más tiempo (mucho más) en leer los paso a seguir para realizar la instalación que en llevarla a cabo.

¡Prueba el nuevo servidor en Linux y cuéntanos!

0 comentarios:

SCRUM y CMMI en DDJ

16:55 0 Comments

Acabamos de publicat un nuevo artículo en DDJ sobre nuestra experiencia en CMMi utilizando SCRUM. Hemos intentado explicar los problemas con los que nos encontramos y cómo intentamos centrarnos en trabajar con un método ágil mientras estábamos evaluándonos en CMMi.

0 comentarios:

Estadísticas desde el sistema de consultas

16:12 0 Comments

El sistema de consultas es una de las novedades de Plastic 1.5. Ofrece nuevas posibilidades para crear estadísticas a medida y saber cuál es la situación del desarrollo.
Queríamos hacer el sistema de consultas lo más simple posible (siempre puedes quejarte aquí si no te gusta), y por eso decidimos crear una sintáxis tipo SQL. De este modo, teniendo en cuenta que nuestros usuarios son desarrolladores, les ofrecemos una interfaz familiar.

Imagina que quieres hacer un listado de las revisiones creadas desde ayer. En mi caso escribiría:
$ cm find revs where date “>” ‘2007/08/9’ and owner = ‘pablo’


¿Y si quisieras dar formato a toda esta información? Puedes utilizar el modificador de formato y escribir algo como:
$ cm find revs where date “>” ‘2007/08/9’ and owner=’pablo’ –format=”{date} {type} {owner} {item}#{branch}”


Puedes ver que acabo de modificar elementos en un par de ramas. También podría hacer un listado de las revisiones modificadas en una rama concreta añadiendo la condición:

and branch=’br:/main/FixBL063/SCM2199’ a la consulta anterior, como se puede ver en la siguiente captura.


Puedes ver más de los objetos de los que se puede buscar información tecleando: cm showfindobjects. En este momento se pueden buscar revisiones, ramas, changesets, enlaces y usuarios.

Por ejemplo, tecleando “cm find user” se obtienne una lista de los usuarios que tienen objetos dentro del sistema.

También se puede obtener una lista de los changesets con:
$ cm find changeset where owner='pablo' and date ">" '2007/08/01'

Ahora imagínate que quieres saber cuales son todas las ramas que has creado hasta el momento: se puede hacer con

$ cm find branch where owner=’pablo’, en mi caso.

Vale, esto tiene buena pinta para poder hacer un seguimiento de qué es lo que ocurre en el proyecto, con los cambios que alguien ha realizado, etc. Pero, ¿cómo se obtienen estadísticas?
Una de las ventajas del cm find es que puedes exportar la información con formato XML. Prueba algo como:

$ cm find revs where date ">" '2007/08/1' --xml --file=statsAgo.xml

para crear un fichero con toda la información sobre las revisiones creadas a partir de una fecha en concreto. Una vez que tengas el fichero XML puedes empezar a probar opciones con él con tu herramienta favorita.



Importé los datos generados por el cm find en Excel 2007 y entonces empecé a hacer pruebas con las pivot tables. En la nueva versión 2007 esta característica está un poco escondida: ahora está en el menú insertar en vez de en el menú de datos.

Una vez que hayas creado la tabla de los datos importados puedes empezar a agruparlos. Entonces puedes mostrar las revisiones agrupadas en ramas, incluyendo gráficos bastante curiosos.







Mostrar las revisiones agrupadas por usuario.



O incluso calcular cómo se distribuye la revisión creada en cuanto a horas (puedes descubir cosas interesantes).


O semanalmente:



Estamos trabajando en ampliar el sistema de consultas para ofrecer un modo fácil (y potente) de localizar por ejemplo integraciones. También hemos desarrollado un subsistema que llamamos "sistema avanzado de consultas" (no está oficialmente disponible pero estará en la próxima versión BL63.3) que permite buscar directamente en el esquema relacional.

Tomando el sistema de consultas como punto de partida implementaremos un nuevo módulo de Plastic (aún no hemos comenzado), para ofrecer los gráficos directamente desde la herramienta gráfica.

¡Esperamos que os haya gustado!

0 comentarios:

Rendimiento de GIT vs PLASTIC

14:16 0 Comments

¡Rendimiento! Me estoy empezando a obsesionar con esta palabra. Casi desde el principio del proyecto el rendimiento ha sido una de mis principales preocupaciones: el poder realizar las operaciones de update (obtener) cada vez más y más rápido.

Si recuerdo bien, varios meses antes de lanzar nuestra versión inicial ya estaba comprobando si Plastic era más rápido que Perforce actualizando el espacio de trabajo, una de las operaciones más comunes de un control de versiones.

Hubo un momento en el que éramos capaces de superar a Perforce (que dice ser la solución SCM rápida del mercado), con lo que estaba tremendamente satisfecho. Sabía que Perforce era aún más rápido que Plastic haciendo protecciones y añadiendo nuevos fichero, pero nosotros éramos más rápidos actualizando el espacio de trabajo.

Después realicé un test para comparar Plastic y Subversion y…haciendo la operación de “obtener todo” (que descarga de nuevo todo el contendido al espacio de trabajo), ¡y resultamos ser tres veces más rápidos!

En las últimas semanas he estado trabajando en un cambio importante en el código del selector. ¿Qué quiere decir esto? Bueno, pues los selectores son la pieza clave del sistema de Plastic, tanto si son visibles como si no (la opción visible tan sólo está en la versión profesional de Plastic, pero de todos modos muchos usuarios no quieren preocuparse del selector y prefieren el mecanismo de “cambiar a rama”), juegan un papel importante en el sistema de Plastic.
En resumen: las revisiones no se “enlazan directamente” a los directorios que las contienen (como ocurre con los “sistemas de rutas de ramas”) como TFS, Perforce, Subversion, etc) sino que el sistema tiene que resolver cuándo una revisión depende del selector.

¿Significa esto que la misma revisión de un fichero podría incluirse en diferentes ubicaciones con sólo cambiar el selector? ¡Si, eso es exactamente lo que significa!

El mecanismo es extremadamente potente, pero como contrapartida no es especialmente fácil de implementar. A cambio obtienes renombrado real y muchas otras posibilidades, pero el sistema tiene que realizar una búsqueda para calcular dónde está localizado cada elemento.

La versión de Plastic BL064 tiene un nuevo mecanismo para resolver el selector que supone una importante mejora respecto al anterior. Ahora no solo es rápida la operación de "obtener todo" , sino también el detectar qué se tiene que cambiar si alguien realizó un cambio en la rama en la que está trabajando. El nuevo sistema es muchísimo más rápido.

-“¿BL064? ¿De qué estais hablando? Acabáis de sacar Plastic 1.5 hace unas semanas…-Puedo oír como algunos os quejareis … :-)

Nosotros utilizamos un esquema de numeración de desarrollo interna (que también está disponible en la versión externa, podéis echar un vistazo a la información de cada versión de los ejecutables), por lo que nuestra versión 1.5 es realmente la BL063. Pero en este momento estamos utilizando la BL065 internamente como soporte de nuestro desarrollo. Así que me temo que las mejoras de las que estoy hablando aún no están disponible, un poco de paciencia…

Estaba muy satisfecho con el nuevo sistema del selector, pero de repente me acordé de GIT…Pensábamos que éramos lo más rápidos en las actualizaciones pero probé GIT y…bueno, pues es una herramienta fea y tonta :-), pero es muy rápida…

Así que instale de nuevo GIT 1.5.2.4 en nuestro Linux FC4, que tiene un par de Intel(R) Xeon(TM) CPU 3.00GHz. Tiene más de dos años pero va bastante rápido.
$ uname -a
Linux juno 2.6.11-1.1369_FC4smp #1 SMP Thu Jun 2 23:08:39 EDT 2005 i686 i686 i386 GNU/Linux.

Importé una versión de nuestro código en un repositorio de git. Quité todos los ficheros locales (¡menos el subdirectorio .git, claro!) e hice un “git checkout .” que recrea todos los ficheros. Tardó unos 20s…

Después probó el mismo escenario con Plastic (BL065). Tardó unos 29s. Si, GIT es más rápido pero… el servidor de Plastic se reinstaló, con lo que todo el contenido se descargó a través de nuestra red local de 100Mbps!!!

Para poner mayor dramatismo tengo que decir que la prueba se realizó contra nuestro servidor real que no solo tiene una copia del repositorio (como en el caso de GIT) sino de todo el desarrollo, pero no habría habido gran diferencia si el servidor tuviera sólo una copia ya que el tamaño no afecta al rendimiento.




La mala noticia (para mi) es que repetí la operación en git (después de haber quitado todo) y tardó solamente 8s. No se exactamente el motivo (¿cachés en disco?) pero si lanzo el “rm –rf *” justo antes de lanzar el “git checkout .” tarda mucho más que si dejo cierto tiempo entre ambas operaciones. Plastic tiene un rendimiento homogéneo de entre 28 y 30 segundos, no se ve afectado por la operación de borrado.

“Vale, pero ¿qué pasa cuando el servidor de Plastic está instalado en la mismo máquina que el cliente? ¿No sería un escenario más real y daría un rendimiento incluso mejor?", podríais preguntar...

Me temo que si queréis conocer la respuesta tendréis que esperar al siguiente capítulo … :-)

0 comentarios: