Está en la página 1de 11

Introduccin

A travs de la historia de la ingeniera del software ha evolucionado un conjunto de conceptos fundamentales de diseo de software, aunque el grado de inters en cada concepto ha variado con los aos, han pasado la prueba del tiempo ofreciendo cada uno al ingeniero de software fundamentos sobre el cual pueden aplicarse mtodos de diseo ms elaborados. 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. Diseo es definido como: "El proceso de definicin de la arquitectura, componentes, interfaces y otras caractersticas de un sistema o componente que resulta de este proceso" [IEEE610.12-90]. Palabras Claves Definicin de Documentos de Software (IEEE) SQAP: Software Quality Assurance Plan IEEE 730 SCMP: Software Configuration Management Plan IEEE 828 STD: Software Test Documentation IEEE 829 SRS: Software Requirements Specification IEEE 830 SVVP: Software Validation & Verification Plan IEEE 1012 SDD: Software Design Description IEEE 1016 SPMP: Software Project Management Plan IEEE 1058

Fundamentos del Diseo de Software

Conceptos generales de diseo.

El software no es el nico campo donde el diseo se encuentra inmiscuido. En general podemos ver el diseo como una forma para resolucin de problemas. El problema sin solucin definitiva es interesante en trminos de comprensin del diseo. Un numero de otras nociones y conceptos son tambin de inters en la comprensin del diseo en su sentido general, objetivos, limitaciones, alternativas, representaciones y soluciones

Contexto del diseo de software.

El diseo del software se encuentra en el ncleo tcnico de la respectiva ingeniera y se aplica de manera independiente al modelo de software que se utilice. Una vez que se analizan y especifican los requisitos, el diseo del software es la ltima accin de la ingeniera correspondiente dentro de la actividad del modelado, la cual establece una plataforma para la construccin (generacin de cdigo y prueba). "El milagro ms comn de la ingeniera de software es la transicin del anlisis al diseo y del diseo al cdigo" Richard Due

Proceso del Diseo de Software. Diseo Arquitectnico.

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. [IEEEP1471-00]

Diseo Detallado.

El diseo detallado se describe el comportamiento especfico de estos componentes.


Tcnicas Permitidas. Abstraccin

Abstraccin es el proceso o el resultado de la generalizacin de la reduccin del contenido de la informacin de un concepto o un fenmeno observable, por lo general, con el fin de conservar nicamente la informacin que es relevante para un propsito en particular. Cuando se considera una solucin modular a cualquier problema se pueden exponer muchos grados de abstraccin. En un alto grado de abstraccin una solucin se establece en trminos generales con el lenguaje del entorno del problema. En los grados de menor abstraccin se proporciona una descripcin ms detallada de la solucin. En la medida en que se cambian los diferentes grados de abstraccin se trabaja para crear abstracciones procedimentales y de datos. Abstraccin Procedimental: Se refiere a una secuencia de instrucciones que tiene una funcin especfica y limitada.

Abstraccin de Datos: Es una coleccin nombrada de datos que describe un objeto de datos.

Acoplamiento y Cohesin.

Dentro del modelo de diseo es necesario que las clases de diseo colaboren con alguna otra. Es una medida de la interconexin entre los mdulos de la estructura de un programa. Depende de la complejidad de la interfaz entre los mdulos, el punto en el que se entra o se hace referencia al mdulo y qu datos pasan a travs de la interfaz. Intentamos conseguir el menor nivel posible de acoplamiento. Las conexiones sencillas entre los mdulos hacen que el software sea ms fcil de entender y menos dado al efecto ola. Acoplamiento: La fuerza de las relaciones entre los mdulos. Acoplamiento de datos: est subordinado al mdulo y se accede a l por medio de una lista convencional de argumentos a travs de la cual se pasan los datos. Acoplamiento de marca: cuando en vez de argumentos simples se pasa una porcin de la estructura de datos se pasa por la interfaz del mdulo. Acoplamiento de control: se pasa un indicador de control (una variable que controla las decisiones en el mdulo subordinado). Acoplamiento externo: cuando los mdulos estn atados a un entorno externo al software. Por ejemplo, las I/O y los dispositivos. Acoplamiento comn: varios mdulos hacen referencia a un rea global de datos. Acoplamiento de contenido: un mdulo hace uso de datos o de informacin de control mantenidos dentro de los lmites de otro mdulo. Cuando se realiza una bifurcacin hacia la mitad de otro mdulo. Una clase de diseo cohesiva tiene un conjunto de responsabilidades pequeo y enfocado, y aplica atributos y mtodos de manera sencilla de implementar dichas responsabilidades. Cohesin: Como estn relacionados los elementos que conforman un modulo. Es una extensin natural del concepto de ocultamiento de la informacin. Un mdulo con cohesin realiza una sola tarea dentro de un procedimiento de software, requiriendo poca interaccin con los procedimientos que se realizan en otras partes del programa. Un mdulo con cohesin debera hacer una sola cosa. Siempre debemos buscar la cohesin ms alta, aunque la parte media del espectro es a menudo aceptable. Coincidencialmente cohesivo: un mdulo que realiza un conjunto de tareas poco relacionadas las unas con las otras.

Cohesin lgica: realiza tareas relacionadas lgicamente (produce todas las salidas). Cohesin temporal: contienen tareas relacionadas por el hecho de que todas deben hacerse en el mismo intervalo de tiempo. Cohesin procedimental: cuando los elementos de procesamiento estn relacionados y deben ejecutarse en un orden especfico. Cohesin de comunicacin: todos los elementos de procesamiento se concentran en un rea de la estructura de datos.

La descomposicin y la modularizacin.

Los patrones de arquitectura y diseo de software materializan la modularidad; es decir, el software se divide en componentes con nombres independientes y que es posible abordar en forma individual. Estos componentes llamados mdulos se integran para satisfacer los requisitos del problema. Modularidad: Es el atributo particular del software que permite que un programa sea manejable de manera intelectual. Se divide el software en componentes identificables y tratables por separado, denominados mdulos, que estn integrados para satisfacer los requisitos del programa. Hay un nmero m de mdulos que resultaran en un costo de desarrollo mnimo, pero no tenemos la sofisticacin necesaria para predecir m con seguridad

Encapsulacin/Ocultar Informacin

Mediante la agrupacin y empaquetado de los elementos y los detalles internos de una abstraccin, haciendo que estos detalles sean inaccesibles.

Separacin de la interfaz y la aplicacin

La separacin de la interfaz y la aplicacin implica la definicin de un elemento especificando una interfaz pblica, conoce a los clientes, aparte de los detalles de cmo se realiza el componente.

Suficiencia, integridad y primitivismo.

Los mtodos asociados con una clase de diseo deben enfocarse en el cumplimiento de un servicio para la clase.

Temas Claves en el Diseo de Software


A la hora de disear software hay una serie de cuestiones fundamentales que se deben tomar en cuenta. Algunos relacionados con la calidad as como los concernientes a la direccin como por ejemplo el rendimiento. Adems de cmo se descomponen, organizan los paquetes de los componentes de software.

Esto es tan fundamental que en todo el proceso de diseo que se debe abordar de una manera u otra. "[Aspectos] no suelen ser unidades de descomposicin funcional del software, sino ms bien a las propiedades que afectan el desempeo o la semntica de los componentes en el sistema en diferentes maneras " (Kic97).

Concurrencia:

La forma de descomponer el software en los procesos, tareas e hilos tratar relacionarlos con la eficiencia, la atomicidad, la sincronizacin, y dems cuestiones de programacin.

Control y manejo de Eventos

Cmo organizar los datos y el controlar el flujo, manejo de reactivo y temporal de los acontecimientos a travs de diversos mecanismos, tales como la invocacin implcita de llamadas y sus intentos.

Distribucin de Componentes

Cmo distribuir el software en el hardware, cmo los componentes se comunican, cmo se puede usar una plataforma al utilizarse para hacer frente a software heterogneos.

Error y Gestin de Excepciones Tolerancia a Fallos.

El anlisis y la gestin del riesgo son una serie de pasos que ayudan al equipo del software a comprender y a gestionar la incertidumbre. Un riesgo es un problema potencial que puede ocurrir o no. Pero sin tener en cuenta el resultado, realmente es una buena idea es identificarlo, evaluar su probabilidad de aparicin, estimar su impacto, y establecer un plan de contingencia por si ocurre el problema. Una estrategia considerablemente ms inteligente para el control del riesgo es ser proactivo. La estrategia proactiva empieza mucho antes de que comiencen los trabajos tcnicos. Se identifican los riesgos potenciales, se evala su probabilidad y su impacto y se establece una prioridad segn su importancia. Despus, el equipo de Software establece un plan para controlar el riesgo. El primer objetivo es evitar el riesgo, pero como no se pueden evitar todos los riesgos, el equipo trabaja para desarrollar un plan de contingencia que le permita responder de una manera eficaz y controlada.

Estructura y Arquitectura de Software

En el sentido estricto, una arquitectura de software es "Una descripcin de los subsistemas y componentes de un sistema de software y las relaciones que existen entre ellos" (Bus96: c6). A mediados de 1990, la arquitectura empez a emerger como una disciplina ms amplia que implica el estudio de las estructuras y las arquitecturas de software en una forma ms genrica, dando ideas interesantes sobre diseo del software en diferentes niveles de abstraccin. Algunos de estos conceptos son muy tiles durante el diseo arquitectnico (estilo de arquitectura), de software especfico, as como en su diseo de detalle (nivel inferior, patrones de diseo). As tambin para el diseo de sistemas genricos lo que lleva a la concepcin de las familias de los programas (conocidas como lneas de productos). La mayora de estos conceptos pueden verse como intentos de describir, por tanto la reutilizacin del diseo genrico del conocimiento. El desarrollo de un sistema con gran cantidad de software requiere que este sea visto desde diferentes perspectivas. Diferentes usuarios (usuario final, analistas, desarrolladores, integradores, jefes de proyecto...) siguen diferentes actividades en diferentes momentos del ciclo de vida del proyecto, lo que da lugar a las diferentes vistas del proyecto, dependiendo de qu interese ms en cada instante de tiempo. La arquitectura es el conjunto de decisiones significativas sobre:

La organizacin del sistema Seleccin de elementos estructurales y sus interfaces a travs de los cuales se constituye el sistema. El Comportamiento, como se especifica las colaboraciones entre esos componentes. Composicin de los elementos estructurales y de comportamiento en subsistemas progresivamente ms grandes. El estilo arquitectnico que gua esta organizacin: elementos estticos y dinmicos y sus interfaces, sus colaboraciones y su composicin. Estructuras Arquitectnicas y Puntos de Vista.

Durante las diferentes facetas o etapas del software deben ser descritos y documentados. "Una vista representa un aspecto parcial de la arquitectura de un software mostrando las propiedades del sistema de software". La arquitectura que no debe centrarse nicamente en la estructura y en el comportamiento, sino que abarque temas como el uso, funcionalidad, rendimiento, capacidad de adaptacin, reutilizacin, capacidad para ser comprendida, restricciones, compromisos entre alternativas, as como aspectos estticos. Para ello se sugiere una arquitectura que permita describir mejor los sistemas desde diferentes vistas, donde cada

una de ellas es una proyeccin de la organizacin y la estructura centrada en un aspecto particular del sistema. La vista de casos de uso comprende la descripcin del comportamiento del sistema tal y como es percibido por los usuarios finales, analistas y encargados de las pruebas y se utilizan los diagramas de casos de uso para capturar los aspectos estticos mientras que los dinmicos son representados por diagramas de interaccin, estados y actividades. La vista de diseo comprende las clases, interfaces y colaboraciones que forman el vocabulario del problema y de la solucin. Esta vista soporta principalmente los requisitos funcionales del sistema, o sea, los servicios que el sistema debe proporcionar. Los aspectos estticos se representan mediante diagramas de clases y objetos y los aspectos dinmicos con diagramas de interaccin, estados y actividades. La vista de procesos comprende los hilos y procesos que forman mecanismos de sincronizacin y concurrencia del sistema cubriendo el funcionamiento, capacidad de crecimiento y el rendimiento del sistema. Con UML, los aspectos estticos y dinmicos se representan igual que en la vista de diseo, pero con el nfasis que aportan las clases activas, las cuales representan los procesos y los hilos. La Vista de implementacin comprende los componentes y los archivos que un sistema utiliza para ensamblar y hacer disponible el sistema fsico. Se ocupa principalmente de la gestin de configuraciones de las distintas versiones del sistema. Los aspectos estticos se capturan con los diagramas de componentes y los aspectos dinmicos con los diagramas de interaccin, estados y actividades. La vista de despliegue de un sistema contiene los nodos que forman la topologa hardware sobre la que se ejecuta el sistema. Se preocupa principalmente de la distribucin, entrega e instalacin de las partes que constituyen el sistema. Los aspectos estticos de esta vista se representan mediante los diagramas de despliegue y los aspectos dinmicos con diagramas de interaccin, estados y actividades.

Patrones de Diseo (Patrones Micro arquitectnicos).

"Cada patrn describe un problema que ocurre una y otra vez en nuestro entorno, as como la solucin a este problema, de tal ,modo que esta solucin se pueda aplicar esta solucin un milln de veces, sin hacer lo mismo dos veces" Christopher Alexander. Los patrones de diseo hacen que sea ms fcil reutilizar buenos diseos y arquitecturas. Al expresar como patrones de diseo tcnicas que ya han sido probadas, las estamos haciendo ms accesibles para los desarrolladores de nuevos sistemas. Los patrones de diseo nos ayudan a elegir las alternativas del diseo que hacen que un sistema sea reutilizable, y evitar aquellas que dificultan dicha reutilizacin. Los patrones de creacin tienen que ver con el proceso de creacin, estructural o de comportamiento.

Calidad en el anlisis, diseo y evaluacin del software

Calidad de atributos

Varios atributos son generalmente considerados importantes que permiten obtener un diseo de software con alta calidad, existen algunas caractersticas que son ( mantenible, portabilidad, probable) y (correctos, robusto). Cabe destacar que existen diferencias entre calidad de atributos que son (rendimiento, seguridad, funcionalidad y usabilidad), y los que son (portabilidad, reutilizacin, integralidad y pruebas), y las caractersticas relacionadas con la arquitectura (integridad conceptual, correcto, completo).

Calidad en anlisis y evaluacin de tcnicas

Varias tcnicas y herramientas pueden ayudar a mejorar la calidad de diseo de software: Diseo de software.- Para este tipo se puede aplicar al diseo de software informal y semi informal tomando un grupo base, tcnicas que permiten verificar la calidad de diseo de los artefactos que pueden ser (vista de la arquitectura, diseo -inspeccin, tcnicas y requerimientos). Anlisis esttico.- Para este tipo se puede aplicar al diseo de software informal y semi informal que permite evaluar algo simple utilizando anlisis automticos de casos de pruebas. Simulacin y prototipos.- Son tcnicas dinmicas que permiten evaluar un diseo la caracterstica de simulacin, o la flexibilidad del prototipo.

Diseo de software
Muchas notaciones y lenguajes existen para representar el diseo de artefactos de software. Algunos describen un diseo estructural organizado, otros representan el inicio del software. Estas notaciones son generalmente usadas durante un diseo natural y se pueden usar durante ambos casos. Una representan notaciones que son usadas en el contexto de especficos mtodos en las estrategias de diseo y mtodos de sub reas, pero estas categoras son categorizadas en notaciones para describir la estructura esttica y la dinmicas vistas. Software diseo estrategias y mtodos Existen varias estrategias en el desarrollo del software que permiten mejorar el diseo de procesos, a diferencia con las estrategias generales, mtodos que son especficos en generar estrategias y proveen notacin para ser usados en Mtodos y descripcin del proceso. Los mtodos utilizados son medias que permiten transferir conocimiento y como un framework que permiten testear la ingeniera del software.

Estrategias generales

Las estrategias generales son usadas en el diseno de procesos son dividios y refinados permitiendo lograr una alta estracion de datos y informacin para esto utilizando heursticas usando para esto patentes y patentes de lenguajes

Herramienta (gsBase(ie))
Es una herramienta de desarrollo y explotacin de propsito general que se puede utilizar para crear soluciones para ingeniera, clculo, gestin, diseo grfico, educacin, etc. Incluye novedosas ideas originales que le harn su trabajo mucho ms fcil. Permite construir soluciones integrales para empresas (ERP's, CRM's, B2B, B2C, ...) minimizando el tiempo invertido, recursos hardware y costes de desarrollo. La comunicacin entre cliente y servidor se puede establecer por redes locales internas, Internet o redes privadas. Los recursos mnimos de comunicaciones necesarios hacen posible usar distintas tecnologas de comunicacin: ADSL, GPRS, UMTS, RTB, Frame Relay, 3G, RDSI, etc. Para disear, incluye un IDE (Integrated Development Environment) que permite crear y modificar aplicaciones de una forma rpida y gil a la par que dar soporte a instalaciones El sistema de programacin gsBase incorpora una idea novedosa y original (ventanas dinmicas) que permite, sin tener conocimientos de programacin orientada a objetos, realizar o disear programas con dichas atribuciones de una forma elegante y resolver problemas de gran complejidad de una forma muy fcil. Todos los desarrollos realizados son reutilizables y el sistema permite que en el desarrollo de aplicaciones, participen grupos de personas (trabajo en grupo cooperativo). La claridad del lenguaje de programacin utilizado permite, sin problemas, que un tcnico pueda interpretar rpidamente lo que otro ha desarrollado (garantizado). Para la definicin de ventanas dinmicas se usa el nuevo concepto de grupos o agrupaciones de controles. Los campos de entrada, botones, textos,. de una determinada ventana de gestin de archivo se definen por grupos, no de forma individual como hacen la mayora de lenguajes de programacin, en los problemas del mundo real los controles casi siempre van agrupados (por ejemplo para una ficha de clientes: datos de identificacin, datos econmicos, condiciones de venta, etc). Gran parte del trabajo de diseo de aplicaciones consiste en la creacin de ventanas para la gestin de archivos (creacin de registros, modificacin, seleccin, borrado, consulta, etc.). gsBase estandariza y generaliza este tipo de ventanas haciendo su diseo inmediato, el sistema incluye un potente control de grid, controles de entrada, listas, rboles, chek-boxes, cuadros de radio, mensajes, imgenes, botones, textos, sliders, etc.

La potente arquitectura cliente/servidor gsBase permite el trabajo concurrente de miles de usuarios, hablamos de usuarios conectados de forma permanente al servidor y realizando procesos simultneos (no se trata de conexiones espordicas como ocurre en servidores web). gsBase es por tanto, la mejor solucin para Medianas y Grandes Empresas, por su escalabilidad, potencia, robustez, seguridad y necesidades mnimas de hardware y comunicaciones. Los resultados e informes grficos en gsBase tienen una calidad y potencia excepcional. Diagramas de barras, de tarta, de lneas o de reas son construidos parametrizando una simple funcin en gsBase. La integracin de dichos elementos en ventanas, informes o documentos es muy sencilla y funcional.

Caractersticas.

gsBase es un sistema de desarrollo de software para crear aplicaciones cliente-servidor Crear todo tipo de aplicaciones para empresas y administracin pblica Disear sistemas centralizados para trabajo en local y/o remoto o por Internet Las instalaciones de sus clientes finales podrn ser de 1 a miles de usuarios concurrentes (Pymes o grandes empresas). gsBase es la mejor herramienta para crear soluciones ASP (Alquiler de Software).

Ventajas. Facilidad en diseo: cientos de ideas nuevas para el desarrollo. Tiempo mnimo de aprendizaje para el desarrollo. Amplios recursos para el aprendizaje en el diseo. Posibilidad de partir de aplicaciones ya diseadas. Una vez adquirido el diseo, no pagar royalties. Evaluacin de las aplicaciones on-line trabajando con nuestros servidores de demostracin el tiempo que necesite. Posibilidad de direccin de proyectos por parte de nuestros ingenieros Accesibilidad a sus datos y aplicaciones a nivel mundial para ejecucin o mantenimiento Sistema seguro y automatizado de distribucin de sus aplicaciones. Mnimos recursos de hardware y comunicaciones. Facilidad de instalacin y mantenimiento. Sistema tolerante a fallos. Trabajo en multi-idioma del sistema y sus aplicaciones. Posibilidad de vender sus aplicaciones y mdulos de aplicaciones diseados. Publicacin en gsBase Resource Center. Gestin de licencias automtica, es posible deslicenciar en un ordenador y volver a licenciar en otro. Los tcnicos de desarrollo no son imprescindibles: lo que uno ha diseado