Introducci贸n al curso

1

Introducci贸n al curso de Profesional de Arquitectura de Software

Atributos de calidad

2

Definici贸n

3

Atributos: Idoneidad funcional

4

Atributos: Eficiencia de ejecuci贸n

5

Atributos: Compatibilidad

6

Atributos: Usabilidad

7

Atributos: Confiabilidad

8

Atributos: Seguridad

9

Atributos: Mantenibilidad

10

Atributos: Portabilidad

11

Tensiones entre atributos

12

Analizando PlatziServicios

Patrones de arquitectura

13

Patrones monol铆ticos vs distribuidos

14

Patrones: Modelo Vista Controlador

15

Patrones: Capas

16

Patrones: Orientado a eventos / Provisi贸n de eventos.

17

Patrones: Microkernel - Plug-ins

18

Patrones: Comparte-nada

19

Patrones: Microservicios

20

Patrones: CQRS

21

Patrones: Hexagonal - Puertos y adaptadores

22

Patrones: Dise帽o orientado al dominio

23

Combinando patrones de arquitectura

24

Analizando nuevamente PlatziServicios

Dise帽o de una arquitectura

25

Pararse en hombros de gigantes

26

Herramientas y partes de un dise帽o: Tipos de conectores

27

Conectores: Llamado asincr贸nico / sincr贸nico. Modelo Cliente servidor.

28

Conectores: Enrutador, difusi贸n

29

Conectores: Pizarra, repositorio, colas, modelo PUBSUB

30

Escenarios y t谩cticas

31

Escenarios: Disponibilidad, detecci贸n, reparaci贸n

32

Escenarios: Reintroducci贸n y prevenci贸n

33

Escenarios: Mantenibilidad

34

Escenarios: Prevenir efectos domin贸 y diferir enlace

35

Escenarios: Eficiencia de ejecuci贸n

36

Escenarios: Seguridad

37

Escenarios: Capacidad de prueba

38

Escenarios: Usabilidad

39

Validar las decisiones de dise帽o: Arquitectura en evoluci贸n

40

脷ltimo an谩lisis a PlatziServicios

Modelado y documentaci贸n de arquitectura

41

C贸mo comunicar la arquitectura: Vistas y Puntos de vista

42

Documentaci贸n vs implementaci贸n

43

Conclusiones del curso

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

3D
21H
23M
4S

Atributos: Mantenibilidad

9/43
Recursos

La mantenibilidad como atributo de calidad es la capacidad del sistema de ser modificado. Ya sea para agregar nuevas funcionalidades o reparar errores.

  • Modularidad, La capacidad de un sistema de ser separado en partes y que el cambiar una de las partes del sistema no afecta el desempe帽o del sistema.

  • Reusabilidad, es una caracter铆stica que habla sobre cuanto podemos aprovechar un modulo o una pieza de software para un prop贸sito diferente.

  • Capacidad de an谩lisis, cu谩nto podemos entender el problema que estamos resolviendo y conectar ese problema con la implementaci贸n de c贸digo. Hablamos de conexi贸n entre el c贸digo y los requerimientos. una herramienta es GERKIN.

  • Capacidad de prueba, facilidad en la implementaci贸n de tests.

Un error muy com煤n es utilizar la fecha actual en sistemas y evaluar el comportamiento de la porci贸n de c贸digo.

Aportes 21

Preguntas 6

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Este curso es m谩s entendible y f谩cil de entender que el curso de fundamentos

Mis Apuntes:

Mantenibilidad

Nos referimos a todas esas cosas que hacen que un sistema pueda cambiar. Pueda evolucionar y a su vez pueda ser reparado.

Modularidad. Habla de la capacidad de un sistema en ser separado en partes d贸nde cada una de esas partes sea independiente de las otras.

Reusabilidad. Es una caracter铆stica que habla sobre cu谩nto podemos aprovechar el esfuerzo que hicimos en desarrollar un m贸dulo o una pieza de software y reutilizarla en otro lado, es decir, volver a usarla para otro prop贸sito diferente o para una funcionalidad ligeramente diferente.

Capacidad de an谩lisis. Conexi贸n entre el c贸digo y los requerimientos.

Capacidad de modificaci贸n. Cu谩n f谩cil o dif铆cil es ir al c贸digo y cambiar el comportamiento.

Capacidad de prueba. Habla sobre cu谩n f谩cil o dif铆cil es crear estos test para que el sistema garantice que hace lo que se requiere que haga. Para tener una mejor capacidad de prueba tenemos que darle m谩s importancia a nuestra estructura del c贸digo, a nuestras operaciones y cu谩n at贸micas son y cu谩n independientes son unas de otras.

Mantenibilidad.
Se refiere a todas esas cosas que hacen que el sistema pueda cambiar, evolucionar y a su vez, ser reparado.

  • Modularidad -> Capacidad de ser separado en partes independientes.
  • Reusabilidad -> Poder reutilizar partes del c贸digo utiliz谩ndolo en diferentes lados. Utilizar el mismo c贸digo para un prop贸sito diferente.
  • Capacidad de an谩lisis ->Conexi贸n entre el c贸digo y sus requerimientos.
  • Capacidad de modificaci贸n -> Que tan f谩cil es ir al c贸digo y cambiar el comportamiento sin afectar su funcionalidad.
  • Capacidad de prueba -> Crear test para que el sistema garantice funcionalidad cuando se realicen cambios

Capacidad de an谩lisis
La herramienta que nos ayuda a tener conexi贸n entre el c贸digo y los requerimientos, es Gherkin que sale de la comunidad de BDD (Behavior Driven Development).
Solo para que no batallen al buscarla, como me pas贸 a mi.

  • Los sistemas distribuidos nos ayudan a mejorar la modularidad de un sistema.

  • La capacidad de An谩lisis es cuanta dificultad existe en entender el problema y saber que m贸dulos toca, que requerimientos toca.

La mantenibilidad se mide con cobertura de c贸digo en Test y An谩lisis Est谩tico de C贸digo.

De que forma se crean o se tratan m茅todos puros? ya que normalmente los m茅todos y funciones usualmente requieren de otro m茅todo o funci贸n para continuar con el flujo que se programe? y hasta que punto se tiene en cuenta esto con la modularidad?

Quisiera entender como se maneja el tema de modularidad a nivel de apliaciones WEB. Mi duda es ya que yo puedo tener una aplicacion web y extraigo sus funcionalidades m谩s importantes. en el ejemplo aplicacion que Cotiza, Documenta, Expide. entonces para mi cada uno de estos podria catalogarce como un modulo, pero mi pregunta puntual es si a nivel de WEB se hace un despliegue para cada uno de esos modulos. si es as铆 para mi la forma de hacerlo es a nivel de servicios yo expondira un servicio bien sea API o REST para cada uno de estos modulos, lo que quiero saber es si est谩 afirmacion es correcta, osea que si los modulos a nivel de WEB se manejan a travez de servicios,

escuche modularidad y lo primero que me vino a la mente es docker

Mantenibilidad
Todo lo que hace que el sistema pueda cambiar y a su vez ser reparado
Podemos medirlo a trav茅s de test y an谩lisis est谩tico del c贸digo
Modularidad
Capacidad de ser separado en partes y que no se afecten entre s铆
Reusabilidad
Cuanto podemos aprovechar un m贸dulo en otro lado
Ejemplo: Servicio Opensource
Capacidad de An谩lisis
Cuanto podemos entender el problema que estamos teniendo e implementarlo a c贸digo, conexi贸n entre el c贸digo y los requerimientos
Capacidad de Modificaci贸n
La facilidad de cambiar el c贸digo y su comportamiento, si afecta o no afecta otra parte del sistema y cuanto sabemos nosotros sobre eso
Capacidad de Prueba
Habla sobre la dificultad de crear test para garantizar que el sistema hace lo que queremos que haga

  • Modularidad. Capacidad de un sistema o programa de ordenador (compuesto de componentes discretos) que permite que un cambio en un componente tenga un impacto m铆nimo en los dem谩s.
  • Reusabilidad. Capacidad de un activo que permite que sea utilizado en m谩s de un sistema software o en la construcci贸n de otros activos.
  • Analizabilidad. Facilidad con la que se puede evaluar el impacto de un determinado cambio sobre el resto del software, diagnosticar las deficiencias o causas de fallos en el software, o identificar las partes a modificar.
  • Capacidad para ser modificado. Capacidad del producto que permite que sea modificado de forma efectiva y eficiente sin introducir defectos o degradar el desempe帽o.
  • Capacidad para ser probado. Facilidad con la que se pueden establecer criterios de prueba para un sistema o componente y con la que se pueden llevar a cabo las pruebas para determinar si se cumplen dichos criterios.

Mantenibilidad
Esta caracter铆stica representa el grado de efectividad y eficiencia con la que un producto o sistema puede ser modificado para mejorarlo, corregirlo o adaptarlo a los cambios en el entorno y en los requisitos. Esta caracter铆stica se compone de las siguientes subcaracter铆sticas:
鈥 Modularidad, Grado en el cual un sistema o programa de computadora se compone de componentes discretos tales que un cambio en un componente tiene un impacto m铆nimo en otros componentes.

鈥 Reusabilidad, Grado en el cual un activo puede ser utilizado en m谩s de un sistema, o en la construcci贸n de otros activos.

鈥 Analizabilidad, Grado de efectividad y eficiencia con el cual es posible evaluar el impacto en un producto o sistema de un cambio intencional a una o m谩s de sus partes, o diagnosticar un producto por deficiencias o causas de fallas, o identificar partes a ser modificadas .

鈥 Modificabilidad, Grado en que un producto o sistema puede ser modificado de manera efectiva y eficiente sin introducir defectos o degradar la calidad del producto existente.

鈥 Testabilidad, Grado de eficacia y eficiencia con el que se pueden establecer los criterios de prueba para un sistema, producto o componente y se pueden realizar pruebas para determinar si se han cumplido esos criterios.
Principio de responsabilidad 煤nica. Buenas pr谩cticas de dise帽o.

Mantenibilidad: cuando el producto o sistema se adapta a mejoras, correcciones. Ese grado de efectividad y eficiencia se le conoce como mantenibilidad. Y tiene las siguiente sub caracter铆sticas: Modularidad, Reusabilidad, Capacidad de modificaci贸n, Capacidad de An谩lisis, Capacidad de Prueba

Con mantenibilidad referimos a que tanto un sistema pueda a cambiar o evolucionar agregando nuevas funcionalidades (o actualizarlas) y tambi茅n a que 茅ste (el sistema) pueda ser reparado cuando ocurra un error. La mantenibilidad est谩 muy relacionada con el testing. Cuando no implementamos test a nuestro c贸digo la mantenibilidad se ve muy afectada. Para garantizar la mantenibilidad de un sistema tenemos una herramienta muy potente: el an谩lisis est谩tico de c贸digo. El an谩lisis est谩tico de c贸digo lee el c贸digo (no lo ejecuta) y da sugerencias para que 茅ste sea m谩s mantenible. ****

  1. Modularidad: Habla de la capacidad de un sistema de ser separado en partes y que 茅stas sean independientes de otras. Los patrones de arquitectura distribuidos ayudan a mejorar la modularidad de un sistema.
  2. Reusabilidad: Se trata de aprovechar el esfuerzo al desarrollar un m贸dulo y utilizarlo en otro. 脡ste 煤ltimo puede tener una funcionalidad diferente o ligeramente diferente.
  3. Capacidad de an谩lisis: Que tan bien se entiende el problema que se est谩 resolviendo y conectar ese problema a implementaci贸n en c贸digo. Es una conexi贸n entre el c贸digo y los requerimientos del sistema.
  4. Capacidad de modificaci贸n: Indica qu茅 tan f谩cil es ir al c贸digo y cambiar el comportamiento, es decir, que seguridad tenemos de que no se est谩 rompiendo algo al aplicar un cambio en un componente. La herramienta m谩s fuerte para medir la capacidad de modificaci贸n son los test automatizados.
  5. Capacidad de prueba: Hacen que tan facil o dificil es crear los test para garantizar el funcionamiento del sistema. Es importante darle prioridad a la estructura del c贸digo con el fin de que los test sean f谩ciles de implementar. Es bueno implementar funciones o m茅todos puros con el objetivo de que el test sea muy claro.

Medimos la mantenibilidad con buenas coberturas se test y an谩lisis est谩tico del c贸digo de principio a fin de la aplicaci贸n. Se puede usar software para leer el c贸digo y mostrar alertas para mejorar el c贸digo y sea m谩s mantenible.

Acabo de notar que tu te aprediste esto de memoria porque en ningun momento vuelves a ver la computadora

Estimado Guido, que herramientas para analisis de codigo estatico recomiendas segun la experiencia?

pruebas que verifiquen que el comportamiento del c贸digo es correcto desde el punto de vista de negocio.- Gerkin

Modularidad: Como se puede separar el sistema sin que falle?

Reusabilidad: Como se puede usar una pieza para otro pr贸sito? ej. open source

Capacidad de an谩lisis: Cuanto puedo entender el cambio?

**Capacidad de modificaci贸n:**que tan f谩cil es ir al c贸digo sin romperlo?

Capacidad de prueba: Cu谩n f谩cil es hacer pruebas?