2010-04-29 37 views
7

Existen básicamente esos dos enfoques para diseñar un sistema. ¿Cuáles son las ventajas y desventajas? ¿Cuándo debería usar cuál? ¿Debería combinar esos enfoques? ¿Cómo?¿Diseño de arriba hacia abajo o de abajo hacia arriba?

+4

¡Es una pregunta corta, pero sospecho que la respuesta sería bastante larga! ... –

+1

Prefiero el diseño de izquierda a derecha. –

+0

@Mitch Wheat podría ser, también responder parcialmente o redirigir a algunos libros/artículos/artículos/blogs será suficiente :) –

Respuesta

21

En términos generales, de arriba hacia abajo viene de una descomposición del espacio problema en sub-problemas, mientras que de abajo hacia arriba proviene de la organización de las partes del espacio de la solución en trozos más grandes.

Para poder utilizar de forma efectiva de arriba hacia abajo, necesita una comprensión muy sólida del problema, es decir, tener requisitos sólidos en la mano. Para que la aplicación de abajo hacia arriba sea efectiva, debe resolver un problema "estándar" cuyas piezas son bien conocidas, pero donde el ensamblaje exacto podría necesitar experimentación antes de hacerlo bien.

Debe leer el brillante artículo de Parnas A rational design process and how to fake it para obtener más información sobre este tema. La respuesta es: use ambos, según corresponda. Cuando hayas terminado, haz que todo se vea como (en tus especificaciones, documentación de diseño y documentación del usuario) como si hubieras hecho todo de arriba hacia abajo.

+0

muchas gracias por una buena respuesta y enlace a ese documento –

+4

+1: Para «Cuando hayas terminado, haz que todo parezca como si hubieras hecho todo de arriba hacia abajo » – ZJR

2

También debe echarle un vistazo al principio 'Slicing the cake' de la comunidad ágil. Este principio lo obliga a concentrarse en agregar valor comercial para el usuario con cada iteración de su aplicación. Intenta diseñar e implementar un corte vertical de su solicitud y entregarla, a continuación, centrándose en la siguiente rebanada etc.

Aquí hay un enlace que explica el principio con más detalle http://blog.energizedwork.com/2005/05/slicing-cake.html

+0

Gracias, sé de iteraciones, creo que el punto más difícil es cómo cortar el pastel para que addind otro corte no sea tan difícil como agregar varios anteriores. –

3

Creo que su pregunta merece larga y respuestas articuladas. sugiero leer un viejo artículo de Martin Fowler (cfr. "Es el diseño muerta?") Que habla de las relaciones sobre el diseño inicial y técnicas ágiles (http://martinfowler.com/articles/designDead.html)

Mi experiencia es siempre tener una arquitectura de impresión azul de los módulos , interacciones entre componentes del sistema. Al tener este modelo (que en algunos proyectos puede ser de alto nivel), comienzo a diseñar/desarrollar módulos/componentes. Algunos de estos pueden desarrollarse también de abajo hacia arriba.

+0

Buena referencia siempre apreciada :) –

Cuestiones relacionadas