Diseño de software

9
Diseño de software Enviado por Ángel Miguel Macas Partes: 1 , 2 1. 2. Fundamentos del Diseño de Software 3. Temas Claves en el Diseño de Software 4. Estructura y Arquitectura de Software 5. Calidad en el análisis, diseño y evaluación del software 6. Diseño de software 7. Herramienta (gsBase(ie)) 8. Bibliografía Introducción A través de la historia de la ingeniería del software ha evolucionado un conjunto de conceptos fundamentales de diseño de software, aunque el grado de interés en cada concepto ha variado con los años, han pasado la prueba del tiempo ofreciendo cada uno al ingeniero de software fundamentos sobre el cual pueden aplicarse métodos de diseño más elaborados. El diseño 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 solución de la aplicación. Estos modelos puede evaluarse en relación con su calidad y mejorarse antes de generar código , de realizar pruebas y de que los usuarios finales se vean involucrados a granescala . El diseño es el sitio en el que se establece la calidad del software. Diseño es definido como: "El proceso de definición de la arquitectura , componentes, interfaces y otras características de un sistema o componente que resulta de este proceso" [IEEE610.12-90]. Palabras Claves Definición 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 Diseño de Software Conceptos generales de diseño. El software no es el único campo donde el diseño se encuentra inmiscuido. En general podemos ver el diseño como una forma para resolución de problemas . El problema sin solución definitiva es interesante en términos de comprensión del diseño. Un numero de otras nociones y conceptos son también de interés en la comprensión del diseño en su sentido general, objetivos , limitaciones, alternativas, representaciones y soluciones

Transcript of Diseño de software

Diseo de softwareEnviado porngel Miguel Macas

Partes:1,21. 2. Fundamentos del Diseo de Software3. Temas Claves en el Diseo de Software4. Estructura y Arquitectura de Software5. Calidad en el anlisis, diseo y evaluacin del software6. Diseo de software7. Herramienta (gsBase(ie))8. BibliografaIntroduccinA travs de lahistoriade laingenieradelsoftwareha evolucionado un conjunto de conceptos fundamentales dediseode software, aunque el grado deintersen cadaconceptoha variado con los aos, han pasado la prueba deltiempoofreciendo cada uno al ingeniero de software fundamentos sobre el cual pueden aplicarsemtodosde diseo ms elaborados.El diseo de Software juega un papel importante en eldesarrollode software lo cual permite al ingeniero de software producir variosmodelosdelsistemaoproductode que se va a construir el mismo que forman una especie deplande la solucin de la aplicacin. Estos modelos puede evaluarse en relacin con sucalidady mejorarse antes de generarcdigo, de realizarpruebasy de que los usuarios finales se vean involucrados a granescala. El diseo es el sitio en el que se establece la calidad del software.Diseo es definido como:"Elprocesode definicin de laarquitectura, componentes, interfaces y otras caractersticas de un sistema o componente que resulta de este proceso" [IEEE610.12-90].Palabras ClavesDefinicin deDocumentosde Software (IEEE)SQAP: Software Quality Assurance Plan IEEE 730SCMP: Software Configuration Management Plan IEEE 828STD:SoftwareTestDocumentation IEEE 829SRS:Software Requirements Specification IEEE 830SVVP: Software Validation & Verification Plan IEEE 1012SDD:Software Design Description IEEE 1016SPMP:Software Project Management Plan IEEE 1058Fundamentos 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 deproblemas. 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 almodelode software que se utilice. Una vez que se analizan y especifican los requisitos, el diseo del software es la ltimaaccinde la ingeniera correspondiente dentro de la actividad del modelado, la cual establece una plataforma para laconstruccin(generacin de cdigo y prueba)."El milagro ms comn de la ingeniera de software es la transicin delanlisisal 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 delprograma. Los modelos del marco detrabajorepetible 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 elcomportamientoespecfico de estos componentes. Tcnicas Permitidas. AbstraccinAbstraccin es el proceso o el resultado de la generalizacin de la reduccin del contenido de lainformacinde 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.

Leer ms:http://www.monografias.com/trabajos73/diseno-software/diseno-software.shtml#ixzz2eA1UovXK

En un alto grado de abstraccin una solucin se establece en trminos generales conel lenguajedel entorno del problema.En los grados de menor abstraccin se proporciona unadescripcinms detallada de la solucin.En la medida en que se cambian los diferentes grados de abstraccin se trabaja para crear abstracciones procedimentales y dedatos.Abstraccin Procedimental:Se refiere a una secuencia de instrucciones que tiene unafuncinespecfica y limitada.Abstraccin de Datos:Es una coleccin nombrada de datos que describe un objeto de datos. Acoplamiento y Cohesin.Dentro delmodelodediseoes necesario que las clases de diseo colaboren con alguna otra.Es una medida de la interconexin entre los mdulos de laestructurade unprograma. 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 elsoftwaresea ms fcil de entender y menos dado al efecto ola.Acoplamiento: Lafuerzade 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 demarca:cuando en vez de argumentos simples se pasa una porcin de la estructura de datos se pasa por la interfaz del mdulo.Acoplamiento decontrol: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 deinformacinde control mantenidos dentro de loslmitesde otro mdulo. Cuando se realiza una bifurcacin hacia la mitad de otro mdulo.Unaclasede diseo cohesiva tiene un conjunto de responsabilidades pequeo y enfocado, y aplica atributos ymtodosde manera sencilla de implementar dichas responsabilidades.Cohesin: Como estn relacionados los elementos que conforman un modulo.Es una extensin natural delconceptode ocultamiento de la informacin. Un mdulo con cohesin realiza una sola tarea dentro de unprocedimientode software, requiriendo pocainteraccincon losprocedimientosque 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.Cohesinlgica: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 detiempo.Cohesin procedimental:cuando los elementos de procesamiento estn relacionados y deben ejecutarse en un orden especfico.Cohesin decomunicacin:todos los elementos de procesamiento se concentran en un rea de la estructura de datos. La descomposicin y la modularizacin.Los patrones dearquitecturay 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 uncostodedesarrollomnimo, pero no tenemos la sofisticacin necesaria para predecir m con seguridad Encapsulacin/Ocultar InformacinMediante 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 aplicacinLa separacin de la interfaz y la aplicacin implica la definicin de un elemento especificando una interfaz pblica, conoce a losclientes, 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 unserviciopara la clase.Temas Claves en el Diseo de SoftwareA la hora de disear software hay una serie de cuestiones fundamentales que se deben tomar en cuenta. Algunos relacionados con lacalidadas como los concernientes a ladireccincomo por ejemplo el rendimiento. Adems de cmo se descomponen, organizan los paquetes de los componentes de software.Esto es tan fundamental que en todo elprocesode 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 eldesempeoo lasemnticade los componentes en elsistemaen diferentes maneras "(Kic97). Concurrencia:La forma de descomponer el software en losprocesos, tareas e hilos tratar relacionarlos con laeficiencia, la atomicidad, la sincronizacin, y dems cuestiones deprogramacin. Control y manejo de EventosCmo 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 ComponentesCmo distribuir el software en elhardware, cmo los componentes se comunican, cmo se puede usar una plataforma al utilizarse para hacer frente a software heterogneos. Error yGestinde ExcepcionesToleranciaa Fallos.Elanlisisy la gestin delriesgoson 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 unabuena idea es identificarlo, evaluar suprobabilidad de aparicin, estimarsu impacto, y establecer unplande contingencia por si ocurre el problema.Unaestrategiaconsiderablemente ms inteligente para el control del riesgo es ser proactivo. La estrategia proactiva empieza mucho antes de que comiencen los trabajos tcnicos. Se identifican losriesgospotenciales, se evala suprobabilidady su impacto y se establece una prioridad segn su importancia. Despus, el equipo de Software establece un plan para controlar el riesgo. El primerobjetivoes 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 SoftwareEn el sentido estricto, una arquitectura de software es "Unadescripcinde 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 unadisciplinams amplia que implica el estudio de lasestructurasy 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 desistemasgenricos lo que lleva a la concepcin de las familias de losprogramas(conocidas como lneas deproductos). La mayora de estos conceptos pueden verse como intentos de describir, por tanto la reutilizacin del diseo genrico delconocimiento.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 deproyecto...) siguen diferentes actividades en diferentes momentos delciclo de vidadel 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: Laorganizacindel sistema Seleccin de elementos estructurales y sus interfaces a travs de los cuales se constituye el sistema. ElComportamiento, 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 usocomprende la descripcin del comportamiento del sistema tal y como es percibido por los usuarios finales, analistas y encargados de laspruebasy se utilizan losdiagramasde casos de uso para capturar los aspectos estticos mientras que los dinmicos son representados por diagramas de interaccin, estados y actividades.La vista de diseocomprende 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, losserviciosque 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 procesoscomprende los hilos y procesos que forman mecanismos de sincronizacin y concurrencia del sistema cubriendo el funcionamiento, capacidad de crecimiento y el rendimiento del sistema. ConUML, 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 implementacincomprende los componentes y losarchivosque 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 desplieguede un sistema contiene los nodos que forman latopologahardware sobre la que se ejecuta el sistema. Se preocupa principalmente de ladistribucin, 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 diseotcnicasque 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 yevaluacindel software Calidad de atributosVarios 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 tcnicasVarias tcnicas yherramientaspueden 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 ungrupobase, 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 desimulacin, o la flexibilidad del prototipo.Diseo de softwareMuchas 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 lasestrategiasde diseo y mtodos de sub reas, pero estas categoras son categorizadas en notaciones para describir la estructuraestticay la dinmicas vistas.Software diseo estrategias y mtodosExisten 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 enMtodos y descripcin del proceso. Los mtodos utilizados son medias que permiten transferir conocimiento y como un framework que permiten testear laingenieradel software. Estrategias generalesLas 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 lenguajesHerramienta (gsBase(ie))Es una herramienta de desarrollo y explotacin de propsito general que se puede utilizar para crearsolucionespara ingeniera,clculo, gestin, diseo grfico,educacin, etc. Incluye novedosas ideas originales que le harn sutrabajomucho ms fcil.Permite construir solucionesintegralesparaempresas(ERP's,CRM's, B2B,B2C, ...)minimizandoel tiempo invertido,recursoshardware y costes de desarrollo.La comunicacin entreclienteyservidorse puede establecer porredeslocales internas,Interneto redes privadas. Los recursos mnimos decomunicacionesnecesarios hacen posible usar distintas tecnologas de comunicacin:ADSL, GPRS, UMTS, RTB,Frame Relay, 3G, RDSI, etc.Para disear, incluye unIDE(Integrated Development Environment) que permite crear y modificar aplicaciones de una forma rpida y gil a la par que dar soporte a instalacionesEl 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 resolverproblemasde gran complejidad de una forma muy fcil.Todos los desarrollos realizados son reutilizables y el sistema permite que en el desarrollo de aplicaciones, participengruposde personas (trabajo en grupo cooperativo). La claridad dellenguajede 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 dearchivose 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 deventa, etc).Gran parte del trabajo de diseo de aplicaciones consiste en la creacin de ventanas para la gestin de archivos (creacin deregistros, 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 deradio, mensajes,imgenes, botones, textos, sliders, etc.

La potente arquitectura cliente/servidorgsBasepermiteel trabajoconcurrente de miles de usuarios, hablamos de usuarios conectados deforma permanenteal servidor y realizando procesos simultneos (no se trata de conexiones espordicas como ocurre enservidoresweb). 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 einformesgrficosen 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. Laintegracinde dichos elementos en ventanas, informes odocumentoses muy sencilla y funcional.

Caractersticas.gsBase es un sistema de desarrollo de software para crear aplicaciones cliente-servidorCrear todo tipo de aplicaciones para empresas yadministracinpblicaDisear sistemas centralizados para trabajo en local y/o remoto o por InternetLas instalaciones de sus clientes finales podrn ser de 1 a miles de usuarios concurrentes (Pymeso grandes empresas).gsBase es la mejor herramienta para crear solucionesASP(Alquiler de Software).

Ventajas. Facilidad en diseo: cientos de ideas nuevas para el desarrollo. Tiempo mnimo deaprendizajepara el desarrollo. Amplios recursos parael aprendizajeen 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 deproyectospor parte de nuestros ingenieros Accesibilidad a sus datos y aplicaciones a nivel mundial para ejecucin o mantenimiento Sistemaseguroy automatizado de distribucin de sus aplicaciones. Mnimos recursos de hardware y comunicaciones. Facilidad de instalacin ymantenimiento. 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, puede mantenerlo otro sin problemas.Bibliografa[1] Swebok_Ironman_June_23_ 2004[2]http://www.info-ab.uclm.es/asignaturas/42530/pdf/M1tema2.pdf[3] http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software[4] http://www.monografias.com/trabajos28/proyecto-uml/proyecto-uml.shtml[5] PRESSMAN Roger S., 2005. Ingeniera de Software. Un enfoque prctico. Sextaedicin. 2005, Estados Unidos.

Leer ms:http://www.monografias.com/trabajos73/diseno-software/diseno-software2.shtml#ixzz2eA1LZWpR