Publicado el 28 de Junio del 2018
1.034 visualizaciones desde el 28 de Junio del 2018
9,5 MB
130 paginas
Creado hace 11a (30/07/2012)
Desarrollo de
software basado
en reutilización
Macario Polo Usaola
PID_00184467
CC-BY-NC-ND • PID_00184467
Desarrollo de software basado en reutilización
Los textos e imágenes publicados en esta obra están sujetos –excepto que se indique lo contrario– a una licencia de
Reconocimiento-NoComercial-SinObraDerivada (BY-NC-ND) v.3.0 España de Creative Commons. Podéis copiarlos, distribuirlos
y transmitirlos públicamente siempre que citéis el autor y la fuente (FUOC. Fundación para la Universitat Oberta de Catalunya),
no hagáis de ellos un uso comercial y ni obra derivada. La licencia completa se puede consultar en http://creativecommons.org/
licenses/by-nc-nd/3.0/es/legalcode.es
CC-BY-NC-ND • PID_00184467
Índice
Desarrollo de software basado en reutilización
Introducción...............................................................................................
Objetivos.......................................................................................................
1.
Introducción a la reutilización......................................................
1.1. Un poco de historia ....................................................................
1.2. Reutilización de conocimiento: patrones de diseño ...................
1.3.
Beneficios y costes de la reutilización ........................................
1.3.1.
El impacto positivo de la reutilización en el proceso
de mantenimiento .........................................................
Los costes de reutilizar ..................................................
1.3.2.
2. Reutilización en diseño de software orientado a objetos........
2.1.
Introducción ................................................................................
2.2. Abstracción, encapsulación y ocultamiento ...............................
2.3. Herencia y polimorfismo ............................................................
3. Reutilización a pequeña escala: soluciones técnicas de
reutilización........................................................................................
3.1.
Introducción ................................................................................
3.2. Una historia ilustrativa ...............................................................
Librerías .......................................................................................
3.3.
Librerías de enlace estático ............................................
3.3.1.
3.3.2.
Librerías de enlace dinámico .........................................
3.3.3. Otras librerías .................................................................
3.4. Clases ...........................................................................................
Patrones arquitectónicos .............................................................
3.5.
3.5.1. Arquitectura multicapa ..................................................
3.5.2. Arquitectura de pipes and filters (tuberías y filtros) .........
3.5.3. Arquitecturas cliente-servidor ........................................
3.5.4. Arquitecturas P2P (peer-to-peer, de igual a igual) ............
Patrones de diseño ......................................................................
Patrones de Gamma ......................................................
3.6.1.
3.6.2.
Patrones de Larman .......................................................
El patrón modelo-vista-controlador ..............................
3.6.3.
3.7. Componentes ..............................................................................
3.7.1.
Ingeniería del software basada en componentes ...........
3.7.2. Componentes y clases ...................................................
3.7.3. Desarrollo de componentes ...........................................
Frameworks....................................................................................
3.6.
3.8.
5
6
7
9
12
13
14
15
17
18
21
23
26
26
26
28
29
29
31
31
32
33
34
35
36
37
38
47
52
52
53
58
59
59
CC-BY-NC-ND • PID_00184467
Desarrollo de software basado en reutilización
3.8.1.
3.8.2.
Framework para la implementación de interfaces de
usuario ............................................................................
Frameworks de persistencia para “mapeo” objeto-
relacional ........................................................................
3.8.3.
Framework para el desarrollo de aplicaciones web .........
Servicios .......................................................................................
3.9.1.
Introducción a los servicios web ...................................
3.9.2. Desarrollo de servicios web ...........................................
3.9.3. Desarrollo de clientes ....................................................
3.9.4.
Tipos de datos ................................................................
3.9.
4. Reutilización a gran escala / Soluciones metodológicas de
reutilización........................................................................................
4.1.
Introducción ................................................................................
Ingeniería del software dirigida por modelos .............................
4.2.
4.2.1. Diferentes aproximaciones: metamodelos propios y
metamodelos estándares ................................................
4.2.2. UML como lenguaje de modelado en MDE ..................
4.2.3.
Soporte automático ........................................................
Lenguajes de dominio específico (DSL: domain-specific
languages) .....................................................................................
4.3.1. Definición de DSL .........................................................
Línea de producto de software ...................................................
4.4.1.
Ingeniería de dominio ...................................................
Ingeniería del software para líneas de producto
4.4.2.
basada en UML ..............................................................
Programación generativa ............................................................
Ingeniería de dominio ...................................................
4.5.1.
4.5.2.
Tecnologías .....................................................................
Fábricas de software ....................................................................
4.3.
4.4.
4.5.
4.6.
Resumen.......................................................................................................
Actividades..................................................................................................
Ejercicios de autoevaluación..................................................................
Solucionario................................................................................................
Glosario........................................................................................................
Bibliografía.................................................................................................
60
61
63
65
65
66
68
69
70
70
70
72
76
80
82
83
84
86
92
93
95
96
102
104
105
107
109
128
130
CC-BY-NC-ND • PID_00184467
Introducción
5
Desarrollo de software basado en reutilización
Todo el que haya programado alguna vez habrá sentido, en algún momento,
la necesidad de recuperar alguna función o algún bloque de código que tenía
escrito de algún proyecto previo para incorporarlo en el que le esté ocupando
en ese momento. Las posibilidades que nos dan el Copy & Paste nos permiten
aprovechar de esta manera el esfuerzo que dedicamos en momentos anteriores.
Sin embargo, esta utilización de elementos predesarrollados no casa comple-
tamente con el concepto de reutilización en el sentido de la ingeniería del
software, donde reutilizar tiene un significado más relacionado con:
1) La encapsulación de funcionalidades (previamente desarrolladas y proba-
das) en elementos que, posteriormente, podrán ser directamente integrados
en otros sistemas.
2) El desarrollo de estas funcionalidades mediante métodos de ingeniería de
software.
3) El aprovechamiento del conocimiento y la experiencia producidos durante
décadas de práctica en la construcción de software.
Este módulo se estructura en cuatro partes: en la primera se presenta una vi-
sión general de la reutilización, poniéndose algunos ejemplos y haciendo un
breve repaso por su historia. Las aportaciones a la reutilización de la orienta-
ción a objetos, que ha desempeñado un papel importantísimo en este campo,
se describen e ilustran en la segunda parte. Algunas soluciones técnicas, mu-
chas de ellas evoluciones casi naturales de la orientación a objetos, se presen-
tan en la tercera parte. La cuarta y última parte se enfoca más a soluciones
metodológicas para desarrollo de software, que toman la reutilización como
un valor esencial.
CC-BY-NC-ND • PID_00184467
Objetivos
6
Desarrollo de software basado en reutilización
Al finalizar este curso, el alumno debe:
1. Ser consciente de la conveniencia de reutilizar software y de desarrollar
software reutilizable.
2. Conocer las principales técnicas para desarrollo de software reutilizable.
3. Conocer técnicas para integrar software reutilizable en los proyectos nue-
vos.
4. Conocer metodologías que permitan el desarrollo de proyectos que hagan
un uso intensivo de la reutilización.
CC-BY-NC-ND • PID_00184467
7
Desarrollo de software basado en reutilización
1. Introducción a la reutilización
La conferencia se organizó en la ciudad de
Garmish (Alemania), del 7 al 11 de octubre de
1968. Sus actas se han escaneado y procesado
mediante OCR y se encuentran publicadas
en Internet: http://homepages.cs.ncl.ac.uk/
brian.randell/NATO/nato1968.PDF
La primera vez que se introdujo de forma pública y relevante la idea de la re-
utilización del software fue en 1968, en un célebre congreso sobre ingeniería
del software que organizó el Comité de Ciencia de la OTAN. En este encuen-
tro, además de acuñarse también el término ingeniería
Comentarios de: Desarrollo de software basado en reutilización (0)
No hay comentarios