Metodología para el diseño de software top-down

El diseño de software es un proceso para conceptualizar los requisitos de software en la implementación de software. El diseño de software toma los requisitos del usuario como desafíos y trata de encontrar una solución óptima. Mientras se conceptualiza el software, se elabora un plan para encontrar el mejor diseño posible para implementar la solución deseada.

Existen múltiples variantes de diseño de software. Estudiémoslos brevemente:

Diseño Estructurado

El diseño estructurado es una conceptualización del problema en varios elementos de solución bien organizados. Se trata básicamente del diseño de la solución.

El beneficio de un diseño estructurado es que permite una mejor comprensión de cómo se está resolviendo el problema. El diseño estructurado también hace que sea más fácil para el diseñador concentrarse en el problema con mayor precisión. Estos módulos están organizados en forma jerárquica. Se comunican entre ellos. Un buen diseño estructurado siempre sigue algunas reglas para la comunicación entre múltiples módulos, a saber.

  • Cohesión – agrupación de todos los elementos funcionalmente relacionados.
  • Acoplamiento – comunicación entre los diferentes módulos.

Un buen diseño estructurado tiene una alta cohesión y disposiciones de acoplamiento bajas.

Diseño orientado a la función

En el diseño orientado a la función, el sistema se compone de muchos subsistemas más pequeños conocidos como funciones. Estas funciones son capaces de realizar tareas importantes en el sistema. El sistema se considera como una vista superior de todas las funciones. El diseño orientado a funciones hereda algunas propiedades del diseño estructurado donde se utiliza la metodología de dividir y conquistar.

Este mecanismo de diseño divide todo el sistema en funciones más pequeñas, lo que proporciona medios de abstracción al ocultar la información y su funcionamiento… Estos módulos funcionales pueden compartir información entre ellos mediante el intercambio de información y el uso de la información disponible en todo el mundo.

Proceso de diseño

  • Todo el sistema se ve como el flujo de datos en el sistema por medio de un diagrama de flujo de datos.
  • DFD representa cómo las funciones cambian los datos y el estado de todo el sistema.
  • Lógicamente, todo el sistema se divide en unidades más pequeñas conocidas como funciones en función de su funcionamiento en el sistema.

Diseño orientado a objetos

El diseño orientado a objetos trabaja alrededor de las entidades y sus características en lugar de las funciones involucradas en el sistema de software. Esta estrategia de diseño se centra en las entidades y sus características. Todo el concepto de solución de software gira en torno a las entidades comprometidas.

Veamos los conceptos importantes del Diseño Orientado a Objetos:

  • Objetos – Todas las entidades involucradas en el diseño de la solución se conocen como objetos. Por ejemplo, la persona, los bancos, la empresa y los deudores se tratan como objetos. Cada entidad tiene algunos atributos asociados a ella y tiene algunos métodos para realizar en los atributos.
  • Clases – Una clase es una descripción generalizada de un objeto. Un objeto es una instancia de una clase. La clase define todos los atributos que puede tener un objeto y los métodos que definen la funcionalidad del objeto.
  • En el diseño de la solución, los atributos se almacenan como variables y las funcionalidades se definen mediante métodos o procedimientos.
  • Encapsulación – En OOD, los atributos (variables de datos) y los métodos (operación sobre los datos) se agrupan y se denominan encapsulación. La encapsulación no sólo agrupa información importante de un objeto, sino que también restringe el acceso a los datos y métodos del mundo exterior. Esto se llama esconder información.
  • Herencia – OOD permite que clases similares se apilen de manera jerárquica donde las clases inferiores o subclases pueden importar, implementar y reutilizar variables y métodos permitidos de sus superclases inmediatas. Esta propiedad de OOD se conoce como herencia. Esto facilita la definición de clases específicas y la creación de clases generalizadas a partir de clases específicas.
  • Polimorfismo – Los lenguajes OOD proporcionan un mecanismo en el que se puede asignar el mismo nombre a métodos que realizan tareas similares pero que varían en sus argumentos. Esto se llama polimorfismo, que permite que una sola interfaz realice tareas para diferentes tipos. Dependiendo de cómo se invoque la función, se ejecuta la parte respectiva del código.

Proceso de diseño

El proceso de diseño de software puede ser percibido como una serie de pasos bien definidos. Aunque varía de acuerdo al enfoque de diseño (orientado a funciones u objetos, puede tener los siguientes pasos involucrados:

  • El diseño de una solución se crea a partir de un requisito o de un sistema utilizado anteriormente y/o de un diagrama de secuencia del sistema.
  • Los objetos se identifican y agrupan en clases en nombre de la similitud en las características de los atributos.
  • Se define la jerarquía de clases y la relación entre ellas.
  • Se define el marco de aplicación.

Diseño Top Down

Sabemos que un sistema está compuesto por más de un subsistema y que contiene una serie de componentes. Además, estos subsistemas y componentes pueden tener su propio conjunto de subsistemas y componentes y crear una estructura jerárquica en el sistema.

El diseño de arriba hacia abajo toma todo el sistema de software como una entidad y luego lo descompone para lograr más de un subsistema o componente basado en algunas características. Cada subsistema o componente se trata como un sistema y se descompone más adelante. Este proceso se mantiene en ejecución hasta que se alcanza el nivel más bajo del sistema en la jerarquía descendente.

Diseño de abajo hacia arriba

El modelo de diseño de abajo hacia arriba comienza con los componentes más específicos y básicos. Procede a componer componentes de mayor nivel utilizando componentes básicos o de menor nivel. Sigue creando componentes de mayor nivel hasta que el sistema deseado no evoluciona como un solo componente. Con cada nivel superior, la cantidad de abstracción aumenta.

La estrategia de abajo hacia arriba es más adecuada cuando se necesita crear un sistema a partir de algún sistema existente, donde las primitivas básicas se pueden utilizar en el sistema más nuevo. Ambos enfoques, de arriba hacia abajo y de abajo hacia arriba, no son prácticos individualmente. En su lugar, se utiliza una buena combinación de ambos.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *