Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Descomposición funcional vs descomposición OO, Apuntes de Ingeniería Infórmatica

Asignatura: Desarrollo Orientado a Objetos, Profesor: , Carrera: Ingeniería Informática, Universidad: UAX

Tipo: Apuntes

Antes del 2010

Subido el 22/05/2007

_vivayo_
_vivayo_ 🇪🇸

3.7

(117)

149 documentos

1 / 4

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Descomposición funcional vs Descomposición OO
Los objetivos que estamos buscando son extensibilidad, reutilización y fiabilidad. Éstos
requieren de las condiciones que hemos explicado anteriormente. Para lograr estas
condiciones se requiere un método sistemático de descomposición de los sistemas en
módulos.
En este capítulo vamos a presentar los elementos básicos del método: construir cada
módulo sobre la base de un tipo de objeto.
Los ingredientes de la computación
Hasta ahora hemos visto las características que deben tener los módulos. Ahora vamos
a ver qué criterios hay que utilizar para encontrar los módulos de nuestro software.
El triángulo básico. Cuando se usa el software para una determinada operación, entran
en juego tres fuerzas: acción, objeto y procesador. Ejecutar un sistema software es
utilizar ciertos procesadores para aplicar ciertas acciones a ciertos objetos.
Procesador: dispositivos de cómputo físicos o virtuales que ejecutan las
instrucciones. Puede ser una CPU, un proceso del SO o un hilo si es multihilo.
Las acciones son las operaciones de que consta la computación. Dependiendo
del nivel en el que nos situemos serán instrucciones de un lenguaje de
programación o un paso del algoritmo.
Los objetos son las estructuras de datos sobre las que se aplican las acciones.
Los procesadores serán importantes cuando hablemos de las formas concurrentes de
computación. Que no veremos en esta asignatura. Lo cual nos deja con acciones u
objetos.
Cualquier discusión sobre problemas de software debe tener en cuenta ambos aspectos,
pero hay una cuestión sobre la cual es preciso decidir: ¿cuál es el criterio para encontrar
los módulos de un sistema?
A partir de esta respuesta se desprende la diferencia entre el enfoque orientado a objetos
y los otros métodos. Los enfoques tradicionales construyen cada módulo en torno a
alguna unidad de descomposición funcional.
Como es predecible nos decantaremos por la descomposición O-O, pero vamos a
justificar el porqué.
Descomposición funcional
Vamos a examinar los méritos y limitaciones del enfoque tradicional.
Continuidad.
Planteémonos el problema de la extensibilidad y s concretamente el de la
continuidad. La respuesta tradicional a la cuestión de la modularización ha sido la
descomposición funcional descendente. ¿Hasta qué punto responde el diseño
descendente a los requisitos de modularidad?
Desarrollo descendente.
Explicación del desarrollo descendente.
El enfoque descendente presenta algunas ventajas:
Disciplina de pensamiento lógica y bien organizada.
Técnica simple y fácil de aplicar.
Útil para pequeños programas y algoritmos individuales.
pf3
pf4

Vista previa parcial del texto

¡Descarga Descomposición funcional vs descomposición OO y más Apuntes en PDF de Ingeniería Infórmatica solo en Docsity!

Descomposición funcional vs Descomposición OO

Los objetivos que estamos buscando son extensibilidad, reutilización y fiabilidad. Éstos requieren de las condiciones que hemos explicado anteriormente. Para lograr estas condiciones se requiere un método sistemático de descomposición de los sistemas en módulos. En este capítulo vamos a presentar los elementos básicos del método: construir cada módulo sobre la base de un tipo de objeto.

Los ingredientes de la computación

Hasta ahora hemos visto las características que deben tener los módulos. Ahora vamos a ver qué criterios hay que utilizar para encontrar los módulos de nuestro software.

El triángulo básico. Cuando se usa el software para una determinada operación, entran en juego tres fuerzas: acción , objeto y procesador. Ejecutar un sistema software es utilizar ciertos procesadores para aplicar ciertas acciones a ciertos objetos.

  • Procesador: dispositivos de cómputo físicos o virtuales que ejecutan las instrucciones. Puede ser una CPU, un proceso del SO o un hilo si es multihilo.
  • Las acciones son las operaciones de que consta la computación. Dependiendo del nivel en el que nos situemos serán instrucciones de un lenguaje de programación o un paso del algoritmo.
  • Los objetos son las estructuras de datos sobre las que se aplican las acciones.

Los procesadores serán importantes cuando hablemos de las formas concurrentes de computación. Que no veremos en esta asignatura. Lo cual nos deja con acciones u objetos. Cualquier discusión sobre problemas de software debe tener en cuenta ambos aspectos, pero hay una cuestión sobre la cual es preciso decidir: ¿cuál es el criterio para encontrar los módulos de un sistema? A partir de esta respuesta se desprende la diferencia entre el enfoque orientado a objetos y los otros métodos. Los enfoques tradicionales construyen cada módulo en torno a alguna unidad de descomposición funcional. Como es predecible nos decantaremos por la descomposición O-O, pero vamos a justificar el porqué.

Descomposición funcional

Vamos a examinar los méritos y limitaciones del enfoque tradicional.

Continuidad. Planteémonos el problema de la extensibilidad y más concretamente el de la continuidad. La respuesta tradicional a la cuestión de la modularización ha sido la descomposición funcional descendente. ¿Hasta qué punto responde el diseño descendente a los requisitos de modularidad?

Desarrollo descendente. Explicación del desarrollo descendente. El enfoque descendente presenta algunas ventajas:

  • Disciplina de pensamiento lógica y bien organizada.
  • Técnica simple y fácil de aplicar.
  • (^) Útil para pequeños programas y algoritmos individuales.
  • Buena para documentar diseños (describir algoritmos).
  • Promueve el desarrollo ordenado de sistemas.
  • Adecuada para dominar la complejidad.

Pero presenta algunas limitaciones:

  • La idea de caracterizar mediante una sola función un sistema es bastante dudosa.
    • Ej. Calcular salarios. Proceso de cambio incremental. F 0E 0 hay que encontrar propiedades menos volátiles que la función principal del sistema.
    • Ej. SO. F 0E 0los sistemas reales no tienen cima.
    • (^) Mejor la visión como un conjunto de servicios.
  • La arquitectura de los sistemas debe basarse en la sustancia y no en la forma. El enfoque descendente tiene a utilizar su interfaz externa como base para su estructura. Respuesta a “¿qué hará el sistema para el usuario final?”. - La interfaz de usuario es sólo uno de los componentes, a menudo entre los más volátiles. - Se puede incluso construir por separado.
  • Otro inconveniente es la ordenación temporal prematura.
    • Ej. Encontrar vivienda F 0E 0 obtener un préstamo F 0E 0 firmar un contrato.
  • Preferible restricciones lógicas y no temporales.
  • Reutilización. Trabajar de modo descendente significa desarrollar elementos software en respuesta a las subespecificaciones particulares que se encuentran en el desarrollo en forma de árbol que se hace del sistema.
  • Este diseño asegura que el diseño cumplirá la especificación inicial, pero no promueve la reutilización.
  • Cultura de proyecto actual. En realidad el proyecto n de una compañía suele ser una variación del proyecto n-1 y una versión previa del proyecto n+1. Al centrarse en un solo proyecto, los diseñadores ignoran esta propiedad de la construcción práctica de software.

Una valoración del diseño descendente El método resulta poco adecuado para desarrollar sistemas de cierta envergadura. Sigue siendo útil para pequeños programas y para algoritmos individuales. Al desarrollar un sistema de modo descendente se permuta la comodidad a corto plazo por la inflexibilidad a largo plazo.

Descomposición basado en objetos

Las razones para la utilización de objetos como clave para la modularización se basan en la extensibilidad y la reutilización.

Por supuesto no podemos descartar las funciones, sino que éstas se supeditarán a los objetos en las arquitecturas resultantes. La noción de tipo abstracto de datos (siguiente tema) nos proporcionará la definición de los objetos y el lugar apropiado de las funciones.

Extensibilidad. Si las funciones del sistema tienden a cambiar, ¿no podríamos encontrar algún otro elemento más estable que nos sirva como guía para la selección de módulos? Los tipos de los objetos manipulados por el sistema son los candidatos más prometedores. Ej. Sistema de nóminas (empleados, escalas salariales, horas trabajadas, salarios…)

Ya que los módulos se van a basar en tipos de objetos, las relaciones entre ellos determinarán la estructura del software.