1 of 37

Diseño de Sistemas

2 of 37

Agenda

de la clase

  • Cualidades de diseño
  • Manejo de errores
  • Dudas comunes
  • Macowins: Dudas
  • Macowins: Puesta en común
  • Actividades para la próxima clase

2

3 of 37

1.

Cualidades de diseño

Cómo sopesar alternativas

3

4 of 37

Cualidades de

diseño

Simplicidad

4

5 of 37

Cualidades de

diseño

Robustez

5

6 of 37

Cualidades de

diseño

Flexibilidad

  • Mantenibilidad
  • Extensibilidad

6

7 of 37

Cualidades de

diseño

Acoplamiento

7

8 of 37

Cualidades de

diseño

Testeabilidad

8

9 of 37

Cualidades de

diseño

Cohesión

9

10 of 37

Cualidades de

diseño

Abstracción

10

11 of 37

Cualidades de

diseño

Seguridad

11

12 of 37

Cualidades de

diseño

Escalabilidad

12

13 of 37

Cualidades de

diseño

Performance

13

14 of 37

2.

Manejo de errores

Qué hacer cuando las cosas malen sal

14

15 of 37

Manejo de

errores

Ante un error

  • No ocultarlo
  • Propagarlo
  • Tratarlo solo si sé cómo

15

16 of 37

Manejo de

errores

Mantener consistencia

16

17 of 37

Manejo de

errores

Desconfiar del afuera,

confiar en el adentro

17

18 of 37

Manejo de

errores

Validar si puedo,

fallar si no

18

19 of 37

Excepciones

19

A

F

Llamados sucesivos

Lanzamiento

  • Hay una cadena de delegaciones
  • Algún componente de la cadena lanza una excepción
  • La excepción burbujea hasta que alguien más arriba en la cadena la atrapa
  • La excepción incluye la información del error
  • Corta el flujo de ejecución

Atrapado

B

C

D

E

20 of 37

Call & Return

Códigos de error

20

A

B

Respuesta con código

  • La interfaz implica devolver el estado de la operación
  • El código no es sintácticamente diferenciable de valores de respuesta no-error
  • Implica buscar alternativas para devolver el valor de la operación
  • Deben ser propagadas a mano

Ejecutar acción

-1

0

21 of 37

Call & Return

Cosificar

21

A

B

Respuesta con Objeto

  • Se modela el resultado como un objeto complejo
  • El objeto puede contener el resultado de la operación
  • El objeto puede tiene comportamiento para saber propagarse
  • Muy utilizados en lenguajes funcionales, con pattern matching

Ejecutar acción

Fallo(“Algo

salio mal”)

Exito(/*resultado de la acción*/)

22 of 37

3.

Consultas

A repasar lo que no quedó claro

22

23 of 37

Cómo notar cuándo estas al punto de “programación paranoica” con las excepciones.?

Con algún ejemplo me quedaría mas claro.

23

24 of 37

Cuando diseñamos lo hacemos teniendo en cuenta los requerimientos actuales (más simplicidad) o bien más pensando en los futuros (más flexibilidad)?

Cómo priorizamos a qué cualidades les prestamos atención?

24

25 of 37

Qué diferencia hay entre Casos de Uso y User Stories?

Qué tanto las vamos a usar?

25

26 of 37

Continuación? Callback? KESESO? AIUDAAAA

26

27 of 37

Me cuesta un poco comprender la diferencia entre el "conoce" y el "usa" en el diagrama de clases

27

28 of 37

Entendi que si no tengo el contexto necesario no debo atrapar una excepción sino propagarla al objeto que me envió el mensaje previamente, pero una vez en este… Cómo la manejo?

28

29 of 37

29

Más

preguntas?

30 of 37

4.

MacoWins: dudas

Charlamos un poco de ciertas dudas y consideraciones generales

30

31 of 37

5.

MacoWins: puesta en común

Cómo encarar el diseño de la solución a un problema

31

32 of 37

En ningún lugar dice qué lenguaje debemos utilizar, entonces utilice Wollok ya que es el que vimos en PdeP.

No hice mucho foco en que funcione ya que entiendo que veremos java en esta materia.

32

33 of 37

Me quedaron algunas dudas de cosas que me gustaría que quizás sean objetos en vez de clases (por ejemplo el método de pago "Efectivo" el cual es siempre igual) pero no supe ni como diagramarlas en un diagrama de clases ni como codearlas en java.

33

34 of 37

No tengo dudas puntuales pero me costó un poco el ejercicio ya que no sabía hacer diagrama de clases

34

35 of 37

35

Preguntas?

Algo no te convenció?

36 of 37

Para la clase que viene

Les estaremos enviando un email con:

  • Apuntes para que lean
  • Un ejercicio para que vayan pensando
  • Un form para que entreguen un primer planteo de la solución

Recuerden enviar consultas al foro

36

37 of 37

Muchas Gracias!!

Si tienen consultas

https://github.com/dds-jv/foro

37