Professional Documents
Culture Documents
Poo
1.1. Polimorfismo
1.2. Encapsulamiento
1.3. Genericidad
2. Arquitectura
2.1. Aspect oriented programming
2.2. Software as a service
2.3. Monitorizacin: como la implementaras.
2.4. Certificados de servidor
2.5. Cifrado de ensamblados
3. Patrones y diseo
3.1. Deuda tcnica
3.2. Patrones y buenas prcticas conocidos
3.3. Stateless Stateful
3.4. DDD
3.5. REST
3.6. Cache
4. Testing
4.1. Fakes, Mocks y stubs
4.2. Caja Negra y caja blanca
4.3. Tipos de test
4.4. Alpha-Beta testing
5. Escalabilidad
6. Resistencia a fallos
Abstract Factory: proporciona una interfaz para crear familias de objetos o que dependen
entre s, sin especificar sus clases concretas.
Factory Method: define una interfaz para crear un objeto, pero deja que sean las subclases
quienes decidan qu clase instanciar. Permite que una clase delegue en sus subclases la
creacin de objetos.
Prototype: especifica los tipos de objetos a crear por medio de una instancia prototpica, y
crear nuevos objetos copiando este prototipo.
Singleton: garantiza que una clase slo tenga una instancia, y proporciona un punto de
acceso global a ella.
Adapter: convierte la interfaz de una clase en otra distinta que es la que esperan los clientes.
Permiten que cooperen clases que de otra manera no podran por tener interfaces
incompatibles.
Composite: combina objetos en estructuras de rbol para representar jerarquas de partetodo. Permite que los clientes traten de manera uniforme a los objetos individuales y a los
compuestos.
Flyweight: usa el compartimiento para permitir un gran nmero de objetos de grano fino de
forma eficiente.
Patrones de comportamiento
Observer: define una dependencia de uno-a-muchos entre objetos, de forma que cuando un
objeto cambia de estado se notifica y actualizan automticamente todos los objetos.
State: permite que un objeto modifique su comportamiento cada vez que cambia su estado
interno. Parecer que cambia la clase del objeto.
Strategy: define una familia de algoritmos, encapsula uno de ellos y los hace
intercambiables. Permite que un algoritmo vare independientemente de los clientes que lo
usan.
Visitor: representa una operacin sobre los elementos de una estructura de objetos. Permite
definir una nueva operacin sin cambiar las clases de los elementos sobre los que opera.
SaaS
Software como un Servicio. abreviadamente ScuS (del ingls: Software as a Service, SaaS) es un
modelo de distribucin de software donde el soporte lgico y los datos que maneja se alojan en
servidores de una compaa de tecnologas de informacin y comunicacin (TIC), a los que se
accede va Internet desde un cliente. La empresa proveedora TIC se ocupa del servicio de
mantenimiento, de la operacin diaria y del soporte del software usado por el cliente. Regularmente el
software puede ser consultado en cualquier computador, se encuentre presente en la empresa o no.
Se deduce que la informacin, el procesamiento, los insumos, y los resultados de la lgica de
negocio del software, estn hospedados en la compaa de TIC.
El software es un producto que se puede distribuir de varias maneras. De forma clsica se hace
mediante una instalacin directa en equipos del cliente. Normalmente, si alguien quiere usar una
aplicacin de ventas, compra el CD-producto de instalacin, ejecuta un programa de configuracin, da
sus claves y, de este modo, puede comenzar a utilizar el sistema. Pero si el usuario necesita que otra
persona al extremo del globo terrqueo consulte su lista de clientes, o de cobros pendientes, o de
precios, y los quisiera manipular con el mismo software, necesitara otro CD-producto, o necesitara
bajar ese programa ejecutable de la web, y generalmente necesitara otra licencia para ese producto,
o hacer uso de una VPN, o comunicarse mediante correo electrnico con la sede de operaciones. En
cambio, si el software est modelado como servicio, los requerimientos pueden ser mucho ms
simples.
REST
en la actualidad se usa para describir cualquier interfaz entre sistemas que utilice
directamente HTTP para obtener datos o indicar la ejecucin de operaciones sobre los datos, en
cualquier formato (XML, JSON, etc) sin las abstracciones adicionales de los protocolos basados en
patrones de intercambio de mensajes, como por ejemplo SOAP. Es posible disear sistemas de
servicios web de acuerdo con el estilo arquitectural REST de Fielding y tambin es posible disear
interfaces XMLHTTP de acuerdo con el estilo de llamada a procedimiento remoto (RPC), pero sin
usar SOAP. Estos dos usos diferentes del trmino REST causan cierta confusin en las discusiones
tcnicas, aunque RPC no es un ejemplo de REST.
Los sistemas que siguen los principios REST se llaman con frecuencia RESTful.
REST afirma que la web ha disfrutado de escalabilidad como resultado de una serie de diseos
fundamentales clave:
Un protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda la informacin necesaria
para comprender la peticin. Como resultado, ni el cliente ni el servidor necesitan recordar ningn
estado de las comunicaciones entre mensajes. Sin embargo, en la prctica, muchas aplicaciones
basadas en HTTP utilizan cookies y otros mecanismos para mantener el estado de la sesin (algunas
de estas prcticas, como la reescritura de URLs, no son permitidas por REST)
Un conjunto de operaciones bien definidas que se aplican a todos los recursos de informacin: HTTP
en s define un conjunto pequeo de operaciones, las ms importantes
son POST, GET, PUT y DELETE. Con frecuencia estas operaciones se equiparan a las
operaciones CRUD en bases de datos (ABMC en castellano: crear,leer,actualizar,borrar) que se
requieren para la persistencia de datos, aunque POST no encaja exactamente en este esquema.
Una sintaxis universal para identificar los recursos. En un sistema REST, cada recurso es
direccionable nicamente a travs de su URI.
El uso de hipermedios, tanto para la informacin de la aplicacin como para las transiciones de
estado de la aplicacin: la representacin de este estado en un sistema REST
son tpicamente HTML o XML. Como resultado de esto, es posible navegar de un recurso REST a
muchos otros, simplemente siguiendo enlaces sin requerir el uso de registros u otra infraestructura
adicional.
Qu es la genericidad?
La genericidad nos permite pasar uno o ms tipos genricos, como parmetro a un mtodo, clase,
estructura o interfaz. O sea, este nuevo tipo (que llamaremos <T>), viene a sustituir al tipo object, que
es usado sobre todo en estructuras de propsito general, como son los arraylist, pilas (stack), colas
(queue) y otras que usamos frecuentemente, en las cuales todos los elementos deben ser de un
mismo tipo.
El polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintcticamente
iguales a objetos de tipos distintos. El nico requisito que deben cumplir los objetos que se utilizan de
manera polimrfica es saber responder al mensaje que se les enva. El modo de poder utilizar objetos
de manera polimrfica sea que compartan una raz comn, es decir, una jerarqua de clases, ya que
esto proporciona la compatibilidad de tipos de datos. Algunos lenguajes permiten que dos objetos de
distintas jerarquas de clases respondan a los mismos mensajes, a travs de las interfaces
Encapsulamiento
Es el ocultamiento del estado, es decir, de los datos miembros de un objeto de manera que slo se
pueda cambiar mediante las operaciones definidas para ese objeto.
Cada objeto est aislado del exterior, es un mdulo natural, y la aplicacin entera se reduce a un
agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados de un objeto
contra su modificacin por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios
e interacciones.
Testing
Unitarios
Integracin
Regresin
Humo
Sistema
Desempeo
Carga
Estrs
Volumen
Recuperacin
Escalabilidad
Pruebas de
localizacin
Usabilidad
Seguridad
Rendimiento
Mantenibilidad
Portabilidad
Alpha Testing
Beta Testing
BB DD Relacionales
mejor uso de una base de datos relacional est organizando grandes cantidades de datos .
Bases de datos relacionales utilizan varias tablas para definir tipos diferentes de datos , a
diferencia de otras bases de datos . Las relaciones entre los puntos de datos especficos en
las dos tablas se enlazan mediante la definicin de esa relacin . Adems, permite una visin
ms sistemtica y clara de los datos sin tener que repetir la informacin . Cmo funcionan
las bases de datos relacionales
La base de datos relacional toma la informacin con dos partes bien diferenciadas y la coloca
en dos mesas separadas . Por ejemplo , si los datos se organizan los contactos de un grupo
de estudiantes y las calificaciones del examen de ese mismo grupo , la informacin de los
estudiantes se puede clasificar en dos tablas diferentes . Los grados de la prueba entraran
en una y la informacin de contacto a otro . Los datos se vincula con un cdigo seguro de que
aparece en ambas tablas que aparecen en la informacin de la misma persona.
Ventajas de la base de datos
bases de datos relacionales relacionales permiten que los datos sean claros de corte y
despejada . Los problemas surgen cuando todos los datos en el ejemplo anterior slo estn
contenidos en una tabla , a diferencia de una base de datos relacional . Debido a que cada
estudiante tiene mltiples grados , su informacin de contacto se entr varias veces a lo largo
de cada grado. Esto es innecesario y puede crear confusin en la bsqueda de la base de
datos . Al contar con ellos por separado , como en una base de datos relacional , la
informacin de contacto slo es necesario introducir una vez.
Desventajas de la Base de Datos Relacional
El principal problema a la hora utilizando una base de datos relacional es la complejidad que
surge cuando se crea por primera vez. Es absolutamente vital que las relaciones definidas
entre las tablas son correctas y que cada conjunto de informacin est vinculada a su pareja.
Aunque menos informacin tiene que ser ingresado en total que con otras bases de datos ,
asegurndose de que cada punto est configurado correctamente es un proceso lento. Por
otra parte, las relaciones pueden llegar a ser extremadamente complicado cuando una base
de datos relacional contiene algo ms que dos tablas.
Cundo utilizar una base de datos relacional
No siempre es necesario el uso de una base de datos relacional. Se puede ahorrar tiempo
ms adelante al analizar los datos en busca de patrones o especficos, pero, posiblemente,
puede obstaculizar el progreso en el principio. La creacin de una nica tabla se proporciona
suficiente organizacin si los datos son simple o si las piezas de datos slo deben
introducirse una vez. Para continuar con el ejemplo anterior , si slo una calificacin de una
prueba es organizada junto con la informacin de contacto, slo se necesitar una tabla. Es
slo cuando ciertos valores - como la direccin o el nmero de telfono - se estn repitiendo
que una base de datos relacional es til