Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
1.2.- Objetivo.
El objetivo del diseador es producir un modelo o representacin de una entidad que se construir ms adelante. El proceso por el cual se desarrolla el modelo combina:
La intuicin y los criterios sobre la base de la experiencia de construir entidades similares, Un conjunto de principios y/o heursticas que guan la forma en que se desarrolla el modelo, Un conjunto de criterios que permiten discernir sobre la calidad y un proceso de iteracin que
conduce finalmente a una representacin del diseo final. El objetivo del diseador es producir un modelo o representacin del software que se continuara ms adelante. El diseo del software es una afirmacin de requisitos del usuario y la realizacin de estos en la forma de cdigo ejecutable. Una vez establecidos los requisitos del software, el diseo del software es la primera de tres (3) actividades tcnicas:
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
El proceso de diseo es, por tanto, un proceso iterativo, mediante el cual se va a realizar una traduccin de los requisitos en una representacin del software. El diseo del software se asienta en el ncleo tcnico del proceso de ingeniera del software y se aplica independientemente del paradigma de desarrollo utilizado. Mediante alguna de las metodologas de diseo se realiza el diseo de datos, el diseo arquitectnico y el diseo procedimental.
Diseo de la arquitectura del sistema: Este es el proceso durante el cual se produce una
especificacin completa y verificada del hardware en general.
Diseo detallado del software: Este ocurre cuando se producen especificaciones verificadas de
estructuras de datos. El diseo detallado que se ocupa del refinamiento de la representacin arquitectnica que lleva a una estructura de datos detallada y a las representaciones algortmicas del software. Adems del diseo de datos, arquitectnico y procedimental, muchas aplicaciones modernas requieren del diseo de interfaz que establece la disposicin y los mecanismos para la interaccin hombre-mquina.
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
La eleccin de un mecanismo de persistencia adecuado a los propsitos del sistema que se pretende desarrollar supone la toma de un conjunto de decisiones:
El tipo de sistema de base de datos a utilizar. La forma en que la aplicacin se comunicar con el mismo.
La distribucin de la lgica: qu parte resolver la aplicacin y qu otra se delegar a mecanismos propios del sistema elegido (stored procedures, consultas precompliladas o vistas, etc). El grado de automatizacin para los accesos (consultas, etc).
Los requerimientos de rendimiento o efectividad (performance). 3.2.- Uso de Base de Datos Orientada a Objetos.
En general, algunas de las cuestiones planteadas han encontrado cierto consenso a la hora de disear una solucin. En cuanto a la eleccin del mecanismo de persistencia, nos encontramos, por ejemplo, con las bases de datos de objetos (OODBMS). Como su nombre lo indica, la forma en la que stas organizan y almacenan la informacin se acerca bastante a la manera en que se trabaja con objetos y referencias en las aplicaciones OO, por lo que la transicin entre aplicacin y base de datos prometera ser ideal. Sin embargo, por diversas razones no han ganado la suficiente popularidad en el mercado, entre las que se encuentran la necesidad de la independencia de datos, es decir, que la informacin se encuentre almacenada de forma tal que sea til a cualquier aplicacin, desarrollada a travs de cualquier tecnologa. La utilizacin de archivos para el mecanismo de persistencia trae aparejados sus propios inconvenientes. En el caso de los archivos XML habr que unificar los conceptos de orientacin a objetos con el enfoque jerrquico. Por otro lado, la cuestin del almacenamiento de la informacin impone necesidades en torno a la forma de organizar y recuperar los datos en forma eficiente, y un simple archivo no puede proporcionarnos ninguna ventaja en relacin con estos aspectos.
Han experimentado una mejora continua a lo largo de los aos en cuanto a la optimizacin en la
Habiendo escogido un sistema de estas caractersticas podramos considerar resueltos algunos de los inconvenientes bsicos que trae aparejado el desarrollo de una aplicacin que requiera un mecanismo de persistencia de la informacin, ya que ciertas cuestiones se delegan al motor: Almacenamiento, organizacin y recuperacin de informacin estructurada. Concurrencia e integridad de datos. Administracin de los datos compartidos.
3
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
Como vemos, la decisin a favor de un RDBMS parece convincente, sin embargo, an resta abordar la cuestin de cmo comunicar la base de datos con nuestra aplicacin para permitir que el estado de nuestros objetos pueda ser eventualmente almacenado en disco y recuperado tiempo ms tarde.
4.- METODOS PARA LA ACTIVIDAD DE DISEO DE SOFTWARE. 4.1.-Notaciones en Diseo de Software y Documentacin.
Existen numerosas notaciones para representar artefactos de diseo. Algunas se usan durante el diseo arquitectnico, otras durante el detallado y otras en ambas. Se han caracterizado las notaciones en trminos de caja negra versos caja blanca:
Notacin caja negra: se preocupa con las propiedades externas de los elementos del modelo de
diseo
Notacin caja blanca: se preocupa mayormente con describir algunos aspectos de la realizacin
detalladas de un elemento de diseo Otra forma es diferenciarlas entre notaciones para describir propiedades estructurales (estticas) y las que describen propiedades conductuales (dinmicas)
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
Dada la variedad de notaciones disponibles, se presenta la dificultad de cmo combinarlas para confeccionar un documento de diseo coherente. No hay respuesta definitoria. Depende de muchos aspectos: tipo de software a desarrollar, las personas involucradas, etc. La seleccin de un conjunto apropiado de vistas depende de las personas involucradas: administradores de proyectos, desarrolladores, testeadores e integradores, clientes, usuarios finales, etc. Satisfacer las diferentes necesidades se puede describir en trminos de la importancia relativa de las varias vistas desde cada tipo de vista: mdulo, componente-y-conector y asignacin (allocation). Un administrador del proyecto podra requerir vistas de asignacin detalladas mientras que un desarrollador podra requerir vistas de mdulos y componente-y-conector ms detalladas. Documentar una vista involucra por lo menos, el describir las interfaces de los elementos de esa vista. La definicin de esa vista depender del tipo de elemento. Una clave caracterstica de cada especificacin de interface es que tiene que ser dual: lo que el elemento provee y lo que requiere (los recursos usados por el elemento y las suposiciones que hace del medio ambiente). Otra idea clave es que el diseo debe ser presentado y documentado en una forma racional, aunque el proceso que lo haya guiado no haya sido perfectamente racional.
5.- PRINCIPIOS DEL DISEO: ITERACION ENTRE DISEO Y REQUERIMIENTOS.5. 5.1.- Criterios.
Restricciones: Son las razones por las que el rango completo de elecciones abiertas a un diseador serian restringidas. Estas pueden ser: Contractuales: Cuando los componentes requieren que se sigan ciertos procedimientos o mtodos a ser utilizados. Tcnicos: El hardware y software existente limitan la libertad del diseador desde el principio. Expectativas del cliente: La participacin del cliente influye en la estrategia del diseo adoptada. Tipo de sistema: El sistema que se desarrolla es el que permite la eleccin de los mtodos de diseo y herramientas. Tipo de aplicacin: Las implicaciones de disear un sistema de garanta o seguridad crtica son diferentes del diseo de un prototipo inhouse. Ambiente del proyecto: Esta referido, al ambiente en el que trabajamos desde el punto de vista fsico y en cuanto al ambiente del diseo en general; requisitos que ya tenemos planteados en el diseo. Vista completa del ciclo de vida: Es el conjunto de actividades que los analistas, diseadores y usuarios realizan para desarrollar e implementar un sistema de informacin. Requerimientos no funcionales: Esta referido a los materiales y equipos que no son funcin del sistema; pero que necesito para llevarlo a cabo.
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
6.2.- Caractersticas Para la Evaluacin. Implementar todos los requisitos explcitos contenidos en el modelo de anlisis, y ajustarse a
todos los requisitos del cliente.
Debe ser una gua legible y comprensible para quienes generan el cdigo y quienes realizan
pruebas, es decir, dan soporte al software.
Debe proporcionar una imagen completa del software desde una perspectiva de implementacin. 6.3.- Cmo Alcanzar las Metas del Proceso?. Un diseo debe presentar una estructura arquitectnica que se halla creado mediante patrones de diseo reconocibles, la integren componentes que exhiban buenas caractersticas de diseo y
que pueda implementarse de manera evolutiva para que de estar forma facilite la implementacin y las pruebas. Un diseo debe ser modular. Un diseo debe contener distintas representaciones de los datos, la arquitectura, las interfaces y los componentes. habrn de implementarse y que procedan de patrones de datos reconocibles. Un diseo debe independientes. conducir a componentes que representan caractersticas funcionales
Un diseo debe conducir a estructuras de datos que sean apropiadas para las clases que
Un diseo debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los
componentes y el ambiente externo. Un diseo debe obtenerse por medio de un mtodo repetible que se base en la informacin obtenida durante el anlisis de requisitos del software. Un diseo debe representarse por medio de una notacin que comunique de manera eficaz su significado.
6.4.- Caractersticas.
La funcionalidad. La facilidad. La confiabilidad. El desempeo. La soportabilidad, la adaptabilidad y la servicialidad.
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
La segunda era
1965 - 1975
La tercera era
1975 - 1985
La cuarta era
1985 -
Potentes sistemas de Sistemas distribuidos escritorio Multiusuario Incorporacin de Tecnologa orientada Tiempo real inteligencia a objetos Bases de Datos Hardware de bajo Sistemas expertos costo Software como Redes neuronales producto Impacto en el artificiales consumo Computacin paralela
En los primeros aos de desarrollo de las computadoras, el hardware sufri continuos cambios, mientras que el software se contemplaba simplemente como un aadido. La programacin de computadoras era un arte para el cual existan pocos mtodos sistemticos. El desarrollo de software se realizaba virtualmente sin ninguna planificacin (hasta que los planes comenzaron a desfasarse y los costos a crecer). Durante este perodo se utilizaba en la mayora de los sistemas una orientacin por lotes. Algunas excepciones fueron sistemas interactivos (Sistema de reservas de Amrica Airlines) y sistemas de tiempo real para la defensa (SAGE). No obstante esto, la mayor parte del hardware se dedicaba a la ejecucin de un nico programa que, a su vez, se dedicaba a una aplicacin especfica. Lo normal era que el hardware fuera de propsito general. Por otra parte, el software se diseaba a medida para cada aplicacin y tena una distribucin relativamente pequea. La mayora del software se desarrollaba y era utilizado por la misma persona u organizacin. La misma persona lo escriba, lo ejecutaba y, si fallaba, lo depuraba. Debido a este entorno personalizado del software, el diseo era un proceso implcito, realizado en la mente de alguien, y la documentacin normalmente no exista. La segunda era en la evolucin de los sistemas de computadoras se extiende desde la mitad de la dcada de los 60 hasta finales de los setenta. La multiprogramacin y los sistemas multiusuarios introdujeron nuevos conceptos de interaccin hombre mquina. Las tcnicas interactivas abrieron un nuevo mundo de aplicaciones y nuevos niveles de sofisticacin del hardware y del software. Los sistemas de tiempo real podan recoger, analizar y transformar datos de mltiples fuentes, controlando as los procesos y produciendo salidas en milisegundos en lugar de en minutos. Los avances en los dispositivos de almacenamiento en lnea condujeron a la primera generacin de sistemas de gestin de bases de datos. Otra caracterstica fue el establecimiento del software como producto y la llegada de las casas de software. Conforme creca el nmero de sistemas, comenzaron a extenderse las bibliotecas de software de computadora. Se desarrollaban proyectos en los que se producan programas de decenas de miles de sentencias fuente. Todos esos programas (todas esas sentencias fuentes) tenan que ser corregidos cuando se detectaban fallos, modificados cuando cambiaban los requisitos de los usuarios o adaptados a nuevos dispositivos que se hubieran incorporado. Estas actividades se llamaron mantenimiento del software. El esfuerzo gastado en el mantenimiento comenz a absorber recursos en una medida alarmante. Haba comenzado una crisis del software. La tercera era en la evolucin de los sistemas de computadoras comenz a mediado de los setenta y llega hasta el momento actual. El procesamiento distribuido (mltiples computadoras, cada una ejecutando funciones concurrentemente y comunicndose con alguna otra) increment notablemente la complejidad de los sistemas informticos. Las redes de rea local y de rea global, las comunicaciones digitales de alto ancho de banda y la creciente demanda de acceso instantneo a los datos, pusieron una fuerte presin sobre los desarrolladores del software. En esta era se produce la llegada de los microprocesadores y las computadoras personales.
7
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
Las computadoras personales han sido el catalizador del gran crecimiento de muchas compaas de software. Estas compaas venden decenas y centenares de copias de sus productos de software. La cuarta era del software de computadora est comenzando ahora. Las tecnologas orientadas a objetos estn comenzando a ser utilizadas en muchas reas de aplicacin. Las tcnicas de cuarta generacin para el desarrollo de software ya estn cambiando la forma en que algunos segmentos de la comunidad informtica construyen los programas. Los sistemas expertos y el software de inteligencia artificial se han trasladado del laboratorio a las aplicaciones prcticas. El software de redes neuronales artificiales ha abierto excitantes posibilidades para el reconocimiento de formas y habilidades de procesamiento de informacin al estilo de como lo hacen los humanos. Conforme transitamos por la cuarta era, continan intensificndose los problemas asociados con el software de computadoras: La sofisticacin del hardware ha dejado desfasada nuestra capacidad de construir software que pueda explotar el potencial del hardware. Nuestra capacidad de construir nuevos programas no puede dar abasto a la demanda de nuevos programas. Nuestra capacidad de mantener los programas existentes est amenazada por el mal diseo y el uso de recursos inadecuados.
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
Visibilidad: Esta referido al sigilo que muchas organizaciones mantienen de su software y por tanto no brindan informacin acerca de su desarrollo. Exactitud: Se refiere al orden que debe regir el software, herramientas tcnicas para desarrollar el sistema.
9.2.- Definiciones
Aunque intuitivamente el concepto de AS es bastante claro, no se ha dado hasta el momento una definicin que satisfaga por completo a todos aquellos que trabajan en este campo. Quizs, para obtener una visin
9
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
de conjunto, lo ms adecuado sea considerar varias definiciones a la vez. A continuacin se mencionan varias de ellas ordenadas cronolgicamente: 9.2.1.- Primera definicin fue la dada en 1993 por David Garlan y Mary Shaw Ms all de los algoritmos y estructuras de datos de la computacin, el diseo y especificacin de la estructura global del sistema emerge como un nuevo tipo de problema. Los detalles estructurales incluyen: la organizacin general y la estructura de control global; los protocolos de comunicacin, sincronizacin y acceso a datos; la asignacin de funcionalidad a los elementos de diseo; la distribucin fsica; la composicin de los elementos de diseo; su escalabilidad y los aspectos de rendimiento; y la seleccin entre alternativas de diseo. 9.2.2.- Segunda definicin, dada en 1.995 por David Garlan y Dewayne Perry: La arquitectura del software est compuesta por la estructura de los componentes de un programa o sistema, sus interrelaciones, y los principios y reglas que gobiernan su diseo y evolucin a lo largo del tiempo. 9.2.3.- Definicin dada en 1.996 por Clements [Cle96] que puede La arquitectura del software es, a grandes rasgos, una vista del sistema que incluye los componentes principales del mismo, la conducta de esos componentes segn se percibe desde el resto del sistema, y las formas en que los componentes interactan y se coordinan para alcanzar el objetivo del sistema. La vista arquitectnica es una vista abstracta de un sistema, aportando el ms alto nivel de compresin y la supresin del detalle inherente a la mayor parte de abstracciones. 9.2.4.- Definicin dada el ao 2000 en el documento IEEE. La arquitectura del software es la organizacin fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el entorno, y los principios que dirigen su diseo y evolucin. Si se compara esta definicin con la de Garlan y Perry, la de IEEE es ms precisa. 9.2.5.- Definicin dada en el ao 2006 por Kruchten, Obbink y Stafford en un artculo IEEE. La arquitectura del software captura y preserva las intenciones de los diseadores sobre la estructura y el comportamiento de los sistemas, proporcionando un mecanismo de defensa contra el deterioro de los sistemas antiguos. Esta es la clave para lograr el control intelectual sobre la creciente complejidad de los sistemas. Paradjicamente an no hay un consenso sobre cul es la respuesta a la pregunta de qu es la arquitectura del software y que sea ampliamente aceptada Llegar a un acuerdo sobre la definicin ms adecuada para esta disciplina fue uno de los objetivos de definir el estndar IEEE. Sin embargo, esta falta de acuerdo no ha sido impedimento para que la arquitectura del software progrese. A partir de todas las definiciones que se han dado sobre AS, se ha llegado a una especie de consenso por el que esta disciplina se refiere a la estructura de un sistema a grandes rasgos, formada por componentes y relaciones entre. Estas cuestiones se tienen en cuenta durante el diseo, puesto que la AS se refiere al diseo del software que se realiza en fases tempranas del desarrollo software y al alto nivel de abstraccin. Resumiendo se puede decir que la AS Permite realizar el diseo de alto nivel del sistema, definir su organizacin como la descripcin y anlisis de propiedades relativas a su estructura, los protocolos de comunicacin, su distribucin fsica y de sus componentes, etc., adems de los aspectos relacionados con el desarrollo del sistema y su adaptacin al cambio. Es decir, su composicin, reconfiguracin y reutilizacin. Por otra parte, la AS puede considerarse como un puente entre los requisitos y el cdigo: desempea un papel fundamental entre la especificacin de los requisitos de un sistema y la implementacin del mismo. Al realizar la descripcin abstracta del sistema se representan una serie de caractersticas, mientras otras se
10
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
ocultan, proporcionando as una gua para que los arquitectos o diseadores puedan sugerir un modelo de construccin en funcin de los requisitos. En esta seccin, recogiendo las definiciones anteriores, la AS se considera como Un conjunto formado por la organizacin, la estructura y la infraestructura de un sistema software. En este sentido, se describe un modelo arquitectnico para sistemas software, pudindose realizar una evaluacin y un anlisis del diseo obtenido. Adems, asociado al modelo se proporciona una descripcin lingstica formal del diseo. Por otra parte, el modelo arquitectnico que se propone ayuda a planificar y a gestionar la evolucin de los sistemas.
Probabilidad de reus inversamente proporcional Utilidad de reus directamente proporcional. 9.6.- Conclusiones.
La arquitectura del software nos proporciona una visin global del sistema a construir. Describe la estructura y la organizacin de los componentes del software, sus propiedades y las conexiones entre ellos. Los componentes del software incluyen mdulos de programas y varias representaciones de datos que son manipulados por el programa. Adems, el diseo de datos es una parte integral para la derivacin de la arquitectura del software.
11
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
La arquitectura marca decisiones de diseo tempranas y proporciona el mecanismo para evaluar los beneficios de las estructuras de sistema alternativas. El diseo de datos traduce los objetos de datos definidos en el modelo de anlisis, en estructuras de datos que residen dentro del software. Los atributos que describe el objeto, las relaciones entre los objetos de datos y su uso dentro del programa influyen en la eleccin de la estructura de datos. A mayor nivel de abstraccin, el diseo de datos conducir a lo que se define como una arquitectura para una base de datos o un almacn de datos. El ingeniero del software cuenta con diferentes estilos y patrones arquitectnicos. Cada estilo describe una categora de sistema que abarca un conjunto de componentes que realizan una funcin requerida por el sistema, un conjunto de conectores que posibilitan la comunicacin, la coordinacin y cooperacin entre los componentes, las restricciones que definen cmo se integran los componentes para conformar el sistema, y los modelos semnticos que facilitan al diseador el entendimiento de todas las partes del sistema. El diseo arquitectnico agrupa un grupo inicial de actividades de diseo que conducen a un modelo completo del diseo del software.
12
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
Un buen diseo debe dar preferencia a mdulos de alta cohesin, es decir, mdulos que exhiban cohesin funcional, que es cuando el mdulo contiene todos los elementos que contribuyen a la ejecucin de una y slo una tarea relacionada al problema. Existen otras formas de cohesin ms dbiles se han identificado: secuencial, comunicacional, procedural, temporal, lgica y coincidental. Otras heursticas se han sugerido para ayudar a mejorar la calidad del diseo resultante: Fan-in/fan-out: un alto fan-in (nmero de mdulos que llaman a un mdulo M) es considerado bueno, ya que indica el reus de M. Por su parte un bajo o moderado fan-out (nmero de mdulos que M invoca) -mximo 5 a 7- es preferible. Particionamiento de decisiones: se debe evitar la divisin de decisiones, que ocurren cuando el reconocimiento de una condicin y la ejecucin de la accin asociada no se mantienen dentro del mismo mdulo. Sistemas balanceados: se prefiere un sistema balanceado, es decir, cuando los mdulos de alto nivel tratan con la lgica y datos abstractos (datos limpios y vlidos, independientes del formato de implementacin)
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
Para juzgar la capacidad de un mtodo de diseo de conseguir la modularidad y los relaciona con el diseo orientado a los objetos: Descomponibilidad: la facilidad con que un mtodo de diseo ayuda al diseador a descomponer un gran problema en subproblemas ms fciles de resolver.
Componibilidad: el grado en que un mtodo asegura que las componentes del programa (mdulos),
una vez diseadas y construidas pueden ser reusadas para crear otros programas
Comprensibilidad: la facilidad con que se puede comprender una componente de un programa sin
tener que referenciar otra informacin ni otros mdulos Continuidad: la capacidad de realizar pequeos cambios en un programa a y esos cambios se manifiestan por s mismos con solo unos cambios correspondientes en uno o unos pocos mdulos. Proteccin: una caracterstica arquitectnica que reduce la propagacin de
Todos asisten al analista en la identificacin de los objetos de informacin clave (tambin llamados
entidades o tems) y operaciones (tambin llamadas acciones o procesos);
Todos suponen que la estructura de la informacin es jerrquica; Todos requiere que la estructura de datos se represente usando la secuencia, seleccin y
repeticin; y
Todos dan un conjunto de pasos para transformar una estructura de datos jerrquica en una
estructura de programa. Como los mtodos orientados al flujo de datos, los mtodos de anlisis orientados a la estructura de datos proporcionan la base para el diseo de software. Siempre puede extenderse un mtodo de anlisis para que abarque el diseo arquitectural y procedimental del software. Esta estrategia de diseo se conoce como programacin estructurada de Jackson. El nfasis se basa en los datos que manipula el programa en vez de las funciones que realiza. El nfasis se basa en que los datos son ms estables (menos sujetos a cambios) que las funciones que debe desarrollar. El diseador describe los datos de entrada y salida, usando los diagramas de estructura de Jackson, y desarrolla entonces la estructura de control del programa estableciendo una correspondencia apropiada entre los diagramas de estructura de entrada y salida. 10.4.2.- Desarrollo de Sistemas de Jackson
El desarrollo de sistema de Jackson (DSJ) se obtuvo a partir del trabajo de M.A. Jackson sobre el anlisis del dominio de la informacin y sus relaciones con el diseo de programas y sistemas. En palabras de Jackson: El que desarrolla el software comienza creando un modelo de la realidad a la que se refiere el sistema, la realidad que proporciona su materia objeto [del sistema]... Para construir un DSJ el analista aplica los siguientes pasos:
14
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
Paso de las acciones y entidades. Usando un mtodo muy similar a la tcnica de anlisis orientada al objeto, en este paso se identifican las entidades (persona, objetos u organizaciones que necesita un sistema para producir o usar informacin) y acciones (los sucesos que ocurren en el mudo real que afectan a las entidades). Paso de estructuracin de las entidades. Las acciones que afectan a cada entidad son ordenadas en el tiempo y representadas mediante diagramas de Jackson (una notacin similar a un rbol). Paso de modelacin inicial. Las entidades y acciones se representan como un modelo del proceso; se definen las conexiones entre el modelo y el mundo real. Paso de las funciones. Se especifican las funciones que corresponden a las acciones definidas. Paso de temporizacin del sistema. Se caractersticas de planificacin del proceso. establecen y especifican las
Paso de implementacin. Se especifica el hardware y software como un diseo. Los ltimos tres pasos del DSJ estn muy relacionados con el diseo de sistemas. 10.5.- Diseo Orientado Aspectos.
10.5.1.- Introduccin. El diseo de software orientado a aspectos (DSOA) es un paradigma en auge que se est convirtiendo en una alternativa para mejorar el desarrollo de sistemas complejos. Primero, surgi la Programacin Orientada Aspectos (OA), centrada en la fase de implementacin y, posteriormente, se plante el desarrollo de sistemas OA, que propone la utilizacin del concepto de aspecto a lo largo de todo el ciclo de vida. As, los aspectos identificados en la ingeniera de requisitos o la especificacin y el anlisis se utilizan en el diseo o la implementacin. Esta aproximacin proporciona tcnicas para la identificacin y separacin de los aspectos, as como su composicin posterior. Igualmente permite identificar los que son concerns aspectuales y los que no lo son, concretamente durante las fases tempranas del desarrollo. Adems, permiten mantener la trazabilidad de tales concerns (materias de inters) en etapas posteriores. De este modo, se consigue una mejora en la modularizacin de los sistemas, obtenindose un cdigo menos enmaraado y evitndose la mezcla entre funcionalidad del sistema y los aspectos extra-funcionales, lo que, adems, facilita el mantenimiento y la evolucin. Para ello, las tcnicas para desarrollar sistemas OA amplan las tcnicas tradicionales, permitiendo la encapsulacin de los aspectos en mdulos independientes. Es decir, encapsulan las propiedades que atraviesan varios componentes de un sistema. 10.5.2.- Evolucin del DSOA El mantenimiento de los sistemas software ha sido un problema cuya resolucin ha interesado a los desarrolladores a lo largo de la historia de la informtica. Desde las conferencias de la OTAN en 1968, en las que se plante el problema del mantenimiento de los sistemas (surgiendo el trmino crisis del software), hasta hoy, se ha tratado de reducir el coste y el esfuerzo que supone el mantenimiento del software. Recientemente y dada la complejidad que van adquiriendo los sistemas a desarrollar, se ha hecho necesario dar a la evolucin del software un tratamiento ms cuidadoso, pues es un hecho que todos los sistemas estn sujetos a cambios. El uso de diversos paradigmas ha reducido dicho coste y ha permitido que la evolucin de los sistemas suponga la aplicacin de un menor esfuerzo.
15
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
Uno de los paradigmas que se ha utilizado para facilitar la evolucin de los sistemas y reducir su costo es el DSOA: la orientacin a aspectos aporta simplicidad al proceso de evolucin del software, ya que cuando se desea cambiar propiedades que afectan a un nico inters (concern) del producto software, slo habra que considerar las propiedades del aspecto que especifica el concern que cambia. Por eso, el DSOA, adems de proporcionar mecanismos para separar los diferentes aspectos o concerns del sistema durante el desarrollo software, se puede considerar como una aproximacin que permite afrontar de un modo diferente la resolucin de algunos de los problemas relativos a la evolucin del software. En este contexto, un aspecto se puede definir como: Un mecanismo de abstraccin que, de algn modo, se puede aadir a un sistema existente, de forma que el elemento incorporado no quede distribuido (disperso) entre varios mdulos del sistema, sino que se mantenga independiente de ellos. Tambin se podra decir que un aspecto (concern) puede ser: Cualquier criterio que permita separar partes de un sistema que tengan diferentes probabilidades de cambio o que tenga diferente impacto sobre la evolucin. De este modo, y dado que el paradigma del DSOA permite modelar como artefactos de software las propiedades que atraviesan los sistemas, los desarrolladores pueden adaptarlos ms fcilmente a los cambios y a la evolucin de estas propiedades, pues al modelarlas como aspectos (elementos independientes en el desarrollo) se pueden modificar (aadir, cambiar, eliminar) sin que los componentes del sistema resulten afectados. As, durante la evolucin, resulta sencillo incorporar nuevos elementos y los problemas de la adaptacin se resuelven ms fcilmente, frente a la utilizacin de paradigmas tradicionales en los que este cdigo transversal queda disperso por los diferentes mdulos o componentes del sistema.
16
Unidad Curricular:: INGENIERIA DE SOFTWARE II Modulo: Fundamentos del Diseo de Software Apuntes Recopilados por: Profesor Bernardo Gonzlez Rojas
BIBLIOGRAFIA:
http://es.scribd.com/doc/30537656/disenosoftware2 http://ocw.usal.es/ensenanzas-tecnicas/ingenieria-del-software/contenidos/Tema5Principiosdeldisenodelsoftware-1pp.pdf https://sites.google.com/a/tacs-utn.com.ar/tacsalumnos/Home/apuntes/orm http://es.wikipedia.org/wiki/Ingenier%C3%ADa_del_dise%C3%B1o http://dircompucv.ciens.ucv.ve/generador/sites/disist/archivos/clase1.pdf http://computacion.itam.mx/matingsoft/IngSW5Reuso.pdf http://www.slideshare.net/sifaqui/clase-2-484400 http://www.google.co.ve/search?as_q=estrategias+dise %C3%B1o+software+orientado+a+aspectos&as_epq=&as_oq=&as_eq=&hl=es&num=10&lr=&cr=& as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images& btnG=Buscar+con+Google http://www.wikilearning.com/curso_gratis/guia_del_desarrollo_de_software/3471-20
IX.
17