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