Está en la página 1de 29

Clase 8

Arquitectura y Diagrama de Clases de


Anlisis
Anlisis y Diseo de
Sistemas
Elizabeth Vidal D. 2
En dnde estamos ahora?
Requerimientos
Analisis
Diseno
Implementacion
Pruebas
Analizar los requerimientos
del sistema
Realizacin de casos de Uso
Comprender como las
entidades del negocio
pueden ser utilizadas para
soportar los casos de uso.
Elizabeth Vidal D. 3
Anlisis: Visin General
Entrada:
Casos de Uso
Modelo del Dominio
Actividades:
Esquematizar la Arquitectura del Software
Realizar los Casos de Uso

Creacin de Diagramas de Secuencia
Refinar el Modelo del Dominio en un Diagrama
de Clases de Anlisis

Elizabeth Vidal D. 4
Anlisis: Vision General

Requerimientos (Casos de Uso) da la vista externa

Modelo del Dominio, da informacin estructural sobre
las entidades del negocio.

El ANALISIS se realiza para entender como las
entidades del negocio pueden ser implementadas y
soportar la realizacin de los Casos de Uso:
Agregando operaciones a las entidades del negocio
Acercndose mas a las clases de programacin.

Elizabeth Vidal D. 5
Diferencia entre Anlisis y Diseo
La distincin no es clara entre las dos actividades:
Usualmente parece ser una actividad continua sin
limites claros
Se hace aun mas confuso al utilizar los mismos
diagramas UML
Anlisis:
Se centra en los requerimientos del sistema
Diseo:
Se centra en la estructura que implementa el
sistema
La actividad de Diseo emplea la versin mas
completa de los diagramas:
Elizabeth Vidal D. 6
Que es la Arquitectura de Software?
Es una descripcin de Alto Nivel de todo el sistema
La estructura de alto nivel de los subsistemas
El rol y la interaccin de estos subsistemas
Agrupamiento de Clases para:
Mejorar Cohesion
Reducir Acoplamiento
Cohesion:
Conjunto de cosas que trabajan bien juntas
Acoplamiento:
Inter-Dependencia entre dos entidades
Elizabeth Vidal D. 7
Arquitectura de Software: Ejemplo
Tomemos el juego Buscaminas como ejemplo, e
identifique los componentes de alto nivel:
Pantalla:
Mostrando el juego graficamente
Logica de Aplicacion:
Determinando las banderas y
numeros
Verificando si hay o no mas
minas, etc
Almacenamiento de Puntaje:
Almacena puntaje mas alto,
configuraciones, etc
Elizabeth Vidal D. 8
Buscaminas: Sistema Uno
Class Buscaminas{

public void ClickOnSquare( ){
if (cuadrado == bomba)
gameState = muerto
mostrar icono muerto
escribir puntaje mas alto a
un archivo

else if (cuadro == numero){
abrir cuadros vecinos
marcar cuadros como abierto
mostrar nuevo tablero
}
}
..// some other code
}
Mala Cohesion:
Funciones de
Displayado en todos
sitio
Logica de aplicacion
junto con otras
operaciones
Funcion de
almacenamiento no
separada
Bajo Acoplamiento:
Ya que solo hay una
clase, no hay
interdependencia
Elizabeth Vidal D. 9
Buscaminas: Sistema Dos
Class BuscaminasGUI{

Buscaminas miBM
BMAlmacena bmAlmacena

public void MouseClickEnCuadro( ){
miBM.AbrirCuadro(..)
board = miBM.GetTableroActual(..)
show(tablero)
}
public void MenuExitClick( ){
score = miBM.GetHighScore( )
bmAlmacena.escribePuntajeAlto(puntaje)
}
}

Class Buscaminas{
BMAlmacena bmAlmacena

public void abrirCuadro(posicion){
if (cuadro == bomba)
gameState = muerto
else if (cuadro == numero){
abrir cuadros vecinos
marcar cuadros como abiertos
}
}

public board GetCurrentBoard()
{ .. .. }

public void grabaTableroActual()
{
bmAlmacena.escribeTablero(.. )

}
Class BMAlmacena{

Public void escribePuntajeAlto(..){ }
Public void escribeTablero(..) { }
}

Elizabeth Vidal D. 10
Buscaminas: Sistema Dos
Cohesion:
Cada clase agrupa logicamente funcionalidad similar
Class BuscaminasGUI: interfaz de usuario,
input/output en pantalla
Class Buscaminas: Computacion y Logica
Class BMAlmacena: Operaciones de archivo
Acoplamiento:
Algunas interdpendencias. Puede mejorarse.
Observe que BuscaminasGui utiliza
BMAlmacenamiento directamente. Sin embargo, si
sustituimos otra interfaz de usuario, el puntaje mas
algo necesita ser grabado.
Elizabeth Vidal D. 11
Buscaminas: Sistema Tres
Class BuscaminasGUI{

Buscaminas miBM
// BMAlmacena bmAlmana No necesario

.. .. ..

Public void MenuExitClick( ){
miBM.ClosingDown( )
}
}

Class Buscaminas{

BMAlmacena bmAlmacena

.. .. ..

Public void ClosingDown()
{
bmAlmacena.escribePuntajeAlto(..)
}

Public void grabarTableroActual()
{ }
}
Class BMAlmacena{

Public void escribePuntajeAlto(..){ }
Public void escribeTablero(..){ }
}

Elizabeth Vidal D. 12
Buscaminas: Sistema Tres
Acoplamiento:
Reducido. BuscaminasGUI depende solo de
Buscaminas. Buscaminas depende solo de
BMAlmacena.
El bajo acoplamiento posibilita el facil mantenimiento,
ejemplo
Cambiar BuscaminasGUI por BuscaminasTextoUI no
afectaria el mantenimiento de la aplicacion.
Podemos cambiar a otro tipo de almacenamiento, por
ejemplo cambio a base de datos utilizando los mismos
metodos
Elizabeth Vidal D. 13
Buscaminas: Comparacion de Sistemas
Sistema 2









Buscaminas
Sistema 3









BuscaminasGUI
BMAlmacena
Buscaminas
BuscaminasGui
BMAlmacena
Sistema 1









Buscaminas
Mala Cohesion
No Acoplamiento
Buena Cohesion
Acoplamiento Medio
Buena Cohesion
Bajo Acoplamiento
Elizabeth Vidal D. 14
Buscaminas: Observaciones
Escoger entre cohesion y acoplamiento:
Mejorar la cohesion usualmente implica empeorar el
acoplamiento (mas alto) y viceversa
Las tres categorias de funcionalidad son
ampliamente aplicables:
Interfaz de Usuario
Logica del Negocio
Almacenamiento (Persistencia)
Estas observaciones ayudan a definir la Arquitectura
de Software:
Dividir un sistema en sub-sistemas
Elizabeth Vidal D. 15
Arquitectura en Tres Niveles
Una de las ideas mas antiguas de la Ingenieria del Software
Dividir en tres niveles separados:
Nivel de Presentacin
Interface de Usuario
Nivel de Aplicacin
Centrado en la lgica del negocio
Implementa la funcionalidad del sistema.
Nivel de Almacenamiento
Maneja el almacenamiento de datos: archivos,
bases de datos, etc
Los niveles son de un alto nivel de abstraccin.
Cada uno puede contener muchas clases, o muchos
paquetes (grupo de clases)
Elizabeth Vidal D. 16
Diagrama de Paquetes UML
Dependencia:
Representa la
relacion hace uso de
r

Paquete:
Coleccion de
clases o sub-
paquetes

Elizabeth Vidal D. 17
Buscaminas: Diagrama de Paquetes
Presentation
Buscaminas
Application
BuscaminasGUI
BMAlmacena
Storage

Corresponde a
constructores de
programacion:
Java: Package
C++: namespace

Elizabeth Vidal D. 18
Arquitectura en Niveles: Ventajas
Los niveles intentan reducir lo efectos del
cambio en el sistema.

Por ejemplo, si la interfaz de usario cambia
pero el nivel de aplicacion no hace uso del
nivel de presentacion
Los cambios en el sistema deberan estar
restringidos al nivel de presentacin.
DIAGRAMA DE CLASES DE ANALISIS
Elizabeth Vidal D. 20
Estereotipos para Clases de Anlisis
Con el tipo de arquitectura en tres niveles, los objetos
pueden tener varios roles tipicos:

Objetos interfaz (boundary): interactuan con los actores
del sistema
Objetos control: manejan el comportamiento del caso de
uso
Objetos entidad: manejan los datos

Los objetos son representados explicitamente utilizando
estereotipos de clases de UML
Estos estereotipos dan informacin informal adicional
acerca de los objetos.

Elizabeth Vidal D. 21
Los estereotipos pueden ser texto o conos
grficos.

Notacin de Clases con Estereotipos
Ejemplo: Mailing List
Elizabeth Vidal D. 23
Modelo del Dominio
Elizabeth Vidal D. 24
REGISTRARSE
ALUMNO
MODIFICAR PREFERENCIAS
ENVIAR NOTICIAS
PROFESOR
LOGEARSE
CREAR LISTA
ELIMINAR USUARIOS
ADMINISTRADOR
ELIMINAR LISTA
GRABAR NOTICIAS
<<extend>>
Elizabeth Vidal D. 25
Interfaz: CU Registrarse
Elizabeth Vidal D. 26
Ejemplo de Clases de Anlisis
CU01 : Registrar Alumno
Elizabeth Vidal D. 27
Al umno_Boundary
Al umno_Enti ty
Al umno_Control
Al umno
(f rom Actors)
Li sta_Enti ty
Elizabeth Vidal D. 28
Lectura Obligatoria
Priestley Practical Object-Oriented Design
with UML, Capitulo 5.3

Object Oriented Software Engineering Using
UML , Patterns and Java, Capitulo 5.4

Lectura6 An IntroductionToSoftwareArchitecture.pdf
Lectura7 Who Needs an Architect
Lectura8BuildingArchitect
Lectura9RedduciendoElAcoplamiento

Elizabeth Vidal D. 29
Control de Lectura
Prxima Semana

También podría gustarte