Separación de tareas en una aplicación de n niveles: ¿Por módulo o por nivel?

7

Desarrollar una aplicación de n niveles con un equipo, es mejor dividir las tareas por módulo o caso de uso (por ejemplo, el Empleado 1 crea el módulo de administración, el empleado 2 crea el módulo de nómina, etc.) o por nivel (por ejemplo, el Empleado 1 crea la interfaz de usuario , Employee 2 crea Logic, Employee 3 crea todos los datos de acceso)?

Estoy más inclinado hacia el primero. Creo que es lógico que si estoy codificando un módulo completo o al menos casos de uso relacionados, podría codificar continuamente sin esperar a que otros terminen antes de integrar mi trabajo.

Pero el contra-argumento, que es el último, es que al separar las tareas entre capas, un programador puede aprovechar la separación de preocupaciones de n-tier y centrarse solo en una capa específica (para algunos) con la que están familiarizados .

    
pregunta Jonn 23.01.2011 - 16:18

3 respuestas

5

No utilice el enfoque por niveles. Es un boleto de ida al infierno de la integración. Además, tenga en cuenta que no podrá liberar nada hasta que todas las capas estén completas, lo que generalmente significa al final del proyecto (si lo hay).

Mejor enfoque: centrarse en las características . Eso es lo que nuestros clientes nos están pagando. Crea cada característica y completala, de arriba a abajo. Aumente la característica de arquitectura / niveles por característica, usando refactorización para mantenerla en buena forma.

Este enfoque hace posible liberar (o vender) el sistema cada vez que se completa una nueva función. Esto es excelente ya que obtiene comentarios reales de los usuarios antes y puede ajustar el proyecto en función de eso. Apuesto a que su cliente también estará más satisfecho.

    
respondido por el Martin Wickman 23.01.2011 - 16:43
3

Creo que hay una tercera opción: crear cada capa de forma independiente y eliminar la capa de abajo hasta que llegues a la parte inferior. De esta manera, todos pueden trabajar en todas las capas, una capa a la vez.

Esto también evita la especialización excesiva, ya que depende de que una persona realice una parte específica de la aplicación y que nadie más pueda cumplir su función de manera razonable a tiempo si de repente pierde ese desarrollador.

Además, esto hace que la interfaz de usuario se haga y, con suerte, se cierre pronto. Lo cual, realmente es todo lo que le importa a un cliente. De esta forma, pueden "ver" la funcionalidad, incluso si aún no existe, lo que facilita el cambio.

    
respondido por el Jeremy Heiler 23.01.2011 - 16:31
2

Creo que puedes hacer 2 análisis:

  1. Enfoque tecnológico: si cada parte del equipo se maneja bien con cierta tecnología, i usaría la división de nivel (generalmente, cada desgarre tiene más o menos un conjunto de tecnologías asociadas). De esta manera, puede utilizar el especialista de su UI para ocuparse de las UI, y así sucesivamente.

  2. Enfoque objetivo: si tiene un grupo más homogéneo (todos tienen el mismo conocimiento en las tecnologías involucradas), entonces es más complicado optimizar la relación trabajo / persona. Entonces diría que el enfoque del módulo es mejor.

De todos modos, estas no son las únicas opciones, pero sería mi enfoque al respecto. Espero que esto ayude!

    
respondido por el guiman 23.01.2011 - 16:41

Lea otras preguntas en las etiquetas