You are on page 1of 10

Repblica Bolivariana de Venezuela Ministerio para el Poder Popular de Educacin Universitaria Universidad Politcnica de Valencia Departamento de Informtica

FUNDAMENTOS DEL DISEO DE SISTEMAS

Autores: vila, Antonielis Bentez, Nilson Olivera, Cristina

Profesora: Ing. Irma Lpez M. Seccin: 03HN

Valencia, Mayo de 2013.

1. Cul es el propsito del Diseo de un Software

Los propsitos u objetivos del diseo del software es desarrollar, revisar y documentar los refinamientos Progresivos de las estructuras de datos, de la estructura del programa y de los detalles procedimentales. El diseo da como resultado representaciones cuya calidad puede ser evaluada. Mediante algunas metodologas de diseo:

Se realiza el diseo de datos El diseo arquitectnico y el Diseo procedimental.

A su vez el diseo y la construccin del software estn soportados por varios principios fundamentales. Estos principios favorecen que los objetivos de calidad del software se alcancen con mayor facilidad. En este tema se estudiarn los principios y tcnicas Que permiten construir arquitecturas software correctas. Primeramente se introducir la fase de diseo y el proceso de diseo, para posteriormente centrarse en los principios y conceptos fundamentales del diseo del software, haciendo un Especial hincapi en todos aqullos que permitan alcanzar un diseo modular eficaz, basado en mdulos altamente cohesionados, con bajo acoplamiento y construidos Sobre la base de la ocultacin de la informacin.

. 2. Que define el diseo arquitectnico

Comprende el establecimiento de un marco de trabajo estructural bsico para un sistema. Alude a la estructura general del software y el modo en que la estructura ofrece una integridad conceptual al sistema. De modo simple, se puede considerar que est compuesta por la estructura jerrquica de los componentes (mdulos), la manera en la que dichos componentes interactan y la estructura de datos que es utilizada por dichos componentes.

Propiedades que deben especificarse como partes de un diseo arquitectural: Propiedades estructurales.- define los componentes de un sistema y la manera en la que dichos componentes se agrupan en paquetes e interaccionan entre ellos. Propiedades extra-funcionales.- debe indicar cmo el diseo arquitectnico alcanza los requisitos no funcionales como: rendimiento, capacidad, fiabilidad, seguridad, adaptabilidad, etc. Familias de sistemas relacionados.- debe permitir reconocer su estructura en los patrones repetitivos que se encuentran de manera habitual en el diseo de sistemas similares. Debe ser capaz de reutilizar bloques de construccin arquitecturales.

3. Cul es la importancia diseo de software

El diseo de Software juega un papel importante en el desarrollo de software lo cual permite al ingeniero de software producir varios modelos del sistema o producto de que se va a construir el mismo que forman una especie de plan de la solucin de la aplicacin. Estos modelos puede evaluarse en relacin con su calidad y mejorarse antes de generar cdigo, de realizar pruebas y de que los usuarios finales se vean involucrados a gran escala. El diseo es el sitio en el que se establece la calidad del software. 4. El principio de la sabidura de un ingeniero de software es reconocer la diferencia entre conseguir que funcione un programa y hacerlo bien (M.A. Jackson, 1975. Cmo aplicara los conceptos fundamentales del diseo en este principio?

El objetivo de todo sistema informtico es la de aportar soluciones a un problema que se presenta en una organizacin o comunidad especfica, de manera efectiva, debe reunir una serie de componentes de entrada y salida, almacenamiento y procesamiento de informacin resolviendo de manera sencilla los problemas de dicha organizacin o entidad. El diseo debe estar elaborado con una interfaz amigable, de fcil comprensin para los usuarios de todos los niveles; brindar una solucin concreta a cada requerimiento planteado por el cliente, con la menor inversin de tiempo y dinero. El diseo es la parte central de la ingeniera del software. Durante el diseo se desarrollan, revisan y se documentan los refinamientos progresivos de las estructuras de datos, de la estructura del programa y de los detalles procedimentales. El diseo da como resultado representaciones cuya calidad puede ser evaluada. Sin diseo, nos arriesgamos a construir un sistema inestable, un sistema que falle cuando se realicen pequeos cambios, que sea difcil de probar, cuya calidad no pueda ser evaluada hasta ms adelante, cuando quede poco tiempo y ya sea haya gastado mucho dinero.

Aplicando los conceptos fundamentales de la ingeniera del software al enunciado de Jackson, se puede decir: Abstraccin: La abstraccin permite ver nicamente qu hace un sistema, sin dar a conocer cmo lo hace. Las decisiones de diseo susceptibles de cambio deben ocultarse detrs de interfaces abstractas, los mdulos se han de disear de forma que la informacin interna del mdulo sea inaccesible a otros mdulos que no la necesitan La abstraccin permite que dispongamos de las caractersticas de un objeto que necesitemos, se define como un mtodo por el cual se rescatan los datos relevantes y se ignoran los irrelevantes. Los modelos de un nivel de abstraccin mayor pueden utilizarse para la comunicacin con el cliente. Los diseos han de ocultar o diferir los detalles de implementacin

Ventajas: Define y refuerza las restricciones de acceso. Facilita el mantenimiento y la evolucin de los sistemas software Reduce los efectos laterales Limita el impacto global de las decisiones de diseo locales Favorece la encapsulacin, uno de los elementos de un buen diseo

Refinamiento: La arquitectura de un programa se desarrolla en niveles sucesivos de refinamiento de los detalles procedimentales. Se desarrolla una jerarqua descomponiendo una funcin de forma sucesiva hasta que se llega a las sentencias del lenguaje de programacin.

Comenzamos con una declaracin de la funcin (o una descripcin de la informacin) definida a un nivel superior de abstraccin. Es decir, la declaracin pero describe no la funcin o la informacin sobre el

conceptualmente,

proporciona

informacin

funcionamiento interno de la funcin o sobre la estructura interna de

la informacin, sino que se va a realizando sucesivamente, dando cada vez ms detalles. En cada paso del refinamiento, una o varias instrucciones del programa dado, se descomponen en instrucciones ms detalladas. Esta descomposicin sucesiva o refinamiento de especificaciones termina cuanto todas las instrucciones estn expresadas en trminos de la computadora usada o del lenguaje de programacin Conforme se refinan las tareas, tambin los datos pueden ser refinados, descompuestos o estructurados, siendo lo natural refinar las especificaciones del programa y de los datos en paralelo. Cada paso de refinamiento implica algunas decisiones de diseo. Es importante que el programador sea consciente de los criterios subyacentes (en las decisiones de diseo adoptadas) y de la existencia de soluciones alternativas Un refinamiento excesivo podra dar lugar a un nmero tan grande de mdulos que hara poco prctica la descomposicin. Se tendrn en cuenta estos criterios para dejar de descomponer: * Cuando no haya tareas bien definidas. *Cuando la interfaz de un mdulo sea tan complicada como el propio mdulo Modularidad: La Modularidad Es una particin lgica del diseo software que permite al software complejo ser manejable para propsitos de implementacin y mantenimiento. Es el atributo individual del software que permite a un programa ser intelectualmente manejable (Myers, 1978). Es la propiedad que tiene un sistema que ha sido descompuesto en un conjunto de mdulos cohesivos y dbilmente acoplados (Booch, 1994). Propuesta de descomposicin funcional del sistema Sistema dividido en subsistemas. Subsistemas son repetidamente divididos hasta que son intelectual y tcnicamente manejables como unidades individuales.

La modularidad facilita: Los factores de calidad del software Extensibilidad: interfaces abstractas, bien definidas Reusabilidad: bajo acoplamiento, alta cohesin Portabilidad: oculta las dependencias mquina La calidad de los diseos software Mejora la separacin de aspectos. Permite reducir la complejidad del sistema global mediante arquitecturas software descentralizadas. Incrementa la escalabilidad mediante el soporte al desarrollo

independiente y concurrente por varias personas. Un mdulo es cualquier parte o subsistema de un sistema mayor. Un sistema es modular si est compuesto de mdulos bien definidos, conceptualmente simples e independientes, que interactan a travs de interfaces bien definidas. Los sistemas modulares son deseables por las siguientes razones: Son fciles de entender y explicar porque se puede estudiar cada mdulo por separado, y adems estos mdulos tienen bien definidas las interdependencias. Al ser ms fciles de entender y explicar, son fciles de documentar. Son ms fciles de programar porque grupos independientes pueden trabajar en mdulos diferentes con poca comunicacin. Son ms fciles de probar porque pueden ser probados por separado, y despus integrados y probados juntos. Cuando los mdulos son realmente independientes, son ms fciles de mantener. Se pueden hacer cambios en algunos mdulos sin afectar al resto del sistema. La modularidad mejora la calidad del diseo. Reduce la complejidad. Facilita implementacin, depuracin, pruebas, documentacin y

mantenimiento del software.

Estos principios favorecen que los objetivos de calidad del software se alcancen con mayor facilidad.

5- Cmo aplica el principio de Modularidad el diseo arquitectnico?. La arquitectura de software de un sistema informtico, es la estructura de las estructuras del sistema, la cual comprende los componentes del software, las propiedades de esos componentes visibles externamente, y las relaciones entre ellos. La arquitectura capacita al ingeniero del software para: Analizar la efectividad del diseo para la consecucin de los requisitos fijados. Considerar las alternativas arquitectnicas en una etapa en la cual hacer cambios en el diseo es relativamente fcil. Reducir los riesgos asociados a la construccin del software.

El diseo arquitectnico puede representarse al usar uno o ms de muchos modelos diferentes. Los modelos estructurales representan la arquitectura como una coleccin organizada de componentes del programa. Los modelos del marco de trabajo repetible incrementan el grado de abstraccin del diseo al intentar identificar marcos de trabajo repetibles del diseo arquitectnico que se encuentran en tipos de aplicaciones similares. El diseo de la arquitectura de software se describe cmo se descompone y como estn organizados los componentes en el software.

Descomposicin modular Capacidad de descomposicin modular. Si un mtodo de diseo proporciona un mecanismo sistemtico para descomponer el problema en subproblemas, reducir la complejidad de todo el problema, consiguiendo de esta manera una solucin modular efectiva.

Capacidad de empleo de componentes modulares. Si un mtodo de diseo permite ensamblar los componentes de diseo (reusables) existentes en un sistema nuevo, producir una solucin modular que no inventa nada ya inventado. Capacidad de comprensin modular. Si un mdulo se puede comprender como una unidad autnoma (sin referencias a otros mdulos) ser ms fcil de construir y de cambiar. Continuidad modular. Si pequeos cambios en los requisitos del sistema provocan cambios en los mdulos individuales, en vez de cambios generalizados en el sistema, se minimizar el impacto de los efectos secundarios de los cambios. Proteccin modular. Si dentro de un mdulo se produce una condicin aberrante y sus efectos se limitan a ese mdulo, se minimizar el impacto de los efectos secundarios inducidos por los errores. Es importante destacar que un sistema se puede disear modularmente, incluso aunque su implementacin deba ser monoltica. Existen situaciones (por ejemplo, software en tiempo real, software empotrado) en donde no es admisible que los subprogramas introduzcan sobrecargas de memoria y de velocidad por mnimos que sean (por ejemplo, subrutinas, procedimientos). En tales situaciones el software podr y deber disearse con modularidad como filosofa predominante.

DESCOMPOSICION MODULAR El diseo modular propone dividir el sistema en partes diferenciadas y definir sus interfaces. Sus ventajas: claridad, reduccin de costos y reutilizacin Los pasos a seguir son: 1. Identificar los mdulos

2. Describir cada mdulo 3. Describir las relaciones entre mdulos Una descomposicin modular debe poseer ciertas cualidades mnimas para que se pueda considerar suficiente validad. 1. Independencia funcional 2. Acoplamiento 3. Cohesin 4. Comprensibilidad 5. Adaptabilidad.

6. La complejidad percibida por un problema que combina P1 y P2 es mayor que la complejidad por cada problema si se consideran estos por separado. Considerando este principio se llega a una conclusin divide y vencers. Aplique este principio al diseo de software. Este principio de considerar el planteamiento de soluciones por separado a cada requerimiento del cliente y luego acoplarlas, se refiere directamente a la modularidad y refinamiento del diseo del software ya que facilitan el desarrollo del mismo y brindan mayor robustez y seguridad. En la cultura popular, divide y vencers hace referencia a un refrn que implica resolver un problema difcil, dividindolo en subproblemas de igual tipo o similar, tantas veces como sea necesario. La solucin del problema principal se construye con las soluciones encontradas. Un programa grande compuesto de un solo mdulo no puede ser estudiado fcilmente por un lector, ya que el nmero de caminos de control, el nmero de variables y la complejidad global haran el cdigo prcticamente indescifrable.

You might also like