T12 Idat
T12 Idat
Tecnología
Fase de Transición
Tema Nº12:
RUP Y SUS FASES
TEMA 01 Teoría de los
Indicador de logro Nº12:
TEMA Nº1:
Diseña y estructura el modelado de Diseño con el diagrama estructural del lenguaje
de modelamiento unificado para la implementación y prueba de un software,
aplicando las buenas prácticas de Testeo validando la calidad del software y
1
funcionalidad de la aplicación.
.
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
ARQUITECTURA DE SOFTWARE
Subtema 1.1:
Conceptos
La Arquitectura del Software AS es la parte de la ingeniería del software que se ocupa de
la descripción y el tratamiento de un sistema como un conjunto de componentes, que
facilite su organización en los diferentes subsistemas que lo forman. Esto es útil, entre
otros aspectos, para poder asignarlos a equipos de trabajo y que puedan llevar a cabo el
desarrollo del sistema de una manera organizada y eficiente. Este campo surge ante la
necesidad de describir sistemas software complejas, descomponerlos en un conjunto de
componentes y ver qué relaciones existen entre ellos. Por lo tanto, la AS aporta una visión
abstracta de alto nivel, posponiendo el detalle de cada uno de los módulos definidos a
pasos posteriores del diseño.
Aunque intuitivamente el concepto de AS es bastante claro, no se ha dado hasta el
momento una definición que satisfaga por completo a todos aquellos que trabajan en este
campo. Quizás, para obtener una visión de conjunto, lo más adecuado sea considerar
varias definiciones a la vez. A continuación, se mencionan varias de ellas ordenadas
cronológicamente:
Posiblemente, la primera definición fue la dada en 1993 por David Garlan y
Mary Shaw en la que exponen objetivos y aspectos a tener en cuenta en la AS:
“Más allá de los algoritmos y estructuras de datos, la computación, el diseño
y especificación de la estructura global del sistema emerge como un nuevo
tipo de problema. Los detalles estructurales incluyen: la organización
general y la estructura de control global; los protocolos de comunicación,
sincronización y acceso a datos; la asignación de funcionalidad a los
elementos de diseño; la distribución física; la composición de los elementos
de diseño; su escalabilidad y los aspectos de rendimiento; y la selección
entre alternativas de diseño”.
Se puede considerar una segunda definición, quizás la más breve y sencilla, y a
la vez la más aceptada, dada por David Garlan y Dewayne Perry en 1995: “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 diseño y evolución a lo largo del tiempo”
A continuación, se presenta la definición dada por Clements en 1996 que puede
considerarse como una definición general, amplia y flexible, aunque por ello
pueda parecer incompleta y algo ambigua. Sin embargo, es válida tanto para
aquellos que desean una visión descriptiva de la AS (punto de vista
representado por Garlan) como para los que utilizan una visión de proceso
(representada por Perry):
2
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
“La arquitectura del software es, a grandes rasgos, una vista del sistema
que incluye los componentes principales del mismo, la conducta de esos
componentes según se percibe desde el resto del sistema, y las formas en
que los componentes interactúan y se coordinan para alcanzar el objetivo
del sistema. La vista arquitectónica es una vista abstracta de un sistema,
aportando el más alto nivel de compresión y la supresión del detalle
inherente a la mayor parte de abstracciones”.
Otra definición que ha sido utilizada por la comunidad de ingeniería de software
es la de RUP, citada por Phillipe Kruchten en 1995, que define lo siguiente:
“La arquitectura de software abarca un conjunto de decisiones significativas
sobre la organización del sistema de software. Estas decisiones abarcan: la
selección de los elementos estructurales y sus interfaces, con los que se
compone el sistema, junto con su comportamiento tal como se especifica en
las colaboraciones entre esos elementos, la composición de esos
elementos estructurales y de comportamiento en subsistemas
progresivamente más grandes, y el estilo arquitectónico que guía esta
organización”.
En el año 2000 se acordó definir oficialmente la AS según figura en el
documento IEEE Std 1471-2000: “La arquitectura del software es la
organización fundamental de un sistema encarnada en sus componentes, las
relaciones entre ellos y el entorno, y los principios que dirigen su diseño y
evolución.
Subtema 1.2:
Importancia
Para empezar, de una u otra forma, muchos stakeholders están interesados en la
arquitectura:
El analista de sistemas, que lo utiliza para organizar y articular los requisitos
y comprender las limitaciones tecnológicas y riesgos.
Los usuarios finales o clientes, que lo utilizan para visu alizar en un alto
nivel lo que están comprando.
El gerente de proyecto de software, que lo utiliza para organizar el equipo y
el plan de desarrollo.
Los diseñadores, que la utilizan para comprender los principios subyacentes
y localizar los límites de su propio diseño.
Otras organizaciones de desarrollo (si el sistema es abierto), que lo utilizan
para comprender cómo interactuar con él.
Arquitectos, que la usan para razonar acerca de la evolución o la
reutilización. Al respecto, Bass y sus colegas (2003), en un libro dedicado a
3
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Subtema 1.3:
Creación del modelo de diseño: Capas y Realizaciones de Diseño
El modelo de diseño es usado para el control que se debe ejercer desde el sistema.
Algunos controles se determinarán por medio de diferentes parámetros de sistemas tales
como las aplicaciones y las entradas. Probablemente se necesite diseñar ciertos controles
de calidad. Por ejemplo, todas las entradas deben preparase en forma consistente para
mantener la confianza del sistema y evitar posibles errores en los procedimientos.
Características:
Facilita la identificación de componentes en un modelo físico y concreto,
como paso previo a la implementación.
Estructurado por capas y realizaciones de diseño mediante clases
estereotipadas de diseño y subsistemas.
Utilizado por los desarrolladores para la realización del diseño del sistema
Debe mantenerse en todo el ciclo de vida del software
Da forma al sistema para su implementación y funcionalidad
Ejm: Utilizando el RSA para la creación del modelo de diseño
4
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Subsistemas y librerías
Subtema 1.4:
Estructura interna de un subsistema y librerías de diseño
En la siguiente tabla se muestra el contenido de cada subsistema y librerías compuesto
por las clases de diseño y estereotipos:
5
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Subsistemas y librerías
Subtema 1.4:
Arquitectura del diseño para post implementación
Presenta los diferentes diagramas del diseño en donde se asocian los artefactos del
diseño según las capas y subsistemas de aplicación Estereotipos de Asociaciones
LINK: Relación entre la página cliente y un recurso del lado del servidor.
BUILD: Relación entre la página servidor y una página cliente. Identifica la salida
del HTML durante la ejecución de una página servidor.
SUBMIT: Relación entre el formulario y una página servidor.
REDIRECT: Relación entre una página cliente o servidor y otra página.
FORWARD: Relación entre una página servidor y otra página servidor.
INCLUDE: Entre una página servidor y otra página servidor. Durante la ejecución
de la página esta asociación indica que la página incluida es procesada.
OBJECT: Relación dibujada entre la página cliente y otra clase (esta puede ser
un applet, activex o cualquier componente).
6
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Capa de Presentación:
Diagrama de Navegación
7
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Capa de Control
Representación del diseño de la Clase Control (Modelo de Análisis)
Servlets, clases Java que procesan dinámicamente las solicitudes y construyen respuestas.
Subtema 1.4:
Patrones de diseño
Como analistas y programadores vamos desarrollando a diario nuestras habilidades para
resolver problemas usuales que se presentan en el desarrollo del software. Por cada
problema que se nos presenta pensamos distintas formas de resolverlo, incluyendo
soluciones exitosas que ya hemos usado anteriormente en problemas similares. Es así
que a mayor experiencia que tengamos, nuestro abanico de posibilidades para resolver
un problema crece, pero al final siempre habrá una sola solución que mejor se adapte a
nuestra aplicación. Si documentamos esta solución, podemos reutilizarla y compartir esa
información que hemos aprendido para resolver de la mejor manera un problema
específico.
8
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Los patrones del diseño tratan los problemas del diseño que se repiten y que se
presentan en situaciones particulares del diseño, con el fin de proponer soluciones a ellas.
Por lo tanto, los patrones de diseño son soluciones exitosas a problemas comunes.
Asimismo, son descripciones de clases cuyas instancias colaboran entre sí. Cada patrón
es adecuado para ser adaptado a un cierto tipo de problema. Para describir un caso
debemos especificar:
Nombre
Propósito o finalidad
Sinónimos (otros nombres por los que puede ser conocido)
Problema al que es aplicable
Estructura (diagrama de clases)
Participantes (responsabilidad de cada clase)
Colaboraciones (diagrama de interacciones)
Implementación (consejos, notas y ejemplos)
Otros patrones con los que está relacionado
Patrones GOF
El catálogo más famoso de patrones se encuentra en “Design Patterns: Elements
of Reusable Object-Oriented Software”, de Erich Gamma, Richard Helm, Ralph
Johnson y John Vlissides, 1995, Addison-Wesley, también conocido como el libro
GOF (Gang-Of-Four).
Los autores de este patrón recopilaron 23 patrones que son utilizados por muchos
diseñadores de software orientado a objetos.
9
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
10
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Subtema 1.5:
Patrones J2EE
Con la aparición del J2EE, todo un nuevo catálogo de patrones de diseño apareció.
Desde que J2EE es una arquitectura por sí misma que involucra otras arquitecturas,
incluyendo servlets, JavaServer Pages, Enterprise JavaBeans, y más, merece su propi o
conjunto de patrones específicos para diferentes aplicaciones empresariales.
De acuerdo al libro "J2EE PATTERNS Best Practices and Design Strategies", existen 5
capas en la arquitectura J2EE:
Cliente: Esta capa corresponde a lo que se encuentra en el computador del cliente. Es la
interfaz gráfica del sistema y se encarga de interactuar con el usuario. J2EE tiene soporte
para diferentes tipos de clientes incluyendo clientes HTML, applets Java y aplicaciones
Java.
Presentación: La capa de presentación es la que ve el usuario, comunica y
captura la información proveniente de él.
Negocio: Es donde reside el núcleo del sistema. Se comunica con la capa de
presentación para recibir y enviar los datos al usuario.
11
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
12
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Capa de Negocio
Patrón Descripción
Business Delegate Un objeto que reside en la capa de
presentación y en beneficio de los otros
componentes de la capa de presentación
llama a métodos remotos en los objetos de la
capa de negocios.
Value Object/ Data Transfer Un objeto serializable para la transferencia
Object/ Replicate Object de datos sobre la red.
Session Façade/ Session Entity El uso de un bean de sesión como una
Façade/ Distributed Façade fachada (facade) para encapsular la
complejidad de las interacciones entre los
objetos de negocio y participantes en un flujo
de trabajo. El Session Façade maneja los
objetos de negocio y proporciona un servicio
13
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Capa de Integración
Patrón Descripción
Data Access Object Consiste en utilizar un objeto de acceso datos para
abstraer y encapsular todos los accesos a la fuente de
datos. El DAO maneja a conexión con la fuente de datos
para obtener y almacenar datos.
Service Activator Se utiliza para recibir peticiones y mensajes asíncronos
de los clientes. Cuando se recibe un mensaje, el Service
Activator localiza e invoca a los métodos de los
componentes de negocio necesarios para cumplir la
petición de forma asíncrona.
Subtema 1.6:
14
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
15
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
16
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Flujo de navegación.
En la siguiente figura, se ilustra un componente para abstraer el hecho de que
una página servidor genera una página de cliente; por ello, <server page> y
<client page> se modela agrupándolos como un componente. Asimismo, se
define el estereotipo <> en un paquete para representar el contenedor de los
componentes de la aplicación web.
17
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Diagrama de secuencia
Describe el comportamiento de los casos de uso en función del tiempo. Su uso
respecto a UML no cambia. En este diagrama se escriben las líneas de tiempo
de los actores y componentes implicados. Los actores y componentes se
envían mensajes entre ellos describiendo el comportamiento del sistema. Las
páginas del cliente pueden enviarse mensajes así mismo (funciones javascript
donde el servidor no interviene), pero si vemos fechas asíncronas que van
desde el cliente hasta el servidor solo pueden ser interpretadas por el
programador como el uso de AJAX, ya que la tecnología web es síncrona.
3. Realización de diseño de casos de uso con patrón arquitectónico MVC y
patrón de diseño DAO
En la siguiente tabla, se muestra la organización de las clases de diseño e
interfaces en capas, subsistemas y librerías que utilizaremos en el curso,
aplicando patrón arquitectónico MVC y patrón de diseño DAO:
18
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Clases de diseño:
servicios, beans y clases
DAO. Interfaces que
presentan las
operaciones de acceso a
una tabla.
Clases de diseño: clase
abstracta DAOFactory y
sus clases hijas.
19
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
CASO PROPUESTO
De la Especificación del Caso de Uso Mantener Cajeros, crearemos los diagramas de la
realización de diseño del caso de uso.
20
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
21
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
5. Poscondiciones
1. En el sistema quedará registrado el nuevo Cajero.
2. En el sistema quedará actualizado el registro del Cajero.
3. En el sistema quedará desactivado el Cajero.
6. Puntos de Extensión
Ninguno.
7. Requisitos Especiales
Ninguno.
A continuación, se muestra los siguientes artefactos de la realización de diseño de caso
de uso:
1. Realización del Diseño
22
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
3. Diagrama de secuencia
23
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
ACTIVIDAD PROPUESTA
Elabore el diagrama de secuencia para los subflujos agregar, actualizar y desactivar
cajeros y de los métodos del DAO del caso de uso Mantener Cajeros.
A partir de la Especificación del Caso de Uso del Sistema Comercial crearemos los
diagramas de clases de análisis, diagrama de clases de diseño y diagrama de
secuencia de la ECU Evaluar Solicitud de Préstamo.
24
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
Precondiciones
25
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
26
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
27
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
28
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
29
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
DIAGRAMA DE SECUENCIA
Flujo básico Evaluar
30
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
BIBLIOGRAFÍA
FUENTES BIBLIOGRÁFICAS
Charette, R. N. (1989), Software Engineering Risk Analysis and Management,
McGraw-HillDntertext.
G. Kotonya and I.(2000) Sommerville, Requirements Engineering: Processes and
Techniques, John Wiley & Sons
IEEE Computer Society, (2014), SWEBOK (Guide to the Software Engineering
Body of Knowledge), Version 3.0. ISBN-10: 0-7695-5166-1
Jacobson, Ivar; Booch, Grady; Rumbaugh, James (2000) (en Español). El Proceso
Unificado de Desarrollo de Software. Pearson Addisson-Wesley.
Piattini, Mario G. (1996), Análisis y diseño detallado de aplicaciones informáticas de
gestión. 1ª ed. RAMA Editorial, Madrid, 1996
Pressman, R. (2010). Ingeniería de Software un Enfoque práctico, Séptima Edición.
ISBN 978-607-15- 0314-5.
Sommerville, Lan. (2011) Ingeniería de software, novena edición. Pearson, México.
ISBN 0137035152 | 9780137035151
Sommerville, Lan (2005), Ingeniería de software, séptima edición, Pearson
Educación, Madrid (España) ISBN: 84-7829-074-5
[Wasserman, 1996] Wasserman, A. “Toward a Discipline of Software Engineering”.
IEEE Software, 13(6):23-31. November/December 1996
PRESSMAN, Roger. “Ingeniería del Software. Un Enfoque Práctico”. 5ª ed.
México: McGraw-Hill Latinoamericana, 2002. ISBN: 8448132149.
BOOCH, Grady et tal. “El Proceso Unificado de Desarrollo de Software”. 1ª ed.
España: Editorial Addison-Wesley.
LARMAN, Craig. UML y Patrones – Introducción al Análisis y Diseño Orientado a
Objetos. 1ª ed. España: Pearson Educación.
SENN, James. “Análisis y Diseño de Sistemas de Información”. México: Mc Graw
Hill. ISBN: 9684229917.
BRAUDE, J. “Ingeniería de Software: Una Perspectiva Orientada a Objetos” Ra-
ma. ISBN: 8478975756. ISBN-13: 9788478975754.
SOMMERVILLE, Ian “Ingeniería de Software: Un enfoque practico”, Eddison
Wesley, México, 692 p.
FONTELA, CARLOS (2011), UML Modelado de Software para profesionales.
Editorial Alfa Omega.
CRAIG LARMAN (2000), “UML y Patrones”, Editorial Prentice Hall.
JACOBSON, BOOCH, RUMBAUGH (2000), “El Lenguaje Unificado de Modelado”.
Editorial Addison-Wesley.
KENDALL y KENDALL (2010), “Análisis y Diseño Sistemas”, 8va Ed. Editorial
Prentice Hall Hispanoamericana S.A.
LAUDON, Kenneth y LAUDON, Jane (2002),”Administración de los Sistemas de
Información”. Editorial Prentice Hall Hispanoamericana S.A.
JACOBSON, BOOCH, RUMBAUGH (2000), “El proceso unificado de desarrollo de
Software”. Editorial Addison-Wesley,
Martin FOWLER - Kendall SCOTT (1999), “UML Gota a Gota”. Editorial Pearson.
PRESMAN, Roger S (2005), “Ingeniería de Software”, 5ta Ed.; Mc Graw Hill.
31
Guía 1 Escuela de Proyecto Desarrollo Software
Tecnología
FUENTES DIGITALES
Barzana, A & Menéndez, R. (2005), Gestión de Riesgos en Ingeniería de Software.
Consultado el 29 de febrero de 2016 de
http://www.wikilearning.com/curso_gratis/gestion_de_riesgos_en_ingenieria_del_so
ftwareintroduccion/3620-1
IEEE Computer Society, (2004), Software Engineering Body of Knowledge,
Consultado el 09 de noviembre de 2015 de: http://www.swebok.org
IEEE Computer Society, (2014), SWEBOK (Guide to the Software Engineering
Body of Knowledge), Version 3.0. ISBN-10: 0-7695-5166-1, consultado el 09 de
noviembre de 2015 de: http://www.computer.org/web/swebok/v3-guide
ISO/IEC 25000, SQuaRE, (2014). Consultado el 09 de noviembre de 2015 de:
System and Software Quality Requirements and Evaluation.
Real Academia Española, Asociación de Academias de la Lengua Española.
Diccionario de la lengua española, 23.ª ed., Edición del Tricentenario, [en línea].
Madrid: Espasa, 2014.
Diccionario WordReference Copyright / derecho de autor © 2016
WordReference.com. http://www.wordreference.com/definicion/dise%C3%B1o
32