miércoles, mayo 17, 2006

Gestores de proyectos

¿Qué software de gestión de proyectos utiliza usted... si es que utiliza alguno? Me han pedido consejo sobre este asunto, pero lo cierto es que ni siquiera tengo claro cuál es el nombre genérico de este tipo de utilidades: "control de versiones", que es el otro nombre que recuerdo, me parece muy limitado. Con esto no estoy desaconsejando el uso de estos gestores. Simplemente, que nunca he tenido necesidad de usarlos: he trabajado en aplicaciones muy grandes, pero con equipos muy reducidos. Mi teoría, además, es que nunca dos personas tendrían que tocar el mismo fichero de código: cuando esto se produce, hay probablemente un fallo en el diseño de los módulos del proyecto. Además, detesto de todo corazón el modelo de cooperación que llamo "piloto/copiloto": un tío se sienta a teclear mientras el otro mira y comenta las "jugadas" como si fuese un partido de futbol. Y por desgracia, en esto es en lo que terminan muchos de los casos de desarrollo en equipo. Pero repito: es una opinión muy personal y subjetiva, y si os fijáis, ni siquiera es algo que haya puesto nunca en blanco y negro en un libro.

¿Con qué trabajáis? ¿Qué recomendáis? Para esta persona, es importante que el gestor sea compatible con Delphi y Visual Studio, de ser posible, aunque me parece que su uso principal, de momento, será con Delphi. Por experiencia, sé que muchas empresas usan el viejo Visual Source Safe con Delphi, pero no sé qué tal estará el problema de compatibilidad a estas alturas.

Si tenéis bitácora propia y queréis contestar con un artículo, enviadme la URL y os enlazo desde este mismo tema. Y por supuesto, también podéis hacerlo en los comentarios. En todo caso, muchas gracias, por adelantado...

20 Comments:

Anonymous Anónimo said...

Hola,

tanto en Delphi como en Visual Studio trabajé con el Visual Source Safe. No tuve problemas de compatibilidad porque el VSS lo que hace es copias de los ficheros. Los problemas, cuando los hubo, fue debido a la base de datos interna de VSS, que es algo en formato de texto y guarda todas las versiones.

Compañeros han utilizado el Team Source que venía con Delphi, y me comentaron que era parecido con algunas cosas que le faltaban con respecto al VSS. También conozco a gente que utilizó el Tortoise CVS. Este es un sistema Windows del estandard CVS que utilizan por ejemplo para el control de versiones en GNU. Por lo visto este sistema no se basa en bloqueos, sino en que cada desarrollador abre una rama de modificación de los fuentes y utiliza programas de comparación y fusión de texto para dejar la versión con todos los cambios.

Mi experiencia con el VSS es buena. Lo he utilizado tanto en proyectos grandes con muchos desarrolladores como en pequeños y de uso personal. En los grandes era porque se hacía mantenimiento de ese proyecto y así se sabía quién había modificado qué y porqué. En los pequeños porque me sirve de copia de seguridad y puedo ir haciendo un histórico de los cambios que realizo sobre los fuentes. La otra ventaja es tener un repositorio de código en un servidor pero no tener que trabajar sobre los fuentes en un servidor y poder tener la copia local, con lo que todo va más rápido.

Mi recomendación para proyectos Delphi es que se utilicen los .dfm en modo texto desde un principio, para así poder utilizar las herramientas de comparación de versiones. Si se cogen los .dfm en binario lo único que te dice es que "los archivos binarios son diferentes", incluso cuando ya has convertido el .dfm a texto.

La otra recomendación es acordar primero con todos los desarrolladores unas normas básicas para "Desproteger" y "Proteger" los archivos: No proteger nada que no compile, avisar cuando se añaden nuevas unidades utilizadas por otras unidades, etc. Al final la gente tiende a hacer lo que quiere, pero cuando te pisan las modificaciones tiendes a cumplir las normas.

Espero haber sido de ayuda. Saludos.

Sentoki

miércoles, mayo 17, 2006 12:04:00 p. m.  
Anonymous Anónimo said...

He utilizado VSS en un proyecto en Delphi de 4 personas trabajando en la misma oficina.

También he usado TortoiseCVS para un proyecto en .NET de dos personas separadas físicamente colgado en Sourceforge.

Ambas soluciones me han ido bastate bien aunque si los miembros del equipo no se encuentran en la misma ubicación descartaría un sistema de bloqueo/desbloqueo.

CVS es muy cómodo. Si alguien ha subido los cambios de un archivo antes que tu solo tienes que revisar en que consisten y poner en comunión los tuyos con los de la otra persona.

Además, diria que no solo sirve para controlar los cambios sino para disponer de una copia local en todo momento del código fuente actualizado.

miércoles, mayo 17, 2006 3:08:00 p. m.  
Anonymous Anónimo said...

Para Delphi está muy bien el FreeVCS, que se integra en el IDE de Delphi. No es tan potente como otros, pero es gratis y lo importante lo hace.

miércoles, mayo 17, 2006 4:04:00 p. m.  
Blogger Ian Marteens said...

¡Muchas gracias a los tres! Más o menos lo que me imaginaba, pero una cosa es imaginárselo y otra haber trabajado de verdad. La verdad es que es un tema que he descuidado bastante... pero es que por el tipo de proyectos en que he estado metido a lo largo de estos años, no me ha hecho falta.

Dos cosas:

1- En general, repito lo que decía en el mensaje principal: quienes tengáis bitácora o página, dadme el enlace y lo pongo donde mejor quede: bitácoras en la bitácora y páginas en la sección de enlaces de mi página. Y una presentación en la bitácora, que no ocurre lo mismo que con la página, que con el tiempo se sustituye y pierde contenido(otra ventaja de este formato: aunque desaparezca de la página de presentación del blog, sigue estando al alcance de los buscadores).

2- Le he estado dando vueltas a esto otro: ¿merecería la pena si creásemos un grupo de usuarios de C#, o de Visual? Sobre Delphi no: ya hay buenos grupos, y no creo que haga falta uno más. Más grupo significaría más dispersión. Pero quizás si merezca la pena hacer algo de este tipo para quienes empezamos con .NET a través de Visual Studio.

Motivos para un grupo: por ejemplo, veo muy interesante la posibilidad de negociar compras en grupo de software, para lograr mejores precios. Claro, esta es una idea, y habría que tantear la posibilidad con los mayoristas, o quizás incluso con la propia Microsoft Ibérica. La unión hace la fuerza, ¿no? Ya sé que existen unos cuantos grupos de usuarios en España, pero son casi todos de gente que lleva tiempo trabajando con Microsoft... y quienes venimos de Delphi somos "advenedizos". Otra ventaja es que podría ser un grupo verdaderamente internacional: las estadísticas de acceso de mi página muestran que un poco más de la mitad de los accesos vienen de España, luego viene México, y sorpresa, el tercero es Uruguay. Pero entre México, Uruguay, Argentina, Chile y Colombia están repartidos los accesos con bastante uniformidad.

Hay otro tema que me interesa para el que un grupo de usuarios podría ser una solución: llevo tiempo pensando en cómo hacer precios especiales para estudiantes universitarios. Claro, el problema que tengo ahora es cómo validar que realmente alguien lo es. El grupo no lo resolvería automáticamente, pero se podría idear un sistema de avales: Fulano, que es profesor de la Universidad Talycual avala que Mengano es estudiante de la carrera.

Y aparte, por supuesto, estaría el acceso a foros, consultas y descuentos (al menos en mis productos), bolsa de trabajo, publicidad para las empresas que patrocinen el asunto, etc, etc. Revistas no hacen falta, porque sinceramente, la Dotnetmanía es muy buena, es una revista impresa, y hay que reconocer el valor de los editores en meterse en una aventura de este tipo. Pero ahí tenéis otro ejemplo: quizás se podría negociar un descuento por subscripciones en grupo (no lo sé).

¿Cómo lo veis? Si no lo veis claro, decidlo sin problemas. Es sólo una idea...

miércoles, mayo 17, 2006 4:24:00 p. m.  
Blogger Ian Marteens said...

:) Gracias a los cuatro, quise decir. No había leído el cuarto mensaje...

miércoles, mayo 17, 2006 4:25:00 p. m.  
Blogger PabloNetrix said...

Lamento no poder aportar mi opinión sobre estas herramientas, principalmente porque las desconozco totalmente (la única "sincronización" de código que alguna vez he usado se basaba en herramientas muy sencillas, y destinadas a un único usuario, como PasDiffPro).

La idea del grupo de usuarios me parece buena. Más que nada porque en este "invento" (que ya no sé si llamarlo país, estado, nación o bocata de mortadela) que aún lleva por nombre España, estamos a años luz de la organización que hay en Latinoamérica, en temas de comunidades de usuarios. Aqui tenemos 200.000 grupos de usuarios (El de Madrid, el de Oviedo, el de Huelva, el de Barcelona, el de la calle Manolo Pérez 26 5º 3a...) y cada uno tira para un lado. No hay unión. No hay coordinación. No hay COMUNIDAD.

Y todo lo anterior, sin perjuicio de que efectivamente, los grupos de usuarios de .NET que hay están formados principalmente por ex-programadores de los lenguajes Visual "clásicos", Visual Basic sobretodo, y también por algún que otro Javero que ha perdido el norte y se ha adentrado en el Lado Oscuro :) pero faltamos los que durante mucho tiempo hemos sido (y aún somos, al menos laboralmente) Borlanders.

Mi voto pues, a favor de secundar la moción. :)

miércoles, mayo 17, 2006 6:25:00 p. m.  
Anonymous Anónimo said...

Yo el tema de tener un blog pues como que me da mucha pereza, lo de opinar, si es facilito y me lo se no tengo poblema, lo de hacer un artículo serio pues como que no y lo del grupo me mola, porque con esto de Internet no hago más que apuntarme a grupos, el primero el de mi música favorita (www.spanishcity.net), luego me compré un coche y buscando opiniones sobre él me apunté a otro de pirados (www.clubpeugeot307.com), el móvil (www.t610yz600.com), me bajo el adobe premiere para editar una peli y me encuentro con más (www.videoedicion.org)...

Creo que la mayoría utiliza PHPNuke y MySQL o algo parecido, aunque creo que el de spanishcity está en ASP y una bd en Access. Creo Ian que te veo, te veo evolucionando a un portal de ese tipo... ;-D

miércoles, mayo 17, 2006 6:30:00 p. m.  
Anonymous Anónimo said...

Me apunto al grupo desde ya, de los controladores de versiones, pues me pasa lo mismo, que no los he utiliado, aunque tengo un grupito desarrollando juntos, tengo claro lo que debe de hacer cada cual, y el que se hecha fuera del 'tiesto' pos lo despido :).

Saludos

jueves, mayo 18, 2006 12:00:00 a. m.  
Anonymous Anónimo said...

Me sumo a lo del FreeVCS que en realidad ahora se llama JediVCS. Está hecho en Delphi y pensado principalmente para Delphi, se integra bastante bien en el IDE. Además soporta varios motores de base de datos para almacenar los archivos como por ej. MySQL, SQLServer, Oracle, Firebird y algún otro que no recurdo en este momento. Este producto pertence al grupo Jedi, es decir, es open source y está en continuo desarrollo.
Obviamente no solo sirve para Delphi, de hecho lo usamos actualmente un grupo de 6 desarrolladores concurrentes y además de administrar el código fuente de los proyectos, almacenamos los archivos de documentación, ayuda, etc.
Por mi parte es una opción bastante interesante a considerar.

Creo que por más chico que sea el grupo de desarrollo hay dos herramientas casi indispensables para administrar un proyecto: una es un controlador de versiones o VCS y otra es un bugtracking.

jueves, mayo 18, 2006 12:19:00 a. m.  
Blogger Ian Marteens said...

Juanjo: estoy preparando un "post" sobre lo de UML, en particular... porque la respuesta es laaaaaaarga, incluso centrándome en lo de UML. La respuesta va a traer cola, pero eso es bueno: que haya debate :)

A ver si lo termino esta noche...

jueves, mayo 18, 2006 8:34:00 p. m.  
Blogger Fantasma said...

Hola Ian.

Primero, me entusiasma la idea de lo del grupo, me apunto si se puede.

Segundo, nosotros realizamos un experimento con Team Source y, precisamente lo que no nos gusto fué el trabajo con los módulos de datos bloqueados. La división del proyecto provoco en un momento la necesidad de que varios modificaramos los archivos al mismo tiempo...

Por último, tengo un remedo de blog que lo actualizo cada ciclo lunar pero lo pongo a disposición en http://lcrusan.blogspot.com

viernes, mayo 19, 2006 1:04:00 a. m.  
Anonymous Anónimo said...

Hola Ian y compañía.
Sobre los comentarios de las herramientas de control de versiones, yo las considero indispensables para el desarrollo, independientemente del tamaño del equipo. Hace más fácil compartir, controlar, revisar, versionar y en general, manejar todo el código fuente. Además existen muy buenos sistemas grauitos (CVS, o mejor Subversion, FreeCVS) con los que llevar el control.

Como herramienta de control de versiones, he utilizado VSS, TeamSource, TeamCoherence y actualmente StarTeam. De todos ellos me quedo con TeamCoherence. Tiene integración con todas las versiones de Delphi, y con otros entornos de desarrollo, incluido Visual Studio. Por cierto, que además incluye una utilidad para la automatización de construcciones (TCBuilder), al estilo de Ant, pero en modo gráfico. Esto de los builders ha sido un descubrimiento reciente por mi parte. Hasta hace poco no había encontrado nada para Delphi que permitiera automatizar tareas. En la empresa donde trabajo, tenemos automatizado la generación de las instalaciones de nuestro software, en un proceso que: descarga el código fuente del control de versiones, asigna número de versión, compila el código fuente, y genera el fichero de instalación, todo ello ello en tiempo mínimo. Hace poco he encontrado otra herramienta gratuita para la automatizazión; se trata de BuildIT. No tiene todas las capacidades de otros sistemas de automatización (FinalBuilder, VisualBuild, TCBuilder, ...) pero permite automatizar bastantes cosas. Yo, por ejemplo, lo uso para testear scripts de SQL Server, sin tener que ir cargándolos manualmente.

Sobre las herramientas para el controls de tareas, hace poco he encontrado una pequeña utilidad para el seguimiento de proyectos, muy sencilla y que funciona bastante bien. Se trata de TodoList. Sólo ocupa 400Kb y tiene una interfaz bastante agradable.

viernes, mayo 19, 2006 9:10:00 a. m.  
Blogger LibertaCom said...

Yo nunca he usado control de versiones, pero por lo que he ido cogiendo en el mundo linux, subversion está pegando fuerte.
Sobre organizador de tareas, voy a probar el TodoList pero a mi me encanta freemind. Aparte de la organización de tareas, permitiendo utilizar colores e iconos, facilita y potencia la organización mental de las tareas. Además el poder contraer y expandir las distintas ramas del mapa mental, te permite una muy buena organización ya que te evita confundirte con el bosque y centrarte en los árboles.
En esta entrada de mi blog pueden ver un pantallazo de sus resultados.

sábado, mayo 20, 2006 10:31:00 a. m.  
Blogger A.G. said...

Hola a todos,

Muy buen tema Ian, en realidad nunca he utilizado gestor alguno para proyectos, cuando hago uno y mas adelante quiero hacer modificaciones o agregaciones, siempre creo un nuevo proyecto, ya sea porque descubro nuevas librerias o controles que implementar, solo tomo la idea del anterior y claro le hago las mejoras.

Sobre el grupo, pues claro me sumaria a este cuando estuviese.

Vengo de programar en VB6 antes de este lo hacia con Clipper 87 y 5.2, pero hace como 2.5 años que me preocupe por ponerme al dia y me dedique a aprender c# ni si quiera he aprendido lo suficiente de C# y Microsoft ya tiene C# 2.0 y va por C# 3.0.

Saludos,

A.G.
Guatemala, C.A.

lunes, mayo 22, 2006 4:05:00 p. m.  
Anonymous Anónimo said...

Aquí he encontrado un post que habla sobre control de versiones desde un punto de vista práctico (y en español):

Integración continua y gestión de la configuración

Saludos

Perico

miércoles, mayo 24, 2006 1:06:00 p. m.  
Anonymous Anónimo said...

Sólo añadir que en mi empresa utilizamos JEDIVCS desde hace unos años (antes se llamaba FreeVCS) y consideramos que es muy productiva: la forma de trabajar en la que cualquier cambio queda registrado, proporciona seguridad :-)

jueves, mayo 25, 2006 5:35:00 p. m.  
Blogger REDMAN- said...

REDMAN: Aunque trabajara sólo en un proyecto siempre utilizaría VSS pues me da una tranquilidad de poder tirar atrás versiones, comparar fuentes en caso de fallos nuevos y hacer pruebas con los fuentes que finalmente descarto. Lo uso incluso para ficheros que no son código fuente. VSS es ideal porque precisamente no necesariamente se tiene que integrar con nada pues lo que gestiona son ficheros de cualquier tipo Binario/Texto (si queremos poder comparar).
Por otro lado sería interesante crear un gurpo de .NET 2.0 en mi caso me interesa V.B porque es el lenguaje al que da más soporte MS pero habría que generalizar porque a fin de cuentas no importa demasiado.
Creo que habría que crear una área de PROYECTOS, otro de INTERFACES y otro de ACCESO A DATOS. Además dentro del acceso a datos dividiría entre uno estandar ADO.NET 2.0 tal y como lo propone MS y otro más especifico en el que yo estaría más interesado que es gestión de reglas de negocio/datos desde dentro de la base de datos. SQL Server 2000/2005 son muy buenas opciones.

viernes, mayo 26, 2006 9:47:00 a. m.  
Blogger Ian Marteens said...

Me parece bien. A ver si hoy me da tiempo y cuento lo que se me ha ocurrido en un post. Un adelanto: el grupo debe ser una iniciativa colectiva. Quiero decir, que no se trate del "grupo de usuarios de IntSight": la gente debe tener una garantía de que cualquier esfuerzo que dediquen siga siendo suyo, y no se pierda. Por otra parte, veo problemas en descabezar completamente la iniciativa. Por ejemplo, si hay una lista de correo, dejar que todo el mundo pueda verla directamente sería un desastre: si Pepito quiere la lista para enviar spam, le bastaría darse de alta. Estos son dos requisitos opuestos. Luego escribo con calma una idea inicial, y vamos iterando sobre ella, o al menos, que nos sirva como punto de partida.

viernes, mayo 26, 2006 10:59:00 a. m.  
Anonymous Anónimo said...

Hola

Acabo de descubir este blog y me parece buena idea lo del grupo de usuarios, lo del CVS yo lo he usado con Java para un ERP y es bueno el VSS lo teniamos en una empresa donde trabaje y nunca supe para que servia (en descargo, mi jefe ni siquiera sabia lo que significa programacion). Para A.G. de Guatemala, sobre C# no es que haya varias versiones, sino que el Framework o maquina virtual es lo que cambia, un programa en C# para el Framework 1.1 te funciona en el 2.0 o 3.0, el Framework solo te da nuevas caracteristicas y de tu parte esta usarlas o no.

miércoles, febrero 07, 2007 9:20:00 p. m.  
Anonymous Anónimo said...

Hola

Acabo de descubir este blog y me parece buena idea lo del grupo de usuarios, lo del CVS yo lo he usado con Java para un ERP y es bueno el VSS lo teniamos en una empresa donde trabaje y nunca supe para que servia (en descargo, mi jefe ni siquiera sabia lo que significa programacion). Para A.G. de Guatemala, sobre C# no es que haya varias versiones, sino que el Framework o maquina virtual es lo que cambia, un programa en C# para el Framework 1.1 te funciona en el 2.0 o 3.0, el Framework solo te da nuevas caracteristicas y de tu parte esta usarlas o no.

miércoles, febrero 07, 2007 9:25:00 p. m.  

Publicar un comentario

<< Home