Download Arquitecturas para el Desarrollo de Software
Document related concepts
no text concepts found
Transcript
Arquitecturas para el Desarrollo de Software Un informe publicado en 2004 por el Standish Group 1 revelaba que sólo el 29% de los proyectos software satisfacen los requisitos de los clientes, se entregan a tiempo y se ajustan a los presupuestos. El 53% acaban incumpliendo algún requisito, se entregan fuera de plazo o cuestan más de lo presupuestado. El 18% se cancelan antes de su finalización o jamás llegan a utilizarse. Sin duda, aún queda mucho por hacer en el desarrollo de software. En los últimos 40 años, se han producido grandes avances en el terreno de la codificación: creación de compiladores e intérpretes eficientes, desarrollo de la algoritmia, aparición de nuevos paradigmas de programación, utilización de los sistemas de tipos para la prevención de errores… Sin embargo, a medida que crece el tamaño de las aplicaciones informáticas, se hace más evidente la necesidad de organizarlas correctamente. Es decir, la importancia de la codificación disminuye frente a la relevancia del diseño de software. El presente curso pretende transmitir al alumno la enorme importancia del diseño en el desarrollo de software y ofrecerle una panorámica sobre las técnicas de diseño más aplicadas actualmente y, con mayor probabilidad, en el futuro. 1 The Standish Group. 2004 CHAOS Demographics and Project Resolution. http://www.standishgroup.com Contenido 1. Introducción a la arquitectura del software: definición y relevancia. o Lectura: David Garlan and Mary Shaw. An Introduction to Software Architecture. 1994 2 . Capítulos 1 y 2. 2. Ciclos de vida centrados en la arquitectura. Influencia de los sistemas abiertos frente al software propietario en el ciclo de vida. o Lectura: R. Malveau, T.J. Mowbray. Software Architect Bootcamp. 2001. Prentice Hall. Capítulo 2. 3. Estilos arquitectónicos. 3.1. Estilos. o Lectura: David Garlan and Mary Shaw. An Introduction to Software Architecture. 19942. Capítulos 3 y 4. 3.2. Componentes. o Lectura: Clemens Szyperski; Gruntz, D. y Murer, S. Component Software - Beyond Object-Oriented Programming. Segunda edición. Addison-Wesley/ACM Press, 2002. ISBN 0-201-74572-0. 3.3. Agentes. o Lectura: Pavón, J. y Pérez, J. L. Agentes software y sistemas multiagente. Pearson Educación, 2005. ISBN 84-205-4367-5. 4. Directrices arquitectónicas. o Lectura (ODP: el estándar ISO para la definición de arquitecturas): R. Malveau, T.J. Mowbray. Software Architect Bootcamp. 2001. Prentice Hall. Capítulo 3. 2 http://www-2.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf 5. Diseño arquitectónico. MDA El Desarrollo Dirigido por Modelos propugna que los elementos fundamentales en el desarrollo de software sean modelos abstractos de diseño en lugar de fragmentos de código. Su máximo exponente es la MDA 3 (Model Driven Architecture) y persigue la reutilización de modelos traducibles a código. El lenguaje de modelado que inicialmente propone MDA es UML (Unified Modeling Language). o Lectura: Stephen J. Mellor, Kendall Scott, Axel Uhl, Dirk Weise. MDA Distilled. Addison-Wesley Professional (March 3, 2004) 6. Diseño detallado. Patrones de diseño. Los patrones son soluciones efectivas a problemas de diseño que pueden reutilizarse en nuevos problemas. Su uso se generalizó a partir de la publicación del libro de Erich Gamma, Richard Helm, Ralph Jonson y John Vlissides: Patrones de Diseño. Addidson Wesley, 1995. o Lectura: Bruce Eckel. Thinking in Patterns 4 . Trabajo del alumno. Parte 1: Diseño Arquitectónico. Práctica: “MDA, promesa y realidad” En la actualidad, existe un buen número de herramientas que aseguran soportar los postulados de la MDA (AndroMDA 5 , ArcStyler 6 …). El alumno debe hacer una prospección en la web, examinar 5 de estas herramientas y analizar hasta que punto cumplen con los principios de la MDA. 3 http://www.omg.org/mda/ 4 http://www.pythoncriticalmass.com/ 5 http://www.andromda.org/ 6 http://www.io-software.com/ Parte 2: Diseño Detallado. Práctica: “Utilización de los Patrones de Diseño en aplicaciones reales” JUnit 7 es el marco de trabajo más utilizado para pruebas de unidades en Java. En su diseño, se han empleado varios patrones tal y como se describe en el artículo: Erich Gamma, Kent Beck. JUnit: A Cook's Tour 8 . Los patrones de diseño también se utilizan de forma intensiva en muchas librerías de Java: “Design patterns are used and supported extensively throughout the Java APIs. Here are some examples: o The Model-View-Controller design pattern is used extensively throughout the Swing API. o The getInstance() method in java.util.Calendar is an example of a simple form of the Factory Method design pattern. o The classes java.lang.System and java.sql.DriverManager are examples of the Singleton pattern, although they are not implemented using the approach recommended in the GoF book but with static methods. o The Prototype pattern is supported in Java through the clone() method defined in class Object and the use of java.lang.Cloneable interface to grant permission for cloning. o The Java Swing classes support the Command pattern by providing an Action interface and an AbstractAction class. o The Java 1.1 event model is based on the observer pattern. In addition, the interface java.util.Observable and the class java.util.Observer provide support for this pattern. o The Adapter pattern is used extensively by the adapter classes in java.awt.event. o The Proxy pattern is used extensively in the implementation of Java's Remote Method Invocation (RMI) and Interface Definition Language (IDL) features. o The structure of Component and Container classes in java.awt provide a good example of the Composite pattern. 7 http://www.junit.org 8 http://junit.sourceforge.net/doc/cookstour/cookstour.htm o The Bridge pattern can be found in the separation of the components in java.awt (e.g., Button and List), and their counterparts in java.awt.peer.” John Moore Tomando como modelo el citado artículo de Gamma y Beck, el alumno analizará la aplicación de los patrones de diseño a una de estas librerías o, preferiblemente, a cualquier desarrollo que esté a su disposición (entorno laboral). Este curso, a partir de este momento, tiene a su disposición un entorno colaborativo de aprendizaje en el que encontrará los materiales complementarios para el curso “Arquitecturas para el desarrollo de software”. Para acceder a esta plataforma es necesario que tenga una dirección válida de correo electrónico; con ella podrá darse de alta, en primer lugar, en la sede donde se encuentra dicho entorno de aprendizaje para el curso. Para acceder a la plataforma de e-learning aLF conéctese a la siguiente dirección y créese una nueva cuenta, si aún no la tiene, con su dirección de correo electrónico: http://www.innova.uned.es/ Una vez que disponga de una cuenta en la plataforma aLF, podrá acceder a ella y se situará en su espacio particular “Mi portal”. En el bloque de la derecha, en “Grupos”, hay un enlace para suscribirse a este curso: “Alta/Baja en cursos o comunidades”. Si quiere utilizar las herramientas y materiales del curso, debe acceder a dicho enlace, hacer una búsqueda del curso “Arquitecturas para el desarrollo de software” y SOLICITAR EL ALTA en dicho curso. El equipo docente recibirá su solicitud y, tras comprobar el estado de su matrícula, autorizará la suscripción al curso. En él podrá encontrar todo el material desarrollado por el equipo docente, podrá compartir materiales con sus compañeros de curso y comunicarse con ellos y con el Equipo Docente a través de los foros y del correo electrónico. Para facilitar la comunicación del equipo docente con los alumnos sería recomendable que nos enviasen una dirección de correo dónde poder mandar información relativa al presente curso. Existe, además, otra dirección donde se mantiene actualizada la información de este curso: http://www.issi.uned.es/doctorado/softwarch/ArqDesSw.htm La entrega de los documentos del trabajo se realizará ANTES DEL DÍA 1 DE JUNIO DE 2010 y se hará llegar bien mediante correo electrónico a la dirección softwarch@issi.uned.es, bien mediante los recursos de almacenamiento y comunicación del curso virtual “Arquitecturas para el desarrollo de software” -aLF- o bien mediante correo postal a la dirección: Asignatura: Arquitecturas para el desarrollo de software At.: José Félix Estívariz Dpto. de Ingeniería de Software y Sistemas Informáticos. E.T.S.I. Informática C/ Juan del Rosal, 16 28040 MADRID