Nociones bsicas de diseo de Software


Anuncios


El diseo de Software es un proceso que transforma los requisitos del usuario de una manera conveniente, lo que ayuda al programador a en la codificacin e implementacin del software.

Para evaluar los requisitos del usuario, un documento SRS (Software Requirement Specification, en espaol 'ERS' especificacin de requisitos de software ) se crea tanto para codificar como para implementar, hay una necesidad de especificar de un modo ms detallado los requisitos en trminos de Software. El resultado de este proceso puede ser usado directamente en la implementacin de lenguajes de programacin.

El diseo de Software es el primer paso en el SFDLC(Software Design Life Cycle, en espaol ciclo de vida del diseo de software), lo que cambia la atencin e importancia desde problema de dominio a solucin de dominio. Intenta espedificar cmo satisfacer los requisitos mencionados en el SRS.

Diseo de niveles o entornos de Software

El diseo de Software produce 3 niveles de resultados:

  • Diseo arquitectnico - El Diseo arquitectnico, es la versin ms abstracta del sistema. Identifica el software como un sistema con distintos componentes que interactuan entre ellos. En este momento es cuando los diseadores conciben la idea de posibles solucionesde dominio.
  • Diseo de alto nivel- El Diseo de alto nivel, rompe con el concepto de diseo arquitectnico que se refiere a Componente de nica entidad mltiple', por lo contrario tiene un punto de vista menos abstracto de los sub sistemas y mdulos y representa la existente interaccin entre ellos. El Diseo de alto nivel se centra en cmo el sistema junto con todos sus componentes se puede implementar en forma de mdulos. Reconoce estructuras modulares de cada sub sistema y su relacin e interaccion entre las mismas.

  • Diseo detallado- El Diseo detallado disea acuerdos con la parte de implementacin de lo que se ve como sistema y sus sub sistemas con los dos tipos de diseo mencionados con anterioridad. Es ms detallado en cuanto a los mdulos y a su implementacin. Define estructuras lgicas de cada mdulo y de sus interfaces para comunicarse con los otros mdulos.

Modularizacin

La Modularizacin es una tcnica para dividir sistemas de Software en mltiples separados e independientes mdulos, los cuales se espera que sean capaces de llevar a cabo tareas(s) de forma independiente. Estos mdulos pueden funcionar como creaciones bsicas para la totalidad del software. Los diseadores tienden a disear mdulos que se pueden ejecutar y/o almacenar por separado y de manera independiente.

El diseo modular involuntariamente sigue las normas de la estrategia de resolucin de problemas centradas en dividir y conquistar, esto se da porque hay muchos otros beneficios relacionados con el diseo modular de un software.

Ventajas de la modularizacin:

  • Los componentes ms pequeos son ms fciles de mantener
  • El programa se puede clasificar segn los aspectos funcionales
  • El nivel deseado de abstraccin se puede aplicar al programa
  • Los components con gran cohesin pueden reutilizarse de nuevo
  • La ejecucin simultnea es possible
  • Es apropiado des del punto de vista de la seguridad

Concurrencia informtica

Hace un tiempo, todos los softwares se hacan con la idea de que fueran ejecutados de forma secuencial. Por secuencial se entiende que las instrucciones codificadas sern ejecutadas una despus de la otra implicando solo una parte del programa activado en cualquier momento. Pongamos que un software tiene mltiples mdulos, en este caso solo uno de entre todos los mdulos puede estar activo en cualquier momento de la ejecucin.

En Diseo de software, la concurrencia se implementa dividiendo el software en varias unidades de ejecucin independientes, como si fueran mdulos ejecutndolos en paralelo. En otras palabras, la concurrencia aporta capacidad al software para poder ejecutar ms de una parte del cdigo de forma paralela a a las otras.

Es necesario para programadores y diseadores poder reconocer estos mdulos, los cuales se pueden crear de forma paralela a la ejecucin.

Ejemplo

El corrector ortogrfico del procesador de textos Word es un mdulo de software, que funciona de forma independiente al procesador de textos mismo.

Acoplamiento y cohesin

Cuando un programa software est modularizado, sus tareas se dividen en varios mdulos en base a algunas caractersticas. Como sabemos, los mdulos son sets de instrucciones agrupados con la finalidad de lograr ciertas tareas. Son complicados, si se consideran como una sola entidad, pero pueden consultar al otro y trabajar de manra conjunta. Hay formas de medir la calidad del diseo de los mdulos y de sus interacciones. Estas medidad se denominan acoplamiento y cohesin.

Cohesin

La Cohesin es una medida que define el grado de interdependencia entre los elementos que conforman los mdulos. A mejor cohesin, mejor diseo de programa obtenemos.

Hay siete tipos de cohesin, llamados

  • Cohesin coincidente - Es una cohesin no planificada y random, la cual puede romper el programa en pequeos mdulos por el bien de la modularizacin. Como que no tiene una planificaci, puede confundir a los programadores. Por eso este tipo no est generalmente aceptado.

  • Cohesin lgica - La categorizacin de manera lgica en la que los elementos se colocan juntos en un mismo mdulo, se denomina Cohesin lgica.

  • Cohesin temporal - Cuando los elementos del mdulo se organizan de manera que se procesan en un momento similar en el tiempo, hablamos de Cohesin temporal.

  • Cohesin procedimental - Cuando los elementos del mdulo se agrupan juntos, y se ejecutan de forma secuencial para poder llevar a cabo una tarea, hablamos de Cohesin procedimental.

  • Cohesin comunicativa - Cuando los elementos del mdulo se agrupan juntos, y se ejecutan y funcionan en los mismos datos (informacin) de forma secuencial, hablamos de Cohesin comunicativa.

  • Cohesin secuencial - Cuando los elementos del mdulo se agrupan porque el resultado de un elemento sirve de entrada a otro y as sucesivamente, hablamos de Cohesin secuencial.

  • Cohesin funcional - Se considera la mejor en cuanto a mayor grado de cohesin, y es altamente previsible. Los elementos del mdulo en cohesion funcional se agrupan porque todos ellos contribuyen a conseguir una funcin nica y bien definida. Tambin se puede reutilizar.

Acoplamiento

El acoplamiento es una medida que define el nivel de interdependencia entre los mdulos del programa. Nos muestra el nivel en que los mdulos interfieren e interactuan entre ellos. A menor acoplamiento, mejor programa se obtiene.

Hay cinco niveles de acoplamiento, llamados -

  • Acoplamiento de contenido - Cuando un mdulo puede acceder, modificar o consultar directamente el contenido de otro mdulo hablamos de acoplamiento del nivel de contenido.

  • Acoplamiento comn- Cuando mltiples mdulos han ledo y escrito el acceso a algun dato global, hablamos de acoplamiento global o comn.

  • Acoplamiento de Control- Dos mdulos se denominan acoplados de control si uno de ellos decide la funcin del otro o cambia su flujo de ejecucin.

  • Acoplamiento 'stamp'- Cuando mltiples mdulos comparten la misma estructura de datos y funcionan en diferentes partes de la misma, hablamos de acoplamiento 'stamp'.

  • Acoplamiento de datos- Se da cuando dos mdulos interactuan entre ellos con la finalidad de pasarse informacin (como parmetro). Si un mdulo pasa una estructura de datos como parmetro, el mdulo receptor debe usar todos sus componentes.

No hay un tipo de acoplamiento que se considere el mejor.

Verificacin del Diseo

El resultado del proceso de diseo de Sofware es disear documentacin, pseudo cdigos, diagramas lgicos y detallados, diagramas de proceso, y descripcin detallada de todos los requisitos funcionales y no funcionales.

La siguiente fase, la implementacin del software, depende de los resultados mencionados con anterioridad.

En este momento es cuando se necesita verificar los resultados antes de proceder con la siguiente fase. Cuanto antes de detecte un error mejor, ya que puede que no se detecte hasta que se realicen las pruebas de software del producto al final del proceso. Si los resultados de la fase de diseo son anotaciones formales, sus herramientas asociadas para la verificacin deben ser usadas, en caso contrario se puede usar una revisin del diseo para la verificacin y la validacin.

En la aproximacin de verificacin estructurada, los evaluadores pueden detectar defectos que se han ocasionado por haber omitido algunas condiciones. Un buen evaluador de diseo es importante para conseguir un buen diseo de software con calidad y acurado.