2009-03-25 8 views
21

Estoy buscando sugerencias de proceso, y he visto algunas en el sitio. Lo que me encantaría escuchar es lo que utiliza específicamente en su empresa, o solo usted y sus proyectos de pasatiempos. ¡Cualquier enlace a otros sitios web que hablen de estos temas es ciertamente bienvenido!¿Cuál es su proceso de programación o el de su compañía?

Algunas preguntas para basar una respuesta fuera de:

  1. ¿Cómo se informan los usuarios bugs/peticiones de características para usted? ¿Qué software utilizas para hacer un seguimiento de ellos?
  2. ¿Cómo se convierten las solicitudes de errores/características en "trabajo"? ¿Planeas el trabajo? ¿Tienes un horario?
  3. ¿Tiene especificaciones y seguirlos? ¿Cuán detallados son?
  4. ¿Tiene usted una ventaja técnica? ¿Cuál es su rol? ¿Hacen ellos mismos algún programa, o solo arquitectura/tutoría?
  5. ¿Pruebas unitarias? ¿Cómo te ha ayudado? ¿Cuál dirías que es tu cobertura?
  6. ¿Usted revisa el código? Cuando se trabaja en una fecha límite ajustada, ¿se resiente la legibilidad del código? ¿Planeas regresar más tarde y limpiarlo?
  7. ¿Documenta? ¿Con qué comentario se sienten cómodos usted o su empresa? (¿Descripción de la clase, cada método y métodos internos? ¿O simplemente partes complicadas del código?)
  8. ¿Cómo es el flujo de SCM? ¿Usas ramas de características, etiquetas? ¿Cómo se ven tu "tronco" o "maestro"? ¿Es allí donde ocurre un nuevo desarrollo o la parte más estable de tu base de códigos?
+0

pls, hacen que sea la comunidad wiki –

+0

hizo que todo fuera. Lo siento, lo he comprobado pero he puesto demasiadas etiquetas. ¿Error? –

+0

Guau, ¿tiene una idea brillante sobre cómo algo puede hacer feliz a alguien en la computadora y quiere capitalizar, pero no tiene idea de por dónde empezar? Lugar equivocado. – hmcclungiii

Respuesta

11

bueno para mi empresa (pequeña):

  • Diseñamos la interfaz de usuario en primer lugar.Esto es absolutamente crítico para nuestros diseños, ya que una interfaz de usuario compleja alejará casi de inmediato a los compradores potenciales. Realizamos un prototipo de nuestros diseños en el documento , luego, cuando decidimos los detalles para el diseño, preparamos la vista y cualquier código de controlador apropiado para la creación de prototipos interactivos continuos de nuestros diseños.

  • A medida que avanzamos hacia una interfaz de usuario aceptable, escribimos un documento de especificaciones para la lógica de flujo de trabajo de la aplicación. El papel es barato, y revolviendo diseños garantiza que al menos haya dedicado una pequeña cantidad de tiempo a pensar en la implementación en lugar de codificar a ciegas.

  • Nuestras especificaciones se mantienen en control de revisión junto con nuestra fuente. Si decidimos un cambio, o si queremos experimentar, ramificamos el código e INMEDIATAMENTE actualizamos la especificación para detallar lo que estamos tratando de lograr con esta rama en particular. No se requieren pruebas unitarias para sucursales; sin embargo, se requieren para cualquier cosa que deseamos incorporar de vuelta al maletero. Hemos encontrado que esto fomenta los experimentos.

  • Las especificaciones no son sagradas, ni son propiedad de ningún individuo en particular. Al comprometer las especificaciones con el entorno democrático de control de fuentes, fomentamos la constante experimentación y revisión, siempre que esté documentado, entonces no estamos diciendo "WTF". luego.
    En un reciente juego de iPhone (aún no publicado), terminamos con casi 500 sucursales, que luego se tradujeron en casi 20 funciones diferentes, una gran cantidad de simplificaciones de concepto ("Tap to Cancel" en la barra de progreso en lugar de un separado botón), una cantidad de ideas rechazadas y 3 proyectos nuevos. Lo bueno es cada idea y cada fue documentada, por lo que fue fácil visualizar cómo la idea podría cambiar el producto.

  • Después de cada construcción principal (todo en el maletero se actualiza, pasando las pruebas unitarias), intentamos que al menos 2 personas prueben el proyecto. Sobre todo, tratamos de encontrar personas que tengan poco conocimiento de las computadoras, ya que hemos descubierto que es demasiado fácil diseñar complejidad en lugar de simplicidad.

  • Usamos DOxygen para generar nuestra documentación. En realidad, todavía no incorporamos la generación automática en nuestro proceso de construcción, pero estamos trabajando en ello.

  • No revisamos el código. Si la prueba de la unidad funciona y la fuente no causa problemas, probablemente esté bien, pero esto se debe a que podemos confiar en la calidad de nuestros programadores. Esto probablemente no funcionaría en todos los entornos.

  • Las pruebas de unidades han sido una bendición para nuestras prácticas de programación. Como ningún código nuevo se puede pasar al enlace troncal sin las pruebas unitarias apropiadas, tenemos una cobertura bastante buena con nuestro enlace troncal y una cobertura moderada en nuestras sucursales. Sin embargo, no es un sustituto de las pruebas de usuario, solo una herramienta para ayudar a llegar a ese punto.

  • Para el seguimiento de errores, utilizamos bugzilla. No nos gusta, pero funciona por ahora. Probablemente pronto lanzaremos nuestra propia solución o migremos a FogBugz. Nuestro objetivo es no lanzar software hasta que alcancemos un estado conocido de errores. Debido a esta postura, nuestras actualizaciones de nuestros paquetes de códigos existentes suelen ser bastante mínimas.

Así que, básicamente, nuestro flujo por lo general se ve algo como esto:

  1. Papel IU Spec + Planificación »tests mentales» Paso 1
  2. pruebas unitarias Ver código + »Prueba de usuario »Paso 1 o 2
  3. Controlador de papel & Modelo Spec + Planificación »tests mentales» Paso 2 o 3
  4. Modelo & Código Controller + pruebas unitarias »Prueba usuario» Paso 3 o 4
  5. Idea ramificada »Spec» Codificación (sin pruebas unitarias) »tests mentales» Rechazo
  6. Idea ramificada »Spec» Coding (no hay pruebas de unidad) »tests mentales» aceptación »pruebas unitarias» tronco »Paso 2 o 4
  7. Errores conocidos» Bug Tracker »Reparación de errores» Paso 2 o 4
  8. producto terminado »Informes de errores» Paso 2 o 4

Nuestro proceso no es perfecto de ninguna manera, pero un proceso perfecto también implica humanos y tecnología perfectos, y ESO no va a suceder pronto. La cantidad de papel que atravesamos en la planificación es asombrosa: tal vez es hora de que obtengamos un contrato con Dunder Mifflin.

1

Para dar una mejor respuesta, la política de mi empresa es usar XP tanto como sea posible y seguir los principios y prácticas descritos en el manifiesto de Agile.

http://agilemanifesto.org/

http://www.extremeprogramming.org/

Así que esto incluye cosas como tarjetas de historia, desarrollo basado en pruebas, la programación en parejas, pruebas automatizadas, integración continua, de un solo clic se instala y así sucesivamente. No somos grandes en documentación, pero nos damos cuenta de que tenemos que producir la documentación suficiente para crear software en funcionamiento.

En una cáscara de nuez:

  • crear apenas suficientes historias de usuario para iniciar el desarrollo (historias de usuario aquí están destinados a ser el comienzo de la conversación con el negocio y no especificaciones realizadas o plasmen plenamente casos de uso, pero trozos cortos de valor de negocio que se pueden implementar en menos de 1 iteración)
  • iterativa implementar tarjetas de historia sobre la base de lo que la empresa da prioridad como el más importante
  • conseguir la regeneración de la empresa en lo que se acaba aplicada (por ejemplo, bueno, malo, casi, etc.)
  • repita hasta que el negocio decide que el software es lo suficientemente
+0

te sorprendería. el suyo no es una respuesta por cierto, publicarlo como comentario y eliminarlo. – SilentGhost

+0

te sorprendería. estás pidiendo décadas de experiencia para resumir en un foro de internet. – hmcclungiii

+0

No, él no pregunta qué procesos EXISTE, sino qué * su compañía * hace. – JoshJordan

5

No estoy seguro de por qué se votó negativamente esta pregunta. Creo que es una gran pregunta. Una cosa es buscar en Google y leer algunos sitios web aleatorios que muchas veces intentan venderle algo en lugar de ser objetivos. Y otra cosa es pedirle a SO crowd, que son desarrolladores/gerentes de TI, que compartan sus experiencias y lo que funciona o no para sus equipos.

Ahora que este punto está fuera del camino. Estoy seguro de que muchos desarrolladores lo orientarán hacia "Agile" y/o Scrum, tenga en cuenta que estos términos a menudo se usan muy poco, especialmente Agile. Probablemente voy a sonar muy controvertido al decir esto, que no es mi intención, pero estas metodologías están exageradas, especialmente Scrum, que es más un producto que los consultores de Scrum comercializan que la metodología "real". Habiendo dicho eso, al final de un día, debes usar lo que funciona mejor para ti y para tu equipo, si es Agile/Scrum/XP o lo que sea, hazlo. Al mismo tiempo, debe ser flexible al respecto, no se vuelva religioso acerca de ninguna metodología, herramienta o tecnología. Si algo no funciona para ti, o puedes ser más eficiente cambiando algo, ve por ello.

Para ser más específico con respecto a sus preguntas.Aquí está el resumen básico de las técnicas que han estado trabajando para mí (muchos de ellos son de sentido común):

  1. organizar todos los documentos y correos electrónicos pertenecientes a un proyecto específico, y que sea accesible a los demás a través de una ubicación central (utilizo MS OneNote 2007 y me encanta para toda mi documentación, progreso, funciones y seguimiento de errores, etc.)

  2. Todas las reuniones (que debe intentar minimizar) deben ir seguidas de elementos de acción donde cada el elemento se asigna a una persona específica. Cualquier acuerdo verbal debe incluirse en un documento escrito. Todos los documentos agregados al sitio/repositorio del proyecto. (MS OneNote en mi caso)

  3. Antes de comenzar cualquier desarrollo nuevo, tenga un documento escrito de lo que el sistema será capaz de hacer (y lo que no hará). Comprométase con eso, pero sea flexible a las necesidades del negocio. ¿Cuán detallado debe ser el documento? Lo suficientemente detallado para que todos entiendan de qué será capaz el sistema final.

  4. Los horarios son buenos, pero se realista y honesto para usted y los usuarios de negocios. La guía básica que utilizo: versión calidad y utilizable software que carece de algunas características, en lugar de un software defectuoso con todas las características.

  5. Tenga líneas de comunicación abiertas entre su desarrollador. equipo y entre sus desarrolladores y grupos de negocios, pero al final del día, una persona (o algunas personas clave) debería ser responsable de tomar decisiones clave.

  6. Prueba de la unidad donde tiene sentido. Pero NO te obsesiones con eso. 100% de cobertura de código! = No hay errores, y el software funciona correctamente de acuerdo con las especificaciones.

  7. Tiene estándares de código y revisiones de código. Comprometerse con los estándares, pero si no funciona en algunas situaciones, permita flexibilidad.

  8. Compense su código especialmente para leer/comprender partes, pero no lo convierta en una novela.

  9. Retroceda y limpie su código si ya está trabajando en esa clase/método; implementar nuevas características, trabajar en una solución de errores, etc. Pero no refactorizar solo por el bien de refactorizar, a menos que no tenga nada más que hacer y esté aburrido.

  10. Y el último y más importante elemento: No se vuelva religioso acerca de ninguna metodología o tecnología específica. Pida prestados los mejores aspectos de cada uno y encuentre el equilibrio que funcione para usted y su equipo.

+0

¿Qué haces con los elementos de inacción? Utiliza la sinergia? ;-) (lo siento, solo un pequeño motivo favorito mío. Son "artículos"). –

4
  1. Utilizamos Trac como nuestro sistema de solicitud de control de errores/función
  2. Entradas
  3. Trac son revisados, cambió a ser unidades viables y luego asignar a un hito
  4. Las entradas trac son nuestras especificaciones, que contiene en su mayoría información muy escasa que debe ser discutida durante el hito
  5. No, pero nuestro equipo de desarrollo consta solo de dos miembros
  6. Sí, probamos, y sí, TDD nos ha ayudado mucho.La cobertura es de aproximadamente el 70 por ciento (Cobertura)
  7. No, refactorizar cuando sea apropiado (durante los cambios de código)
  8. documentamos únicos métodos y clases públicas, nuestro recuento de línea máxima es de 40, por lo que los métodos suelen ser tan pequeña como para ser auto -describing (si hay tal cosa ;-)
  9. svn con el tronco, las ramas y rc estables
    1. tronco - Desarrollo de nuevas características, bugfixing de características de mayor edad
    2. RC - Para las pruebas en casa, correcciones de errores se fusionan desde el tronco
    3. st capaz - sólo se fusionó bugfixing abajo de tronco o rc
Cuestiones relacionadas