design - hacer - diagrama de descomposicion funcional ejemplos
¿Qué es la descomposición funcional? (5)
Aquí hay un ejemplo: tu compilador de C
Primero está el preprocesador: maneja #include
y #define
y todas las macros. Le das un nombre de archivo y algunas opciones y devuelve una cadena realmente larga. Llamemos a esta función preprocess(filename)
.
Luego está el analizador léxico. Toma una cuerda y la divide en tokens. Llámalo lex(string)
. El analizador toma símbolos y los convierte en un árbol, llámalo parse(tokens)
. Luego hay una función para convertir un árbol en un DAG de bloques, llámalo dag(tree)
. Llame al emisor de código emit(dag)
, que toma un DAG de bloques y escupe el ensamblador.
El compilador es entonces:
emit(dag(parse(lex(preprocess(filename)))));
Hemos descompuesto una función grande y difícil de entender (la función de compile
) en un conjunto de funciones más pequeñas y fáciles de entender. No tiene que hacerlo como una tubería, podría escribir su programa como:
process_data(parse_input(), parse_config())
Esto es más típico; los compiladores son programas bastante profundos, la mayoría de los programas son amplios en comparación.
Descomposición funcional, ¿para qué sirve y cuáles son sus ventajas y desventajas? ¿Dónde hay algunos ejemplos trabajados de cómo se usa?
Es lo mismo que WorkBreakDown Structures (WBS), mindMapping y desarrollo de arriba hacia abajo, básicamente dividiendo un gran problema en sub-partes más pequeñas y comprensibles.
Pros
- permite un enfoque proactivo a la programación (resitiendo el impulso de codificar)
- ayuda a identificar las áreas complejas y / o de riesgo de un proyecto (en el ejemplo de ATM, la seguridad es probablemente el componente más complejo)
- ayuda a identificar TODOS los componentes de un proyecto - la causa n. ° 1 del fallo del proyecto / código (a través de Capers Jones) le faltan piezas, cosas en las que no se pensó hasta tarde (bueno, no me di cuenta de que tenía que verificar el equilibrio de la persona) antes de repartir $)
- permite el desacoplamiento de componentes para una mejor programación, intercambio de código y distribución del trabajo
Contras: no hay verdaderas contras para hacer una descomposición, sin embargo, hay algunos errores comunes
- no se descompone lo suficiente ni se descompone demasiado, cada persona necesita determinar el nivel de detalle que se necesita para proporcionarle la información del componente sin exagerar (no se divida en líneas de programación de código ...)
- no usar módulos de códigos / patrones preexistentes en consideración (reprocesamiento)
- no revisar con los clientes para garantizar que el alcance sea correcto
- no usar el colapso cuando se está codificando (como diseñar una casa, olvidar el plan y comenzar a juntar algunas juntas)
La Descomposición funcional es el proceso de tomar un proceso complejo y descomponerlo en partes más pequeñas y simples.
Por ejemplo, piense en usar un cajero automático. Podrías descomponer el proceso en:
Camina hacia el cajero automático
Inserta tu tarjeta bancaria
Introduce tu PIN
bueno ... entiendes el punto.
Puedes pensar en programar de la misma manera. Piensa en el software que ejecuta ese cajero automático:
Código para leer la tarjeta
Verificación de PIN
Procesamiento de transferencia
Cada uno de los cuales puede desglosarse más. Una vez que ha llegado a las piezas más descompuestas de un subsistema, puede pensar cómo comenzar a codificar esas piezas. Luego, componen esas partes pequeñas en el todo mayor. Mira este artículo de Wikipedia:
El beneficio de la descomposición funcional es que una vez que comienza a codificar, está trabajando en los componentes más simples con los que posiblemente pueda trabajar para su aplicación. Por lo tanto, desarrollar y probar esos componentes se vuelve mucho más fácil (sin mencionar que es más capaz de diseñar su código y proyectarlo para satisfacer sus necesidades).
El inconveniente obvio es la inversión de tiempo. Para realizar la descomposición funcional en un sistema complejo se necesita más que una cantidad trivial de tiempo ANTES de que comience la codificación.
Personalmente, creo que esa cantidad de tiempo vale la pena.
La descomposición funcional es útil antes de crear documentos de requisitos funcionales. Si necesita software para algo, la descomposición funcional responde a la pregunta "¿Cuáles son las funciones que debe proporcionar este software?". La descomposición es necesaria para definir funciones de grano fino. "Necesito software para medir la eficiencia energética" es demasiado general. Es por eso que dividimos esto en pedazos más pequeños hasta el punto en que entendemos claramente todas las funciones que los sistemas deben proporcionar. Esto puede usarse luego como una lista de verificación para la integridad de un sistema.
Un documento de requisitos funcionales (FD) es básicamente una representación textual de la descomposición funcional. Codificar directamente desde el FD puede estar bien para lenguajes de procedimiento, pero no es lo suficientemente bueno para soluciones orientadas a objetos, porque no identifica objetos. Ninguno de los dos es bueno para la planificación y prueba de usabilidad.
Mi opinión es que debes tomarte un tiempo para crear un FD, pero no para usarlo demasiado. Consulte a cada persona que conoce el proceso que está siguiendo con su sistema para encontrar todas las funciones necesarias.
Tengo mucha experiencia en el diseño, desarrollo y venta de software, y utilizo la descomposición funcional como el primer paso del desarrollo. Lo uso como base para el contrato, por lo que el cliente sabe lo que recibirá y sé lo que debo proporcionarle.
La descomposición funcional es una forma de descomponer el problema complejo en problemas más simples basados en las tareas que se deben realizar en lugar de las relaciones de datos. Este término generalmente se asocia con el diseño orientado al procedimiento anterior.