jueves, 20 de marzo de 2014

Metodología de desarrollo de software orientada a objetos

MODELOS DE PROCESOS O CICLO DE VIDA:

Para cada fase o etapa, existen sub-etapas o tareas. El modelo de proceso o modelo de ciclo de vida utilizado para el desarrollo define el orden para las tareas o actividades involucradas, la coordinación entre ellas, enlace y realimentación.
Los más conocidos son:
 - modelo en cascada o secuencial.
 - modelo espiral.
 - modelo iterativo incremental.
Hay a su vez algunas variantes o alternativas, según la aplicación y sus requisitos.


Modelo en cascada o secuencial:

También llamado modelo clásico, tradicional o lineal secuencial. El modelo en cascada puro poco se utiliza al pie de la letra, ya que esto implicaría un previo y absoluto conocimiento de los requisitos, la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores; ello sólo podría ser aplicable a escasos y pequeños desarrollos de sistemas. Por ejemplo pasar del Diseño a la Codificación implicaría un diseño exacto y sin errores ni probable modificación o evolución y es irreal pensar en que no vaya a haber variantes ni errores, ya que intrínsecamente el software es de carácter evolutivo, cambiante y difícilmente libre de errores, tanto durante su desarrollo como durante su ciclo operativo.


Algún cambio durante la ejecución de una cualquiera de las etapas en este modelo secuencial implicaría reiniciar desde el principio todo el ciclo completo, lo cual redundaría en altos costos de tiempo y desarrollo.
Sin embargo, es uno de los más utilizados actualmente por ser eficaz y simple, se produce alguna realimentación entre etapas, que no es completamente predecible ni rígida; para dar oportunidad al desarrollo de software en los cuales hay cambios y evoluciones en su ciclo de vida.

Tiene seis etapas:
 - Análisis del Sistema
 - Análisis de Requisitos de Software
 - Diseño
 - Codificación
 - Prueba
 - Mantenimiento

Lo normal en el modelo cascada es aplicar el mismo con sus etapas realimentadas y actualizadas de forma periódica, permitiendo retroceder de una a la anterior o volver a otras anteriores, si es requerido, lo que lo convierte en un modelo en cascada realimentado, el cual resulta muy atractivo si el proyecto presenta alta rigidez (pocos o ningún cambio), los requisitos son muy claros y están correctamente especificados.

Desventajas del modelo en cascada:

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto. Si los cambios se producen en etapa madura pueden ser desastrosos en un proyecto grande.

El cliente debe tener paciencia ya que el software no estará disponible hasta muy avanzado el proyecto. Un error detectado por el cliente (en fase de operación) puede ser desastroso, implicando reinicio del proyecto, con altos costos.

 Modelo evolutivo:

La evolución del software, los requisitos del usuario y producto suelen cambiar conforme se desarrolla el mismo. Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo, por lo que se debe introducir una versión funcional limitada de alguna forma, para satisfacer al cliente y aliviar las presiones competitivas; es por esto que los desarrolladores necesitan modelos que evolucionen progresivamente.
En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software, se plantea como estático; Los evolutivos son modelos iterativos, que permiten desarrollar versiones cada vez más completas y complejas, hasta llegar al objetivo final, incluso evolucionar más allá durante la fase de operación. Los modelos Iterativo Incremental y Espiral son dos de los más conocidos y utilizados del tipo evolutivo.

 
 Modelo iterativo incremental:
Permite la entrega de versiones parciales a medida que se va construyendo el producto final, Cada versión emitida incorpora a los anteriores incrementos las funcionalidades y requisitos, para mejorarlas.


Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente, por ejemplo, en la figura, mientras se realiza el diseño detalle del primer incremento ya se está realizando en análisis del segundo. Cada incremento concluye con la actividad de Operación y Mantenimiento. Por medio de este modelo se entrega software en partes funcionales más pequeñas, pero funcionales y reutilizables, con funciones suplementarias llamadas incrementos.
Estos incrementos, son escogidos en base a prioridades predefinidas de algún modo y permite una implementación con refinamientos sucesivos (ampliación y/o mejora); Con cada incremento se agrega una nueva funcionalidad, se cubren nuevos requisitos o se mejora la versión anterior del producto.

Además brinda flexibilidad durante el desarrollo, para incluir cambios en los requisitos por parte del usuario, dependiendo de sus necesidades. Luego de cada integración se entrega un producto con mayor funcionalidad que el anterior; Este proceso se repite hasta alcanzar el producto final.
El modelo es aconsejable para el desarrollo de software, donde se observa en su etapa inicial de análisis que posee áreas bastante bien definidas a cubrir, con suficiente independencia como para ser desarrolladas en etapas sucesivas.

A veces pueden no existir prioridades funcionales por parte del cliente, pero el desarrollador debe establecerlas de todos modos, con algún criterio, ya que en base de estas se desarrollarán y entregarán los distintos incrementos.
El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular, por tanto este modelo facilita tal paradigma de diseño.

El modelo proporciona todas las ventajas del modelo en cascada realimentado, pero reduciendo sus desventajas sólo a la fase de cada incremento.
El modelo incremental no es recomendable para casos de sistemas de tiempo real, de alto nivel de seguridad, de procesamiento distribuido, y/o de alto índice de riesgos.

 Modelo espiral
Propuesto por Barry Boehm, modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con aspectos controlados y sistemáticos del modelo Cascada. Proporciona potencial para desarrollo rápido de versiones incrementales.

En el modelo Espiral el software se construye en una serie de versiones incrementales; En las primeras iteraciones la versión incremental puede ser un modelo en papel o un prototipo. En las últimas iteraciones se producen versiones cada vez más completas del sistema diseñado, tiene 4 etapas;
 - Planificación.
 - Análisis de Riesgos.
 - Ingeniería (Construcción del prototipo).
 - Evaluación por el cliente.

El modelo se divide en un número de Actividades de marco de trabajo, llamadas "regiones de tareas".
Las regiones definidas en el modelo de la figura anterior son:

1 - Tareas requeridas para establecer la comunicación entre el cliente y el desarrollador.
2 - Tareas inherentes a la definición de los recursos, tiempo y otra información relacionada con el proyecto.

3 - Tareas necesarias para evaluar los riesgos técnicos y de gestión del proyecto.
4 - Tareas para construir una o más representaciones de la aplicación software.

5 - Tareas para construir la aplicación, instalarla, probarla y proporcionar soporte al usuario o cliente (Ej. documentación y práctica).
6 - Tareas para obtener la reacción del cliente, según la evaluación de lo creado e instalado en los ciclos anteriores.

Se pueden aplicar a cualquier proyecto, grande, mediano o pequeño, complejo o simple. Las regiones que definen esas actividades comprenden un "conjunto de tareas" del trabajo: ese conjunto sí se debe adaptar a las características del proyecto en particular a emprender.
Proyectos pequeños requieren baja cantidad de tareas y también de formalidad. En proyectos mayores o críticos cada región de tareas contiene labores de más alto nivel de formalidad. En cualquier caso se aplican actividades de protección (por ejemplo, gestión de configuración del software, garantía de calidad, etc.).

El modelo espiral se puede adaptar, y aplicarse a lo largo del ciclo de vida del software (en el caso del modelo en cascada, el proceso termina a la entrega del software).
Un proyecto de "Desarrollo de Conceptos" comienza al inicio de la espiral, hace múltiples iteraciones hasta que se completa, es la zona marcada con verde.

Si lo anterior se va a desarrollar como producto real, se inicia otro proyecto: "Desarrollo de nuevo Producto". Que evolucionará con iteraciones hasta culminar; es la zona marcada en color azul.
Eventual y análogamente se generarán proyectos de "Mejoras de Productos" y de "Mantenimiento de productos", con las iteraciones necesarias en cada área (zonas roja y gris, respectivamente).

El modelo espiral da un enfoque realista, que evoluciona igual que el software; se adapta muy bien para desarrollos a gran escala; Pero requiere considerar riesgos técnicos en todas las etapas del proyecto.

Es apto para el desarrollo de software más complejo como Sistemas Operativos o en sistemas de alto riesgos o críticos (navegadores y controladores aeronáuticos).

Desventajas:
 - Requiere mucha experiencia y habilidad para la evaluación de los riesgos, lo cual es requisito para el éxito del proyecto.

 - A veces es difícil convencer a los clientes de poder controlar este enfoque evolutivo.
 - No es tan usado como el de Cascada por lo que no se pude medir completamente su eficacia.

 
Modelo espiral Win & Win:
Una variante del Modelo Espiral, busca ganar obteniendo el producto que pueda satisfacer al cliente, busca obtener "Victoria & Victoria" (Win & Win), es decir que tanto el cliente como el desarrollador ganen consiguiendo presupuesto y fecha de entrega realista. Este modelo requiere buenas habilidades de negociación.

El modelo Win-Win define un conjunto de actividades de negociación al principio de cada paso alrededor de la espiral, que son:
 - Identificación del sistema o subsistemas clave de los directivos (saber qué quieren).
 - Determinación de "condiciones de victoria" de los directivos (saber qué necesitan y los satisface)
 - Negociación de las condiciones "victoria" de los directivos para obtener condiciones "Victoria & Victoria" (negociar para que ambos ganen).
 - Directivo: Cliente escogido con interés directo en el producto, que puede ser premiado por la organización si tiene éxito o criticado si no.

 Modelo Concurrente:
Como el modelo espiral, el modelo concurrente provee una meta-descripción del proceso software. Mientras que la contribución primaria del modelo espiral es en realidad que esas actividades del software ocurran repetidamente, la contribución del modelo concurrente es su capacidad de describir las múltiples actividades del software ocurriendo simultáneamente.

Los requerimientos son usualmente "líneas de base", cuando una mayoría de los requerimientos comienzan a ser bien entendidos, en este tiempo se dedica un esfuerzo considerable al diseño. Sin embargo, una vez que comienza el diseño, cambios a los requerimientos son comunes y frecuentes.
Durante el diseño de arquitectura, es posible que algunos componentes comiencen a ser bien definidos antes que la arquitectura completa sea estabilizada. En tales casos, puede ser posible comenzar el diseño detallado en esos componentes estables. Similarmente, durante el diseño detallado, puede ser posible proceder con la codificación y quizás regular testeando en forma unitaria o realizando testeo de integración previo a llevar a cabo el diseño detallado de todos los componentes.

Usando técnicas de modelación concurrente, es posible conoce el verdadero estado en el que se encuentra el proyecto.

Modelo fuente:
Creado por Henderson-Sellers y Edwards en 1990. Es un tipo de ciclo de vida pensado para la orientación a objetos, se divide en las siguientes fases:

 - Planificación del negocio
 - Construcción: La más importante y que se divide a su vez en otras cinco actividades: Planificación, Investigación, Especificación, Implementación y Revisión.

 - Entrega.
La primera y la tercera fase son independientes de la metodología de desarrollo orientado a objetos. Además de las tres fases, existen dos periodos:

Crecimiento: Es el tiempo durante el cual se construye el sistema
Madurez: Es el periodo de mantenimiento del producto. Cada mejora se planifica igual que el periodo anterior, es decir, con las fases de Planificación del negocio, Construcción y Entrega.

Cada clase puede tener un ciclo de vida sólo para ella debido a que cada una puede estar en una fase diferente en un momento cualquiera.
 
 
 Los factores a tener en cuenta, en el momento de elegir un modelo de proceso de software o un modelo de ciclo de vida son:
 - Viabilidad del proyecto en comparación con las funciones y tamaño de la empresa, la aplicación que se va a desarrollar o a la que se va tener en funcionamiento y las características que va a tener el producto.
- Análisis, construir un modelo de los requisitos suficientes o superiores de los demandados, para poderlos aplicar adecuadamente al tipo de proyecto apropiado. Al identificar los problemas en etapas tempranas hay tiempo de subsanarlos.
- Objetivos, se hacen de la mano con el cliente, para concordar un proyecto adecuado a su necesidad.
- Restricciones, se deben analizar antes de implementar el proyecto, para prever posibles bloqueos, atrasos o perjuicios, que disminuyan el rendimiento, eficiencia, calidad, etc. Es bueno poder desarrollar construcción de prototipos.
 - Alternativas, en caso de tener diferentes opciones se debe proveer de alternativas y formas de gestionar de mejor manera el modelo, para adecuar el proyecto y el desarrollo del mismo hasta su culminación.
- Planificación, donde se analiza y se prevé, posibles soluciones o modificaciones según las aplicaciones a utilizar, puede ser que surjan necesidades imprevistas. Poder descubrir errores en la fase de análisis y no hasta la entrega, genera confianza y respaldo ante el cliente final, además de optimizar los recursos.
 - Diseño, a partir del modelo de análisis se debe poder deducir y planear la estructura de datos, amigable y funcional para el sistema y la interfaz de usuario.
 - Codificación, adecuada para construir el sistema y ajustable a la fase ejecutable del código, para que facilite su operación.
 - Documentación, es una tarea importante que se realiza en todas las etapas, para estimar y evaluar, distintos percances en el sistema, o para poder realizar modificaciones o adiciones a sus funciones de acuerdo a la finalidad y necesidad del proyecto.

 - Pruebas, etapa para comprobar que se cumplen los requisitos dentro del criterio de corrección y calidad, para el producto final.
 - Mantenimiento, es la fase después de la entrega, donde se asegura que el sistema sigue funcionando adecuadamente y está presto cualquier requisito nuevo.
Por ejemplo, para una empresa que desea desarrollar una aplicación para la administración de los pedidos, donde no tienen claro lo que quieren, el modelo de proceso que yo recomendaría, sería el modelo Iterativo incremental, ya que este permite la entrega de versiones parciales a medida que se va construyendo el producto final, y da posibilidad de realizar cambios, modificaciones,  
Conforme se va viendo el desarrollo de la aplicación, o los requisitos; además tiene la facilidad de mejorar cada versión emitida, incorporando nuevas funciones a las versiones anteriores.
Por otro lado para una el proyecto de una empresa de desarrollo de software que desea elaborar un procesador de palabra, se puede usar por ejemplo un modelo en cascada o un modelo incremental, entonces, realmente ningún modelo es perfecto, pero se busca siempre el que se acomode a la aplicación y desarrollo y finalidad del producto.
Conforme se va viendo el desarrollo de la aplicación, o los requisitos; además tiene la facilidad de mejorar cada versión emitida, incorporando nuevas funciones a las versiones anteriores.
Por otro lado para una el proyecto de una empresa de desarrollo de software que desea elaborar un procesador de palabra, se puede usar por ejemplo un modelo en cascada o un modelo incremental, entonces, realmente ningún modelo es perfecto, pero se busca siempre el que se acomode a la aplicación y desarrollo y finalidad del producto.

¿Qué impacto cree usted que produciría adoptar nuevas culturas en metodologías de desarrollo de software en las organizaciones?


Debido a los avances que se van desarrollando a diario, se debe pensar en que los avances en las nuevas metodologías de desarrollo de software, no solo se deben tener en cuenta, sino mejor, se deben comenzar a crear y exigir.
La velocidad con que se avanza en materia de tecnología en todos los campos (desde PCs, dispositivos como Smartphones, pasando por la industria con sus robots de ensamble, la medicina con los equipos y ahora la infinidad de aplicaciones para cualquier labor), hacen que los métodos de desarrollo de software, deban ser rediseñados y modelados de acuerdo a los diferentes entornos y exigencias. No es lo mismo usar una metodología para el diseño de una autopista con túneles y con puentes, a usar la misma metodología para crear una nueva medicina, ya que son cosas muy distintas y esto sucede también con el software que aunque su base es la misma, no es igual en todas las aplicaciones o plataformas.
El software esta ahora presente en la mayoría del entorno en que no encontramos y se volvió interdisciplinar, desde la plataforma para acceder al pago de impuestos hasta la aplicación para pedir un taxi a casa o programar la nevera remotamente para que reduzca su consumo de energía durante nuestro viaje; Entonces con el tiempo todo tendrá una parte de software en el proceso de producción o funcionamiento para mejorar los recursos tecnológicos.
Es difícil hacer una discriminación exacta de para qué tipo de proyecto sirve cada modelo, es más fácil decir para qué tipo de proyectos o desarrollos NO sirve un modelo; Así entonces se deben crear nuevas metodologías que estén acordes a cada proyecto y poder optimizar todos los recursos para un mejor resultado, por supuestos los cambios generan inconformidades, peros estas a la larga se deben superar y se debe empezar a mentalizar el hecho de que los cambios son para mejorar y que deben acomodarse a ellos porque cada vez serán más necesarios para enfocarse a unos objetivos comunes.

Metodologías de Desarrollo Ágiles Vs. Metodologías Tradicionales


Principales diferencias entre Metodologías de Desarrollo Ágiles Vs. Metodologías Tradicionales:

Metodologías de Desarrollo:

Para el desarrollo de software, se requiere de diversos elementos que agrupados hacen que el desarrollo de software sea o no exitoso.

Para esto existen las metodologías tradicionales que se modificaron para poder aplicarlas  al desarrollo de software, aunque durante mucho tiempo fueron la única solución al desarrollo, hizo estas metodologías poco flexibles y muy cuadriculadas. Estas consistían en una serie fundamentos y conceptos aplicados al desarrollo de software, documentación, planificación y procesos. (Plantillas, técnicas de administración, revisiones, etc.)

Ante las dificultades de las metodologías tradicionales referentes al tiempo y flexibilidad, aparecen las metodologías ágiles como una respuesta metodológica, especialmente porque están orientadas a proyectos pequeños, constituyen una solución a la medida del entorno, simplificando las prácticas y asegurando la calidad del producto.

El término ágil, nace en febrero de 2001 en una reunión en Utah (EEUU), aplicado al desarrollo de software, su objetivo era idear los valores y principios que permitirían a los equipos de desarrollo crear software rápidamente, respondiendo a los cambios surgidos a lo largo del proyecto, ofreciendo una alternativa a los procesos tradicionales. En dicha reunión se creó The Agile Alliance[1], organización, sin ánimo de lucro, que promueve los conceptos relacionados con el desarrollo ágil de software, apoyando las organizaciones para que adopten dichos conceptos.

Según el Manifiesto ágil, se valora al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas, desarrollar software que funciona (más que conseguir una buena documentación), la colaboración con el cliente (más que la negociación mediante contrato),  respuesta a los cambios (más que seguir rigurosamente algún plan).

Cuadro comparativo: Metodologías tradicionales  y ágiles:

Metodologías Tradicionales
Metodologías Ágiles
- Rigidez ante los cambios, de manera lentos o moderada
- Los clientes interactúan con el equipo de desarrollo mediante reuniones
- Grupos de gran tamaño y varias veces distribuidos en diferentes sitios
- Dependencia de la arquitectura de software mediante modelos
- Poco Feedback lo que extiende el tiempo de entrega
- Mínimos roles
- Basadas en normas de estándares de desarrollo
- Procesos muy controlados por políticas y normas
- Seguimiento estricto del plan inicial de desarrollo
- Flexibilidad ante los cambios del proyecto de forma moderada a rápida
- Los clientes hacen parte del equipo de desarrollo
- Grupos pequeños (promedio 10 participantes in situ) en el mismo lugar.
- Menor dependencia de la arquitectura de software
- Continuo Feedback acortando el tiempo de entrega
- Diversidad de roles
- Basadas en heurísticas a partir de prácticas de producción de código
- Procesos menos controlados, pocas  políticas y normas
- Capacidad de respuesta ante los cambios

 

Estas diferencias, no solo afectan el proceso en sí, sino también el contexto del equipo de trabajo y su organización

La metodología ágil XP:

Una de las metodologías que más esta difundiéndose en la actualidad, es la Programación Extrema (XP[2], Extreme Programming). Esta metodología ágil está enfocada a fortalecer las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, un buen clima laboral y preocupándose por el aprendizaje de los desarrolladores. Kent Beck, es el padre de XP (1999), esta metodología se basa en la retroalimentación continua entre el equipo de desarrollo y el cliente, simplificando las soluciones implementadas y disposición para los cambios; Adecuada para proyectos con requisitos imprecisos, cambiantes y con alto riesgo técnico.

Los roles de acuerdo con la propuesta original de Kent Beck son:

 - Programador: Escribe las pruebas unitarias y produce el código del sistema, se recomienda la programación por parejas para minimizar los errores ya que se revisa el código y se discute durante su programación.

 - Cliente: Escribe las historias de usuario y las pruebas funcionales para validar su implementación, también asigna la prioridad a las historias de usuario y decide cuáles se implementan en cada iteración centrándose en aportar mayor valor al negocio.

 - Tester o Delegado de pruebas: Ayuda al cliente a escribir las pruebas funcionales; Ejecuta las pruebas regularmente, difunde los resultados en el equipo y es el responsable de las herramientas de soporte para las pruebas.

 - Tracker o Encargado de seguimiento: Proporciona retroalimentación al equipo, verifica el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado para mejorar estimaciones futuras, también hace seguimiento del progreso de cada iteración.

 - Entrenador o Coach: Responsable del proceso global, provee guías al equipo de manera que se apliquen las prácticas XP y se siga el proceso correctamente.

 - Consultor: Miembro externo del equipo, con conocimiento específico en algún tema necesario para el proyecto, ayuda a resolver problemas que puedan surgir.

 - Gestor o Big Boss: Es el vínculo entre clientes y programadores, encargado de que el equipo trabaje efectivamente creando condiciones adecuadas. Su labor principalmente es coordinación.

 

El ciclo de vida de XP consiste de seis fases:

            - Exploración

            - Planificación de la Entrega (Release)

            - Iteraciones,

            - Producción

            - Mantenimiento

            - Muerte del Proyecto

Software libre OSS

Es un modelo de desarrollo donde no hay un orden estricto de creación, tiene flexibilidad y diversidad en el desarrollo, interactúan diferentes actores y no es controlada por ningún tipo de persona o entidad, sino que prima una gran cantidad de intereses e intercambios, los desarrolladores son de clientes y desarrolladores a la vez, de forma colaborativa se desarrolla software de calidad con pequeños y frecuentes incrementos, tiene una decremento de costos mientras se incrementan la seguridad y la estabilidad, los detalles del diseño se revisan en línea, el código es escrito por pequeños grupos de desarrolladores agiles y las pruebas son procesos rápidos y colaborativos teniendo una retroalimentación es abundante y rápida con pruebas testeadas y pequeñas entregas frecuentes por la comunidad de desarrollo

Las herramientas de desarrollo que sustentan el OSS, son principalmente Internet, por la facilidad de colaboración.


[1]  www.agilealliance.com
[2]  www.extremeprogramming.org, www.xprogramming.com, c2.com/cgi/wiki?ExtremeProgramming

sábado, 22 de diciembre de 2012

20 Reglas y principios para el desarrollo de entornos Web

Las reglas y principios para el desarrollo de entornos y aplicaciones web, agrupa una serie de normas básicas para que se apliquen en el desarrollo de entornos web como lo son:
 1- Estructura: un punto importante en las páginas web, es la estructura de navegación que forma un desarrollo preciso de navegación, esta parte garantiza que el usuario no se pierda en la página.

 2- Terminología: Es muy importante precisar un lenguaje claro para todo el mundo, en casos donde hay temas muy específicos, se debe realizar unas introducción a la idea principal y luego si seguir con la profundización para que los expertos se adentren en el contenido, sin dejar atrás a los novatos en el tema (ellos deben entender por lo menos la idea principal del tema), esto facilita la comprensión del contenido.

 3- Usabilidad: Esta es la medida de cómo los usuarios realmente navegan, buscan información e interactúan con el sitio Web, es un conjunto de técnicas de evaluación que ofrecen resultados que permiten extraer conclusiones, significa estar seguro de que algo funciona bien: que una persona con habilidades promedio pueda navegar y ubicarse en el contexto del sitio web.
La diversidad de configuraciones de PC, sumado a los sistemas operativos utilizados y la velocidad de conexión a internet, hace muy diferente la  experiencia de los usuarios.
Además hay que tener en cuenta las capacidades, limitaciones (motoras, cognitivas y preceptúales) de los usuarios.
Las resoluciones grandes o grandes tamaños en texto e imágenes hacen necesario un desplazamiento horizontal para poder verlo, algo incomodo para los usuarios.

 4- Retención del tiempo: El uso del sistema debe ser fácil de recordar. Si un usuario deja de utilizar por un tiempo el sistema, retomar a un nivel de entendimiento aceptable, (donde estaba y que estaba haciendo) una vez que vuelve a usar la aplicación, debe ser una tarea sencilla.
Los usuarios deben sentir que tienen el control sobre el estado de la aplicación.

 5- Privacidad: El sistema debe ayudar a los usuarios a sentirse protegidos en su navegación y al utilizar la información a la que acceden y la que ingresan.

 6- Contacto: Siempre se debe tener en cuenta dejar, ojalá en la parte inferior de página, los datos de contacto desde la dirección, País, ciudad, teléfonos, correos, etc. Es muy incomodo no encontrar un contacto fácilmente al acceder a una página donde se busca información.

 7- Ubicación: Cuando los usuarios están entretenidos navegando por el sitio, debe asegurarse que saben en qué parte del sitio están en ese momento, para que puedan navegar a cualquier sección con facilidad encontrando información clara sobre el tema que buscan. Si los usuarios no saben cómo navegar en el sitio, simplemente lo dejarán.
Los botones para navegar en el sitio deberían ser fáciles de encontrar y de identificar, en la parte superior. Deberían verse como botones de navegación y estar bien descritos. El texto de un botón debe estar bien claro en cuanto hacia que parte de la página esta direccionando. Es importante garantizar al usuario, que puede ir hacia los objetos del submenú sin perder lo desplegable.

 8- Publicidad: No se deben poner demasiados anuncios, incluso la gente menos preparada está entrenada para ignorar los anuncios publicitarios además de incomodar y aburrir al usuario. Es mejor dejar que los usuarios o visitantes de la página, encuentren lo que quieren sin sentirse presionados a hacerlo.

 9- Impacto del diseño: A la gente no le gusta leer mucho, le gusta más ver imágenes, en especial en la página de inicio es importante tener imágenes grandes y llamativas, sin saturar de texto o de imágenes un sitio web ya que lo vuelve aburrido y monótono, debe tratar de verse muy limpio y evitar párrafos grandes de texto.
Cambiar el color o forma de la imagen al pasar el Mouse por encima, hace que sea muy llamativo para el usuario.
Las imágenes son el aspecto más atractivo, y se deben subir a la página en tamaños livianos para no incrementar el tiempo de carga del sitio Web, vienen en dos formatos básicos: GIF y JPEG.
 - GIF son preferibles cuando la imagen va a contener menos de 256 colores y apropiados para animaciones sencillas.
 - JPEG se utilizan en imágenes con más de 256 colores, como las fotografías.

 10- Tamaño: Lo grande toma preferencia sobre lo pequeño, es bueno usar tamaños diferentes para resaltar los más importante, además de esto, no se debe usar una letra muy pequeña en especial en los párrafos de texto, porque esto hace que los usuarios se cansen y no terminen leyendo la información publicada.

 11- Posición: Debe haber un orden en la ubicación de los textos, imágenes, banners y demás contenidos de la página. Un espacio bien organizado y distribuido, atrae al usuario, las imágenes por ejemplo está comprobado que la tendencia del cerebro humano, debido a que leemos de izquierda a derecha, es mirar siempre primero el lado izquierdo de la pantalla, por lo que es aconsejable, ubicar en esta parte las imágenes para que llamen la atención.
También s e debe tener en cuenta que los textos y las imágenes no queden montados o muy pegados en espacio.

 12- Color: Usando colores sutiles es una manera sencilla de decirle a tu usuario hacia dónde mirar, los colores fuertes cansan la vista y hace que el usuario quiera salir rápido de la página, en especial donde se debe ller o mirar detenidamente un contenido.

 13- Audio: No se debe usar audio en el sitio web, ya que los molestos bucles de audio aburren a las persona o las obligan a baja r el volumen general del equipo, se pueden obviamente usar archivos de multimedia y audio, pero asegurándose que el usuario tenga el control sobre el volumen y la reproducción.

 14- Contraste: Se debe diferenciar los contenidos para hacer que resalten más, esto ayuda a dar importancia a los temas y contenidos publicados.

15- Texto: El texto es un elemento común en el diseño web, por esto se debe tener en cuenta todo: letra, fuente, color, tamaño, etc.
- Tipo de letra, los diferentes tipos de letras expresan cosas diferentes sobre un diseño, modernas, antiguas, elegantes, divertidas, entonces debemos asegurarnos de el tipo adecuado para el sitio web.
- Tamaño, el texto es para leerse, no solo para observarse, por esto debemos usar el tamaño suficientemente cómodo para leerse y diferenciando los tipos de contenido, titulo, subtítulos, encabezado , etc.
- Espaciado,  el espacio entre líneas y lejos de otros objetos, el espaciado entre letras es importante para tener una lectura cómoda y que no canse.
- Anchura de las líneas, generalmente las líneas del texto no deben ser largas para no hacerlas demoradas en leer, las columnas funcionan mejor, como en los periódicos.
- Color, acompañado del contraste hacen que el texto no se sobreponga al fondo lo que dificulta la lectura del usuario, se debe usar letra clara y que contraste bien con el fondo sin ser destellante.
- Párrafo, el texto justificado tiende a crear espacios extraños entre las palabras donde ya han sido auto-espaciadas. Esto cansa los ojos al leer, por esto es
- Redacción, aquí hay 4 características básicas: Texto conciso, ortografía, estilo (enumerar los puntos, separar títulos y encabezados, utilizar negritas y resaltado) y un lenguaje objetivo

16- Actualización: Los contenidos se deben actualizar y de cuando se pueda, cambiar, esto hace que los usuarios no se cansen de ver igual la página siempre.

 17- Rapidez: Se debe tratar de usar imágenes, videos y archivos multimedia de bajo tamaño para que el tiempo de carga de la página sea mínimo, a la gente no le gusta esperar, por esto entre menos peso tenga la página carga más rápido y atrae más a los usuarios. Se puede poner el contenido de gran tamaño en una sección especial de descargas.

18- Longitud: Una gran parte de las pantallas de los PC actuales presentan la información en una resolución de 800 x 600 pixeles, incluso hay todavía resoluciones de 640 X 480, por esto se debe diseñar el sitio de tal forma que se presente bien en la pantalla todos los contenidos, por esto se debe usar una longitud no mayor a 800 X 600, a menos que sea necesaria una resolución mayor.

 19- Compatibilidad: Debemos tener en cuenta el uso de diferentes navegadores, que por lo general están en sistemas operativos diferentes, por lo que es mejor tener la página basada en el lenguaje universal HTML, para no tener inconveniente s con usuarios de otros navegadores que no podrían ver todo el contenido.

20- Originalidad: De esto depende que el sitio que sea de gran impacto, a las personas les gusta lo diferente y original, sin rayar en lo extravagante.

Conceptos básicos para la WEB

jueves, 13 de diciembre de 2012

ESTANDAR ETHERNET Y CARACTERISTICAS

OSI/TCP-ip definición y comparación

 - Modelo OSI (Open Systems Interconnection)
Creado por la ISO (Organización Internacional para la Estandarización), encargada de la conexión entre sistemas abiertos, para la comunicación con otros sistemas. Los principios en que se basó su creación fueron: mayor definición de las funciones de cada capa, evitar agrupar funciones diferentes en la misma capa y mayor simplificación en el funcionamiento del modelo en general.
Este modelo divide las funciones de red en siete capas diferenciadas así:

#
Capa
Unidad de intercambio
1.
Física
Bit
2.
Enlace
Marco / Trama
3.
Red
Paquete
4.
Transporte
TPDU
5.
Sesión
SPDU
6.
Presentación
PPDU
7.
Aplicación
APDU

 - Capa 1: Física
  Define las características físicas del medio de transmisión, eléctrico y óptico, es decir el tipo de medio a utilizar, tamaño o forma de los conectores, tipo y grosor del cable, tipo de aislante, voltaje de la interface, la impedancia - resistencia - nominal, etc.), La señal llega a ella en forma de impulsos y se transforma en bits 0 y 1.

En esta capa se define a continuación, los usos de los cables y conectores, así como el tipo de señal (pulsos eléctricos - coaxiales; pulsos de luz - óptica).
Función: recibir los datos e iniciar el proceso (o lo contrario, introducir datos y completar el proceso).
Dispositivos: cables, conectores, concentradores.

Capa 2: Enlace
Su función es asegurar la transferencia de datos libre de errores entre nodos contiguos (sincronización a nivel de datos) y establece el control de acceso al medio. La capa de enlace de datos está dividida en dos subcapas:
  - Control de acceso al medio (MAC)
  - Control de enlace lógico (LLC). Los puentes (bridges) operan en la capa MAC.
Protocolos: PPP, Ethernet, FDDI, ATM, Token Ring.
Dispositivos: Interruptores, Tarjeta de red, interfaces.
Función: enlace de datos de un host a otro, por lo que es a través de los protocolos definidos para cada medio específico por el cual se envían los datos.
Ej: Control de enlace lógico, IEEE 802.2 (enlace lógico).
Punto a Punto (PPP).
MAC.
IEEE 802.3 - CSMA/CD.
IEEE 802.5 - Token Ring.
ANSI FDDI - Token Ring (fibra).

Capa 3 - Red
Incluye dos conceptos fundamentales: la capa de Red, que se encarga de determinar las rutas adecuadas para llevar la información de un lado a otro (enrutamiento); y sirve de interface para que la transferencia de datos sea idéntica de la tecnología del enlace de datos.
Un concepto importante, la dirección física (MAC address - Media Access Control) es en esa capa. La capa siguiente (3 de la red) que se ocupará de la dirección IP conocida.
Los estándares que se refieren a la capa de red incluyen el protocolo de intercambio de paquetes entre redes (IPX) de Novell, el protocolo de Internet (IP) y el protocolo de entrega de datagramas (DDP) de Apple. El IP es parte del estándar de protocolo TCP/IP, generado por el Departamento de la Defensa de Estados Unidos y utilizado en Internet. Los enrutadores operan en la capa de red.
Función: direccionamiento, enrutamiento y definir las mejores rutas posibles.
Protocolos: ICMP, IP, IPX, ARP, IPSEC.
Dispositivos: Routers.

Capa 4 - Transporte
La capa de transporte vincula las capas de host con las capas orientadas a la red. Permite la conexión entre el host y la red, su función es asegurar un transporte, entrega y recepción confiable de la información a través de la red.
Los estándares que pertenecen a la capa de transporte son el protocolo de transporte (TP) de la Organización Internacional de Estándares (ISO) y el protocolo de intercambio de paquetes en secuencia (SPX) de Novell. Otros estándares que ejecutan funciones importantes en la capa de transporte incluyen el protocolo de control de transmisión (TCP) del Departamento de la Defensa, que es parte del TCP/IP, y el NCP de Novell.
Protocolos: TCP, UDP, SPX.
Dispositivos: Routers.
  
Capa 5 - Sesión
La capa de sesión tiene la responsabilidad de asegurar la entrega correcta de la información, debe revisar que la información que recibe este correcta, y para esto, la capa de sesión realiza algunas funciones:
Iniciar, gestionar y terminar sesiones de la capa de presentación, la detección y corrección de errores. Por ejemplo, sesiones TCP.
Controla los diálogos entre dos entidades que se estén comunicando y definir los mecanismos para hacer las llamadas a procedimientos remotos (Remote Procedure Control - RPC).
Las tres primeras capas son denominadas "Capas de host" o las capas más dependientes de la computadora, las últimas tres capas están orientadas hacia la comunicación (la red).
El TCP ejecuta funciones importantes en la capa de sesiín, así como lo hace el NCP de Novell.

Capa 6 - Presentación
La capa de presentación tiene la función de formato de los datos, por lo que la representación de ellos. Este formato incluye la compresión y cifrado de datos.
Es más fácil entender esta capa como la que traduce los datos en un formato que pueda entender el protocolo usado. Esto lo vemos por ejemplo cuando el transmisor utiliza un estándar diferente de otros a continuación, ASCII, y estos personajes son convertidos.
Cuando dos redes diferentes necesidad de comunicar, es la capa de 6 Presentación que funciona. Por ejemplo, cuando una conexión TCP / IP necesita comunicarse con una red IPX / SPX, la presentación se traduce capa de datos de cada uno, haciendo que el proceso sea posible.
En cuanto a la compresión, hace que la comunicación sea más rápida porque hay menos datos para transmitir, y cuando se requiere una mayor seguridad, se aplica un esquema de cifrado.
Función: encriptación, compresión, formato y la presentación de formatos de datos (por ejemplo, JPEG, GIF, MPEG) para las aplicaciones.
Protocolos: SSL, TLS.
Dispositivos: Gateways (protocolos de traducción entre diferentes redes), transmisor-receptor (traducción entre las señales ópticas y eléctricas , que se desplaza en cables diferentes).


Capa 7 - Aplicación
La capa de Aplicación funciona como el acceso a los servicios que proporciona la red, así como al sistema operativo servicios como el de la transferencia de archivos.
En esta capa están las interfaces de usuario, creadas por los propios datos (correo electrónico, transferencia de archivos, etc.). Aquí los datos son enviados y recibidos por los usuarios. Estas peticiones se realizan por las aplicaciones de acuerdo a los protocolos utilizados.
Función: hacer que la interfaz entre los usuarios finales y los programas de comunicación.

  - Modelo TCP/IP
Modelo de descripción de protocolos de red creado en los 70s por DARPA (agencia del Departamento de Defensa de los Estados Unidos). Fue la primera red de área amplia y predecesora de Internet. El modelo TCP/IP y los protocolos relacionados son mantenidos por la IETF (Internet Engineering Task Force). Fue utilizado primeramente en ARPANET y es utilizado actualmente a nivel mundial en Internet y redes locales, su nombre viene de la unión del los nombres de los dos principales protocolos que lo conforman:
 -  TCP en la capa de transporte
 -  IP en la capa de red.
Es un software de red basado en protocolos de red estándar del sector, describe un conjunto de guías generales de diseño e implementación de protocolos de red específicos para permitir la comunicación de un equipo e una  red.
TCP/IP, se compone de cuatro capas de abstracción según se define en el RFC 1122.
#
Capa
Unidad de intercambio
1.

2.
no definido (Datagrama)
3.
4.
no definido

Capa 1 - Capa de aplicaciones:
Es la capa que provee servicios de alto nivel a los usuarios como transferencia de archivos, entrega de correo electrónico, y acceso a terminales remotas. Los programas de aplicación recogen diferentes protocolos de transporte dependiendo del tipo de servicio de transporte que requieran.
Esta capa maneja protocolos de alto nivel, aspectos de representación, codificación y control de diálogo. El modelo TCP/IP combina todos los aspectos relacionados con las aplicaciones en una sola capa y asegura que estos datos estén fielmente empaquetados antes de pasar a la siguiente capa. TCP/IP no sólo incluye las especificaciones de Internet y de la capa de transporte, sino también las especificaciones para aplicaciones comunes. TCP/IP tiene protocolos que soportan la transferencia de archivos, e-mail, y conexión remota, además de los siguientes:
 - FTP (File Transfer Protocol) Protocolo de transferencia de archivos: Servicio confiable orientado a conexión que utiliza TCP para transferir archivos entre sistemas que admiten la transferencia FTP. Permite las transferencias bidireccionales con archivos binarios y codigos ASCII.
 - TFTP (Protocolo trivial de transferencia de archivos): Servicio no orientado a conexión que utiliza el Protocolo de datagrama de usuario (UDP), útil en algunas LAN porque opera más rápidamente que FTP en un entorno estable.
 - NFS (Sistema de archivos de red): Conjunto de protocolos para un sistema de archivos distribuido, desarrollado por Sun Microsystems que permite acceso a los archivos de un dispositivo de almacenamiento remoto, por ejemplo, un disco rígido a través de una red.
 - SMTP (Simple Mail Transfer Protocol) Protocolo simple de transferencia de correo: Administra la transmisión de correo electrónico a través de la red. No admite la transmisión de datos si no es en forma de texto simple.
 - TELNET (Emulación de terminal): Tiene la capacidad de acceder de forma remota a otro computador, permitiendo al usuario que se conecte a un host de Internet y ejecute comandos. El cliente de Telnet recibe el nombre de host local, mientras el  servidor Telnet recibe el nombre de host remoto.
 - SNMP (Protocolo simple de administración de red): es un protocolo que provee una manera de monitorear y controlar los dispositivos de red y de administrar las configuraciones, la recolección de estadísticas, el desempeño y la seguridad.
 - DNS (Domain Name System) Sistema de denominación de dominio: Sistema utilizado en Internet para convertir los nombres de los dominios y de sus nodos de red publicados abiertamente, en direcciones IP.

Capa 2 - Capa de transporte:
Tiene como tarea principal la de proveer comunicación punto a punto entre las aplicaciones. Los protocolos de transporte (TCP y UDP) usan el servicio de entrega de paquetes que provee la capa de Internet.
Proporciona servicios de transporte desde el host origen hacia el host destino. En esta capa se forma una conexión lógica entre los puntos finales de la red, el host transmisor y receptor. Los protocolos de transporte segmentan y reensamblan los datos enviados por las capas superiores en el mismo flujo de datos, o conexión lógica entre los extremos, brindando transporte de extremo a extremo a través de la nube controlando el flujo.
Se dice que internet está en la nube, por que los paquetes de datos pueden tomar múltiples rutas para llegar a su destino, los saltos entre Routers se representan con una nube que representa las distintas posibles rutas. La capa de transporte envía los paquetes de datos desde la fuente transmisora hacia el destino receptor a través de la nube. La nube maneja los aspectos tales como la determinación de la mejor ruta, balanceo de cargas, etc.

Capa 3 - Capa de Internet:
 Provee el servicio de entrega de paquetes de una máquina a otra, por medio del protocolo de Internet (IP). La integridad de los datos no se verifica en este nivel, por lo que el mecanismo de verificación es implementado en capas superiores (Transporte o Aplicación).
IP proporciona un enrutamiento de paquetes no orientado a conexión de máximo esfuerzo. El IP no se ve afectado por el contenido de los paquetes, sino que busca una ruta de hacia el destino. El ICMP, Protocolo de mensajes de control en Internet, suministra capacidades de control y envío de mensajes.
ARP, Protocolo de resolución de direcciones determina la dirección de la capa de enlace de datos, la dirección MAC, para las direcciones IP conocidas.
RARP, Protocolo de resolución inversa de direcciones determina las direcciones IP cuando se conoce la dirección MAC.
Aquí define un paquete y un esquema de direccionamiento, transfiere los datos entre la capa Internet y las capas de acceso de red y enruta los paquetes hacia los hosts remotos, la verificación y corrección de errores las realiza el TCP (el protocolo de la capa superior), desde las capas de transporte o aplicación.

Capa 4 - Capa de acceso:
También denominada capa de host de red, maneja todos los aspectos que un paquete IP requiere para efectuar el enlace físico real con los medios de la red. Esta capa incluye los detalles de la tecnología LAN, WAN y todos los detalles de la capa física y de enlace de datos del modelo OSI. Acepta datagramas de la capa de Internet y los envía físicamente. El "módulo" para el acceso al medio es con frecuencia un controlador de dispositivo (Device Driver) las tarjetas de módem y otros dispositivos operan en la capa de acceso de red. La capa de acceso de red define los procedimientos para realizar la interfaz con el hardware de la red y para tener acceso al medio de transmisión y la "capa" de acceso al medio puede consistir de múltiples módulos.
El Protocolo Internet de Enlace Serial (SLIP) y el Protocolo de Punto a Punto (PPP) brindan acceso a la red a través de una conexión por módem.
Funciones: Asignación de direcciones IP a las direcciones físicas, el encapsulamiento de los paquetes IP en tramas y la interfaz de la red.
Estructura de un paquete tcp/ip:
<encabezado><información><---paquete tcp--->
<encabezado><--------información--------><----paquete ip---->
<encabezado><-----------------información-----------------><paquete ethernet>
<---------------------------------- medio físico ------------------------------------------>

TCP/IP, es un marco de trabajo robusto, escalable, multiplataforma y cliente-servidor, proporciona utilidades de TCP/IP básicas que permiten a equipos basados en Windows conectar y compartir información con otros sistemas de Microsoft y de otros proveedores como: Hosts de Internet, Sistemas Apple Macintosh, Mainframes IBM, Sistemas UNIX, Sistemas VMS abiertos, Familia Windows Server 2003, LAN Manager, Impresoras para red,  Windows 95 – 98 - XP – 2000 – NT – Millennium – 7, la familia Windows Server 2003 incluye la versión más reciente del Protocolo Internet (IP versión 6).


Tabla comparativa características, ventajas y desventajas de los portocolos TCP/IP y OSI:
OSI
TCP/IP
OSI define claramente diferencias entre servicios, interfaces y protocolos.
Servicio: lo que un nivel hace
Interfaz: cómo se pueden acceder los servicios
Protocolo: la implementación de los servicios
Características:
OSI define claramente las diferencias entre los servicios, las interfaces, y los protocolos.
o Servicio: lo que un nivel hace
o Interfaz: cómo se pueden acceder los servicios
o Protocolo: la implementación de los servicios
TCP/IP no tiene esta clara separación.
- Malas políticas: investigadores y programadores contra los ministerios de telecomunicación
- En comparación, las redes típicas no se desarrollan normalmente a partir del protocolo OSI, aunque el modelo OSI se usa como guía
- OSI soporta servicios sin conexión y orientados a conexión en el nivel de red pero en el nivel de transporte solo acepta servicios orientados a conexión.
- El modelo OSI es más complejo, un elevado número de capas en las que a veces se repiten funciones lo que hace que en la mayoría de los sistemas no se lleguen a implementar todas.
- OSI nos introduce tres conceptos básicos: servicios, interfaces y protocolos, siendo explícita la distinción entre estos conceptos. Cada capa ofrece unos servicios determinados a su capa superior, que indican que es lo que hace la capa
- OSI distingue de forma clara los servicios, las interfaces y los protocolos.
- OSI fue definido antes de implementar los protocolos, por lo que algunas funcionalidades necesarias fallan o no existen. En cambio, TCP/IP se creó después que los protocolos, se amolda a ellos perfectamente.

Ventajas:
Proporciona a los fabricantes un conjunto de estándares que aseguraron una mayor compatibilidad e interoperabilidad entre los distintos tipos de tecnología de red utilizados por las empresas a nivel mundial.



Desventajas:
 Las capas contienen demasiadas actividades redundantes, por ejemplo, el control de errores se integra en casi todas las capas siendo que tener un único control en la capa de aplicación o presentación sería suficiente.
La gran cantidad de código que fue necesario para implantar el modelo OSI y su consecuente lentitud hizo que la palabra OSI fuera interpretada como "calidad pobre", lo que contrastó con TCP/IP que se implantó exitosamente en el sistema operativo Unix y era gratis
OSI no tuvo exíto debido a
- Mal momento de introducción: insuficiente tiempo entre las investigaciones y el desarrollo del mercado a gran escala para lograr la estandarización
- Mala tecnología: OSI es complejo, es dominado por una mentalidad de telecomunicaciones sin pensar en computadores, carece de servicios sin conexión, etc.
- Malas implementaciones
TCP/IP no tiene esta clara separación.




Características:
- Estándar en EE.UU. desde 1983
- Dispone de las mejores herramientas para crear grandes redes de ordenadores
- Independencia del fabricante
- TCP/IP combina las funciones de la capa de presentación y de sesión en la capa de aplicación; combina la capas de enlace de datos y la capa física del modelo OSI en una sola capa
- TCP/IP es más simple ya que tiene menos capas
- Los protocolos TCP/IP son los estándares en torno a los cuales se desarrolló la Internet, de modo que la credibilidad del modelo TCP/IP se debe en gran parte a sus protocolos.
- En TCP/IP la capa Internet funciona sin conexión y la capa de transporte nos puede ofrecer servicios sin conexión (UDP) u orientados a conexión (TCP).















Ventajas:
- Encaminable
- Imprescindible para Internet
- Soporta múltiples tecnologías
- Puede funcionar en máquinas de todo tamaño (multiplataforma)

Desventajas:
- El modelo no distingue bien entre servicios, interfaces y protocolos, lo cual afecta al diseño de nuevas tecnologías en base a TCP/IP.
- Peor rendimiento para uso en servidores de fichero e impresión