Estrategias de diseo Software


Anuncios


El Diseo de Software es un proceso para conceptualizar los requisitos de software en implementacin de software. El Diseo de Software toma los requisitos del Usuario como retos e intenta encontrar soluciones ptimas. Mientras el software se conceptualiza, se planea el mejor diseo para poder implementar la solucin deseable.

Hay muhas variantes de diseo de software. Estudimoslas pues de manera breve:

Diseo Estructurado

El Diseo estructurado es la conceptualizacin de un problema en varios elementos organizados de solucin. Est bsicamente centrado en el diseo de soluciones. El beneficio del diseo estructurado es que da un mejor entendimiento sobre cmo se resuelve el prolema. El diseo estructurado tambin simplifica el proceso al diseador, por tanto este ltimo puede concentrarse en el problema de forma ms acurada.

El Diseo estructurado se basa en 'dividir y conquistar', estrategia donde el problema se rompe en otros pequeos problemas y cada uno es tratado por separado para finalmente resolver la totalidad del problema.

Los pequeos problemas en los que se sudivide el problema principal se solucionan y agrupan en mdulos de solucin. El Diseo estrucurado emfatiza en que los mdulos estn bien organizados con tal de que se consiga la solucin precisa requerida.

Estos mdulos se organizan de manera jerrquica. Se comunican entre ellos. Un buen diseo estructurado siempre sigue algunas normas de comunicacin entre los diversos mdulos, llamadas -

Cohesin - Agrupar todos los elemntos relacionados por funcin.

Acoplamiento - comunicacin entre los distiontos mdulos.

Un buen diseo estructurado tiene alta cohesin y bajo acoplamiento.

Diseo orientado a la funcin

En Diseo orientado a la funcin, el sistema es comprimido en varios pequeos sub sistemas concidos como funciones. Estas funciones son capaces de llevar a cabo tareas significativas en el sistema. El sistema es considerado como la vista superior de todas las funciones.

El diseo orientado a la funcin posee algunas propiedades inherentes del diseo estructurado donde la metodologa de dividir y conquistar se usa.

Este mecanismo de diseo divide la totalidad del sistema en pequeas funciones, lo cual nos aporta por medio de la abstraccin ocultando la informacin y sus operaciones. Estos mdulos funcionales pueden compartir informacin entre ellos pasando informacin y usando informacin disponible a nivel global.

Otra caracterstica de las funciones es que cuando un programa acude a una funcin, la funcin cambia el estado del programa, por lo que a veces no es aceptado por otros mdulos. El diseo orientado a la funcin funciona bien cuando el estado del sistema no es importante y programa/funciones funcionan con entradas en vez de con estados.

Proceso de diseo

  • El sistema en su totalidad es visto segn cmo fluyen los datos en ste por medio de un diagrama de flujo de datos.
  • El DFD representa cmo las funciones cambian los datos y el estado de todo el sistema.
  • El sistema se rompe de forma lgica en pequeas unidades conocidas como funciones en base a sus operaciones en el sistema.
  • Cada funcin es descrita posteriormente en toda su extensin.

Diseo orientado al objeto

El diseo orientado al objeto funciona alrededor de entidades y sus caractersticas en vez de involucrando funciones en el sistema de software. Esta estrategia de diseo se centra en entidades y sus caractersticas. Todo el concepto de solucin de software se centra en las entidades implicadas.

Veamos pues los conceptos importantes que abarca el Diseo orientado al objeto:

  • Objetos - Todas las entidades implicadas en el diseo de la solucin son conocidas como objetos. Por ejemplo, persona, bancos, empresa, y clientes con tratados como objetos. Cada entidad tiene algunos atributos asociados a ste y tiene algunos mtodos para actuar sobre los atributos.

  • Clases - Una clase es una descripcin general de un objeto. Un objeto es un ejemplo de uan clase. La clase define todos los atributos que un objeto puede tener y los mtodos, lo cual define la funcionalidad del objeto.

    En el diseo de la solucin, los atributos se almacenan como variables y las funcionalidades se definen por medio de mtodos o procedimientos.

  • Encapsulacin - En OOD, los atributos (variables de los datos) y los mtodos (intervencin en los datos) se juntan, hablamos de encapsulacin. La encapsulacin no solo une la iformacin importante de un objeto en un mismo lugar, tambin restringe el acceso a datos y mtodos desde el mundo exterior. Esto es llamado ocultacin de informacin.

  • Herenia - OOD permite clases similares para acumular de manera jerrquica donde las sub clases pueden importar, implementar y reutilizar variables y mtodos permitidos de sus immediatas super clases. Esta propiedad de OOD es conocida como herencia. Esto facilita a la hora de definir clases y crearlas desde otras clases especficas.

  • Poliformismo - Los lenguajes OOD nos dan un mecanismo donde los mtodos llevan a cabo tareas similares pero con variantes en los argumentos, se le puede asignar el mismo nombre. Esto se llama poliformismo, lo que permite a una interfaz nica llevar a cabo tareas de diferente tipo. Dependiendo de como se aplique la funcin, la parte del cdigo respectiva se ejecuta.

Proceso de diseo

El proceso de diseo de Software se puede definir en una serie de pasos bien definidos. Aunque cambie segn el tipo de aproximacin (orientado a la funcin o al objeto), Debe seguir los siguientes pasos:

  • Una solucin de diseo se crea partiendo de un requisito o un sistema usado con anterioridad y/o el diagrama de secuenia de un sistema.

  • Los objetos se identifian y agrupan en clases segn su similaridad con las caractersticas del atributo.

  • La jerarqua de clase y su relacin entre ellos est definida.

  • El borrador de la aplicacin est definido.

Aproximaciones para diseo de Software

Aqu tenemos 2 aproximaciones genricas para disear software:

Diseo 'Top Down' (de arriba a abajo)

Sabemos que un sistema se compone por ms de un sub sistema y que contiene varios componentes. Adms, estos subsistemas y componentes pueden tener su set de sub sistemas y componentes y crear estructuras jerrquicas dentro del sistema.

El Diseo Top-down toma la totalidad del sistema software como una entidad y lo descompone para conseguir ms de un sub sistema o componente basado en algunas caractersticas. Cada sub sistema o componente es entonces tratado como un sistema descompuesto adicional. Este proceso contina funcionando hasta llegar al nivel ms bajo del sistema en la jerarqua 'top-down'.

El Diseo Top-down empieza con un modelo generalizado de sistema y contina definiendo las partes ms especficas de ste. Cuando todos los componentes estn formados el sistema empieza a existir.

El Diseo Top-down es ms recomendable cuando la solucin software necesita ser diseada des del inicio y los detalles especficos son desconocidos.

Bottom-up Design

El modelo de Diseo 'bottom up' (de abajo a arriba) empieza con componentes ms basicos y especficos. Continua formando un mayor nivel de componentes usando un nivel bsico o bajo de componentes. Sigue creando componentes de alto nivel hasta el punto en el que el sistema deseado no ha evolucionado en un solo componente. Como mayor sea el nivel ms incrementar la abstraccin.

La estrategia de Bottom-up es ms recomendable cuando un sistema necesita ser creado desde uno ya existente, donde los elementos primos pueden usarse para el sistema nuevo.

En Ambos, El diseo top-down y el diseo bottom-up, la aproximacin no es prctica de manera individual. Por tanto, se usa una buena combinacin de los dos.