¿Cómo puedo hacer que mi flujo de trabajo de desarrollo sea más & # 8220; enterprisey & # 8221 ;?

StackOverflow https://stackoverflow.com/questions/413713

Pregunta

Soy el único desarrollador de un consorcio académico con sede en una universidad en el noreste. Todo mi trabajo de desarrollo involucra herramientas internas, principalmente en Java, por lo que nada se publica al público. En este momento, siento que mi flujo de trabajo de desarrollo es muy " aficionado " y no se parece en nada a una empresa de desarrollo de software con experiencia. Me sentiría inclinado a decir que en realidad no importa, ya que soy el único desarrollador de todos modos, pero no me duele hacer algunos cambios, sino solo por hacer mi trabajo un poco más fácil y algunos más. Más tecnologías en mi currículum. En este momento mi flujo de trabajo es algo como esto:

  • Realizo la mayor parte de mi trabajo de desarrollo en Eclipse en mi computadora portátil. Todo está guardado localmente en mi computadora portátil, y no uso un VCS, ni tampoco hago una copia de seguridad de mi código (excepto para enviarlo por correo electrónico de manera ocasional para poder verlo en otra computadora, sí, le dije mi entorno de desarrollo necesita trabajo).

  • Cuando termino con un proyecto y quiero implementarlo o si solo quiero probarlo, uso la herramienta Jar incorporada en Eclipse para crear un archivo .jar ejecutable de mi proyecto. Si uso bibliotecas .jar externas, uso el complemento Fat-Jar para incluir esos .jars en mi archivo .jar ejecutable.

  • Después de crear el .jar, lo subo manualmente al servidor a través de SFTP y lo pruebo con algo como java -jar MyProject.jar .

Oh sí, ¿mencioné que no hago una prueba de unidad?

El problema más evidente que me gustaría solucionar primero es mi falta de control de la fuente. Me gusta git debido a su naturaleza distribuida, pero parece que no se integra bien con Eclipse y he oído que no funciona muy bien en Windows, que es mi sistema operativo principal de desarrollo. Por lo tanto, me estoy inclinando hacia SVN, con la que tengo cierta experiencia. Tengo mi propio servidor personal, y creo que lo usaré para mi control de código fuente, porque prefiero ser mi propio administrador que tener que lidiar con la burocracia universitaria. Tuve algunos problemas para configurar SVN una vez antes, pero le daré otra oportunidad. ¿Quizás también instale algo como Trac o Redmine para el seguimiento de errores, la lista de tareas pendientes, etc.?

¿Qué pasa con la construcción y el despliegue? Tiene que haber una mejor manera que usar Fat-Jar y cargar manualmente mi jar en el servidor. He oído hablar de herramientas como Ant y Maven. ¿Se aplican a lo que quiero hacer? ¿Cómo puedo empezar a usar esos?

Supongo que también me gustaría integrar las pruebas de unidad con JUnit. Aunque probablemente debería ser, esa no es mi principal preocupación en este momento, porque hasta ahora mis aplicaciones no son terriblemente complejas. Realmente me gustaría trabajar en la simplificación y simplificación de mi flujo de trabajo en este momento, y luego facilitaré las pruebas unitarias.

Lo siento por la larga pregunta. Supongo que mi pregunta se reduce a, para un desarrollador único, qué herramientas y metodologías pueden / debo usar no solo para facilitar mi trabajo, sino también para exponerme a algunas tecnologías que se esperan conocimientos necesarios en un desarrollo dedicado. casa?


edit: Gracias por las grandes respuestas hasta ahora. No quise sugerir que quería hacer mi flujo de trabajo " enterprisey " solo por hacerlo, pero para simplificar mi trabajo y para obtener algunas tecnologías en mi haber que se utilizan normalmente en entornos de desarrollo empresarial. Eso es todo lo que quiero decir con eso.

¿Fue útil?

Solución

Me parece que realmente tienes una buena idea de lo que necesitas hacer.

El uso de Subversion (u otro VCS) es una necesidad. Aunque podría ser conveniente configurar un repositorio SVN separado para su código relacionado con el trabajo en lugar de usar uno personal.

Puedes integrar Subversion con Eclipse usando un plugin como Subclipse, que he encontrado que funciona bastante bien.

Definitivamente usaría Ant o Maven, mi preferencia es Ant porque es más flexible y creo que se adaptaría más a tu estilo de desarrollo que a Maven. Pero es posible que también desee consultar Apache Ivy , que maneja la gestión de dependencias.

Básicamente, configura una tarea ant que ejecuta sus pasos de compilación, compilación y despliegue, de modo que cuando cree un paquete JAR final, puede estar seguro de que se ha probado la unidad, ya que forma parte de su secuencia de comandos ant. La mejor manera de comenzar con ant es mirar algunos ejemplos y leer el manual .

En cuanto a las pruebas unitarias, puede ir aumentando gradualmente con las pruebas unitarias. Recomendaría usar JUnit junto con una herramienta de cobertura de código como Cobertura (que es fácil de configurar) - Le ayudará a comprender la cantidad de código que cubren sus pruebas y es un indicador de la eficacia de sus pruebas.

También puede valer la pena configurar algo como Trac: es importante poder realizar un seguimiento de los errores, y una wiki es sorprendentemente útil para la documentación.

En otras palabras, todo esto suena como si estuvieras en las líneas correctas, ¡solo necesitas comenzar a usar algunas de estas herramientas!

Otros consejos

Si realmente está configurado para el control de fuentes distribuidas, le recomiendo que consulte Bazaar . Su control de fuente distribuido similar a GIT está diseñado para realizar fusiones de muy alta calidad. Fuera de la caja, funciona en todas las plataformas, incluido Windows, y tienen un cliente TortoiseBZR .

Realmente, sin embargo, cualquier control de fuente es mejor que ninguno. Si eres el único desarrollador, no hay necesidad de nada más complejo que SVN. Las grandes empresas y los proyectos utilizan SVN todo el tiempo con pocos problemas.

En cuanto a las pruebas de unidad, debe familiarizarse con JUnit . El hecho de que esté al tanto de las pruebas de unidad y de que debería estar haciendo aún es un paso adelante de la mayoría de los desarrolladores ad hoc.

Usa el control de versiones. Período. SVN tiene gran integración con Eclipse y Windows. Obtenga el cliente TourtisSVN para Windows y use el complemento subclipse con Eclipse.

Recomendaría obtener un HD externo o utilizar uno de los servidores de sus compañías para instalar su repositorio y hacer copias de seguridad a menudo. Subversion funciona muy bien con la implementación y la actualización también. Solo aprende a hacerlo y nunca volverás a mirar atrás :)

En cuanto a Pruebas unitarias, algunas personas dirían que ese es el camino a seguir, pero no he encontrado pruebas suficientes para comenzar la práctica yo mismo. Si el problema de esta pregunta puede convencerme de lo contrario, ¡por favor!

Además, no mires a " empresa " su flujo de trabajo - mire para hacerlo mejor. Las prácticas que funcionan bien con grandes equipos y corperaciones pueden no funcionar bien para usted. Yo mismo soy prácticamente un único desarrollador y conozco la situación en la que se encuentra. Solo intente todo y solo mantenga lo que se siente natural después de un tiempo.

¡Pero asegúrate de probar SVN! Si su empresa tiene un servidor LINUX con apache, vea si puede configurar su servidor allí usando DAV-SVN.

:)

Creo que respondiste la mayoría de tus propias preguntas.

  • Control de fuente: elija SVN - instalación fácil, gran integración con Eclipse (subclipse).
  • Use Ant para compilar su proyecto e implementarlo (tarea SCP / SFTP)
  • Mantenga todas sus configuraciones (configuraciones de proyectos de Eclipse, compile xmls, etc.) en SVN.
  • Use Bugzilla para realizar un seguimiento de sus errores / problemas / solicitudes / ideas.

Sería MUY beneficioso comenzar a trabajar con el control de versiones. ¡Empieza ahora, no te demores! Git se está moviendo REALMENTE rápido, y ya se está desarrollando un TortoiseGit. SVN sigue siendo un gran estándar para trabajar. Y no he trabajado con Mercurial, pero ese es otro VCS que vale la pena analizar.

Aparte de eso, no veo por qué su flujo de trabajo tiene que ser empresarial. Solo tiene que ser eficiente y cómodo. Dicho esto, creo que deberías intentar trabajar con un editor de texto simple y compilar desde la línea de comandos. La mayoría de los mejores programadores del mundo todavía usan eso en lugar de un IDE, y lo ayudarán a comprender los procesos que se encuentran debajo de su IDE favorito.

Consulte el Pragmatic Starter Kit de los programadores pragmáticos

.

Te enseña los fundamentos importantes del desarrollo de software que las universidades / etc. Parece que se pasa, como el control de versiones, las pruebas de unidades y la automatización de proyectos (en ese orden), y lo hace de una manera muy accesible.

Te dará una base sólida para continuar desde allí.

Echa un vistazo a la aplicación de Matt Raible.

Incorpora Maven y Unit Testing.

http://raibledesigns.com/rd/tags/appfuse

Aunque lo pones como lo último, creo que deberías comenzar a usar jUnit sin demora.

El motivo es que es probablemente el más fácil de las ambiciones que has identificado, y es casi seguro que las herramientas ya estén integradas en tu compilación de Eclipse.

Crea una nueva carpeta en tu proyecto llamada 'jUnit'.

Supongamos que tiene una clase de empleado, con los métodos setAnnualSalary () y getMonthlySalary ().

Haga clic derecho en la carpeta jUunit, nuevo - > " jUnit caso de prueba " ;. Esto hará una nueva clase. Llámalo TestEmployee. Eclipse genera las cosas para ti, como de costumbre.

Agregue un método nulo con un nombre que comience con 'prueba':

public void testSalaryCalc() {
    Employee emp = new Employee("John Doe");
    emp.setAnnualSalary(12000);
    assertEquals(1000,emp.getMonthlySalary());
}

Haz clic derecho, " ejecutar como " - > " jUnit test " ;. (La primera vez que Eclipse puede pedirte que realices alguna configuración para el proyecto. Solo haz lo que dice).

Si el empleado funciona correctamente, verá una barra verde. Sabotea a la clase Empleado, ejecuta la prueba nuevamente y verás una barra roja, así como una salida que te dirá cuál fue el error.

Enhorabuena: ¡estás haciendo pruebas unitarias!

Al hacer clic con el botón derecho en el directorio principal y seleccionar " Ejecutar como prueba jUnit " ejecutará cada clase Testcase en el directorio. Más adelante, puede incorporar jUnit en su proceso de compilación, pero no se preocupe por eso por ahora.

Autocompletar le mostrará todas las variaciones de assert () que puede usar. Puede leer sobre él y apuntar hacia prácticas donde se escriben los casos de prueba antes de la implementación que los aprueba. Pero solo hacer las cosas simples mencionadas arriba le brinda grandes beneficios.

Una vez que tenga configurado un control de versión y algunas pruebas unitarias, consideraría un servidor de integración continua (quería ser empresarial, ¿no?).

Incluso si eres y sigues siendo el único desarrollador, esto podría ayudarte a descubrir algunos errores. Cosas que se olvidó de registrar o los gustos. Un servidor CI revisa regularmente todas sus fuentes, hace una compilación limpia y ejecuta todas sus pruebas. También te contacta en caso de errores.

Esto le da la garantía de que usted (o cualquier otra persona) puede revisar su código y construir / ejecutar sus proyectos.

Recomendaría echar un vistazo a Hudson

Como han dicho otros, ya sabes claramente lo que debes hacer. Un VCS es una necesidad, el CI o el seguimiento de errores pueden ser excesivos (para un solo desarrollador, una hoja de cálculo puede ser suficiente para el seguimiento de errores).

Una cosa que podría beneficiarlo enormemente es mantener un registro de productos organizado. En el desarrollo en solitario, me mantengo enfocado en las funciones de alta prioridad y evito el arrastre de funciones como uno de mis mayores desafíos. Mantener un retraso ayuda enormemente. No tiene que ser mucho más que una lista de características con algunas notas sobre el alcance de cada una. En mi lugar de trabajo, mantenemos esta información en Trac, pero aquí nuevamente, una hoja de cálculo puede ser todo lo que necesita.

Y quiero poner un tapón para la prueba de la unidad, particularmente el desarrollo dirigido por pruebas (TDD). el libro de Kent Beck es un buen lugar para comenzar. Encuentro que TDD me ayuda a ser honesto y concentrado en lo que realmente necesito hacer, particularmente en un proyecto de desarrollador único sin control de calidad. A veces parece que el código se escribe solo.

Obtuviste algunas respuestas realmente sólidas, por lo que una publicación corta agrega un enlace a un artículo sobre Test Driven Development que es una práctica ágil que se verá bien en tu CV. TDD

Si está ejecutando un servidor Windows donde desea colocar su servidor SVN, use SVN visual como el servidor. Es muy fácil de instalar y usar, admite tanto la autenticación básica como la autenticación de Windows. También es de uso gratuito.

Eclipse tiene bastantes módulos para integrar con un servidor SVN, así que usa uno de ellos, o el ya sugerido Tortoise SVN.

Todos los comentarios anteriores cubrieron casi todo lo que pueda necesitar :-)

Quiero agregar otro enfoque sobre cómo desarrollar (el flujo de trabajo de desarrollo).

Le sugiero que lea el siguiente artículo y, aunque es un flujo de trabajo git, puede usar la misma idea para cualquier otra herramienta que esté usando.

http://nvie.com/posts/a-successful-git -franqueado-modelo /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top