Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetos
• Arquitecturas de Software
• Monolítico
• Cliente-Servidor
• Peer-to-peer (P2P)
• Arquitectura en Capas
• Microkernel
• Service-Oriented Architecture (SOA)
• Microservicios
Conversemos
http://www.menti.com
Aprendemos:
Actores de Sistemas
Definición de Requisitos
Es el proceso de averiguar, por lo general en circunstancias difíciles, lo
que se debe construir.
Los usuarios deben
saber lo que quieren
• Cada uno sabe lo que hace, pero ninguno tiene una visión global
• No saben cómo puede hacerse más eficiente la operación en su
conjunto.
• No saben qué parte de su trabajo puede transformarse en software.
Aprendemos:
Requisito funcional
Requisitos
Aprendemos:
Para empezar, diremos que los Casos de Uso fueron ideados por Jacobson a
principios de los noventa y están inspirados en el concepto de escenario, el
cual previamente había sido utilizado para describir procesos. Los Casos de
Uso especifican un comportamiento deseado del sistema, representan
requisitos funcionales del mismo. Es importante resaltar que describen qué
hace el sistema, no cómo lo hace. UML nos dice que: “Un caso de uso
especifica un conjunto de secuencias de acciones, incluyendo variantes, que
el sistema puede ejecutar y que produce un resultado observable de valor
para un particular actor”. Los Casos de Uso nos sirven de base para elaborar
los aspectos funcionales del pliego de condiciones y nos dan soporte en las
etapas de modelado, desarrollo y validación de software.
Aprendemos:
Resolver Consulta
Profesional
especializa generaliza
Herencia
entre actores
Resolver Consulta
Jurídica
Abogado subcaso de uso
Resolver Consulta
Psicológica
Psicólogo
subcaso de uso
Aprendemos:
Primeros Principios
Primeros Principios
Primeros Principios
Recuperar
Hacer información
llamada local de
facturación
Sistema de
Facturación
Hacer
Suscriptor que llama Suscriptor al Consultar
llamada de
que llaman historial de
larga
llamadas
distancia
Cliente
Guía para ser exitoso con los casos de uso
Primeros Principios
3. Enfocarse en el valor
Cuando intentamos entender cómo se empleará un sistema, siempre
es importante enfocarse en el valor que este prestará a sus usuarios
y a otros interesados. Solo se genera valor si el sistema se usa
realmente; así, es mejor enfocarse en cómo se empleará el sistema
que en las largas listas de funciones o características que ofrecerá.
Guía para ser exitoso con los casos de uso
3. Enfocarse en el valor
La estructura de la narrativa de un caso de uso
FLUJO BÁSICO FLUJOS ALTERNATIVOS
1. Insertar Tarjeta A1 Tarjeta Inválida
2. Validar Tarjeta A2 Cantidad No-estándar
3. Seleccionar retiro de efectivo A3 Recibo Requerido
4. Seleccionar cuenta A4 Fondos insuficientes en ATM
5. Confirmar disponibilidad de fondos A5 Fondos insuficientes en cuenta
6. Retornar Tarjeta A6 Causaría sobregiro
7. Entregar efectivo A7 Tarjeta atascada
A8 Efectivo dejado atrás
etc…
Guía para ser exitoso con los casos de uso
3. Enfocarse en el valor
3. Enfocarse en el valor
Primeros Principios
4. Construir el sistema por partes - Las porciones son más que solo requisitos y casos de prueba
4. Construir el sistema por partes - Las porciones son más que solo requisitos y casos de prueba
Primeros Principios
Primeros Principios
Los CU 2.0 se diseñaron con esto en mente y son tan livianos como
se requiera que sean. Equipos pequeños y colaborativos pueden
tener narrativas de CU muy livianas que capturen lo estrictamente
necesario de las historias. Estas se pueden escribir a mano en
simples tarjetas indexadas.
Equipos distribuidos grandes pueden tener narrativas de CU más
detalladas y que se presenten como documentos. Depende del
equipo decidir si es necesario ir más allá de lo esencial, adicionando
detalles de una manera natural a medida que se encuentren
problemas que lo esencial no pueda cubrir.
Aprendemos:
Los Casos de Uso 2.0 constan de un conjunto de cosas con las cuales
trabajar y un conjunto de cosas por hacer.
Cosas con las cuales trabajar
El asunto de los CU 2.0 lo constituyen: los requisitos, el sistema que se
construya para satisfacer los requisitos y las pruebas usadas para demostrar
que el sistema satisface los requisitos. En el corazón de los CU 2.0 están el
CU, la historia y la porción de CU. Estos elementos capturan los requisitos y
conducen el desarrollo del sistema.
Aprendemos:
Mapa Conceptual de
Casos de Uso 2.0
Aprendemos:
Casos de uso
Un CU se materializa con todas las formas de emplear un sistema para
alcanzar una meta particular para un usuario particular. El conjunto de todos
los CU nos da todas las formas útiles de emplear el sistema.
Un caso de uso es:
• Una secuencia de acciones que un sistema ejecuta y que arroja un
resultado observable de valor para un usuario particular.
• Ese comportamiento específico de un sistema, que participa en una
colaboración con un usuario para entregar algo de valor para ese usuario.
Aprendemos:
Productos de Trabajo
El equipo emplea varios productos
para ayudar a compartir, entender y
documentar los CU y las porciones
de los CU. La imagen muestra los
cinco productos de trabajo de los
CU 2.0 (en azul) y sus relaciones
con los requisitos, casos de uso,
porciones de casos de uso,
historias, pruebas y el sistema (en
amarillo).
Aprendemos:
Modelo lógico
Para conseguir la independencia, robustez y escalabilidad de los
sistemas, y en base a las pautas generales del modelado y diseño de
los sistemas de información, las aplicaciones desarrolladas deben ser
diseñadas como aplicaciones Web siguiendo un modelo
arquitectónico basado en el principio de Separación
de Problemas (SoC, Separation of Concerns). Este
principio permite el estudio de cada uno de los
componentes de un sistema de forma aislada. Es un
principio fundamental en el diseño de sistemas complejos
empresariales y de la programación Orientada a Objetos.
Aprendemos:
• Presentación y Control.
• Negocio.
• Integración.
Aprendemos:
Presentación y control
La Presentación muestra el sistema al usuario, presentándole la información y
capturando aquella proporcionada por el usuario en un mínimo proceso de
filtrado. Esta modulo se debe comunicar únicamente con el modulo de negocio.
Se hará uso principalmente del patrón MVC.
Controlador
Modelo Vista
MVC
Pautas de diseño
Negocio
El Negocio ocupa un lugar angular en la definición de una infraestructura
de software base que permita el crecimiento y la extensibilidad de
servicios para todas las aplicaciones existentes y futuras.
La definición de los límites de cada modulo permite definir
correctamente la colaboración que proveerá cada una de ellas.
Las principales pautas para el diseño de esta modulo son:
• Elementos constitutivos. El negocio engloba toda la lógica de
negocio: reglas, workflow y operaciones no persistentes. Aunque no
son parte del negocio como tal las operaciones persistentes deben
ser ubicadas junto al negocio.
Pautas de diseño
Negocio (Cont.)
• Reglas de negocio. El negocio debe ser visto como el punto de acceso
único y centralizado al conjunto de servicios expuestos.
• Validaciones de datos. Los servicios de negocio deben realizar las
comprobaciones necesarias sobre los datos proporcionados para
garantizar su validación previa al inicio de los procesos de negocio.
• Comunicación entre módulos. La definición de la estrategia de
negocio, basada en la creación de las entidades del negocio o los
objetos del modelo, se presenta como una fase fundamental en el
desarrollo. La comunicación entre modulos se establece mediante
estos objetos.
Pautas de diseño
Negocio (Cont.)
• Transacciones. El manejo de transacciones debe realizarse desde el
negocio.
• Tratamiento de excepciones. Debe establecerse una gestión de
excepciones según la cuál las mismas se propaguen hacia los módulos
que usen el negocio. Las excepciones generadas desde la capa de
integración o persistencia deben ser encapsuladas en esta capa para
ser trasladadas de forma correcta a la capa superior. Debe evitarse,
además, el uso de métodos genéricos para la captura de las
excepciones, empleando métodos específicos relativos al objeto en
cuestión.
Pautas de diseño
Negocio (Cont.)
• Encapsular los servicios de negocio. Los servicios de negocio son el "puente"
entre el usuario y los servicios de datos. Responden ante peticiones del
usuario (u otros servicios de negocios) para ejecutar una tarea de este tipo
aplicando procedimientos formales y reglas de negocio a los datos relevantes.
Cuando los datos necesarios residen en un servidor de bases de datos,
garantizan los servicios de datos indispensables para cumplir con la tarea de
negocios o aplicar su regla. Esto aísla al usuario de la interacción directa con la
base de datos.
Métodos
Clase
Variables
Pautas de diseño
Negocio (Cont.)
• Control sobre el uso de servicios. El control del acceso a los servicios
de negocio debe hacerse en el negocio, bien a nivel de servicio
vertical (cada Fachada) o a nivel de método dentro de cada servicio.
• Persistencia. Aunque no suele incluirse en el negocio, la persistencia
para la mayoría de los desarrollos estará modularizada junto con el
negocio, aplicando junto con el, el patrón BCE.
• Mapeo Objeto-Relacional (ORM). La implementación debe
realizarse en base a un mapeo Objeto-Relacional, empleando un
motor de persistencia que asegure el correcto funcionamiento.
Pautas de diseño
Negocio (Cont.)
• Persistencia. (Cont.)
• Cada objeto debe ser creado en la base de datos para que sea
persistente. El patrón CRUD1 indica que cualquier objeto debe
de ser creado como un elemento persistente en la base de
datos. Es necesario asegurar que existen operaciones que
permitan leer, actualizar o simplemente borrar. Para ello, debe
implementarse un DAO2 distinto por cada objeto de negocio en
el sistema.
1 CRUD es el acrónimo de "Crear, Leer, Actualizar y Borrar" (del original en inglés: Create, Read, Update and Delete)
2 Data Access Object (DAO)
Pautas de diseño
Negocio (Cont.)
• Persistencia. (Cont.)
• Manejo del Cache. El uso de cachés en el acceso a datos debe
realizarse siempre teniendo en cuenta las características del
sistema y las necesidades de sincronización. No hay que olvidar
el costo de rendimiento derivado de su uso, por lo que el manejo
de cachés deberá estar siempre justificado.
• Permitir la concurrencia de usuarios. Debe permitir que
múltiples usuarios trabajen en la misma BD protegiendo los
datos de ser escritos equivocadamente, minimizando las
restricciones en su capacidad concurrente para lectura y
escritura.
Pautas de diseño
Negocio (Cont.)
• Persistencia. (Cont.)
• Evitar las referencias circulares entre objetos. En la medida de lo
posible, se deben evitar las referencias circulares, facilitando la
localización de los objetos, proporcionando un acceso más efectivo a
la información.
• Buen uso de la información oculta. Existen numerosas columnas de
tablas que no necesitan ser mapeadas a una propiedad del objeto,
conteniendo información oculta para el modelo de objetos pero
necesaria para el modelo relacional. En esta categoría entran los
mecanismos de auditoría. Al leer el objeto, se lee esta información,
que es ocultada al objeto pero mantenida por el framework de
persistencia.
Pautas de diseño
Negocio (Cont.)
• Persistencia. (Cont.)
• Actualización en cascada. Debe utilizarse la posibilidad que
ofrecen los frameworks para la actualización en cascada de
objetos. Esta característica permite que las modificaciones
hechas a un objeto se repliquen en los objetos relacionados,
mejorándose su mantenimiento, la replicación eficiente de los
cambios y la integridad de los datos.
• Operaciones en masa. Se deben de permitir las operaciones en
masa sobre los datos almacenados, lo que mejora de forma
sensible el rendimiento de las operaciones.
Pautas de diseño
Integración
El modulo de integración permite tener separado del negocio todas las
necesidades de datos de servicios externos a la aplicación.
Las pautas de diseño generales a adoptar en este modulo son:
• Integraciones con terceros. En este modulo se deben de englobar
todas las integraciones con los sistemas externos, exponiendo al
negocio una fachada adaptada a las necesidades del propio negocio.
Pautas de diseño
Integración (Cont.)
• Adaptadores o mapeadores. Se debe evitar el uso de clases de
librerías de integración de terceros, para ello se propone el uso de
adaptadores o mapeadores que faciliten la conversión de los
documentos externos a internos.
• Librerías de terceros. Las dependencias con librerías de terceros
deben estar contenidas en este modulo. Evitando que el negocio
dependa directamente con estas librerías.
Modelado basado en Clases
Características de selección
Especificación de atributos
Frontera o Interfaz
Interactúan con actores del sistema o con otros sistemas.
• Las clases de interfaz se utilizan para modelar la interacción entre el
sistema y los actores.
• Las clases de interfaz modelan las partes del sistema que dependen
de sus actores, lo cual implica que clasifican y reúnen los requisitos
en los límites del sistema.
• Las clases de interfaz representan a menudo abstracciones de
ventanas, formularios, paneles, interfaces de comunicaciones.
Categorías de clases
Entidad
Representan datos del sistema, a menudo del modelo de dominio.
• Las clases de entidad modelan información y el comportamiento
asociado de algún fenómeno o concepto, como persona o un objeto.
• Las clases de entidad reflejan la información de un modo que
beneficia a los desarrolladores al diseñar e implementar el sistema,
incluyendo su soporte de persistencia.
• Las clases de entidad suelen mostrar una estructura de datos lógica y
contribuyen a comprender de qué información depende el sistema.
Categorías de clases
Entidad (Cont.)
Entidad (Cont.)
Ejemplo
Categorías de clases
Control
Control (Cont.)
Control (Cont.)
Ejemplo
Categorías de clases
Reglas de comunicación
Comunicación permitida:
Diagrama de Clases
Diagramas de Colaboraciones
Las colaboraciones identifican las relaciones entre clases.
Para ayudarse en la identificación de los colaboradores, el analista puede
examinar tres relaciones genéricas diferentes entre las clases :
1. la relación es-parte-de,
2. la relación tiene-conocimiento-de, y
3. la relación depende-de.
Todas las clases que son parte de una clase agregada se conectan a ésta
a través de una relación del tipo es-parte-de.
Modelado basado en Clases
Diagramas de Colaboraciones
Agregación
• La agregación es el término del UML para la relación parte-todo. En la notación
gráfica, el diamante se coloca en el extremo del todo.
Clase Automóvil
1 1 1 1
1 1 4..5 2..*
Generalización
• Permite gestionar la complejidad mediante un ordenamiento
taxonómico de clases
• Se obtiene usando los mecanismos de abstracción de Generalización
y/o Especialización
• La Generalización consiste en factorizar las propiedades comunes de
un conjunto de clases en una clase más general
Modelado basado en Clases
Generalización (Cont.)
Vehículo
Generalización (Cont.)
Asociación
Hay casos donde la asociación entre dos clases puede por si misma requerir que se modele como una
clase.
Ejm. Un cantante es atendido por un odontólogo en varias ocasiones, en cada una de ellas la atención
es por diferentes servicios (curaciones, extracciones, implantes, otros). El modelamiento de la
facturación por cada servicio requiere que la asociación servicios se convierta en una clase, la Clase
Servicios, que es identificada como una clase de asociación, porque es tanto una asociación como una
clase. Clase Clase
Cantante Odontólogo Clase
servicio Clase
Cantante servicio Odontólogo
Manos a la Obra
• Ingresar a
• Creamos 2 paquetes
• principal
• clases
Herencia en Java
Manos a la Obra
• Creamos 3 clases en el
paquete clases
• animal
• perro
• Vaca
• Creamos 1 clase en el
paquete principal
• AnimalTest
Herencia en Java
Manos a la Obra
• La clase animal
• será una clase abstracta
• creamos 2 atributos:
• nombre y
• color
• creamos el constructor
• creamos 2 métodos abstractos:
• comer y
• sonido
Herencia en Java
Manos a la Obra
Manos a la Obra
• La clase perro
• hereda de animal
• implementamos los métodos abstractos
• creamos el constructor
• codificamos el método comer
• muestra el mensaje “El perro es carnívoro”
• codificamos el método sonido
• muestra el mensaje “El perro ladra”
Herencia en Java
Manos a la Obra
public class perro extends animal {
@Override
public void comer() {
System.out.println("El perro es carnívoro");
}
@Override
public void sonido() {
System.out.println("El perro ladra");
}
}
Herencia en Java
Manos a la Obra
• La clase vaca
• hereda de animal
• implementamos los métodos abstractos
• creamos el constructor
• codificamos el método comer
• muestra el mensaje “La vaca es herbívora”
• codificamos el método sonido
• muestra el mensaje “La vaca muge”
Herencia en Java
Manos a la Obra
public class vaca extends animal {
@Override
public void comer() {
System.out.println("La vaca es herbívora");
}
@Override
public void sonido() {
System.out.println("La vaca muge");
}
}
Herencia en Java
Manos a la Obra
• La clase AnimalTest
• instanciamos la clase perro
• usamos sus métodos
• comer
• sonido
• instanciamos la clase vaca
• usamos sus métodos
• comer
• sonido
Herencia en Java
Manos a la Obra
• La clase AnimalTest
• instanciamos la clase perro
• usamos sus métodos
• comer
• sonido
• instanciamos la clase vaca
• usamos sus métodos
• comer
• sonido
Herencia en Java
Manos a la Obra
}
Herencia en Java
Manos a la Obra
Manos a la Obra
Manos a la Obra
Manos a la Obra
public class Operacion {
double n1;
double n2;
double res;
char operacion;
Manos a la Obra
public class Suma extends Operacion{
double suma;
Manos a la Obra
public class Resta extends Operacion{
double resta;
Manos a la Obra
public class Multiplicacion extends Operacion{
double multi;
Manos a la Obra
public class Division extends Operacion{
double div = 0;
http://www.kahoot.it/
Verificamos lo aprendido:
• Absolución de Preguntas.
• Conclusiones y Recomendaciones.
Aplicamos lo aprendido: Asignación para la clase siguiente
• Comentar en el Foro
Gracias