Es posible que desee consultar el Agile Manifesto. Arriba hacia abajo y hacia abajo se basan en el diseño y la construcción Built It All All Once.
El "Software de trabajo sobre documentación completa" significa que lo primero que construye es lo más pequeño que puede ejecutar. ¿Parte superior? ¿Fondo? Ninguno.
Cuando era más joven, trabajé en proyectos que eran, por contrato, estrictamente de arriba hacia abajo. Esto no funciona De hecho, no puede funcionar. Obtiene montañas de diseño redundante y código como resultado. No fue un enfoque sensato cuando se aplicó sin pensar.
Lo que he notado es que el enfoque Agile (piezas pequeñas que funcionan) tiende a dividir el problema en partes que se pueden captar de una vez. El top-down/bottom-up ya no importa tanto. De hecho, puede no importar en absoluto.
Lo que lleva a hacer: "¿Cómo se descompone para el desarrollo Ágil?" El truco es evitar la creación de A Big Thing que luego debe descomponer. Si analizas un problema, encuentras actores que intentan lograr casos de uso y fallan porque no tienen toda la información, o no la tienen a tiempo, o no pueden ejecutar sus decisiones, o algo así.
A menudo, estas no son grandes cosas que necesitan descomposición. Cuando lo son, debe resolver el problema en la dirección Metas al revés. Desde Metas a cosas que le permiten hacer ese objetivo a cosas que habilitan los habilitadores, etc. Dado que los objetivos son a menudo Grandes Cosas, esto tiende a ser de Arriba hacia Arriba, desde el objetivo comercial general hasta el proceso y el paso de negocio detallados.
En algún momento, presentamos estos diversos pasos que conducen a los objetivos. Hemos hecho la parte de análisis (rompiendo las cosas). Ahora viene la parte de síntesis: reensamblamos lo que tenemos en cosas que realmente podemos construir. Síntesis es de abajo hacia arriba. Sin embargo, no nos dejemos llevar. Tenemos varios puntos de vista, cada uno de los cuales es diferente.
Tenemos un modelo. Esto a menudo se construye a partir de los detalles en un modelo conceptual más amplio. Luego, a veces se descompone de nuevo en un modelo normalizado para OLTP. O descompuesto en un esquema en estrella normalizado para OLAP. Luego trabajamos nuevamente para crear un mapeo ORM a partir del modelo normalizado. Arriba - Abajo - Arriba.
Tenemos procesamiento.A menudo, esto se genera a partir de resúmenes de los procesos comerciales hasta los detalles de los pasos de procesamiento. Entonces el software está diseñado alrededor de los pasos. Entonces el software se divide en clases y métodos. Abajo - Arriba - Abajo.
[Digression. Con los usuarios informados, esta descomposición define nuevos títulos de trabajo y formas de trabajar. Con los usuarios poco informados, los trabajos anteriores se quedan y escribimos montañas de documentación para asignar trabajos antiguos a un nuevo software.]
Tenemos componentes. A menudo miramos las piezas, miramos lo que sabemos sobre los componentes disponibles y hacemos una especie de coincidencia. Este es el proceso más aleatorio; es similar a la forma en que se forman los cristales: hay centros de nucleación y el tipo de diseño se solidifica alrededor de esos centros. Servicios web. Base de datos. Gestión de transacciones. Actuación. Volumen. Diferentes características que de alguna manera nos ayudan a elegir componentes que implementan parte o la totalidad de nuestra solución. A menudo se siente de abajo hacia arriba (de función a producto), pero a veces de arriba hacia abajo ("Estoy sosteniendo un martillo, llamo a todo un clavo" == use el RDBMS para todo).
Eventualmente tenemos que codificar. Esto es de abajo hacia arriba. Mas o menos. Tienes que definir una estructura de paquete. Debes definir las clases como un todo. Esa parte fue de arriba hacia abajo. Tienes que escribir métodos dentro de las clases. A menudo hago esto de abajo hacia arriba: redondeo el método, escribo una prueba unitaria, termino el método. Desarrolle el siguiente método, escriba una prueba unitaria, termine el método.
El principio de manejo es Agile: construya algo que funcione. Los detalles están en todo el mapa: arriba, abajo, frente, atrás, datos, proceso, actor, área temática, valor comercial.
Personalmente, considero que esta es la forma más fácil de trabajar, con menos repeticiones. Otros han mencionado el TDD, pero me parece que me enfoca demasiado en la búsqueda de abajo hacia arriba y termino casi adivinando qué necesitarán las clases de clientes de alto nivel ... y hacerlo mal. Solo soy yo, aunque haga lo que sea que funcione para usted. –