viernes, 30 de noviembre de 2012

Arquitectura de software

estas indican la estructura, funcionamiento e interacción entre las partes del software.

Puntos claves

>
La Arquitectura del Software es el diseño de más alto nivel de la estructura de un sistema.
Una Arquitectura de Software, también denominada Arquitectura lógica, consiste en un conjunto de patrones y abstracciones coherentes que proporcionan el marco.
> Una arquitectura de software se selecciona y diseña con base en objetivos y restricciones. Los objetivos son aquellos prefijados para el sistema de información, pero no solamente los de tipo funcional, también otros objetivos como la mantenibilidad, auditabilidad, flexibilidad e interacción con otros sistemas de información. Las restricciones son aquellas limitaciones derivadas de las tecnologías disponibles para implementar sistemas de información. Unas arquitecturas son más recomendables de implementar con ciertas tecnologías mientras que otras tecnologías no son aptas para determinadas arquitecturas. Por ejemplo, no es viable emplear una arquitectura de software de tres capas para implementar sistemas en tiempo real.
> La arquitectura de software define, de manera abstracta, los componentes que llevan a cabo alguna tarea de computación, sus interfaces y la comunicación entre ellos. Toda arquitectura debe ser implementable en una arquitectura física, que consiste simplemente en determinar qué computadora tendrá asignada cada tarea.

Arquitecturas mas comunes
Generalmente, no es necesario inventar una nueva arquitectura de software para cada sistema de información. Lo habitual es adoptar una arquitectura conocida en función de sus ventajas e inconvenientes para cada caso en concreto. Así, las arquitecturas más universales son:
* Monolítica: Donde el software se estructura en grupos funcionales muy acoplados.
* Cliente-servidor: Donde el software reparte su carga de cómputo en dos partes independientes pero sin reparto claro de funciones.
* Arquitectura de tres niveles: Especialización de la arquitectura cliente-servidor donde la carga se divide en tres partes (o capas) con un reparto claro de funciones: una capa para la presentación (interfaz de usuario), otra para el cálculo (donde se encuentra modelado el negocio) y otra para el almacenamiento (persistencia). Una capa solamente tiene relación con la siguiente.

Otras arquitecturas afines menos conocidas son:
En pipeline.
Entre pares.
En pizarra.
Orientada a servicios.
Dirigida por eventos.
Máquinas virtuales.

Cliente-Servidor

Un servidor es una aplicación que ofrece un servicio a usuarios de Internet; un cliente es el que pide ese servicio. Una aplicación consta de una parte de servidor y una de cliente, que se pueden ejecutar en el mismo o en diferentes sistemas. Los usuarios invocan la parte cliente de la aplicación, que construye una solicitud para ese servicio y se la envía al servidor de la aplicación que usa TCP/IP como transporte. TCP es un protocolo orientado a conexión. No hay relaciones maestro/esclavo. Las aplicaciones, sin embargo, utilizan un modelo cliente/servidor en las comunicaciones. El servidor es un programa que recibe una solicitud, realiza el servicio requerido y devuelve los resultados en forma de una respuesta. Generalmente un servidor puede tratar múltiples peticiones (múltiples clientes) al mismo tiempo.




Principales caracteristicas

En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus características son:
* Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo).
* Espera y recibe las respuestas del servidor.
* Por lo general, puede conectarse a varios servidores a la vez.
* Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario.

Al receptor de la solicitud enviada por el cliente se conoce como servidor. Sus características son:
* Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo).
* Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.
* Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado).
* No es frecuente que interactúen directamente con los usuarios finales.

Casos de uso

Un caso de uso es una descripción de los pasos o las actividades que deberán realizarse para llevar a cabo algún proceso. Los personajes o entidades que participarán en un caso de uso se denominan actores.En el contexto de ingeniería del software, un caso de uso es una secuencia de interacciones que se desarrollarán entre un sistema y sus actores en respuesta a un evento que inicia un actor principal sobre el propio sistema.


Actores

Se le llama actor a toda entidad externa al sistema que guarda una relación con éste y que le demanda una funcionalidad. Esto incluye a los operadores humanos pero también incluye a todos los sistemas externos, además de entidades abstractas, como el tiempo. En el caso de los seres humanos se pueden ver a los actores como definiciones de rol por lo que un mismo individuo puede corresponder a uno o más Actores. Suele suceder sin embargo, que es el sistema quien va a tener interés en el tiempo.

Relaciones

* Comunica ("communicates"): Relación (asociación) entre un actor y un caso de uso que denota la participación del actor en dicho caso de uso.
* Usa ("uses") (o "include"): Relación de dependencia entre dos casos de uso que denota la inclusión del comportamiento de un escenario en otro.
* Extiende ("extends"): Relación de dependencia entre dos casos de uso que denota que un caso de uso es una especialización de otro. Por ejemplo, podría tenerse un caso de uso que extienda la forma de pedir azúcar, para que permita escoger el tipo de azúcar (normal, dietético o moreno) y además la cantidad en las unidades adecuadas (cucharadas o bolsas).

domingo, 21 de octubre de 2012

SCRUM Y SUS ROLES


Basicamente las personas relacionadas es este tipo de metodologia se pueden dividir en dos grupos que se identifican como "Roles Principales" y "Roles Auxiliares".

Roles Auxiliares

Product Owner: El Product Owner representa la voz del cliente. Se asegura de que el equipo Scrum trabaja de forma adecuada desde la perspectiva del negocio. El Product Owner escribe historias de usuario.

ScrumMaster (o Facilitador): El Scrum es facilitado por un ScrumMaster, cuyo trabajo primario es eliminar los obstaculos que impiden que el equipo alcance el objetivo del sprint. El ScrumMaster no es el líder del equipo (porque ellos se auto-organizan), sino que actua como una proteccion entre el equipo y cualquier influencia que le distraiga.

Equipo de desarrollo: El equipo tiene la responsabilidad de entregar el producto. Un pequeño equipo de 3 a 9 personas con las habilidades transversales necesarias para realizar el trabajo (analisis, diseño, desarrollo, pruebas, documentacion, etc).

Roles Auxiliares

Los roles auxiliares en los "equipos Scrum" son aquellos que no tienen un rol formal y no se involucran frecuentemente en el "proceso Scrum", sin embargo deben ser tomados en cuenta.

Stakeholders (Clientes, Proveedores, Vendedores, etc): Se refiere a la gente que hace posible el proyecto y para quienes el proyecto producirá el beneficio acordado que justifica su producción. Sólo participan directamente durante las revisiones del sprint.

Administradores: Es la gente que establece el ambiente para el desarrollo del producto.

Apple buscando independizarse de Samsung



Samsung fabricó el procesador A5, que fue utilizado en el iPhone 4S y el iPad 2.

Pese a la cantidad de batallas que han tenido que librar en el campo de patentes, Samsung y Apple continuan siendo socios en la fabricación de las partes internas en el iPhone, iPad y iPod touch, en especial de los procesadores de estos dispositivos. Sin embargo, parece que la compañía de la manzana esta haciendo varios esfuerzos por romper lazos con la surcoreana en este campo.
Actualmente el acuerdo se limita a que Samsung fabrica los procesadores A6, mientras que Apple se encarga de hacer el diseño de los mismos, lo que no ocurrió con los chips A4 y A5.
“Hay tres tipos de clientes de chips (…) algunos quieren que nos ocupemos de todo, desde el diseño del chip y la arquitectura hasta la fabricación. Otros quieren que simplemente los diseñemos y fabriquemos. Y algunos quieren que sólo hagamos los chips. Apple es ahora del tercer tipo, dijo un empleado de Samsung al diario, haciendo referencia al diseño del procesador A6, que se encuentra en el iPhone 5.
Samsung participo activamente en el diseño de los procesadores A4 y A5 de los productos de la compañía de la manzana, queda claro que este es el siguiente paso de Apple para reducir su dependencia de la surcoreana.
Pero este tema no es nuevo. Recordemos que en septiembre pasado Reuters informó que Apple decidió reducir sus pedidos de chips de memoria para su nuevo iPhone a su principal proveedor y competidor, con el objetivo de diversificar su línea de suministro de chips de memoria. 
Y para terminar de confirmar la intención de Apple por independizarse de Samsung, The Wall Street Journal informó recientemente que la compañía de Cupertino contrató a Jim Mergard, un importante diseñador de chips que trabajó unos meses en Samsung, pero abandonó la compañía luego de recibir una oferta de trabajo por parte de Apple. Mergard también fue empleado de AMD, el segundo gran fabricante de chips a nivel mundial.