Diferencia entre revisiones de «Usuario:ManuelRomero/UML/introduccion»

De WikiEducator
Saltar a: navegación, buscar
(Página reemplazada por «{{TEP}} {{:Usuario:ManuelRomero/UML/nav}}»)
 
Línea 1: Línea 1:
 
{{TEP}}
 
{{TEP}}
 
{{:Usuario:ManuelRomero/UML/nav}}
 
{{:Usuario:ManuelRomero/UML/nav}}
= Ingeniería de software orientada a objetos =
 
<br />
 
{{Objetivos|
 
#comprender la estructura de UML
 
#detectar la necesidad de seguir una metodología
 
#usar los diagramas dentro del desarrollo de software orientado a objetos
 
}}
 
 
<br />
 
 
== UML ==
 
''Unified Modling Lenguage ''Lenguaje de modelado unificado. Es un ''lenguaje ''que de forma ''unificada ''mediante elementos gráficos nos va a permitir ''modelar ''un sistema de software.
 
 
Es decir, con '''UML''' vamos a generar '''un modelo '''para informatizar con softwre un determinado sistema. Este modelo contendrá varios diagramas u documentos textuales. Para ello seguiremos una metodología como '''UP''' ''Unified Process'' (Proceso Unificado).
 
 
'''UML''' no es una metodología, pero se aplica dentro de una metodología.
 
 
Es decir '''UML''' no dice ''lo que hay que hacer'' para desarrollar un proyecto software:
 
 
* Pasos a seguir ,forma de proceder
 
* Actividades que hay que realizar,
 
* Documentos que hay que producir, …;
 
 
pero en con este lenguaje podremos realizar '''esas '''''actividades ''y producir '''esos''' ''documentos ''necesarios para desarrollar '''ese proyecto software.'''
 
 
'''UML''' es independiente de la metodología, pero tanto '''''UP''''' como '''''RUP''''' son metodologías orientadas a objetos que utilizan '''UML''', que expondremos posteriormente. Hay más metodologías que lo usan, y se puede utilizar UML con criterio propio, es decir sin seguir una metodología concreta, aunque no sea muy recomendado en proyecto de gran envergadura.
 
 
== Aspectos de un sistema software orientedo a objetos ==
 
Siempre que hablamos de software pensamos en valores que son modificados por operaciones, pero ya hemos visto que en un ''sistema orientado a objetos'' esa conceptualización cambia; Ahora concebimos el sistema como ''un conjunto de objetos que interactúan entre ellos''. Un ''objeto ''es una elemento software que '''tiene o presenta comportamiento'''.
 
 
No obstante el sistema software orientado a objetos completo, lo podemos ver desde dos puntos de vista ''diferenciados'' aunque ''intimamente'' unidos:
 
 
* '''Estático''': En esta parte vemos '''''qué objetos '''''y '''''cómo se relacionan'''''
 
* '''Dinámico''':''''' '''''Observamos el '''''ciclo de vida''''' y como interactúan entre ellos para alcanzar el comportamiento deseado del sistema
 
 
== Estructura ==
 
Vamos a estudiar cuáles son los elementos que constituyen un '''modelo '''UML. Como todo lenguaje tiene unos lexemas, que son los elementos que los constituyen, con su sintaxis o reglas de construcción y semántica que nos habla de su significado.
 
 
Según vayamos profundizando en su práctica (ya que practicando con él es como aprenderemos su uso y comprenderemos su significado y utilidad ), iremos viendo los diferentes diagramas que podemos generar. En ellos es donde estudiaremos esos lexemas o símbolos . Son propios del lenguaje UML, pero particulares de uno o varios diagramas concretos. Por ejemplo un '''actor '''es un lexema o símbolo de UML, propio para ser usado en un diagrama de ''caso de uso.''
 
 
Vamos a continuación a analizar la '''estructura de UML'''
 
 
[[Archivo:Estructura1.png]]
 
 
En este diagrama vemos los componentes estructurales de más alto nivel. UML se compone de
 
 
# '''Bloques de construcción'''
 
 
Son los elementos básicos del modelo. El lenguaje ,más básico de UML. Lo constituyen los lexemas para diagramar, elementos relaciones y diagramas
 
 
# '''Mecanismos comunes'''
 
 
Forma de proceder o estrategias para poder conseguir objetivos específicos y acercarse al modelo de objetos deseado
 
 
# '''Arquitectura'''
 
 
La visión o forma de ver la estructura del sistema al más alto nivel en su entorno.
 
 
=== Bloques de construcción ===
 
Como hemos comentado son los elementos básicos del sistema.
 
 
Dado que el software que vamos a desarrollar no es de mucha complejidad, nos centraremos bastante en estos elementos, en especial en algunos tipos de diagramas.
 
 
Dentro de los bloques, podemos clasificar en '''elementos '''o propios lexemas o símbolos graficos o textuales del modelo y '''relaciones '''manera en la que dos o mas elementos establecen vículo
 
 
[[Archivo:Bloques_construccion.png]]
 
 
==== Elementos ====
 
Como hemos comentado constituyen los símbolos del modelo. Serían pues los lexemas a partir de los cuales vamos a poder construir nuestro modelo.
 
 
Vemos que tenemos cuatro tipo de símbolos
 
 
* Elementos '''estructurales. '''Son varios los elementos y los iremos viendo en los diferentes diagramas. Definen elementos estáticos del modelo
 
 
Por ejemplo una clase (en la imagen la clase persona), un actor, un caso de uso, colaboración, componente.
 
 
[[Archivo:[[Archivo:]]Elementos.png]]
 
 
Cada diagrama tiene sus propios elementos, los cuales pueden aparecer en más de un tipo de diagrama
 
 
* Elementos de '''comportamiento. '''Sirven para aportar el comportamiento del modelo. Normalmente son identificado con verbos. Ejemplos serían maquina de estados actividades interacciones
 
* Elementos de '''agrupación. '''El paquete que nos permite agrupar elementos semánticamente relacionados
 
 
* [[Archivo:Paquete.png]]Elementos de '''anotación''' un texto que se anexa al modelo y permite capturar información rápida y no perderla.
 
 
==== Relaciones ====
 
Detallan la forma en la que dos o mas elementos se relacionan entre sí. En un sistema los elementos no existen sin mas la utilidad y funcionalidad de su existencia reside en el echo de que se relacionan con otros elementos.
 
 
Por ejemplo los elementos estructurales como las clases que aparecen en un diagrama de clases, pueden establecer las siguientes relaciones entre sí.
 
 
 
 
{| style="border-spacing:0;"
 
| style="border-top:0.002cm solid #000000;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Dependencia
 
| style="border-top:0.002cm solid #000000;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"|
 
| style="border:0.002cm solid #000000;padding:0.097cm;"| El elemento origen depende del elemento destino
 
 
|-
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Asociación
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"|
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| Dos objetos están relacionados
 
 
|-
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Agregación
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"|
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| Un elemento es parte del otro
 
 
|-
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Composición
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"|
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| Un elemento solo puede existir si existe el otro
 
 
|-
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Contención
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"|
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| El elemento origen contiene al elemento destino
 
 
|-
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Generalización
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"|
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| El elemento destino es una especializacion del elemento origen
 
 
|-
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"| Realización
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:none;padding:0.097cm;"|
 
| style="border-top:none;border-bottom:0.002cm solid #000000;border-left:0.002cm solid #000000;border-right:0.002cm solid #000000;padding:0.097cm;"| El elemento destino garantiza llevar a cabo el contrato especificado por el elemento origen
 
 
|}
 
MRM ==> Revisar las flechas
 
 
==== Diagramas ====
 
Los diagramas son vistas del modelo. No hay que confundir un diagrama con un modelo. Existen trece diagrama diferentes como se enumeran en la lista
 
 
[[Archivo:diagramas.png]]Vemos como hay diagramas de estructura que describen la composición del sistema en el modelo, y diagramas de comportamiento que nos muestran el aspecto dinámico.
 
 
Nosotros este curso nos centraremos principalmente en '''diagrama de clases '''en la parte estática y '''diagramas de caso de uso''' y diagrams de '''estado en la parte dinámica.'''
 
 
No es necesario emplear todos los diagramas en un desarrollo. El software es un elemento complejo y lógico, que en sí mismo va a ser diferente para cada sistema.
 
 
Cada software es diferente; Como tal la manera de modelar también lo es. No será lo mismo modelar el software de gestión que un software de un sistma de seguridad.
 
 
 
=== Mecanismos comunes. ===
 
Los mecanismos describen la manera de hacer las cosas para conseguir el modelo. Los mecanismos nos hablarían de la '''sintaxis '''y tendría asociada una ''semántica''.
 
 
Tenemos 4 mecanismos según vemos en el diagrama siguiente
 
 
==== [[Archivo:mecanismos.png]] ====
 
==== Especificaciones ====
 
Si los diagramas es una forma gráfica del modelo, las especificaciones son ''descripciones textuales de la semántica de un '''elemento'''''
 
 
Las especificaciones se muestran en un plano posterior a los diagramas gráficos y sirven para completarlos .
 
*Una forma de mostrar una especificación es escribir de forma algorítmica como se realiza un determinado proceso o especificar narrativamente lo que hace
 
*Siempre hay que huir de la  ambigüedad
 
 
 
==== Adornos ====
 
Los adornos son símbolo gráficos y básicos, que nos permiten hacer visible de manera sencilla aspectos de las especificaciones de un elemnto
 
 
Recordemos que un diagrama es una vista del modelo. En un modelo a un nivel determindo no es importante mostrarlo todo, solo las características importantes que nos den claridad. Este aspecto facilita la '''''legibilidad '''''del modelo
 

Última revisión de 00:33 10 mar 2015

Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg