Documentos de Académico
Documentos de Profesional
Documentos de Cultura
del Software
Clase # 1
Ing. Christian Vega
Uso de API y manejo de errores
Clase # 1
Ing. Christian Vega
Propósito de la Clase
• En todo ese proceso, el usuario solo ve una cara del proceso, la página
del cine, pero tras bambalinas hay muchas aplicaciones que se están
comunicando gracias a las API.
• En la web encontramos site donde hay una columna lateral que tiene
varios iconos de redes sociales, como Facebook, Twitter y Google+.
Estos son enlaces que se encargan de «llamar» a las APIs asociadas a
esos servicios para que el usuario pueda «tuitear» o compartir la
información en Facebook sin tener que salir de la página web.
Cronología de la historia de las API
¿Para qué necesitamos una API?
• Para evitar esos problemas, puede considerarse como una buena práctica
en la mayoría de ocasiones el uso de un control de versiones en la API.
• Normalmente mediante la creación de distintas URLs por cada proceso de
incorporación de nuevas características y su impacto en las aplicaciones de
terceros. Eso genera también un listado de versiones con fecha y
novedades en cada caso. Sucede, por ejemplo, con servicios como
Microsoft Azure y Amazon Web Services.
• En la misma línea ha trabajado Facebook desde 2011, introduciendo un
sistema de control de versiones más razonable para la comunidad de
desarrolladores.
Características que debe tener una API
Estable frente a las mejoras
• Una empresa que posee datos únicos puede aprovechar este recurso
permitiendo el acceso a él a través de una API. Gracias al contenido,
los datos y los servicios únicos, el acceso a la API puede ser
sumamente valioso.
• A la hora de decidir qué deben hacer las API por una empresa,
es preciso analizar los dos enfoques. Por lo tanto, la decisión acerca
del objetivo suele ser una combinación de ambos.
Diseño del API
El objetivo
• Parámetros de tipo
• Una declaración genérica contiene uno o varios tipos desconocidos conocidos
como parámetros de tipo. A los parámetros de tipo se les asigna un nombre
que representa el tipo dentro del cuerpo de la declaración genérica. El
parámetro de tipo se utiliza como tipo dentro del cuerpo de la declaración
genérica. La declaración genérica de List<T> contiene el parámetro de tipo T.
• Argumentos de tipo
• El argumento de tipo es el tipo real utilizado en lugar del parámetro de tipo
cuando el genérico se especializa para uno o varios tipos específicos. Por
ejemplo, int es el argumento de tipo en List<int> . Los tipos de valor y los
tipos de manipulador son los únicos tipos que se permiten como argumento
de tipo genérico.
Parametrización y clases genéricas
Terminología usada con los genéricos
• Tipo construido
• Un tipo construido a partir de un tipo genérico se conoce como tipo
construido. Un tipo no especificado completamente, como List<T> es un tipo
construido abierto; un tipo completamente especificado,
como List<double>, es un tipo construido cerrado o un tipo especializado.
• Los tipos construidos abiertos pueden usarse en la definición de otros
métodos o tipos genéricos y no se pueden especificar completamente hasta
que no se especifica el propio genérico envolvente.
Parametrización y clases genéricas
Terminología usada con los genéricos
• Tipo construido
• Por ejemplo, este es un uso de un tipo construido abierto como clase base
para un genérico:
Parametrización y clases genéricas
Clases genéricas
• Supóngase una clase que representa una cuenta bancaria que cuenta
con una rutina depositar que recibe un importe como parámetro y
agrega ese importe al saldo:
Programación defensiva VS Diseño por contrato
• Redundancia dinámica
• El error es informado por el propio módulo, que debe detectarlo. La
detección puede ser por el entorno o por la apliación.
• El módulo debe ser capaz de confinar el error y valorar sus daños. El
confinamiento consiste en establecer cortafuegos que delimiten el alcance
del efecto de los errores. Se pueden realizar por:
• Descomposición modular: delimita la difusión del error en el módulo.
• Acciones atómica: en caso de error devuelve el sistema a un estado de consistencia
Tolerancia a los fallos
• Redundancia dinámica
• Recuperación de errores, hay que tratar de volver al estado de operación
normal o de degradación en la funcionalidad. Existen dos tipos de
recuperación:
• Recuperación hacia adelante, se continua con la ejecución del sistema haciendo
correcciones selectivas de su estado
• Recuperación de errores hacia atrás, en caso de error el sistema se restaura a un estado
seguro previo y se ejecuta desde ese punto - checkpoint
Tolerancia a los fallos
• Bloques de recuperación
• Se trata de bloques normales de programación con un punto de recuperación
al principio y un test de aceptación al final que comprueba que el sistema se
encuentra en un estado aceptable al finalizar la ejecución del bloque.
• Si existe un fallo se restaura el estado de ejecución al inicio del bloque
continuando con un procedimiento alternativo. Si todas las alternativas
presentan error el bloque mostrará un estado de error.
• Es el test de aceptación el que se encarga de la detección de el error lo que
puede suponer una sobrecarga. Por eso se introduce cierto margen de
tolerancia para la aceptación.
Gracias por su atención