Pregunta

Siempre he usado el ágil. Desarrollo impulsado por funciones proceso para el desarrollo de software.¿Qué usan todos los demás y por qué lo prefieres?Prefiero FDD porque eso es con lo que comencé recién salido de la universidad.En la universidad, todo era muy libre y mi "cliente" era típicamente mi profesor, que tal vez no tenía mucha experiencia en la industria aparte de hacer investigaciones para la universidad.

Ahora, mis clientes no son tan indulgentes y trabajo mucho en el campo médico.¡Ser ágil y tener un alto nivel de calidad es imprescindible!

¿Fue útil?

Solución

En el trabajo utilizamos el proceso ICONIX.Es un subconjunto de técnicas AGILE y está impulsado por requisitos de comportamiento.El proceso ICONIX pretende ser lo menos celebrado posible y tener la menor documentación posible, para permitirle mantenerlo actualizado fácilmente (esta es una gran diferencia con otros procesos AGILE, por ejemplo, los profesionales de XP suelen hacerlo). No parece mantener la documentación actualizada después del primer borrador afirmando que su código es la documentación).

A continuación se ofrece una descripción práctica del proceso:

  1. Borrador rápido de requisitos funcionales
  2. Definición rápida de un modelo de dominio
  3. Casos de uso del modelo en la base de pasos anteriores
  4. Opcional: dibuje un diagrama de robustez de desechación para cada caso de uso, solo para comprender las relaciones entre sus clases
  5. Dibuja un diagrama de secuencia para cada caso de uso
  6. Modele sus casos de prueba según los casos de uso
  7. Implementar
  8. Prueba

En cada paso, revisa su trabajo en su conjunto, actualiza su modelo de dominio (es imposible hacerlo bien la primera vez) y agrega comentarios sobre sus casos de uso.Al final del paso 5, terminará con clases y lógica listas para implementar con poca documentación para mantener si refactoriza o cambia algo:

  • Use el diagrama del caso
  • Diagrama de secuencia para cada caso de uso
  • Diagrama de caso de prueba (o plan de prueba)

Si necesita agregar una función, agregue un nuevo caso de uso y siga todo el proceso.

Recursos:

Sitio web del proceso Iconix

Sitio web de ingeniería de software de Iconix

Referencias de libros:

Desarrollo ÁGIL con Proceso ICONIX

Otros consejos

Metodologías de desarrollo ágiles con una combinación de Prácticas de Ingeniería XP:

  • TDD junto con refactorización
  • YAGNI (No lo necesitarás)
  • BESO (Mantenlo simple, estúpido)
  • Refactorizar a patrones de diseño
  • Programación de pares con pares de conmutación.
  • Base de código compartido
  • Implemente temprano y con frecuencia

Lo que requiera el proyecto actual.

Realizo muchas consultas en mi tiempo libre para varios desarrolladores web (principalmente basados ​​en PHP).Todavía no he dedicado tiempo a llegar a TDD para esos proyectos, y muchos de ellos están utilizando marcos existentes que realmente no hacen que TDD sea tan fácil.

En el trabajo aún no contamos con herramientas para TDD, por lo que utilizamos un híbrido de procesos ágiles y antiguos basados ​​en especificaciones.Estamos tratando de avanzar hacia TDD, pero somos un taller pequeño con proyectos existentes bien arraigados (mucho trabajo de mantenimiento) y trabajo de integración con sistemas ERP.Creo que podría poner a TDD en marcha con mi propio trabajo de integración (y estoy dando pequeños pasos en esa dirección), pero el resto es en gran medida una causa perdida.

Parece haber cierta confusión aquí:

TDD se trata más de cómo implementar código y no sobre gestionar el desarrollo general de un proyecto de software.TDD no le ayudará a decidir qué funciones programar, cuándo entregarlas o cómo establecer prioridades.

Por el contrario, cosas como Lean/Agile o incluso Waterfall tratan sobre cuestiones de nivel superior.(Mi voto es por Scrum, que cae firmemente en el área Lean/Agile).

XP (Programación extrema) es interesante porque combina ideas de ambas áreas.

voy con Scrum ágil, Me da la sensación de estar 'conectado con el equipo'.Y tenga un buen control sobre los hitos y las tareas individuales. Los scrums matutinos son muy útiles.Usamos Plantilla de proyecto Agile Scrum en Team System http://www.scrumforteamsystem.com/en/default.aspx

Supongo que soy de la vieja escuela.Desarrollo según las especificaciones del cliente.Una fase de diseño vigorosa seguida de un ciclo de desarrollo, prueba y corrección de errores.Luego, implemente.

Una vez que se definen y acuerdan las especificaciones, no pueden ocurrir más cambios.Todos los cambios deben esperar a que se complete el desarrollo y la corrección de errores.Esto evita el desplazamiento del alcance y permite que el software se escriba, pruebe, depure e implemente.En ese momento los cambios se convierten en mejoras, nuevas funciones, etc.

He descubierto que para casi todos mis clientes durante los últimos 10 años, alrededor del 90% de las cosas que habrían "incorporado" durante el desarrollo, creando un alcance lento, se consideran no necesarias.No puedo decir cuántos clientes me han agradecido por mantenerlos a raya.Así que no sé cómo llamarías a este proceso, pero funciona para mí y para muchos otros desarrolladores que conozco.

Soy un fan de Desarrollo de software ajustado, promovido por los Poppendieck, basándose en gran medida en los principios de la manufactura esbelta, con Toyota como modelo.Tiene mucho en común con otras metodologías ágiles, la atención se centra en eliminar el desperdicio, hacer uso de la teoría de colas y una mentalidad "justo a tiempo" (p. ej.especificando una historia en el último momento responsable).

Lean se asocia a menudo con Kanban, que es un método para rastrear tareas a través de una canalización.

Diseño por contrato con un complemento de pruebas unitarias.

Usamos cascada donde trabajo, pero después de presionar un poco por mi parte, nos estamos moviendo más hacia un modelo híbrido ágil/TDD/CI para algunos de nuestros nuevos proyectos.Si Dios quiere, podremos deshacernos del método de la cascada.En cada versión de mantenimiento que hacemos, nuestro cliente principal simplemente ignora los plazos de los requisitos y nos entrega los cambios de requisitos justo en el último segundo y luego nos mira fijamente sin comprender mientras explicamos por qué no pueden seguir haciendo eso.

Codificar y arreglar !!

Es una broma, TDD Es realmente un camino maravilloso a seguir.

Diseño basado en pruebas TDD

La confianza que se obtiene al saber que un cambio de código no ha roto algo sutil es excelente.

Apoyo el voto por Agile.Estoy explorando Lean estos días, pero como ocurre con cualquier proceso de desarrollo, no es algo que puedas simplemente incluir en tu grupo actual.Sin embargo, existen características de Lean y Agile que pueden incorporarse a sus procesos actuales y obtener valor inmediato.

Mi proyecto anterior utilizó el método Cascada y estaba orgulloso de ello.Desde entonces, abandonaron Waterfall y pasaron a Prototype, lo cual es un buen paso.

Trabajo para una empresa que se dedica al desarrollo web y de sistemas.Nuestro modelo de desarrollo es el Desarrollo Rápido.Usamos la definición más moderna, por lo que es similar al desarrollo ágil.Sin los conceptos de XP.

También usamos scrum...Creo que los monólogos pueden ser buenos en cierto sentido, pero a veces los rápidos 15 minutos se convierten en al menos 30.

Mis inclinaciones personales en los últimos años han sido hacia el Desarrollo Lean, con una gran influencia de todo lo que he aprendido de XP.Creo que es importante señalar aquí que Scrum es insuficiente como proceso de desarrollo, ya que no informa el trabajo de desarrollo de software, sino el trabajo de intentar gestionar el flujo de las tareas de desarrollo de software.Mi pensamiento también ha sido informado por ICONIX.Creo que es una excelente manera de abordar un entorno basado en casos de uso y diagramas sin empantanarse en una burocracia contraproducente.

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