diff options
| author | Juan Marín Noguera <juan.marinn@um.es> | 2020-12-05 22:05:06 +0100 |
|---|---|---|
| committer | Juan Marín Noguera <juan.marinn@um.es> | 2020-12-07 17:41:25 +0100 |
| commit | e44ec6801edffd5acd0de48aeb85da7c77ef624c (patch) | |
| tree | 9532372253d643f60968e7b2698a486e915312f6 | |
| parent | b91b994c2284efe2f10c18d4f5c67e443b74b8ac (diff) | |
Diagramas UML
| -rw-r--r-- | tds/n.lyx | 171 | ||||
| -rw-r--r-- | tds/n1.1.png | bin | 0 -> 2852 bytes | |||
| -rw-r--r-- | tds/n1.1.puml | 5 | ||||
| -rw-r--r-- | tds/n1.2.png | bin | 0 -> 4450 bytes | |||
| -rw-r--r-- | tds/n1.2.puml | 6 | ||||
| -rw-r--r-- | tds/n1.3.png | bin | 0 -> 4276 bytes | |||
| -rw-r--r-- | tds/n1.3.puml | 5 | ||||
| -rw-r--r-- | tds/n1.4.png | bin | 0 -> 3928 bytes | |||
| -rw-r--r-- | tds/n1.4.puml | 5 | ||||
| -rw-r--r-- | tds/n1.5.png | bin | 0 -> 3616 bytes | |||
| -rw-r--r-- | tds/n1.5.puml | 5 | ||||
| -rw-r--r-- | tds/n1.6.png | bin | 0 -> 7487 bytes | |||
| -rw-r--r-- | tds/n1.6.puml | 7 | ||||
| -rw-r--r-- | tds/n1.lyx | 911 |
14 files changed, 1115 insertions, 0 deletions
diff --git a/tds/n.lyx b/tds/n.lyx new file mode 100644 index 0000000..5cfeb48 --- /dev/null +++ b/tds/n.lyx @@ -0,0 +1,171 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\begin_preamble +\input{../defs} +\end_preamble +\use_default_options true +\begin_modules +algorithm2e +\end_modules +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\listings_params "basicstyle={\ttfamily}" +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Tecnologías de Desarrollo de Software +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2020} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Universidad de Murcia. + Apuntes de Tecnologías de Desarrollo de Software. +\end_layout + +\begin_layout Chapter +Principios básicos +\begin_inset Note Note +status open + +\begin_layout Plain Layout +sin ningun orden. + Cambiar. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/tds/n1.1.png b/tds/n1.1.png Binary files differnew file mode 100644 index 0000000..9b5c13b --- /dev/null +++ b/tds/n1.1.png diff --git a/tds/n1.1.puml b/tds/n1.1.puml new file mode 100644 index 0000000..5e4e379 --- /dev/null +++ b/tds/n1.1.puml @@ -0,0 +1,5 @@ +@startuml +left to right direction +List --> Node +@enduml + diff --git a/tds/n1.2.png b/tds/n1.2.png Binary files differnew file mode 100644 index 0000000..ab9f763 --- /dev/null +++ b/tds/n1.2.png diff --git a/tds/n1.2.puml b/tds/n1.2.puml new file mode 100644 index 0000000..dab75e0 --- /dev/null +++ b/tds/n1.2.puml @@ -0,0 +1,6 @@ +@startuml +left to right direction +abstract class AbstractList +LinkedList --|> AbstractList +@enduml + diff --git a/tds/n1.3.png b/tds/n1.3.png Binary files differnew file mode 100644 index 0000000..5fa8383 --- /dev/null +++ b/tds/n1.3.png diff --git a/tds/n1.3.puml b/tds/n1.3.puml new file mode 100644 index 0000000..aa71edf --- /dev/null +++ b/tds/n1.3.puml @@ -0,0 +1,5 @@ +@startuml +left to right direction +User "1\n-author" -- "0..*\n-posts" Media : posted > +@enduml + diff --git a/tds/n1.4.png b/tds/n1.4.png Binary files differnew file mode 100644 index 0000000..e481e6a --- /dev/null +++ b/tds/n1.4.png diff --git a/tds/n1.4.puml b/tds/n1.4.puml new file mode 100644 index 0000000..4a8abf6 --- /dev/null +++ b/tds/n1.4.puml @@ -0,0 +1,5 @@ +@startuml +left to right direction +Document o-- "1..*" Section : contains +@enduml + diff --git a/tds/n1.5.png b/tds/n1.5.png Binary files differnew file mode 100644 index 0000000..92cb89d --- /dev/null +++ b/tds/n1.5.png diff --git a/tds/n1.5.puml b/tds/n1.5.puml new file mode 100644 index 0000000..30c4577 --- /dev/null +++ b/tds/n1.5.puml @@ -0,0 +1,5 @@ +@startuml +left to right direction +Window *-- "2" ScrollBar +@enduml + diff --git a/tds/n1.6.png b/tds/n1.6.png Binary files differnew file mode 100644 index 0000000..63a681a --- /dev/null +++ b/tds/n1.6.png diff --git a/tds/n1.6.puml b/tds/n1.6.puml new file mode 100644 index 0000000..b97f5fc --- /dev/null +++ b/tds/n1.6.puml @@ -0,0 +1,7 @@ +@startuml +left to right direction +interface List +LinkedList --|> List + +SQLiteDatabase -() Database +@enduml diff --git a/tds/n1.lyx b/tds/n1.lyx new file mode 100644 index 0000000..8364a98 --- /dev/null +++ b/tds/n1.lyx @@ -0,0 +1,911 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\begin_modules +algorithm2e +\end_modules +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Section +Modelos UML +\end_layout + +\begin_layout Standard +Un +\series bold +modelo +\series default + es una representación de un aspecto de la realidad obtenida mediante abstracció +n para ayudar a comprender y razonar sobre este. + Los modelos se expresan en un lenguaje, y a mediados de los 90 había muchos + lenguajes de modelos de software orientado a objetos. + +\end_layout + +\begin_layout Standard +En 1994, Grady Booch, James Rumbaugh e Ivar Jacobson crean el +\series bold +UML +\series default + ( +\series bold +\emph on +\lang english +Unified Modeling Language +\series default +\emph default +\lang spanish +), un lenguaje para visualizar, especificar construir y documentar modelos + de un sistema de software desde una perspectiva orientado a objetos que + busca eliminar confusión y reunir los puntos fuertes de cada método, y + este es estandarizado por el +\series bold +OMG +\series default +, un grupo que propone, elabora y mantiene especificaciones para aplicaciones + empresariales como Corba, OCL o MDA. +\end_layout + +\begin_layout Standard +UML se aplica en el análisis y el diseño de aplicaciones, para documentar + modelos y para generar código. + Es útil para razonar sobre alternativas, creando diagramas y evaluándolos + en base a los casos de uso, y aunque se puede usar como lenguaje de programació +n, no fue diseñado para esto, por lo que se usa poco a lo largo del desarrollo. +\end_layout + +\begin_layout Standard +Un +\series bold +modelo UML +\series default + es una especificación de un aspecto del sistema de interés para ciertos + usuarios o desarrolladores, y un +\series bold +diagrama UML +\series default + representa parte de la información de un modelo de forma gráfica o textual. + Así: +\end_layout + +\begin_layout Itemize +Los +\series bold +modelos estructurales +\series default + describen la estructura del sistema. + Son representados por +\series bold +diagramas de clases +\series default +, que describen los tipos de objetos de un sistema y las relaciones entre + ellos, y +\series bold +diagramas de objetos +\series default +, que muestran ejemplos concretos de objetos. +\end_layout + +\begin_layout Itemize +Los +\series bold +modelos de comportamiento +\series default + describen las acciones que ejecutan partes del sistema. + Son representados por: +\end_layout + +\begin_deeper +\begin_layout Itemize + +\series bold +Diagramas de interacción +\series default +, que describen cómo los objetos colaboran para realizar una actividad. + Distinguimos los +\series bold +diagramas de secuencia +\series default +, que muestran la secuencia de mensajes, y +\series bold +diagramas de colaboración +\series default + o +\series bold +comunicación +\series default +, que muestran los canales de comunicación. +\end_layout + +\begin_layout Itemize + +\series bold +Máquinas de estado +\series default +, que describen los estados en los que se puede encontrar una parte del + sistema y las transiciones entre ellos. + Distinguimos +\series bold +diagramas de estado +\series default + y +\series bold +diagramas de actividades +\series default +. +\end_layout + +\end_deeper +\begin_layout Subsection +Diagramas de clases +\end_layout + +\begin_layout Standard +Describen los tipos de objetos de un sistema y las relaciones entre ellos, + a nivel conceptual o de clases de diseño o implementación. + Solo aparece la información que se considera relevante para el propósito. +\end_layout + +\begin_layout Standard +Una clase se representa con un recuadro dividido en 3 partes: de arriba + a abajo, nombre de la clase, atributos y métodos. + Encima del nombre de la clase puede haber un +\family sans + +\begin_inset Quotes cld +\end_inset + + +\emph on +estereotipo +\emph default + +\begin_inset Quotes crd +\end_inset + + +\family default +, que indica el tipo de clase. +\end_layout + +\begin_layout Standard +Los atributos se expresan cada uno en una línea como [ +\family sans +\emph on +visibilidad +\family default +\emph default +] +\family sans +\emph on +nombre +\family default +\emph default + [ +\family sans +: +\emph on +tipo +\family default +\emph default +] [ +\family sans +[ +\emph on +multiplicidad +\emph default +] +\family default +], donde +\family sans +\emph on +visibilidad +\family default +\emph default + es +\family sans ++ +\family default + para un atributo público, +\family sans +# +\family default + para uno protegido, +\family sans +– +\family default + para uno privado o +\family sans +~ +\family default + para visibilidad a nivel de paquete, y la multiplicidad tiene forma +\family sans +\emph on +inicio +\family default +.. +\family sans +fin +\family default +\emph default +, +\family sans +\emph on +cantidad +\family default +\emph default + o similares. + Se pueden añadir otras características como un valor por defecto ( +\family sans += +\emph on +valor +\family default +\emph default +) o +\family sans +{ +\lang english +readOnly +\lang spanish +} +\family default +. + Los métodos se representan de forma similar, pero al nombre le sigue [ +\family sans +( +\emph on +parámetro +\family default +\emph default + [ +\family sans +: +\emph on +tipo +\family default +\emph default +] +\family sans +, +\family default +... +\family sans +) +\family default +]. + Los atributos y métodos estáticos o de clase aparecen subrayados, y las + clases y métodos abstractos están en cursiva. +\end_layout + +\begin_layout Standard +Las interfaces se suelen representar como una clase con estereotipo +\family sans + +\begin_inset Quotes cld +\end_inset + + +\lang english +interface +\lang spanish + +\begin_inset Quotes crd +\end_inset + + +\family default + o con un círculo pequeño vacío con el nombre de la interfaz debajo. +\end_layout + +\begin_layout Standard +Las relaciones pueden ser: +\end_layout + +\begin_layout Itemize + +\series bold +Dependencia +\series default +: Una clase usa los métodos de otra. +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset External + template RasterImage + filename n1.1.png + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Generalización +\series default +: Una clase hereda de otra. +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset External + template RasterImage + filename n1.2.png + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Asociación +\series default +: Los objetos de dos clases están conectados. + Se puede indicar el atributo de una clase que referencia a los elementos + de la otra, y/o su multiplicidad, en la relación, en el extremo de la otra. + Dicho atributo no se debe indicar en la lista de atributos de la clase. +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset External + template RasterImage + filename n1.3.png + +\end_inset + + +\end_layout + +\begin_layout Standard +Si desde un objeto de una clase se puede acceder a elementos de la otra + por la relación pero no al revés, esto se puede indicar con una punta de + flecha (hacia la otra). +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Agregación +\series default +: Asociación en que un objeto contiene a otros. + Se puede indicar lo mismo que en la asociación, pero en la referencia de + la parte al todo se asume multiplicidad 1. +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset External + template RasterImage + filename n1.4.png + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Composición +\series default +: Agregación en que cada parte pertenece a un único agregado y si se elimina + un agregado se eliminan todas sus partes. + Así, la multiplicidad de la parte al agregado es siempre 1. +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset External + template RasterImage + filename n1.5.png + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Realización +\series default +: Una clase implementa una interfaz. +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset External + template RasterImage + filename n1.6.png + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Subsection +Diagramas de objetos +\end_layout + +\begin_layout Standard +Un objeto se muestra como un recuadro dividido una parte superior con formato + [ +\family sans +\emph on +nombre +\family default +\emph default +] +\family sans +: +\emph on +tipo +\family default +\emph default + y una parte inferior con los atributos relevantes uno por línea, con formato + +\family sans +\emph on +nombre +\emph default + = +\emph on +valor +\family default +\emph default +. + Un +\series bold +enlace +\series default + es una instancia de una asociación entre objetos, y se muestra igual que + en los diagramas de clase pero sin indicar multiplicidades. +\end_layout + +\begin_layout Subsection +Diagramas de colaboración +\end_layout + +\begin_layout Standard +Un +\series bold +mensaje +\series default + es una comunicación entre dos objetos que transmite información para desencaden +ar una actividad. + Tipos de mensaje: +\end_layout + +\begin_layout Itemize + +\series bold +Simple +\series default +: +\family sans +\emph on +método +\emph default +( +\family default +[ +\family sans +\emph on +argumento +\emph default +, +\family default +...] +\family sans +) +\family default +. +\end_layout + +\begin_layout Itemize + +\series bold +De asignación +\series default +: +\family sans +\emph on +variable +\emph default + := +\emph on +método +\emph default +( +\family default +[ +\family sans +\emph on +argumento +\emph default +, +\family default +...] +\family sans +) +\family default +. +\end_layout + +\begin_layout Itemize + +\series bold +De creación +\series default +: +\family sans + +\begin_inset Quotes cld +\end_inset + +create +\begin_inset Quotes crd +\end_inset + + +\family default +. + Un objeto que reciba este mensaje no puede haber recibido ningún otro antes. +\end_layout + +\begin_layout Itemize + +\series bold +De destrucción +\series default +: +\family sans + +\begin_inset Quotes cld +\end_inset + +destroy +\begin_inset Quotes crd +\end_inset + + +\family default +. + Un objeto que reciba este mensaje no puede recibir ningún otro después. +\end_layout + +\begin_layout Itemize + +\series bold +De condición +\series default +: +\family sans +[ +\emph on +condición +\emph default +] +\emph on +mensaje +\family default +\emph default +. +\end_layout + +\begin_layout Itemize + +\series bold +De iteración +\series default +: +\family sans +* +\emph on +mensaje +\family default +\emph default +, +\family sans +[ +\emph on +multiplicidad +\emph default +] +\emph on +mensaje +\family default +\emph default +. +\end_layout + +\begin_layout Standard +Una +\series bold +interacción +\series default + es un comportamiento dado por un conjunto de mensajes intercambiados entre + un conjunto de objetos para lograr un propósito. + La representamos añadiendo sobre un diagrama de objetos los mensajes intercambi +ados. + Los mensajes se numeran del 1 en adelante y se indican como +\family sans +\emph on +número +\emph default +: +\emph on +mensaje +\family default +\emph default + al lado del enlace sobre el que se envían, acompañados de una flecha paralela + al enlace que va del emisor al receptor. + Se puede usar la misma flecha para más de un mensaje, y se pueden añadir + enlaces de un objeto a sí mismo si es necesario. +\end_layout + +\begin_layout Standard +A veces se usa +\series bold +numeración jerárquica +\series default +: si el envío de un mensaje +\begin_inset Formula $n$ +\end_inset + + resulta en el envío de más mensajes directamente (porque estén en el cuerpo + del método en +\begin_inset Formula $n$ +\end_inset + +), estos se numeran como +\begin_inset Formula $n$ +\end_inset + +.1, +\begin_inset Formula $n$ +\end_inset + +.2, etc., de forma recursiva. +\end_layout + +\begin_layout Subsection +Diagramas de secuencia +\end_layout + +\begin_layout Standard +Una +\series bold +línea de vida +\series default + es un objeto (sin los enlaces) junto a una línea de tiempo vertical hacia + abajo que marca su existencia. + Representamos un mensaje entre líneas de vida como una flecha horizontal + del emisor al receptor etiquetada con el mensaje en forma [ +\family sans +\emph on +número +\emph default +: +\family default +] +\family sans +\emph on +mensaje +\family default +\emph default +, y la numeración, como en los diagramas de comunicación, puede ser secuencial + o jerárquica. +\end_layout + +\begin_layout Standard +Para una llamada a un método de la misma clase, la flecha sale del objeto + y vuelve por debajo al mismo objeto. + Se puede indicar el regreso de una llamada a un método con una línea discontinu +a del receptor al emisor. +\end_layout + +\begin_layout Standard +Un +\series bold +foco de control +\series default + es un rectángulo muy vertical que representa el tiempo durante el que un + objeto está ejecutando un método suyo, y sustituye a la línea de vida o, + si la ejecución está contenida en un foco de control del mismo objeto, + a una de las verticales de dicho foco, sin pegarse a su inicio o fin. +\end_layout + +\begin_layout Standard +Los mensajes de creación señalan al objeto creado; los de destrucción, a + una +\begin_inset Quotes cld +\end_inset + +X +\begin_inset Quotes crd +\end_inset + + en la línea de vida del objeto destruido, y los que llaman a otro método, + al principio del foco de control (el borde superior). + La flecha de regreso de una llamada parte del final del foco de control. +\end_layout + +\begin_layout Standard +Aunque no se recomiendan, existen operadores de control, indicados como + un recuadro alrededor de un conjunto de mensajes con su nombre arriba a + la izquierda en el recuadro. + Son: +\end_layout + +\begin_layout Enumerate + +\series bold +Ejecución opcional +\series default + ( +\family sans +opt +\family default +): El cuerpo se ejecuta si se cumple una condición, indicada en la parte + de arriba del recuadro entre corchetes en la línea encargada de comprobar + la condición. +\end_layout + +\begin_layout Enumerate + +\series bold +Condicional +\series default + ( +\family sans +alt +\family default +): El cuerpo se divide en regiones mediante líneas discontinuas horizontales. + Cada parte tiene una condición asociada y se ejecuta el cuerpo de la región + cuya condición se satisface. +\end_layout + +\begin_layout Enumerate + +\series bold +Paralela +\series default + ( +\family sans +par +\family default +): El cuerpo se divide en regiones que se ejecutan en paralelo. +\end_layout + +\begin_layout Enumerate + +\series bold +Iterativa +\series default + ( +\family sans +loop +\family default +[ +\family sans +( +\emph on +inicio +\emph default +, +\emph on +fin +\emph default +) +\family default +]): El cuerpo se ejecuta un número de veces y/o mientras se cumpla una condición. +\end_layout + +\begin_layout Enumerate + +\series bold +Referencia +\series default + ( +\family sans +ref +\family default +): El cuerpo (el interior del recuadro salvo el nombre) se sustituye por + el nombre de otra interacción, que es la que se ejecuta. +\end_layout + +\end_body +\end_document |
