jueves, 4 de agosto de 2011

Estilos de Arquitectura

ESTILO O PATRON DE DISEÑO:
  • Describe una clase de arquitectura o pieza identificable de las arquitecturas empiracamente dadas. Ej: cliente-servidor, modelo vista controlador, tuberia-filtros, arquitectura en capas.
  • Se manifiesta en arquitectura descriptiva de alto nivel de abstracción
  • Una familia de sistemas en términos de un patrón de organización estructural.
ESTILOS ARQUITECTÓNICOS

Flujo de datos:


Los datos de entrada son transformados a través de una serie de componentes computacionales en los datos de salida. Un patrón tubería y filtro tiene un grupo de componentes llamados filtros, conectados por tuberías que transmiten datos de un componente al siguiente. El filtro está diseñado para recibir entrada de datos de una forma y producir la salida de datos de una forma específica. Si el flujo de datos degenera en una simple línea de transformadores se le llama Secuencial por Lotes.
Enfatiza: reutilizacion y modificabilidad
ad, apropiada para sistemas que implementan transformaciones de datos en pasos sucesivos. No es apropiado para manejar situaciones interactivas.

Estilo de Tuberia-filtros:


  • Por los tubos fluyen dato, y son salidas de un filtro y la entrada de otro.
  • Cada filtro admite uno o varios tubos
  • Cada filtro es independiente del resto y no conocen la identidad de los filtros antes y depués de él.
  • No importa la secuencia (paralelismo).
Desventajas:
  1. Si un filtro necesita contar con todas la entradas antes de producir la salida, requiere entonces de un buffer muy grande.
  2. Cada filtro actúa como proceso independiente consumiendo recursos cada vez que se invoca.
Secuencial por lotes:
Es la estructura típica de un sistema de procesamiendo de datos tradicinales bach. Cada proceso se ejecuta compleatmente antes de comenzar la ejecución del so¿iguiente.

CENTRADO EN LOS DATOS (Integridad de los datos)
Sistemas que se fundan en acceso y actualización de dostos estructurales de almacenamiento. Subestilos: repositorios, las bases de datos, arquitecturas basadas en hipertexto y las quitectura de pizarra.

MODELO-VISTA-CONTROLADOR
Es considerado un patrón que se originó en la comunidad Smalltack para implementar interfaces de usuario en los qu las responsabilidade están bien distribuidas entre los componentes del diseño. Las tres responsabilidades son:

1. Lógica del negocio- modelo
2. Gestion de eventos- controlador
3. Presentacion- vista

Ventajas:

1. Sencillez para crear distintas representaciones de los mismos datosFacilidad para 2. la realización de pruebas unitarias de los componentes, así como de aplicar desarrollo guiado por pruebas
3. Reutilización de los componentes.
4. Simplicidad en el mantenimiento de los sistemas.
5. Facilidad para desarrollar prototipos rápidos

Desventajas:
1. Tener que ceñirse a una estructura predefinida, lo que a veces puede incrementar la complejidad del sistema. Hay problemas que son más difíciles de resolver respetando el patrón

2. La distribución de componentes obliga a crear y mantener un mayor número de ficheros

jueves, 21 de julio de 2011

PATRONES DE DISEÑO

PATRONES PARA ASIGNAR RESPONSABILIDADES (GRAPS)

Los patrones GRASP son parejas de problema-solución con un nombre, que codifican buenos principios y sugerencias relacionados frecuentemente con la asignación de responsabilidades. el termino responsabilidades en con respecto al software hace alución a las funciones que deben ser realizadas por un elemento


PATRONES GOF ( http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o)

Patrones creacionales

  • Object Pool (Conjunto de Objetos): (No pertenece a los patrones especificados por GoF) Se obtienen objetos nuevos a través de la clonación. Utilizado cuando el costo de crear una clase es mayor que el de clonarla. Especialmente con objetos muy complejos. Se especifica un tipo de objeto a crear y se utiliza una interfaz del prototipo para crear un nuevo objeto por clonación. El proceso de clonación se inicia instanciando un tipo de objeto de la clase que queremos clonar.
  • Abstract Factory (Fábrica abstracta): Permite trabajar con objetos de distintas familias de manera que las familias no se mezclen entre sí y haciendo transparente el tipo de familia concreta que se esté usando.
  • Builder (Constructor virtual): Abstrae el proceso de creación de un objeto complejo, centralizando dicho proceso en un único punto.
  • Factory Method (Método de fabricación): Centraliza en una clase constructora la creación de objetos de un subtipo de un tipo determinado, ocultando al usuario la casuística para elegir el subtipo que crear.
  • Prototype (Prototipo): Crea nuevos objetos clonándolos de una instancia ya existente.
  • Singleton (Instancia única): Garantiza la existencia de una única instancia para una clase y la creación de un mecanismo de acceso global a dicha instancia.

Patrones estructurales

  • Adapter (Adaptador): Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla.
  • Bridge (Puente): Desacopla una abstracción de su implementación.
  • Composite (Objeto compuesto): Permite tratar objetos compuestos como si de uno simple se tratase.
  • Decorator (Envoltorio): Añade funcionalidad a una clase dinámicamente.
  • Facade (Fachada): Provee de una interfaz unificada simple para acceder a una interfaz o grupo de interfaces de un subsistema.
  • Flyweight (Peso ligero): Reduce la redundancia cuando gran cantidad de objetos poseen idéntica información.
  • Proxy: Mantiene un representante de un objeto.

Patrones de comportamiento

  • Chain of Responsibility (Cadena de responsabilidad): Permite establecer la línea que deben llevar los mensajes para que los objetos realicen la tarea indicada.
  • Command (Orden): Encapsula una operación en un objeto, permitiendo ejecutar dicha operación sin necesidad de conocer el contenido de la misma.
  • Interpreter (Intérprete): Dado un lenguaje, define una gramática para dicho lenguaje, así como las herramientas necesarias para interpretarlo.
  • Iterator (Iterador): Permite realizar recorridos sobre objetos compuestos independientemente de la implementación de estos.
  • Mediator (Mediador): Define un objeto que coordine la comunicación entre objetos de distintas clases, pero que funcionan como un conjunto.
  • Memento (Recuerdo): Permite volver a estados anteriores del sistema.
  • Observer (Observador): Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automáticamente todos los objetos que dependen de él.
  • State (Estado): Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno.
  • Strategy (Estrategia): Permite disponer de varios métodos para resolver un problema y elegir cuál utilizar en tiempo de ejecución.
  • Template Method (Método plantilla): Define en una operación el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos, esto permite que las subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura.
  • Visitor (Visitante): Permite definir nuevas operaciones sobre una jerarquía de clases sin modificar las clases sobre las que opera.


ARQUITECTURA WEB

DEFINICION:
1.
art de proyectar y contruir sitios (real lengua española).
2. Arquitectura es la oraganizacion fundamental de un sistema descrita en: sus componentes, relacion entre ellos y con el ambiento, y principio que guian su diseño y evolucion(IEEE 1471).
3. La estructura de estructura de un sistema , la cual abarca componentes de software, propiedades externas visibles de estos componentes y sus relaciones(Software Architecture in Practice-Kazman).

ROL DEL ARQUITECTO SOFTWARE

1. Los arquitectos están la mayoría del tiempo escuchando los clientes, entendiendo a profundidad sus necesidades y recursos, investigando y documentando ordenadamente, creando una visión practica de una estructura y creando un mapa de la misma. Su la funcion del arquitecto es escuchar y abogar por el cliente (Raúl de Villa Cano, Universidad de EAFIT).

2. El arquitecto debe entender el proposito del portal y debe ser capaz de ver todos los usos y los problemas para poder diseñar (Juan Pablo Garcia Gonzalez).

3. El rol del arquitecto en un proyecto de desarrollo es responsabilizarse de: liderar el proceso de arquitectura, producir los artefactos necesarios: documentos de descripcion de arquitectura, y elaborar modelos y prototipos de arquitectura (RUP)

El arquitecto:

  • visualiza el comportamiento del sistema
  • crea los planos del sistema
  • define la forma en la cual los elementos del sistema trabajan en conjunto
  • responsable de integrar los requerimientos no funcionales (NRFs) en el sistema.(SUN)

El rol del arquitecto debe desempeñarse en todo el ciclo de vida del software, ya que los requisitos son cambiantes.

ASPECTOS A CONSIDERAR PARA EL DISEÑO DE PORTALES WEB

  • velocidad de carga rapida
  • evitar un pagina de inicio inutil
  • evitar montajes molestos
  • utilizar un diseño coherente
  • facilitar la navegacion a traves de tu sitio
  • tener una pagina completa.
  • facil de utilizar, evitar contenidos pesados, metatag.
  • relacionar el portal con paginas ya posicionadas.
  • presentacion de informacion veraz
  • buen contenido visual, manejo de la resolucion de las pantallas
  • contraste entre los colores, por ejemplo: letras claras fondo oscuro.
  • tamaños de las fuentes debe ser optimo.
  • los complementos compactibles con los navegadores.
  • logos a la superior izquierdo.
  • mapa de sitio
  • cantidad de clic debe ser menor o igual a 3.
  • los menús de navegacion.
  • no saturar lo con publicidad y de no colocar los link de las paginas que hagan olvidarse de la nuestra .

SEO






Optimización de un proyecto web en los motores de búsqueda a través de un proceso de análisis y adaptación que tiene como principal objetivo mostrar naturalmente en primeras posiciones de los resultados.




POSICIONAMIENTO SEO

El posicionamiento en buscadores o posicionamiento web es el resultado de la recuperación de información en la base de datos de los grandes motores de búsqueda de Internet (Google, Yahoo!, MSN) por el uso de algoritmos de búsqueda en el software.


Esto es, cuando alguna persona en el mundo teclee en su navegador una de las frases o palabras clave que asignamos a nuestra página web, esta aparezca en los primeros 10 lugares de la primera pagina de ese buscador. De tal manera, al estar nuestra página web en esa posición, tenga un 98% de posibilidades de ser visitada. Recuerde que entre más visitas, mas clientes potenciales y por consiguiente mas ventas.