miércoles, 24 de octubre de 2007

Nueva tecnología posibilita los discos duros de 1 Terabyte

Hitachi ha creado el cabezal de lectura más minúsculo existente para discos duros. La tecnología hace posible la producción de discos duros para máquinas de escritorio con capacidad de almacenamiento de 4 terabyte.

La compañía japonesa Hitachi anuncia un hito en el ámbito de la tecnología para discos duros. Hitachi ha creado el cabezal de lectura más pequeño de la historia para discos duros.
La nueva tecnología hace posible reducir la distancia entre los surcos de datos a 30-40 nanómetros; esta distancia es la mitad de la alcanzada en los modelos más avanzados existentes, e implica que puede haber espacio para muchos más surcos en el mismo disco duro.
Los nuevos cabezales CPP-GMR hacen posible aumentar en 400 % la capacidad de almacenamiento de los discos duros en relación con los modelos actuales más avanzados. De esa forma, la capacidad de almacenamiento puede ser incrementada a 500 y hasta 1000 gigabit por pulgada cuadrada; en el modelo top de Hitachi, con cabezal de lectura TMR, que puede ser comprado actualmente, la densidad de datos alcanza los 148 Gbit.
Hitachi anuncia que los discos duros para máquinas de escritorio con capacidad de almacenamiento de 4 terabyte y discos duros para computadoras portátiles con capacidad de 1 terabyte estarán en el mercado en 2011. Actualmente, el mayor disco duro de 3,5 pulgadas tiene una capacidad de 1 terabyte.

Fuente: Cnet.
Tomado de goldsystem

viernes, 31 de agosto de 2007

Guia

GESTIÓN DE PROYECTOS DE SOFTWARE

La gestión de proyectos busca las técnicas necesarias para planificar, organizar, supervisar y controlar proyectos de software. El objetivo de gestionar proyectos es tener un producto de alta calidad.

La gestión de un proyecto de software se centra en tres partes como son:
- Personal
- Problema
- Proceso

- Personal: El factor humano es importante en la ingeniería de software. Es importante tener la capacidad de gestión del personal con el fin de aumentar la preparación en la organización del software; ayudando a atraer, motivar y retener el talento necesario para mejorar su capacidad de desarrollo de software.

En toda organización que alcanza la madurez en el área de gestión de personal tiene una mayor probabilidad de implementar unas eficaces prácticas de ingeniería de software, esto guía a que las organizaciones tengan un proceso de software maduro.

- El problema: Se establecen los objetivos y se deben considerar soluciones alternativas e identificar las dificultades técnicas y de gestión. Con esta información es posible definir unas estimaciones razonables del costo, una valoración efectiva del riesgo, una subdivisión realista de las tareas del proyecto o una planificación del proyecto asequible que proporcione una indicación fiable del progreso.

El desarrollador de software y el cliente deben reunirse para definir los objetivos del proyecto. Los objetivos identifican las metas generales del proyecto sin considerar cómo se conseguirán.

Se identifican los datos primarios, funciones y comportamientos que caracterizan el problema, intenta abordar estas características de una manera cuantitativa. También se consideran las soluciones alternativas, estas permiten a los gestores y a los profesionales seleccionar el mejor enfoque.

- Proceso: En el proceso de software proporciona la estructura desde la que se puede establecer un detallado plan para el desarrollo del software. Las actividades estructurales se pueden aplicar a todos los proyectos de software, sin tener en cuenta su tamaño o complejidad, además permiten a las actividades estructurales adaptarse a las características del proyecto de software y a los requisitos del equipo del proyecto.


Personal

El proceso de software lo componen participantes que pueden clasificarse en cinco categorías:

- Gestores superiores: definen los aspectos de negocios que a menudo tienen una significativa influencia en el proyecto

- Gestores técnicos del proyecto: deben planificar, organizar y controlar a los profesionales que realizan el trabajo del software.

- Profesionales: proporcionan las capacidades técnicas para la ingeniería de un producto

- Clientes: especifica los requisitos para la ingeniería de software.

- Usuarios finales: interaccionan con el software una vez que se ha entregado para la producción.


Para gestionar un proyecto de software, se requiere que el jefe del equipo humano tenga motivación, organización, ideas o innovación. El gestor del proyecto debe concentrarse en entender el problema a resolver, gestionando el flujo de ideas. Existen otras características como dotes de gestión, incentivo de los logros, espíritu de equipo.

Hay muchos motivos por los que los proyectos de software pueden tener problemas como son:
- La escala del desarrollo es grande, esto conduce a tener complejidades y dificultades para coordinar a los miembros del equipo.
- La incertidumbre se dan cambios continuos que impactan en el equipo del proyecto
- La interoperatividad es una característica de los sistemas

El software nuevo debe comunicarse con el anterior y ajustarse a las limitaciones predefinidas impuestas por el sistema. Los miembros de un equipo de ingeniería del software comparten ideas, piden ayudas a medida que surgen los problemas e interactúan los unos con los otros.


Problema
Busca un análisis detallado de los requisitos del software proporcionaría la información necesaria para las estimaciones, claro esta que puede llevar semanas o meses. Se debe examinar el problema al inicio de proyecto, establecer el problema y delimitándolo.
La primera gestión un proyecto de software es determinar el ámbito del software. Se define el contexto, que limitaciones se imponen; el objetivo de la información, que datos se obtienen del software; y la función, que realiza el software para transformar la información.

Para la descomposición del problema tiende a aplicarse la estrategia de divide y vencerás, cuando se enfrenta a problemas complejos, es decir el problema se parte en problemas más pequeños y con esto se busca que sean manejables.


Proceso

Las fases que caracterizan el proceso de software se encuentran la definición, el desarrollo y el mantenimiento. El gestor del proyecto decide qué modelo es el más adecuado para desarrollar el proyecto, luego debe definir un plan preliminar, para luego continuar con la descomposición del proceso. Se debe tener en cuenta la maduración del problema, descomposición del proceso. Es importante invertir tiempo al principio del proyecto para tener un plan con buenas bases que se evidencian durante el desarrollo del proyecto y llevar el control de calidad de dicho proyecto.

viernes, 24 de agosto de 2007

Solución de preguntas

CUÁLES SON LAS FASES PARA EL DISEÑO DE UN SOFTWARE

Etapas en el ciclo
Una descripción de etapas con que podemos contar a lo largo del ciclo de vida del software; una vez delimitadas en cierta manera las etapas, habrá que ver la forma en que estas se afrontan (existen diversos modelos de ciclo de vida, y la elección de un cierto modelo para un determinado tipo de proyecto puede ser de vital importancia; el orden de las etapas es un factor importante, por ejemplo tener una etapa de validación al final del proyecto, tal como sugiere el modelo en cascada o lineal, puede implicar serios problemas sobre la gestión de determinados proyectos; hay que tener en cuenta que retomar etapas previas es costoso, y cuanto más tarde se haga más costoso resultará, por tanto el hecho de contar con una etapa de validación tardía tiene su riesgo y, por su situación en el ciclo, un posible tiempo de reacción mínimo en caso de tener que retornar a fases previas).

▲ Necesidades
Esta etapa tiene como objetivo la consecución de un primer documento en que queden reflejados los requerimientos y funcionalidades que ofrecerá al usuario del sistema a desarrollar (qué, y no cómo, se va a desarrollar).
Dado que normalmente se trata de necesidades del cliente para el que se creará la aplicación, el documento resultante suele tener como origen una serie de entrevistas cliente-proveedor situadas en el contexto de una relación comercial, siendo que debe ser comprendido por ambas.

▲ Especificaciones
Ahora se trata de formalizar los requerimientos; el documento obtenido en la etapa anterior se tomará como punto de partida para esta fase. Su contenido es aún insuficiente y lleno de imprecisiones que será necesario completar y depurar. Por medio de esta etapa se obtendrá un nuevo documento que definirá con más precisión el sistema requerido por el cliente (el empleo de los casos de uso).

Lo más normal será que no resulte posible obtener una buena especificación del sistema a la primera; serán necesarias sucesivas versiones del documento en que irán quedando reflejada la evolución de las necesidades del cliente.

▲ Análisis
Es necesario determinar que elementos intervienen en el sistema a desarrollar, así como su estructura, relaciones, evolución en el tiempo, detalle de sus funcionalidades, que van a dar una descripción clara de qué sistema vamos a construir, qué funcionalidades va a aportar y qué comportamiento va a tener. Para ello se enfocará el sistema desde tres puntos de vista relacionados pero diferentes:
- Funcional
- Estático
- Dinámico

▲ Diseño
Teniendo claro que debe hacer el sistema, determinaremos como se va hacer. ¿Cómo debe ser construido el sistema?; aquí se definirán en detalle entidades y relaciones de las bases de datos, se pasará de casos de uso esenciales a su definición como casos expandidos reales, se seleccionará el lenguaje más adecuado, el Sistema Gestor de Bases de Datos a utilizar en su caso, librerías, configuraciones hardware, redes, etc.

▲ Implementación
Se empieza a codificar algoritmos y estructuras de datos, definidos en las etapas anteriores, en el correspondiente lenguaje de programación y/o para un determinado sistema gestor de bases de datos.

▲ Pruebas
El objetivo de estas pruebas es garantizar que el sistema ha sido desarrollado correctamente, sin errores de diseño y/o programación. Es conveniente que sean planteadas al menos tanto a nivel de cada módulo (aislado del resto), como de integración del sistema (según sea la naturaleza del proyecto en cuestión se podrán tener en cuenta pruebas adicionales, ejemplo rendimiento).

▲ Validación
Esta etapa tiene como objetivo la verificación de que el sistema desarrollado cumple con los requisitos expresados inicialmente por el cliente y que han dado lugar al presente proyecto (para esta fase también es interesante contar con los use cases, generados a través de las correspondientes fases previas, que servirán de guía para la verificación de que el sistema cumple con lo descrito por estos).

▲ Mantenimiento y evolución
Finalmente la aplicación resultante se encuentra ya en fase de producción (en funcionamiento para el cliente, cumpliendo los objetivos para los que ha sido creada). A partir de este momento se entra en la etapa de mantenimiento, que supondrá ya pequeñas operaciones tanto de corrección como de mejora de la aplicación (por ejemplo mejora del rendimiento), así como otras de mayor importancia, fruto de la propia evolución. Ejemplo: nuevas opciones para el usuario debidas a nuevas operaciones contempladas para el producto.

La mayoría de las veces en que se desarrolla una nueva aplicación, se piensa solamente en un ciclo de vida para su creación, olvidando la posibilidad de que esta deba sufrir modificaciones futuras (que tendrán que producirse con casi completa seguridad para la mayor parte de los casos).



Fase de definición (¿qué hacer?)
- Estudio de viabilidad.
- Conocer los requisitos que debe satisfacer el sistema (funciones y limitaciones de contexto).
- Asegurar que los requisitos son alcanzables.
- Formalizar el acuerdo con los usuarios.
- Realizar una planificación detallada.

Fase de diseño (¿cómo hacerlo? Soluciones en coste, tiempo y calidad)
- Identificar soluciones tecnológicas para cada una de las funciones del sistema.
- Asignar recursos materiales para cada una de las funciones.
- Proponer (identificar y seleccionar) subcontratas.
- Establecer métodos de validación del diseño.
- Ajustar las especificaciones del producto.

Fase de construcción
- Generar el producto o servicio pretendido con el proyecto.
- Integrar los elementos subcontratados o adquiridos externamente.
- Validar que el producto obtenido satisface los requisitos de diseño previamente definidos y realizar, si es necesario, los ajustes necesarios en dicho diseño para corregir posibles lagunas, errores o inconsistencias.

Fase de mantenimiento y operación
- Operación: asegurar que el uso del proyecto es el pretendido.
- Mantenimiento (nos referimos a un mantenimiento no habitual, es decir, aquel que no se limita a reparar averías o desgastes habituales -este es el caso del mantenimiento en productos software, ya que en un programa no cabe hablar de averías o de desgaste).


FASES DEL CICLO DE VIDA

- Ciclo Cascada
- Ciclo Prototipo
- Ciclo Espiral
- Ciclo Desarrollo incremental
- Ciclo Evolutivo
- Ciclo Modelo basado en reutilización


ASPECTOS QUE SE DEBEN TENER EN CUENTA PARA LA SELECCIÓN CORRECTA DEL MODELO DE CICLO DE VIDA

- El alcance del ciclo depende de hasta dónde llegue el proyecto correspondiente. Un proyecto puede comprender un simple estudio de viabilidad del desarrollo de un producto, o su desarrollo completo o, llevando la cosa al extremo, toda la historia del producto con su desarrollo, fabricación, y modificaciones posteriores hasta su retirada del mercado.

- Las características (contenidos) de las fases en que dividen el ciclo. Esto puede depender del propio tema al que se refiere el proyecto (no son lo mismo las tareas que deben realizarse para proyectar un avión que un puente), o de la organización (interés de reflejar en la división en fases aspectos de la división interna o externa del trabajo).


CUÁL ES LA FUNCIONALIDAD DE LA INGENIERÍA DE SOFTWARE Y QUIENES SON LOS QUE SE BENEFICIAN DIRECTAMENTE

La Ingeniería de Software es la rama de la ingeniería que aplica los principios de la ciencia de la computación y las matemáticas para lograr soluciones costo-efectivas a los problemas de desarrollo de software, es decir, permite elaborar consistentemente productos correctos, utilizables y costo-efectivos.
El proceso de ingeniería de software se define como un conjunto de etapas parcialmente ordenadas con la intención de lograr un objetivo, en este caso, la obtención de un producto de software de calidad.

El proceso de desarrollo de software es aquel en que las necesidades del usuario son traducidas en requerimientos de software, estos requerimientos transformados en diseño y el diseño implementado en código, el código es probado, documentado y certificado para su uso operativo. Concretamente define quién está haciendo qué, cuándo hacerlo y cómo alcanzar un cierto objetivo.

miércoles, 22 de agosto de 2007

Preguntas Ingeniería Software

Cuándo se habla de proyecto informático, a que se refiere?
Aciones secuenciales que incluyen personas, hardware, software, con el fin de obtener uno o más resultados sobre un sistema de información.


La inquietud que tengo, ¿Cuál es el modelo más usado en el proceso de desarrollo de software: cascada, prototipo, espiral, etc?.

viernes, 17 de agosto de 2007

Proceso software

Etapas proceso de vida

Incremental

Evolutivo

Espiral

cascada

Ciclo de Vida - Proyecto

Ciclo de vida
Conjunto de etapas que se han de llevar a cabo para crear, explotar y mantener un Sistema Informático.

OBJETIVOS DE CADA FASE
Dentro de cada fase general de un modelo de ciclo de vida, se pueden establecer una serie de objetivos y tareas que lo caracterizan.

Fase de definición (¿qué hacer?)
- Estudio de viabilidad.
- Conocer los requisitos que debe satisfacer el sistema (funciones y limitaciones de contexto).
- Asegurar que los requisitos son alcanzables.
- Formalizar el acuerdo con los usuarios.
- Realizar una planificación detallada.

Fase de diseño (¿cómo hacerlo? Soluciones en coste, tiempo y calidad)
- Identificar soluciones tecnológicas para cada una de las funciones del sistema.
- Asignar recursos materiales para cada una de las funciones.
- Proponer (identificar y seleccionar) subcontratas.
- Establecer métodos de validación del diseño.
- Ajustar las especificaciones del producto.

Fase de construcción
- Generar el producto o servicio pretendido con el proyecto.
- Integrar los elementos subcontratados o adquiridos externamente.
- Validar que el producto obtenido satisface los requisitos de diseño previamente definidos y realizar, si es necesario, los ajustes necesarios en dicho diseño para corregir posibles lagunas, errores o inconsistencias.

Fase de mantenimiento y operación
- Operación: asegurar que el uso del proyecto es el pretendido.
- Mantenimiento (nos referimos a un mantenimiento no habitual, es decir, aquel que no se limita a reparar averías o desgastes habituales -este es el caso del mantenimiento en productos software, ya que en un programa no cabe hablar de averías o de desgaste).


Cascada
- Llamado ciclo de vida clásico
- Orientado a fases, línea secuencial
- Cada proceso comienza cuando termina el anterior
- Es el ciclo ideal, es el más fácil de planificar
- Para un proyecto corto, es recomendable usar este ciclo de vida

1. Definición de requerimientos
Estudio detallado de la situación actual del problema a tratar, definición de los requerimientos que debe cumplir el nuevo sistema
2. Análisis y diseño del sistema
Descomposición modular de toda la aplicación, descripción detallada de cada uno de los módulos y sus interrelaciones, todo ello para poder facilitar al máximo la fase de codificación.

3. Implementación (codificación)
Cada módulo como resultado de la fase anterior es traducido a la herramienta o lenguaje apropiado.

4. Integración y pruebas
Verificación del correcto funcionamiento de cada módulo y todo el sistema una vez ha sido integrado, detectar errores en la codificación, definiciones de requerimientos y de diseño.
5. Explotación y mantenimiento
Garantizar el mantenimiento del sistema, corrección de errores detectados en esta fase, adaptación del sistema a nuevos entornos.


Ciclo de vida en espiral
• Es una generalización del ciclo prototipo, no basta con una sola evaluación de un prototipo.
• Sucesión de prototipos que progresan hasta llegar a alcanzar el estado deseado. En cada ciclo (espiral) las especificaciones del producto se van resolviendo paulatinamente.
• Consta de una serie de ciclos
• Cada uno empieza identificando los objetivos, las alternativas y las restricciones del ciclo
• Una vez evaluadas las alternativas respecto a los objetivos y teniendo en cuenta las restricciones, se lleva a cabo el ciclo correspondiente para, una vez finalizado empezar a plantear el próximo.
• Incorpora el factor “riesgo del proyecto” al modelo de ciclo de vida
• Se produce una cadena continua de productos, los cuales están disponibles para la examinación y evaluación por parte del cliente
• Provee mecanismos para la aseguración de la calidad del software
• La reevaluación después de cada fase permite cambios en las percepciones de los usuarios, avances tecnológicos o perspectivas financieras.
• Se basa en análisis de riesgos

Fases del modelo espiral
• Planteamiento de Objetivos
- Se identifican los objetivos específicos para cada fase del proyecto.
• Identificación y reducción de riesgos
- Los riesgos clave se identifican y analizan, y la información sirve para minimizar los riesgos.
• Desarrollo y Validación
- Se elige un modelo apropiado para la siguiente fase del desarrollo.
• Planeación
- Se revisa el proyecto y se trazan planes para la siguiente ronda del espiral.


Modelo incremental

• Es una repetición de varios ciclos de vida en cascada
• Al final de cada ciclo se entrega una versión parcial del software incrementada con cierta funcionalidad nueva respecto a las entregas anteriores
• Los ciclos se repiten hasta obtener un producto completo
• Se suelo aplicar a desarrollos de gran tamaño
• Crear sistema añadiendo componentes funcionales (incrementos)
• En cada paso se actualiza el sistema con nuevas funcionalidades y requisitos


Ciclo de vida evolutivo
- Conseguir obtener todos los requisitos al comienzo del proyecto es prácticamente imposible
- Las necesidades de clientes y usuarios evolucionan durante el desarrollo y surgen nuevos requisitos
- El resultado de la evaluación permite evolucionar hacia la siguiente versión
- El ciclo de vida evolutivo presenta ciclos como requisitos, desarrollo, evaluación.


Prototipos
• Los prototipos se pueden usar como una herramienta para obtener y validar los requisitos de clientes y usuarios en cualquier ciclo de vida
• Se debe evaluar si el esfuerzo de desarrollo del prototipo merece la pena (coste de errores)
• Siempre se debe tener en cuenta que el prototipo no es el producto final, ya que su calidad no suele ser la necesaria




PROYECTO

Un proyecto es un conjunto de actividades interrelacionadas, con un inicio y un fin definido, que utiliza recursos limitados para lograr un objetivo deseado. Los dos elementos básicos que incluye esta definición son: las actividades y los recursos.
- Las actividades son las tareas que deben ejecutarse para llegar en conjunto al objetivo deseado; por ejemplo: recopilar información; realizar diagnósticos; confeccionar un diseño global de un procedimiento, programar, escribir manuales de procedimiento. El aspecto fundamental en todo proyecto es el orden en el cual se realizan las actividades. Y para determinar la secuencia lógica de las actividades se debe establecer el método, el tiempo y el costo de cada operación.
- Los recursos son los elementos utilizados para poder realizar la ejecución de cada una de las tareas; como por ejemplo: hardware, programas de base (sistemas operativos), programas de aplicación, discos de almacenamiento, energía, servicios, inversiones de capital, personal, información, dinero y tiempo.
En cuanto al objetivo del proyecto, este puede ser sencillo y no demandar ni muchas tareas ni demasiados recursos; o por el contrario, puede ser complejo y exigir múltiples actividades y una gran cantidad de recursos para poder alcanzarlo.

Todo proyecto los siguientes criterios:
1. Tener un principio y un fin
2. Tener un calendario definido de ejecución
3. Plantearse de una sola vez
4. Constar de una sucesión de actividades o de fases
5. Agrupar personas en función de las necesidades específicas de cada actividad
6. Contar con los recursos necesarios para desenvolver las actividades
Todos los proyectos que se desarrollan en las organizaciones deben cumplirse en un cierto plazo de tiempo y que además requieren de la concurrencia de otras personas. Y es aquí donde empieza a tener relevancia la figura del administrador, en los proyectos a realizarse en las organizaciones; incluidos los proyectos informáticos.
Los administradores eficaces de proyectos, son los que logran que el trabajo se ejecute a tiempo, dentro del presupuesto, y conforme a las normas de calidad especificadas.

PROYECTO INFORMÁTICO
Un proyecto informático es un sistema de acciones simultáneas y/o secuenciales que incluye personas, equipos de hardware, software y comunicaciones, enfocado en obtener uno o más resultados deseables sobre un sistema de información. Un proyecto informático es un sistema de información que nos ayuda a tomar decisiones en las actividades de construcción de software.

La planificación consiste en diseñar un futuro deseable y seleccionar o crear formas de lograrlo, hasta donde sea posible. Por lo tanto, al planificar se construye la secuencia de tareas con la lógica necesaria, y la asignación de recursos necesarios para alcanzar el objetivo del proyecto en un tiempo óptimo.
La disponibilidad de recursos, hace que la secuencia de tareas pueda variar en el tiempo; dependiendo de los recursos con que se dispongan. Por lo tanto, al momento de planificar, hay que considerar, las tareas y los recursos; con el mismo grado de importancia.

Los objetivos que caracterizan a un proyecto informático:
El inicio de un proyecto informático generalmente está dado en la solicitud de requerimientos de los usuarios, y siendo que los diferentes sistemas de Información abordan los diferentes tipos de problemas organizacionales; podemos clasificar a los Sistemas de Información según sean las aplicaciones que necesite cada usuario en:
- Sistemas de Transacciones,
- Sistemas de Soporte para la toma de decisiones, y
- Sistemas Expertos.
Los recursos más frecuentemente utilizados que caracterizan a un sistema de información, como ser el uso de Hardware, Software y Comunicaciones.

Inicio proyecto informático
Para iniciar un proyecto informático, se debe tener en cuenta las necesidades de mantenimiento, modificación, mejoramiento, reemplazo o capacidad:
- El Mantenimiento del programa: Involucra solucionar fallas menores del sistema, que obligará a la realización de cambios en el programa; como por ejemplo el descuido de no considerar que puedan ocurrir en el sistema, ciertas condiciones extraordinarias. Las fallas también pueden provenir de otros factores, como ser en el caso de que existan cambios en las expectativas de los usuarios.
- La Modificación del programa: Involucra un cambio estructural de una entidad Por ejemplo, un cambio en el número de dígitos del código postal, o en el código de zona telefónica. La diferencia con el Mantenimiento es el grado de importancia.
- El Mejoramiento del sistema: Es el agregado de capacidades que no formaron parte del sistema de información original; por ejemplo cuando en una división se implementó un sistema de inventarios, este sistema no incluía un modulo para calcular la futura demanda de bienes y partes. La inclusión de este sofisticado módulo de cálculo es considerado un mejoramiento del sistema.
- El Reemplazo del sistemaO ocurre cuando los sistemas de información se tornan físicamente, tecnológicamente o competitivamente obsoletos. Como es el caso de la utilización del láser, en el reconocimiento óptico de caracteres para la lectura del código de barras, remplazando a la entrada por teclado.
- La nueva capacidad del sistema: son sistemas de información para los cuales no es necesario el uso de la automatización. Están dados por la capacidad de poder modelizar la aplicabilidad de nuevos sistemas. Un ejemplo de ello, es la aplicación de los sistemas expertos.

Objetivos del proyecto informático
Los objetivos generales de la actividad de la gestión de un proyecto informático son los siguientes:
- Alcanzar unas funcionalidades determinadas que indiquen lo que se ha concretado que se debe realizar.
- Respetar los plazos que se han establecido para conseguir las funcionalidades, los cuales señalan cuándo se ha de terminar el proyecto informático.
- Respetar el presupuesto asignado al proyecto ajustándose a los costes predeterminados.
Etapas de un proyecto informático
Un proyecto informático es una actividad viva en el sentido de que nace, se desarrolla y finalmente termina. El objetivo principal de la gestión de un proyecto informático es, dirigir el desarrollo del mismo para llevarlo a su fin y obtener las funcionalidades deseadas, en los plazos establecidos y con el presupuesto autorizado.
La gestión de un proyecto debe permitirnos saber hacia dónde va (los objetivos),
cómo se va (planificación de recursos y actividades) y también nos debe
informar en todo momento de dónde se encuentra el proyecto (seguimiento).

La gestión de un proyecto informático tiene cuatro grandes etapas:
1. El inicio del proyecto: que establece los requisitos y los objetivos funcionales generales que se deben conseguir y, de hecho, da origen al proyecto y lo hace nacer.
2. La calificación del proyecto: que permite realizar una evaluación global de la carga de trabajo necesario para la realización del proyecto y, teniendo en cuenta los recursos disponibles, ayuda a repartir en el tiempo las diferentes actividades que se han de llevar a cabo. La calificación incluye la estimación del volumen de trabajo que se debe realizar y la planificación en el tiempo de las diferentes actividades.
3. El desarrollo del proyecto o, más exactamente, el seguimiento y control del desarrollo del proyecto, en el cual se reúnen datos de cómo se efectúa el proyecto y se identifican las desviaciones entre la planificación y la realidad (seguimiento) para poder tomar las medidas de corrección necesarias (control).
4. El cierre del proyecto, que indica la finalización definitiva del proyecto y permite efectuar un balance de la realización al mismo tiempo que libera los recursos que se le habían asignado.


Protocolo punto a punto (PPP)
El Protocolo punto a punto (PPP, Point-to-Point Protocol) es un conjunto de protocolos estándar que permiten la interacción de software de acceso remoto de diversos proveedores. Una conexión habilitada para PPP puede conectar con redes remotas a través de cualquier servidor PPP normalizado. PPP también permite que un servidor de acceso remoto reciba llamadas y proporcione acceso de red al software de acceso remoto de otros proveedores que cumpla los estándares de PPP.

Los estándares de PPP también admiten características avanzadas que no están disponibles en estándares más antiguos como SLIP. PPP acepta varios métodos de autenticación, así como compresión y cifrado de datos. En la mayor parte de las implementaciones de PPP, se puede automatizar todo el proceso de inicio de sesión.

PPP también admite múltiples protocolos de LAN. Puede utilizar TCP/IP o IPX como protocolo de red.

El protocolo IPX/SPX no está disponible en las versiones basadas en Itanium de los sistemas operativos Windows.

PPP es la base de los protocolos Protocolo de túnel punto a punto (PPTP) y Protocolo de túnel de capa dos (L2TP), que se utilizan en las conexiones seguras de red privada virtual (VPN).

viernes, 10 de agosto de 2007

CICLO DE VIDA DE SOFTWARE

CICLO DE VIDA DE SOFTWARE

Un proyecto de ingeniería tiene unos fines ligados a la obtención de un producto, proceso o servicio que es necesario generar a través de diversas actividades. Algunas de estas actividades pueden agruparse en fases porque globalmente contribuyen a obtener un producto intermedio, necesario para continuar hacia el producto final y facilitar la gestión del proyecto. Al conjunto de las fases empleadas se le denomina “ciclo de vida”.

Sin embargo, la forma de agrupar las actividades, los objetivos de cada fase, los tipos de productos intermedios que se generan, etc. pueden ser muy diferentes dependiendo del tipo de producto o proceso a generar y de las tecnologías empleadas.

La complejidad de las relaciones entre las distintas actividades crece exponencialmente con el tamaño, con lo que rápidamente se haría inabordable si no fuera por la vieja táctica de “divide y vencerás”. De esta forma la división de los proyectos en fases sucesivas es un primer paso para la reducción de su complejidad, tratándose de escoger las partes de manera que sus relaciones entre sí sean lo más simples posibles.

La definición de un ciclo de vida facilita el control sobre los tiempos en que es necesario aplicar recursos de todo tipo (personal, equipos, suministros, etc.) al proyecto. Si el proyecto incluye subcontratación de partes a otras organizaciones, el control del trabajo subcontratado se facilita en la medida en que esas partes encajen bien en la estructura de las fases. El control de calidad también se ve facilitado si la separación entre fases se hace corresponder con puntos en los que ésta deba verificarse (mediante comprobaciones sobre los productos parciales obtenidos).

De la misma forma, la práctica acumulada en el diseño de modelos de ciclo de vida para situaciones muy diversas permite que nos beneficiemos de la experiencia adquirida utilizando el enfoque que mejor se adapte a nuestros requerimientos.

Elementos del ciclo de vida
Un ciclo de vida para un proyecto se compone de fases sucesivas compuestas por tareas planificables. Según el modelo de ciclo de vida, la sucesión de fases puede ampliarse con bucles de realimentación, de manera que lo que conceptualmente se considera una misma fase se pueda ejecutar más de una vez a lo largo de un proyecto, recibiendo en cada pasada de ejecución aportaciones de los resultados intermedios que se van produciendo (realimentación).

Para un adecuado control de la progresión de las fases de un proyecto se hace necesario especificar con suficiente precisión los resultados evaluables, o sea, productos intermedios que deben resultar de las tareas incluidas en cada fase. Normalmente estos productos marcan los hitos entre fases.

A continuación presentamos los distintos elementos que integran un ciclo de vida:

• Fases:
Una fase es un conjunto de actividades relacionadas con un objetivo en el desarrollo del proyecto. Se construye agrupando tareas (actividades elementales) que pueden compartir un tramo determinado del tiempo de vida de un proyecto. La agrupación temporal de tareas impone requisitos temporales correspondientes a la asignación de recursos (humanos, financieros o materiales).

Cuanto más grande y complejo sea un proyecto, mayor detalle se necesitará en la definición de las fases para que el contenido de cada una siga siendo manejable. De esta forma, cada fase de un proyecto puede considerarse un “micro-proyecto” en sí mismo, compuesto por un conjunto de micro-fases.

Otro motivo para descomponer una fase en fases menores (subfases) puede ser el interés de separar partes temporales del proyecto que se subcontraten a otras organizaciones, requiriendo distintos procesos de gestión.

Cada fase viene definida por un conjunto de elementos observables externamente, como son las actividades con las que se relaciona, los datos de entrada (resultados de la fase anterior, documentos o productos requeridos para la fase, experiencias de proyectos anteriores), los datos de salida (resultados a utilizar por la fase posterior, experiencia acumulada, pruebas o resultados efectuados) y la estructura interna de la fase.

Esquema general de operación de una fase

• Entregables ("deliverables"). Son los productos intermedios que generan las fases. Pueden ser materiales (componentes, equipos) o inmateriales (documentos, software). Los entregables permiten evaluar la marcha del proyecto mediante comprobaciones de su adecuación o no a los requisitos funcionales y de condiciones de realización previamente establecidos. Cada una de estas evaluaciones puede servir, además, para la toma de decisiones a lo largo del desarrollo del proyecto.

TIPOS DE MODELO DE CICLO DE VIDA

Las principales diferencias entre distintos modelos de ciclo de vida están en:
- El alcance del ciclo dependiendo de hasta dónde llegue el proyecto correspondiente. Un proyecto puede comprender un simple estudio de viabilidad del desarrollo de un producto, o su desarrollo completo o, llevando la cosa al extremo, toda la historia del producto con su desarrollo, fabricación, y modificaciones posteriores hasta su retirada del mercado.

- Las características (contenidos) de las fases en que dividen el ciclo. Esto puede depender del propio tema al que se refiere el proyecto (no son lo mismo las tareas que deben realizarse para proyectar un avión que un puente), o de la organización (interés de reflejar en la división en fases aspectos de la división interna o externa del trabajo).

- La estructura de la sucesión de las fases que puede ser lineal, con prototipado, o en espiral.

- Ciclo de vida lineal: Es el más utilizado, siempre que es posible, precisamente por ser el más sencillo. Consiste en descomponer la actividad global del proyecto en fases que se suceden de manera lineal, es decir, cada una se realiza una sola vez, cada una se realiza tras la anterior y antes que la siguiente. Con un ciclo lineal es fácil dividir las tareas entre equipos sucesivos, y prever los tiempos (sumando los de cada fase).

Requiere que la actividad del proyecto pueda descomponerse de manera que una fase no necesite resultados de las siguientes (realimentación), aunque pueden admitirse ciertos supuestos de realimentación correctiva. Desde el punto de vista de la gestión (para decisiones de planificación), requiere también que se sepa bien de antemano lo que va a ocurrir en cada fase antes de empezarla.

- Ciclo de vida con prototipazo: A menudo ocurre en desarrollos de productos con innovaciones importantes, o cuando se prevé la utilización de tecnologías nuevas o poco probadas, que las incertidumbres sobre los resultados realmente alcanzables, o las ignorancias sobre el comportamiento de las tecnologías, impiden iniciar un proyecto lineal con especificaciones cerradas.

Si no se conoce exactamente cómo desarrollar un determinado producto o cuáles son las especificaciones de forma precisa, suele recurrirse a definir especificaciones iniciales para hacer un prototipo, o sea, un producto parcial (no hace falta que contenga funciones que se consideren triviales o suficientemente probadas) y provisional (no se va a fabricar realmente para clientes, por lo que tiene menos restricciones de coste y/o prestaciones). Este tipo de procedimiento es muy utilizado en desarrollo avanzado. La experiencia del desarrollo del prototipo y su evaluación deben permitir la definición de las especificaciones más completas y seguras para el producto definitivo.

A diferencia del modelo lineal, puede decirse que el ciclo de vida con prototipado repite las fases de definición, diseño y construcción dos veces: para el prototipo y para el producto real.

- Ciclo de vida en espiral: El ciclo de vida en espiral puede considerarse como una generalización del anterior para los casos en que no basta con una sola evaluación de un prototipo para asegurar la desaparición de incertidumbres y/o ignorancias. El propio producto a lo largo de su desarrollo puede así considerarse como una sucesión de prototipos que progresan hasta llegar a alcanzar el estado deseado. En cada ciclo (espirales) las especificaciones del producto se van resolviendo paulatinamente.

A menudo la fuente de incertidumbres es el propio cliente, que aunque sepa en términos generales lo que quiere, no es capaz de definirlo en todos sus aspectos sin ver como unos influyen en otros. En estos casos la evaluación de los resultados por el cliente no puede esperar a la entrega final y puede ser necesaria repetidas veces.

El esquema del ciclo de vida para estos casos puede representarse por un bucle en espiral, donde los cuadrantes son, habitualmente, fases de especificación, diseño, realización y evaluación (o conceptos y términos análogos). En cada vuelta el producto gana en “madurez” (aproximación al final deseado) hasta que en una vuelta la evaluación lo apruebe y el bucle pueda abandonarse.

OBJETIVOS DE CADA FASE
Dentro de cada fase general de un modelo de ciclo de vida, se pueden establecer una serie de objetivos y tareas que lo caracterizan.

Fase de definición (¿qué hacer?)
- Estudio de viabilidad.
- Conocer los requisitos que debe satisfacer el sistema (funciones y limitaciones de contexto).
- Asegurar que los requisitos son alcanzables.
- Formalizar el acuerdo con los usuarios.
- Realizar una planificación detallada.

Fase de diseño (¿cómo hacerlo? Soluciones en coste, tiempo y calidad)
- Identificar soluciones tecnológicas para cada una de las funciones del sistema.
- Asignar recursos materiales para cada una de las funciones.
- Proponer (identificar y seleccionar) subcontratas.
- Establecer métodos de validación del diseño.
- Ajustar las especificaciones del producto.

Fase de construcción
- Generar el producto o servicio pretendido con el proyecto.
- Integrar los elementos subcontratados o adquiridos externamente.
- Validar que el producto obtenido satisface los requisitos de diseño previamente definidos y realizar, si es necesario, los ajustes necesarios en dicho diseño para corregir posibles lagunas, errores o inconsistencias.

Fase de mantenimiento y operación
- Operación: asegurar que el uso del proyecto es el pretendido.
- Mantenimiento (nos referimos a un mantenimiento no habitual, es decir, aquel que no se limita a reparar averías o desgastes habituales -este es el caso del mantenimiento en productos software, ya que en un programa no cabe hablar de averías o de desgaste).

Etapas en el ciclo
Una descripción de etapas con que podemos contar a lo largo del ciclo de vida del software; una vez delimitadas en cierta manera las etapas, habrá que ver la forma en que estas se afrontan (existen diversos modelos de ciclo de vida, y la elección de un cierto modelo para un determinado tipo de proyecto puede ser de vital importancia; el orden de las etapas es un factor importante, por ejemplo tener una etapa de validación al final del proyecto, tal como sugiere el modelo en cascada o lineal, puede implicar serios problemas sobre la gestión de determinados proyectos; hay que tener en cuenta que retomar etapas previas es costoso, y cuanto más tarde se haga más costoso resultará, por tanto el hecho de contar con una etapa de validación tardía tiene su riesgo y, por su situación en el ciclo, un posible tiempo de reacción mínimo en caso de tener que retornar a fases previas).

▲ Necesidades
Esta etapa tiene como objetivo la consecución de un primer documento en que queden reflejados los requerimientos y funcionalidades que ofrecerá al usuario del sistema a desarrollar (qué, y no cómo, se va a desarrollar).
Dado que normalmente se trata de necesidades del cliente para el que se creará la aplicación, el documento resultante suele tener como origen una serie de entrevistas cliente-proveedor situadas en el contexto de una relación comercial, siendo que debe ser comprendido por ambas.

▲ Especificaciones
Ahora se trata de formalizar los requerimientos; el documento obtenido en la etapa anterior se tomará como punto de partida para esta fase. Su contenido es aún insuficiente y lleno de imprecisiones que será necesario completar y depurar. Por medio de esta etapa se obtendrá un nuevo documento que definirá con más precisión el sistema requerido por el cliente (el empleo de los casos de uso).

Lo más normal será que no resulte posible obtener una buena especificación del sistema a la primera; serán necesarias sucesivas versiones del documento en que irán quedando reflejada la evolución de las necesidades del cliente.

▲ Análisis
Es necesario determinar que elementos intervienen en el sistema a desarrollar, así como su estructura, relaciones, evolución en el tiempo, detalle de sus funcionalidades, que van a dar una descripción clara de qué sistema vamos a construir, qué funcionalidades va a aportar y qué comportamiento va a tener. Para ello se enfocará el sistema desde tres puntos de vista relacionados pero diferentes:
- Funcional
- Estático
- Dinámico

▲ Diseño
Teniendo claro que debe hacer el sistema, determinaremos como se va hacer. ¿Cómo debe ser construido el sistema?; aquí se definirán en detalle entidades y relaciones de las bases de datos, se pasará de casos de uso esenciales a su definición como casos expandidos reales, se seleccionará el lenguaje más adecuado, el Sistema Gestor de Bases de Datos a utilizar en su caso, librerías, configuraciones hardware, redes, etc.

▲ Implementación
Se empieza a codificar algoritmos y estructuras de datos, definidos en las etapas anteriores, en el correspondiente lenguaje de programación y/o para un determinado sistema gestor de bases de datos.

▲ Pruebas
El objetivo de estas pruebas es garantizar que el sistema ha sido desarrollado correctamente, sin errores de diseño y/o programación. Es conveniente que sean planteadas al menos tanto a nivel de cada módulo (aislado del resto), como de integración del sistema (según sea la naturaleza del proyecto en cuestión se podrán tener en cuenta pruebas adicionales, ejemplo rendimiento).

▲ Validación
Esta etapa tiene como objetivo la verificación de que el sistema desarrollado cumple con los requisitos expresados inicialmente por el cliente y que han dado lugar al presente proyecto (para esta fase también es interesante contar con los use cases, generados a través de las correspondientes fases previas, que servirán de guía para la verificación de que el sistema cumple con lo descrito por estos).

▲ Mantenimiento y evolución
Finalmente la aplicación resultante se encuentra ya en fase de producción (en funcionamiento para el cliente, cumpliendo los objetivos para los que ha sido creada). A partir de este momento se entra en la etapa de mantenimiento, que supondrá ya pequeñas operaciones tanto de corrección como de mejora de la aplicación (por ejemplo mejora del rendimiento), así como otras de mayor importancia, fruto de la propia evolución. Ejemplo: nuevas opciones para el usuario debidas a nuevas operaciones contempladas para el producto.

La mayoría de las veces en que se desarrolla una nueva aplicación, se piensa solamente en un ciclo de vida para su creación, olvidando la posibilidad de que esta deba sufrir modificaciones futuras (que tendrán que producirse con casi completa seguridad para la mayor parte de los casos).


Ciclo de vida de las aplicaciones de bases de datos
Las etapas del ciclo de vida de una aplicación de bases de datos son las siguientes:
1. Planificación del proyecto.
2. Definición del sistema.
3. Recolección y análisis de los requisitos.
4. Diseño de la base de datos.
5. Selección del SGBD.
6. Diseño de la aplicación.
7. Prototipado.
8. Implementación.
9. Conversión y carga de datos.
10. Prueba.
11. Mantenimiento.
Estas etapas no son estrictamente secuenciales. De hecho hay que repetir algunas de las etapas varias veces, haciendo lo que se conocen como ciclos de realimentación. Por ejemplo, los problemas que se encuentran en la etapa del diseño de la base de datos pueden requerir una recolección de requisitos adicional y su posterior análisis.
A continuación, se muestran las tareas más importantes que se realizan en cada etapa.
1. Planificación del proyecto
Esta etapa conlleva la planificación de cómo se pueden llevar a cabo las etapas del ciclo de vida de la manera más eficiente. Hay tres componentes principales: el trabajo que se ha de realizar, los recursos para llevarlo a cabo y el dinero para pagar por todo ello. Como apoyo a esta etapa, se necesitará un modelo de datos corporativo en donde se muestren las entidades principales de la empresa y sus relaciones, y en donde se identifiquen las principales áreas funcionales. Normalmente, este modelo de datos se representa mediante un diagrama entidad-relación. En este modelo se tiene que mostrar también qué datos comparten las distintas áreas funcionales de la empresa.
La planificación de la base de datos también incluye el desarrollo de estándares que especifiquen cómo realizar la recolección de datos, cómo especificar su formato, qué documentación será necesaria y cómo se va a llevar a cabo el diseño y la implementación. El desarrollo y el mantenimiento de los estándares puede llevar bastante tiempo, pero si están bien diseñados, son una base para el personal informático en formación y para medir la calidad, además, garantizan que el trabajo se ajusta a unos patrones, independientemente de las habilidades y la experiencia del diseñador. Por ejemplo, se pueden establecer reglas sobre cómo dar nombres a los datos, lo que evitará redundancias e inconsistencias. Se deben documentar todos los aspectos legales sobre los datos y los establecidos por la empresa como, por ejemplo, qué datos deben tratarse de modo confidencial.
2. Definición del sistema
En esta etapa se especifica el ámbito y los límites de la aplicación de bases de datos, así como con qué otros sistemas interactúa. También hay que determinar quienes son los usuarios y las áreas de aplicación.
3. Recolección y análisis de los requisitos
En esta etapa se recogen y analizan los requerimientos de los usuarios y de las áreas de aplicación. Esta información se puede recoger de varias formas:
• Entrevistando al personal de la empresa, concretamente, a aquellos que son considerados expertos en las áreas de interés.
• Observando el funcionamiento de la empresa.
• Examinando documentos, sobre todo aquellos que se utilizan para recoger o visualizar información.
• Utilizando cuestionarios para recoger información de grandes grupos de usuarios.
• Utilizando la experiencia adquirida en el diseño de sistemas similares.
La información recogida debe incluir las principales áreas de aplicación y los grupos de usuarios, la documentación utilizada o generada por estas áreas de aplicación o grupos de usuarios, las transacciones requeridas por cada área de aplicación o grupo de usuarios y una lista priorizada de los requerimientos de cada área de aplicación o grupo de usuarios.
Esta etapa tiene como resultado un conjunto de documentos con las especificaciones de requisitos de los usuarios, en donde se describen las operaciones que se realizan en la empresa desde distintos puntos de vista.
La información recogida se debe estructurar utilizando técnicas de especificación de requisitos, como por ejemplo técnicas de análisis y diseño estructurado y diagramas de flujo de datos. También las herramientas CASE pueden proporcionar una asistencia automatizada que garantice que los requisitos son completos y consistentes.
4. Diseño de la base de datos
Esta etapa consta de tres fases: diseño conceptual, diseño lógico y diseño físico de la base de datos. La primera fase consiste en la producción de un esquema conceptual, que es independiente de todas las consideraciones físicas. Este modelo se refina después en un esquema lógico eliminando las construcciones que no se pueden representar en el modelo de base de datos escogido (relacional, orientado a objetos, etc.). En la tercera fase, el esquema lógico se traduce en un esquema físico para el SGBD escogido. La fase de diseño físico considera las estructuras de almacenamiento y los métodos de acceso necesarios para proporcionar un acceso eficiente a la base de datos en memoria secundaria.
Los objetivos del diseño de la base de datos son:
• Representar los datos que requieren las principales áreas de aplicación y los grupos de usuarios, y representar las relaciones entre dichos datos.
• Proporcionar un modelo de datos que soporte las transacciones que se vayan a realizar sobre los datos.
• Especificar un esquema que alcance las prestaciones requeridas para el sistema.
Hay varias estrategias a seguir para realizar el diseño: de abajo a arriba, de arriba a abajo, de dentro a fuera y la estrategia mixta. La estrategia de abajo a arriba parte de todos los atributos y los va agrupando en entidades y relaciones. Es apropiada cuando la base de datos es simple, con pocos atributos. La estrategia de arriba a abajo es más apropiada cuando se trata de bases de datos complejas. Se comienza con un esquema con entidades de alto nivel, que se van refinando para obtener entidades de bajo nivel, atributos y relaciones. La estrategia de dentro a fuera es similar a la estrategia de abajo a arriba, pero difiere en que se parte de los conceptos principales y se va extendiendo el esquema para considerar también otros conceptos, asociados con los que se han identificado en primer lugar. La estrategia mixta utiliza ambas estrategias, de abajo a arriba y de arriba a abajo, con un esquema de divide y vencerás. Se obtiene un esquema inicial de alto nivel, se divide en partes, y de cada parte se obtiene un subesquema. Estos subesquemas se integran después para obtener el modelo final.

5. Selección del SGBD
Si no se dispone de un SGBD, o el que hay se encuentra obsoleto, se debe escoger un SGBD que sea adecuado para el sistema de información. Esta elección se debe hacer en cualquier momento antes del diseño lógico.
6. Diseño de la aplicación
En esta etapa se diseñan los programas de aplicación que usarán y procesarán la base de datos. Esta etapa y el diseño de la base de datos, son paralelas. En la mayor parte de los casos no se puede finalizar el diseño de las aplicaciones hasta que se ha terminado con el diseño de la base de datos. Por otro lado, la base de datos existe para dar soporte a las aplicaciones, por lo que habrá una realimentación desde el diseño de las aplicaciones al diseño de la base de datos.
En esta etapa hay que asegurarse de que toda la funcionalidad especificada en los requisitos de usuario se encuentra en el diseño de la aplicación. Habrá algunos programas que utilicen y procesen los datos de la base de datos.
Además, habrá que diseñar las interfaces de usuario, aspecto muy importante que se suele ignorar. El sistema debe ser fácil de aprender, fácil de usar, ser directo y estar ``dispuesto a perdonar''. Si la interface no tiene estas características, el sistema dará problemas, sin lugar a dudas.
7. Prototipado
Esta etapa, que es opcional, es para construir prototipos de la aplicación que permitan a los diseñadores y a los usuarios probar el sistema. Un prototipo es un modelo de trabajo de las aplicaciones del sistema. El prototipo no tiene toda la funcionalidad del sistema final, pero es suficiente para que los usuarios puedan utilizar el sistema e identificar qué aspectos están bien y cuáles no son adecuados, además de poder sugerir mejoras o la inclusión de nuevos elementos. Este proceso permite que quienes diseñan e implementan el sistema sepan si han interpretado correctamente los requisitos de los usuarios. Otra ventaja de los prototipos es que se construyen rápidamente.
Esta etapa es imprescindible cuando el sistema que se va a implementar tiene un gran coste, alto riesgo o utiliza nuevas tecnologías.
8. Implementación
En esta etapa se crean las definiciones de la base de datos a nivel conceptual, externo e interno, así como los programas de aplicación. La implementación de la base de datos se realiza mediante las sentencias del lenguaje de definición de datos (LDD) del SGBD escogido. Estas sentencias se encargan de crear el esquema de la base de datos, los ficheros en donde se almacenarán los datos y las vistas de los usuarios.
Los programas de aplicación se implementan utilizando lenguajes de tercera o cuarta generación. Partes de estas aplicaciones son transacciones sobre la base de datos, que se implementan mediante el lenguaje de manejo de datos (LMD) del SGBD. Las sentencias de este lenguaje se pueden embeber en un lenguaje de programación anfitrión como Visual Basic, Delphi, C, C++, Java, COBOL, Fortran, Ada o Pascal. En esta etapa, también se implementan los menús, los formularios para la introducción de datos y los informes de visualización de datos. Para ello, el SGBD puede disponer de lenguajes de cuarta generación que permiten el desarrollo rápido de aplicaciones mediante lenguajes de consultas no procedurales, generadores de informes, generadores de formularios, generadores de gráficos y generadores de aplicaciones.
También se implementan en esta etapa todos los controles de seguridad e integridad. Algunos de estos controles se pueden implementar mediante el LDD y otros puede que haya que implementarlos mediante utilidades del SGBD o mediante programas de aplicación.
9. Conversión y carga de datos
Esta etapa es necesaria cuando se está reemplazando un sistema antiguo por uno nuevo. Los datos se cargan desde el sistema viejo al nuevo directamente o, si es necesario, se convierten al formato que requiera el nuevo SGBD y luego se cargan. Si es posible, los programas de aplicación del sistema antiguo también se convierten para que se puedan utilizar en el sistema nuevo.
10. Prueba
En esta etapa se prueba y valida el sistema con los requisitos especificados por los usuarios. Para ello, se debe diseñar una batería de tests con datos reales, que se deben llevar a cabo de manera metódica y rigurosa. Es importante darse cuenta de que la fase de prueba no sirve para demostrar que no hay fallos, sirve para encontrarlos. Si la fase de prueba se lleva a cabo correctamente, descubrirá los errores en los programas de aplicación y en la estructura de la base de datos. Además, demostrará que los programas ``parecen'' trabajar tal y como se especificaba en los requisitos y que las prestaciones deseadas ``parecen'' obtenerse. Por último, en las pruebas se podrá hacer una medida de la fiabilidad y la calidad del software desarrollado.
11. Mantenimiento
Una vez que el sistema está completamente implementado y probado, se pone en marcha. El sistema está ahora en la fase de mantenimiento en la que se llevan a cabo las siguientes tareas:
• Monitorización de las prestaciones del sistema. Si las prestaciones caen por debajo de un determinado nivel, puede ser necesario reorganizar la base de datos.
• Mantenimiento y actualización del sistema. Cuando sea necesario, los nuevos requisitos que vayan surgiendo se incorporarán al sistema, siguiendo de nuevo las etapas del ciclo de vida que se acaban de presentar.

Herramientas Case
La ingeniería de sistemas asistida por ordenador es la aplicación de tecnología informática a las actividades, las técnicas y las metodologías propias de desarrollo, su objetivo es acelerar el proceso para el que han sido diseñadas, en el caso de CASE para automatizar o apoyar una o mas fases del ciclo de vida del desarrollo de sistemas. Herramientas CASE como un conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software (Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.).

CASE es también definido como el conjunto de métodos, utilidades y técnicas que facilitan el mejoramiento del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases. Se puede ver al CASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.

Existe también el CASE integrado que fue comenzando a tener un impacto muy significativo en los negocios y sistemas de información de las organizaciones, además con este CASE integrado las compañías pueden desarrollar rápidamente sistemas de mejor calidad para soportar procesos críticos del negocio y asistir en el desarrollo y promoción intensiva de la información de productos y servicios.

Cuando se hace la planificación de la base de datos, la primera etapa del ciclo de vida de las aplicaciones de bases de datos, también se puede escoger una herramienta CASE que permita llevar a cabo el resto de tareas del modo más eficiente y efectivo posible. Una herramienta CASE suele incluir:

• Un diccionario de datos para almacenar información sobre los datos de la aplicación de bases de datos.
• Herramientas de diseño para dar apoyo al análisis de datos.
• Herramientas que permitan desarrollar el modelo de datos corporativo, así como los esquemas conceptual y lógico.
• Herramientas para desarrollar los prototipos de las aplicaciones.

El uso de las herramientas CASE puede mejorar la productividad en el desarrollo de una aplicación de bases de datos.

La tecnología CASE supone la automatización del desarrollo del software, contribuyendo a mejorar la calidad y la productividad en el desarrollo de sistemas de información y se plantean los siguientes objetivos:
• Permitir la aplicación práctica de metodologías estructuradas, las cuales al ser realizadas con una herramienta se consigue agilizar el trabajo.
• Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones.
• Simplificar el mantenimiento de los programas.
• Mejorar y estandarizar la documentación.
• Aumentar la portabilidad de las aplicaciones.
• Facilitar la reutilización de componentes software.
• Permitir un desarrollo y un refinamiento visual de las aplicaciones, mediante la utilización de gráficos.

Componentes de una herramienta case
Una herramienta CASE se compone de los siguientes elementos:
• Diccionario donde se almacenan los elementos definidos o creados por la herramienta, y cuya gestión se realiza mediante el apoyo de un Sistema de Gestión de Base de Datos (SGBD) o de un sistema de gestión de ficheros.

• Meta modelo (no siempre visible), que constituye el marco para la definición de las técnicas y metodologías soportadas por la herramienta.

• Carga o descarga de datos, son facilidades que permiten cargar el repertorio de la herramienta CASE con datos provenientes de otros sistemas, o bien generar a partir de la propia herramienta esquemas de base de datos, programas, etc. que pueden, a su vez, alimentar otros sistemas. Este elemento proporciona así un medio de comunicación con otras herramientas.

• Comprobación de errores, facilidades que permiten llevar a cabo un análisis de la exactitud, integridad y consistencia de los esquemas generados por la herramienta.

• Interfaz de usuario, que constará de editores de texto y herramientas de diseño gráfico que permitan, mediante la utilización de un sistema de ventanas, iconos y menús, con la ayuda del ratón, definir los diagramas, matrices, etc. que incluyen las distintas metodologías.

La estructura CASE se basa en la siguiente terminología:
- CASE de alto nivel son aquellas herramientas que automatizan o apoyan las fases finales o superiores del ciclo de vida del desarrollo de sistemas como la planificación de sistemas, el análisis de sistemas y el diseño de sistemas.

- CASE de bajo nivel son aquellas herramientas que automatizan o apoyan las fases finales o inferiores del ciclo de vida como el diseño detallado de sistemas, la implantación de sistemas y el soporte de sistemas.

- CASE cruzado de ciclo de vida se aplica a aquellas herramientas que apoyan actividades que tienen lugar a lo largo de todo el ciclo de vida, se incluyen actividades como la gestión de proyectos y la estimación.

Clasificación de las herramientas case
Podrían clasificarse atendiendo a:
- Las plataformas que soportan.
- Las fases del ciclo de vida del desarrollo de sistemas que cubren.
- La arquitectura de las aplicaciones que producen.
- Su funcionalidad.

CASE es una combinación de herramientas software (aplicaciones) y de metodologías de desarrollo.

Las herramientas CASE, en función de las fases del ciclo de vida que cubre, se pueden agrupar de la forma siguiente:

1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench.

2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior), orientadas a la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño.

3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior), dirigidas a las últimas fases del desarrollo: construcción e implantación.

4. Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontrarían las herramientas de reingeniería, orientadas a la fase de mantenimiento.

Ejemplos de herramientas Case más utilizadas: ERwin, EasyCASE, Oracle Designer, System Architect.

Arquitectura Distribuida
Surge con los nuevos modelos organizativos, en los que la empresa se divide en unidades más o menos autónomas que establecen relaciones más definidas y directas entre sí. Aparecen entonces entornos informáticos departamentales adecuados a las necesidades de cada departamento en concreto.

- Características funcionales
• Cada usuario trabaja con su terminal local inteligente, con lo que obtiene mejores tiempo de respuesta.
• Los recursos necesarios que no estén disponibles sobre el terminal local (ordenador personal o estación de trabajo) pueden tomarse del ordenador central a través de la red de telecomunicaciones.

- Características físicas
• Sistemas informáticos distribuidos en los que los ordenadores a través de la organización están conectados por medio de una red de telecomunicaciones.
• Cada ordenador sobre la red tiene capacidad de tratamiento autónomo que permite servir a las necesidades de los usuarios locales.
• También proporciona acceso a otros elementos de la red o a servidores centrales.
• Toma importancia la red de comunicación de datos.

- Características lógicas
• Cada tarea individual puede ser analizada para determinar si puede distribuirse o no. En general, las tareas más complejas o de carácter estratégico para la organización se mantienen en el ordenador central. Las tareas de complejidad media o específicas para un determinado grupo de usuarios se distribuyen entre las máquinas locales de ese grupo.

• La plataforma física seleccionada puede ajustarse a las necesidades del grupo de usuarios, con lo que surgen los ordenadores especializados para determinados tipos de tareas.

Ventajas e Inconvenientes
• Ventajas
• Funcionamiento autónomo de los sistemas locales, lo que origina un buen tiempo de respuesta.
• Los sistemas de información llegan a todos los departamentos de la empresa.
• Abre posibilidades de trabajo mucho más flexibles y potentes.

• Inconvenientes
• Requiere un intenso flujo de informaciónes (muchas veces no útiles, como pantallas y datos incorrectos) dentro de la red, lo que puede elevar los costes de comunicaciones.
• Supone una mayor complejidad.
• Si los sistemas no están integrados, pueden producirse problemas de inconsistencia de datos.

lunes, 18 de junio de 2007

Instalacion Jboss

Pasos

- Instalación JDK en Plataformas Windows
- Descargar la versión más reciente de JBoss :
- JBoss 3.2.x [~57 MB]
- Descargar la versión más reciente del árbol 3.2.x
- Descargar la versión JBoss binario para mayor integridad.
- Coloquese en el directorio donde desee realizar la instalación y realice estos pasos:
- Descomprimir el archivo de JBoss y colocarlo dentro de un directorio temporal/instalación.
- Una vez terminada la instalación se recomienda cambiar el nombre del directorio jboss-3.2.x a simplemente jboss ; quedando instalado en una ruta absoluta como : C:\jboss\.
- En el directorio raíz de JBoss reside un directorio llamado bin que contiene los ejecutables de JBoss, el archivo run.bat es empleado para arrancar el Servidor en versión "default".
- Al invocar este comando, JBoss será iniciado con los parámetros y componentes residentes en el directorio $JBOSS_HOME/server/default, donde $JBOSS_HOME es el directorio raíz de instalación.

Es empleada la Base de Datos HSQL (Hypersonic) integrada con JBoss, esta Base de Datos puede ser inicializada automáticamente al iniciarse JBoss

Dicha Base de Datos se encuentra equipada con una interfase gráfica que permite observar directamente la información contenida en ella, lo anterior será de utilidad al diseñar EJB's de Entidad ("Entity EJB's"); para accesar esta interfase gráfica se deben realizar los siguientes pasos:
- Debe modificar el archivo de configuración para Hypersonic hsqldb-ds.xml ubicado bajo el directorio $JBOSS_HOME/server/default/deploy, donde $JBOSS_HOME es el directorio raíz de instalación. En él debe permitir el acceso vía TCP a la Base de Datos, que se encuentra desactivado por "default".
La primer sección que debe modificar en hsqldb-ds.xml se encuentra en el segundo párrafo, debe eliminar el comentario tipo XML (-->) en la parte final de esta sección, para encontrarse de la siguiente manera




jdbc:hsqldb:hsql://localhost:1701





La otra sección en hsqldb-ds.xml que debe modificar es una de las ultimas secciones en este archivo. Asegúrese que el siguiente MBean se encuentre sin comentario tipo XML (-->) en su parte final, debe encontrarse de la siguiente manera:




name="jboss:service=Hypersonic">
1701
true
default
false
true




Una vez realizadas estas modificaciones puede activar el proceso de JBoss, esto permitirá la conexión hacia la Base de Datos.
Para facilitar la invocación de la interfase gráfica sobre la Base de Datos, es recomendable generar un archivo llamado Hypersonic.bat con esta información:

# Donde C:\jboss representa el directorio raíz de instalación
java -cp "%CLASSPATH%;C:\jboss\server\default\lib\hsqldb.jar;."
org.hsqldb.util.DatabaseManager



La definición anterior invoca la Clase Java que genera la interfase gráfica de HSQL (Hypersonic), sin embargo, al colocar la definición anterior en un archivo de "Shell" se facilita la creación de la interfase al invocar Hypersonic.bat.

Al invocar el comando/archivo anterior modifique los parámetros a los siguientes valores:

ype : HSQL Database Engine Server
Driver: org.hsqldb.jdbcDriver
URL : jdbc:hsqldb:hsql://localhost:1701 (Agregar Puerto)
User : sa
Password : (En Blanco)



Para que la conexión hacia HSQL (Hypersonic) sea exitosa es necesario que el proceso de JBoss este activo, además de realizar las modificaciones pertinentes al archivo hsqldb-ds.xml como fue descrito anteriormente.

Ahora se debe cargar el Modelo de Datos, a continuación se describe el modelo empleado a lo largo del curso:

CREATE TABLE CUENTAS_BANCARIAS(ID VARCHAR PRIMARY KEY,
NOMBRE VARCHAR,
APELLIDO VARCHAR,
SALDO DOUBLE)


- Para agilizar el proceso de montaje de datos se recomienda colocar la declaración anterior en un archivo llamado datos.sql.
- De la interfase gráfica de HSQL (Hypersonic) seleccione la opción File -> Open Script... y elija el archivo creado anteriormente (datos.sql); una vez ejecutado el comando anterior oprima el icono Execute para cargar la tabla SQL.
- Al terminar las instrucciones anteriores seleccione la opción View -> Refresh Tree ; posteriormente debe aparecer en la ventana izquierda de la interfase gráfica la tabla SQL.


Prueba

Ejecute el comando run.bat ubicado en el directorio $JBOSS_HOME/bin/, donde $JBOSS_HOME es el directorio raíz de instalación, al invocar el comando anterior deben aparecer instrucciones como las siguientes:

C:\ ./run.bat
=========================================================================

JBoss Bootstrap Environment

JBOSS_HOME: C:\jboss

JAVA: C:\jdk\bin\java

JAVA_OPTS: -server -Dprogram.name=run.bat

CLASSPATH: C:\jboss\bin\run.jar;C:\jdk\lib\tools.jar

=========================================================================

12:55:10,608 INFO [Server] Starting JBoss (MX MicroKernel)...
12:55:10,610 INFO [Server] Release ID: JBoss [WonderLand] 3.2.7
(build: CVSTag=JBoss_3_2_7 date=200501280217)
12:55:10,610 INFO [Server] Home Dir: C:\jboss
12:55:10,610 INFO [Server] Home URL: file:C:\jboss\
12:55:10,623 INFO [Server] Library URL: file:C:\jboss\lib\
12:55:10,625 INFO [Server] Patch URL: null
12:55:10,642 INFO [Server] Server Name: default
12:55:10,642 INFO [Server] Server Home Dir: C:\jboss\server\default
12:55:10,643 INFO [Server] Server Home URL: C:\jboss\server\default\
12:55:10,643 INFO [Server] Server Data Dir: C:\jboss\server\default\data

........
< 50-70 lineas >
.......
.......
12:55:31,862 INFO [Http11Protocol] Starting Coyote HTTP/1.1
on http-0.0.0.0-8080
12:55:32,074 INFO [ChannelSocket] JK2: ajp13 listening on /0.0.0.0:8010
12:55:32,192 INFO [JkMain] Jk running ID=1 time=0/149 config=null
12:55:32,216 INFO [Server] JBoss (MX MicroKernel) [3.2.7
(build: CVSTag=JBoss_3_2_7 date=200501280217)]
Started in 25s:163ms

--------------------

Si observa los resultados anteriores sin ningún tipo de error, ha instalado correctamente JBoss, en caso contrario realice los pasos anteriores hasta que esta prueba sea ejecutada correctamente.

viernes, 15 de junio de 2007

SQL

Cuestionario SQL

1. What does SQL stand for?

Strong Question Language
Structured Query Language
Structured Question Language

2. Which SQL statement is used to extract data from a database?

OPEN
SELECT
EXTRACT
GET

3. Which SQL statement is used to update data in a database?
MODIFY
SAVE AS
SAVE
UPDATE

4. Which SQL statement is used to delete data from a database?

REMOVE
COLLAPSE
DELETE

5. Which SQL statement is used to insert new data in a database?

ADD NEW
INSERT NEW
ADD RECORD
INSERT INTO

6. With SQL, how do you select a column named "FirstName" from a table named "Persons"?

EXTRACT FirstName FROM Persons
SELECT Persons.FirstName
SELECT FirstName FROM Persons

7. With SQL, how do you select all the columns from a table named "Persons"?
SELECT [all] FROM Persons
SELECT * FROM Persons
SELECT Persons
SELECT *.Persons

8. With SQL, how do you select all the records from a table named "Persons" where the value of the column "FirstName" is "Peter"?
SELECT * FROM Persons WHERE FirstName LIKE 'Peter'
SELECT * FROM Persons WHERE FirstName='Peter'
SELECT [all] FROM Persons WHERE FirstName LIKE 'Peter'
SELECT [all] FROM Persons WHERE FirstName='Peter'

9. With SQL, how do you select all the records from a table named "Persons" where the value of the column "FirstName" starts with an "a"?

SELECT * FROM Persons WHERE FirstName LIKE 'a%'
SELECT * FROM Persons WHERE FirstName='a'
SELECT * FROM Persons WHERE FirstName='%a%'
SELECT * FROM Persons WHERE FirstName LIKE '%a'

10. The OR operator displays a record if ANY conditions listed are true. The AND operator displays a record if ALL of the conditions listed are true
True
False

11. With SQL, how do you select all the records from a table named "Persons" where the "FirstName" is "Peter" and the "LastName" is "Jackson"?
SELECT * FROM Persons WHERE FirstName='Peter' AND LastName='Jackson'
SELECT FirstName='Peter', LastName='Jackson' FROM Persons
SELECT * FROM Persons WHERE FirstName LIKE 'Peter' AND LastName LIKE 'Jackson'

12. With SQL, how do you select all the records from a table named "Persons" where the "LastName" is alphabetically between (and including) "Hansen" and "Pettersen"?
SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen'
SELECT * FROM Persons WHERE LastName >'Hansen' AND LastName < 'Pettersen'
SELECT LastName>'Hansen' AND LastName<'Pettersen' FROM Persons

13. Which SQL statement is used to return only different values?
SELECT DIFFERENT
SELECT UNIQUE
SELECT DISTINCT

14. Which SQL keyword is used to sort the result-set?
ORDER BY
SORT BY
SORT
ORDER

15. With SQL, how can you return all the records from a table named "Persons" sorted descending by "FirstName"?

SELECT * FROM Persons SORT BY 'FirstName' DESC
SELECT * FROM Persons ORDER FirstName DESC
SELECT * FROM Persons ORDER BY FirstName DESC
SELECT * FROM Persons SORT 'FirstName' DESC

16. With SQL, how can you insert a new record into the "Persons" table?INSERT VALUES ('Jimmy', 'Jackson') INTO Persons

INSERT INTO Persons VALUES ('Jimmy', 'Jackson')

INSERT ('Jimmy', 'Jackson') INTO Persons

17. With SQL, how can you insert "Olsen" as the "LastName" in the "Persons" table?
INSERT INTO Persons (LastName) VALUES ('Olsen')
INSERT INTO Persons ('Olsen') INTO LastName
INSERT ('Olsen') INTO Persons (LastName)

18. How can you change "Hansen" into "Nilsen" in the "LastName" column in the Persons table?
UPDATE Persons SET LastName='Nilsen' WHERE LastName='Hansen'
MODIFY Persons SET LastName='Nilsen' WHERE LastName='Hansen'
UPDATE Persons SET LastName='Hansen' INTO LastName='Nilsen'
MODIFY Persons SET LastName='Hansen' INTO LastName='Nilsen

19. With SQL, how can you delete the records where the "FirstName" is "Peter" in the Persons Table?

DELETE ROW FirstName='Peter' FROM Persons
DELETE FirstName='Peter' FROM Persons
DELETE FROM Persons WHERE FirstName = 'Peter'

20. With SQL, how can you return the number of records in the "Persons" table?
SELECT COLUMNS() FROM Persons
SELECT COLUMNS(*) FROM Persons
SELECT COUNT() FROM Persons
SELECT COUNT(*) FROM Persons
good luck for my

sábado, 14 de abril de 2007

sistemas distribuidos

Replicación de datos
La réplica de la base de datos es la creación y el mantenimiento de copias múltiples de la misma base de datos. Un servidor de la base de datos mantiene la copia principal de la base de datos y los servidores adicionales de la base de datos mantienen las copias auxiliares de la base de datos. La base de datos escribe, se envía al servidor principal de la base de datos y después es replegada por los servidores auxiliares de la base de datos. Esta se divide entre todos los servidores de la base de datos, que da lugar a una ventaja grande del funcionamiento debido a compartir carga.

Además, la réplica de la base de datos puede también mejorar disponibilidad, porque los servidores auxiliares de la base de datos se pueden configurar para asumir el control, si el servidor principal de la base de datos no llega a ser asequible.

La réplica en la base de datos consiste en el transporte de datos entre dos o más servidores, permitiendo que ciertos datos de la base de datos estén almacenados en más de un sitio, y así aumentar la disponibilidad de los datos y mejorar el funcionamiento de las consultas globales a las bases de datos. A los tipos básicos de replicación (de instantáneas, transaccional y de mezcla), se le incorporan opciones para ajustarse aún más a los requerimientos del usuario.
El modelo de replicación está formado por: publicador, distribuidor, suscriptor, publicación, artículo y suscripción; y varios agentes responsabilizados de copiar los datos entre el publicador y el suscriptor. Estos agentes son los procesos responsabilizados de copiar los datos entre el publicador y el suscriptor. Estos agentes son: agente de instantáneas, agente de distribución, agente del lector del registro, agente del lector de cola y agente de mezcla.

La replicación de datos es un asunto exclusivamente entre servidores de datos, en nuestro caso hablamos de servidores SQL Server. Los servidores SQL Server pueden desempeñar uno o varios de los siguientes roles: publicador, distribuidor o suscriptor.

El publicador es un servidor que pone los datos a disposición de otros servidores para poder replicarlos.
El distribuidor es un servidor que aloja la base de datos de distribución y almacena los datos históricos, transacciones y metadatos. Los suscriptores reciben los datos replicados.

- Una publicación es un conjunto de artículos de una base de datos. Esta agrupación de varios artículos facilita especificar un conjunto de datos relacionados lógicamente y los objetos de bases de datos que desea replicar conjuntamente. Un artículo de una publicación puede ser una tabla de datos la cual puede contar con todas las filas o algunas (filtrado horizontal) y simultáneamente contar de todas las columnas o algunas (filtrado vertical), un procedimiento almacenado, una definición de vista, la ejecución de un procedimiento almacenado, una vista, una vista indizada o una función definida por el usuario.
Una suscripción es una petición de copia de datos o de objetos de base de datos para replicar. Una suscripción define qué publicación se recibirá, dónde y cuándo. Las suscripciones pueden ser de inserción o de extracción; y una publicación puede admitir una combinación de suscripciones de inserción y extracción. El publicador (en las suscripciones de inserción) o el suscriptor (en las suscripciones de extracción) solicita la sincronización o distribución de datos de una suscripción.

El publicador puede disponer de una o más publicaciones, de las cuales los suscriptores se suscriben a las publicaciones que necesitan, nunca a artículos individuales de una publicación. El publicador, además, detecta qué datos han cambiado durante la replicación transaccional y mantiene información acerca de todas las publicaciones del sitio.

La función del distribuidor varía según la metodología de replicación implementada. En ocasiones se configura como distribuidor el mismo publicador y se le denomina distribuidor local. En el resto de los casos el distribuidor será remoto, pudiendo coincidir en algún caso con un suscriptor.

Los suscriptores además de obtener sus suscripciones, en dependencia del tipo y opciones de replicación elegidas, pueden devolver datos modificados al publicador. Además puede tener sus propias publicaciones.

Tipos de replicación
Los tipos básicos de replicación son:
• Replicación instantánea
• Replicación transaccional
• Replicación de mezcla

- Replicación instantánea
En la replicación de instantáneas los datos se copian tal y como aparecen exactamente en un momento determinado. Por consiguiente, no requiere un control continuo de los cambios. Las publicaciones de instantáneas se suelen replicar con menos frecuencia que otros tipos de publicaciones. Puede llevar más tiempo propagar las modificaciones de datos a los suscriptores. Se recomienda utilizar: cuando la mayoría de los datos no cambian con frecuencia; se replican pequeñas cantidades de datos; los sitios con frecuencia están desconectados y es aceptable un periodo de latencia largo (la cantidad de tiempo que transcurre entre la actualización de los datos en un sitio y en otro). En ocasiones se hace necesario utilizarla cuando están involucrados algunos tipos de datos (text, ntext, e image) cuyas modificaciones no se registran en el registro de transacciones y por tanto no se pueden replicar utilizando la metodología de replicación transaccional.

Los servidores OLAP son candidatos a la replicación de instantáneas. Las consultas ad-hoc que aplican los administradores de sistemas de información son generalmente de solo lectura y los datos con antigüedad de horas o días no afectan sus consultas. Por ejemplo un departamento desea hacer una investigación sobre demografía de los artículos vendidos hace dos meses. La información de la semana pasada no afectará sus consultas; además el departamento no está planeando hacer cambios en los datos, solo necesita el almacén de datos. Hay que destacar además que cuando están involucrados algunos tipos de datos (text, ntext, e image) cuyas modificaciones no se registran en el registro de transacciones y por lo tanto es necesario transportar estos datos del publicador al suscriptor para lo cual es necesario utilizar la replicación de instantáneas, al menos como una solución parcial.

Con la opción de actualización inmediata en el suscriptor se permite a los suscriptores actualizar datos solamente si el publicador los va a aceptar inmediatamente. Si el publicador los acepta, se propagan a otros suscriptores. El suscriptor debe estar conectado de forma estable y continua al publicador para poder realizar cambios en el suscriptor. Esta opción es útil en escenarios en los que tienen lugar unas cuantas modificaciones ocasionales en los servidores suscriptor.

- Replicación transaccional
En este caso se propaga una instantánea inicial de datos a los suscriptores, y después, cuando se efectúan las modificaciones en el publicador, las transacciones individuales se propagan a los suscriptores. Almacena las transacciones que afectan a los objetos replicados y propaga esos cambios a los suscriptores de forma continua o a intervalos programados. Al finalizar la propagación de los cambios, todos los suscriptores tendrán los mismos valores que el publicador. Suele utilizarse cuando: se desea que las modificaciones de datos se propaguen a los suscriptores, normalmente pocos segundos después de producirse; se necesita que las transacciones sean atómicas, que se apliquen todas o ninguna al suscriptor; los suscriptores se conectan en su mayoría al publicador; su aplicación no puede permitir un periodo de latencia largo para los suscriptores que reciban cambios.

Es útil en escenarios en los que los suscriptores pueden tratar a sus datos como de sólo lectura, pero necesitan cambios a los datos con una cantidad mínima de latencia. Ejemplo: un sistema para el procesamiento y distribución de pedidos. En este tipo de escenario, podría tener varios publicadores recibiendo pedidos de mercancías. Estos pedidos se replican entonces a un almacén central donde se despachan los pedidos. El almacén puede tratar los datos como de sólo lectura y requiere nueva información en forma periódica.

Con el uso de la opción de actualización inmediata en el suscriptor se pierde aún más la autonomía de sitio, pero se reduce el tiempo en el cual los sitios actualizan sus copias de los datos. Para hacer modificaciones en la base de datos del suscriptor éstas se realizan también en la base de datos publicador en una confirmación de dos fases (2PC) por lo que si su modificación se confirma indica que es válida y luego en cuestión de minutos, o según la planificación hecha, estos cambios son duplicados a las demás bases de datos suscriptoras.

- Replicación de mezcla
Permite que varios sitios funcionen en línea o desconectados de manera autónoma, y mezclar más adelante las modificaciones de datos realizadas en un resultado único y uniforme. La instantánea inicial se aplica a los suscriptores; a continuación hace un seguimiento de los cambios realizados en los datos publicados en el publicador y en los suscriptores. Los datos se sincronizan entre los servidores a una hora programada o a petición. Las actualizaciones se realizan de manera independiente, sin protocolo de confirmación, en más de un servidor, así el publicador o más de un suscriptor pueden haber actualizado los mismos datos. Por lo tanto, pueden producirse conflictos al mezclar las modificaciones de datos. Cuando se produce un conflicto, el Agente de mezcla invoca una resolución para determinar qué datos se aceptarán y se propagarán a otros sitios. Es útil cuando: varios suscriptores necesitan actualizar datos en diferentes ocasiones y propagar los cambios al publicador y a otros suscriptores; los suscriptores necesitan recibir datos, realizar cambios sin conexión y sincronizar más adelante los cambios con el publicador y otros suscriptores; el requisito de periodo de latencia de la aplicación es largo o corto; la autonomía del sitio es un factor crucial.

Es útil en ambientes en los que en cada sitio hacen cambios solamente en sus datos pero que necesitan tener la información de los otros sitios. Por ejemplo podría crearse una base de datos que registre la historia delictiva de individuos. Se puede tener una copia de la base de datos de toda la provincia y no se requiere estar conectado permanentemente a la base de datos de la instancia provincial.

Cómo elegir el método de replicación a utilizar
Para la elección de un método adecuado para la distribución de los datos en una organización influyen varios factores. Los cuales podemos agruparlos en dos grupos:
Factores relacionados con los requerimientos de la aplicación y
Factores relacionados con el entorno de red.
Dentro de los factores relacionados con los requerimientos de la aplicación, los fundamentales son:
• Autonomía: La autonomía de un sitio da la medida de cuanto puede operar el sitio desconectado de la base de datos publicadora.
• Consistencia transaccional: La consistencia transaccional de un sitio viene dado por la necesidad de ejecutar o no inmediatamente todas las transacciones que se han ejecutado en el servidor, o si es suficiente con respetar el orden de las mismas.
• Latencia: La latencia de un sitio se refiere al momento en que se deben de sincronizar las copias de los datos.
Fases generales para implementar y supervisar la replicación

A pesar de que existen varias formas de implementar y supervisar la replicación, y el proceso de replicación es diferente según el tipo y las opciones elegidas, en general, la replicación se compone de las siguientes fases:
• Configuración de la replicación
• Generación y aplicación de la instantánea inicial
• Modificación de los datos replicados

• Sincronización y propagación de los datos.
La replicación es muy útil para mejorar la disponibilidad de datos, lo cual pudiera llevarse al caso extremo, conocido como bases de datos distribuidas replicadas totalmente, en el cual consiste en la replicación de la base de datos completa en cada sitio en el sistema distribuido y garantiza notablemente la disponibilidad de datos, pues el sistema puede continuar operando cuando exista en servicio al menos uno de los servidores. La desventaja es un alto costo para mantener la consistencia de las copias en cada sitio.

viernes, 9 de marzo de 2007

Diagrama Entidad Relacion

Guia Sistemas Distribuidos

MODELO ENTIDAD-RELACIÓN
El modelado entidad-relación es una técnica para el modelado de datos utilizando diagramas entidad relación. Consiste en los siguientes pasos:
1. Se parte de una descripción textual del problema o sistema de información a automatizar (requisitos).
2. Se hace una lista de los sustantivos y verbos que aparecen.
3. Los sustantivos son posibles entidades o atributos.
4. Los verbos son posibles relaciones.
5. Analizando las frases se determina la cardinalidad de las relaciones y otros detalles.
6. Se elabora el diagrama (o diagramas) entidad-relación.
7. Se completa el modelo con listas de atributos y una descripción de otras restricciones que no se pueden reflejar en el diagrama.
Los diagramas entidad-relación (E-R) son una herramienta para el modelado de datos de un sistema de información. Estos diagramas expresan entidades relevantes para un sistema de información, sus inter-relaciones y propiedades. Es el modelo conceptual más utilizado para el diseño conceptual de bases de datos. El modelo entidad-relación está formado por un conjunto de conceptos que permiten describir la realidad mediante un conjunto de representaciones gráficas y lingüísticas.
Los diagramas E-R son un lenguaje gráfico para describir conceptos. Son dibujos o gráficos que describen la información que trata un sistema de información y el software que lo automatiza.

Entidades
Una entidad es cualquier "objeto" sobre el que se tiene información; cosa, persona, concepto abstracto o suceso. Se representa gráficamente mediante un rectángulo o "caja" etiquetada en su interior mediante un nombre. Ejemplos de entidades en los sistemas de información son: factura, persona, empleado, coches, casas, empleados, clientes, empresas, oficios, diseños de productos, conciertos, excursiones, etc.

Relación
Una relación describe cierta interdependencia (de cualquier tipo) entre una o más entidades. Es una correspondencia o asociación entre dos o más entidades. Se representa mediante un rombo etiquetado en su interior mediante un verbo. Además, dicho rombo debe unirse mediante líneas con las entidades que relaciona.
Ejemplos:
• Una persona (entidad) trabaja (relación) para un departamento (entidad).
• Una factura (entidad) se emite (relación) a un cliente (entidad).
Las relaciones entre dos entidades se denominan binarias, las relaciones entre tres entidades se denominan ternarias, y las relaciones entre cuatro o más entidades se denominan múltiples. Las relaciones múltiples son poco frecuentes, mientras que las relaciones binarias son habituales en cualquier problema.

Atributos
Los atributos representan las propiedades básicas de las entidades y de las relaciones. Toda la información extensiva es portada por los atributos. Los atributos son los datos que definen el objeto (para la entidad persona serían DNI, nombre, apellidos, dirección,...)
Gráficamente, se representan mediante bolitas que cuelgan de las entidades o relaciones a las que pertenecen, etiquetado mediante un nombre en su interior.
Los atributos pueden ser simples o compuestos. Un atributo simple es un atributo que tiene un solo componente, que no se puede dividir en partes más pequeñas, que tengan un significado propio. Un atributo compuesto es un atributo con varios componentes, cada uno con un significado por sí mismo. Un grupo de atributos se representa mediante un atributo compuesto cuando tienen afinidad en cuanto a su significado, o en cuanto a su uso. Un atributo compuesto se representa gráficamente mediante un óvalo.
Los atributos describen información útil sobre las entidades. En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia de la entidad de otra distinta. Como por ejemplo, el atributo identificativo que distingue a un empleado de otro es su número de la Seguridad Social.
Ejemplos de atributos de la entidad "persona":
• Documento de Identidad (identificativo)
• Nombre
• Apellidos
• Dirección
• Código postal
Las relaciones pueden ser:
- 1 a 1
- 1 a muchos
- Muchos a 1
- Muchos a muchos


• Relaciones 1-1.- Las entidades que intervienen en la relación se asocian una a una (Ej: la entidad HOMBRE, la entidad MUJER y entre ellos la relación MATRIMONIO).
• Relaciones 1-n.- Una ocurrencia de una entidad está asociada con muchas (n) de otra (Ej: la entidad EMPRESA, la entidad TRABAJADOR y entre ellos la relación TRABAJAR-EN).
• Relaciones n-n.-Cada ocurrencia, en cualquiera de las dos entidades de la relación, puede estar asociada con muchas (n) de la otra y viceversa (Ej: la entidad ALUMNO, la entidad EMPRESA y entre ellos la relación MATRÍCULA).

NORMALIZACIÓN DE DATOS
La normalización es el proceso que permite distribuir todos los campos de la base de datos en tablas relacionadas entre sí, de forma que cumplan con el funcionamiento esperado de la base de datos. Para evitar la inconsistencia y duplicidad de datos emplearemos la técnica de normalización para organizar los campos de datos en cada tabla. La normalización es un proceso que clasifica relaciones, objetos, formas de relación y demás elementos en grupos, en base a las características que cada uno posee.

Normalización es un conjunto de reglas que sirven para ayudar a los diseñadores a desarrollar un esquema que minimice los problemas de lógica. Cada regla está basada en la que le antecede. La normalización se adoptó porque el viejo estilo de poner todos los datos en un solo lugar, como un archivo o una tabla de la base de datos, era ineficiente y conducía a errores de lógica cuando se trataba de manipular los datos. La normalización es una técnica que se utiliza para crear relaciones lógicas apropiadas entre tablas de una base de datos.
Ayuda a prevenir errores lógicos en la manipulación de datos. La normalización facilita también agregar nuevas columnas sin romper el esquema actual ni las relaciones.

El proceso de normalización de una base de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo E-R (entidad-relación) al modelo relacional.
Las bases de datos relacionales se normalizan para:
• Evitar la redundancia de los datos.
• Evitar problemas de actualización de los datos en las tablas.
• Proteger la integridad de los datos.

Una base de datos normalizada puede ocupar menos espacio en disco que una no normalizada. Hay menos repetición de datos, lo que tiene como consecuencia un mucho menor uso de espacio en disco.
Grados de normalización
Existen varios niveles de normalización, entre las que se encuentran: Primera Forma Normal (1FN), Segunda Forma Normal (2FN), Tercera Forma Normal (3FN), Cuarta Forma Normal (4FN).

- Primera forma normal (1FN)
Una tabla está en 1FN si el valor que contiene un atributo de un registro, un campo, es único y elemental. En cada uno de los atributos sólo se puede incluir un dato, aunque sea compuesto, pero no se pueden incluir una lista de datos. Por ejemplo, no se pueden incluir en el atributo Dirección el domicilio habitual y el de vacaciones; habría que crear dos registros que se diferenciarán por el atributo Dirección:
Tabla de una base de datos
NIF Ape Nom Dir CPost Pobl Prov
1 García Francisco C/Marín 16 33698 Oviedo Asturias
2 Sanchez Luisa C/Tenerías 34
C/Ramorta 65 85458
54585 Cigales
Bueu Valladolid
Pontevedra
Esta tabla no está en 1FN, ya que el cliente con Id 2 tiene dos direcciones. Para poder tener esta tabla en 1FN se hace el siguiente cambio:
Tabla de una base de datos
NIF Ape Nom Dir CPost Pobl Prov
1 García Francisco C/Marín 16 33698 Oviedo Asturias
2 Sanchez Luisa C/Tenerías 34 85458 Cigales Valladolid
2 Sanchez Luisa C/Ramorta 65 54585 Bueu Pontevedra

La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas.

Ejemplo: la Relación:
• cursos: nombre, código, vacantes, horario, bibliografía
Después de aplicar la primera Forma Normal quedaría de la siguiente manera:
• cursos1: nombre, código, vacantes
• horario1: código, día, módulo
• bibliografia1: código, nombre, autor

- Segunda Forma Normal (2FN)
Una tabla está en Segunda Forma Normal o 2FN cuando está en 1FN y todo atributo que no pertenece a la clave primaria tiene una dependencia funcional de la clave completa y no de parte de ella. Luego, si la clave principal está formada por un solo atributo y ya está en 1FN, ya estará en 2FN.
Para transformar una tabla con dependencias funcionales, cuya clave está formada por más de un campo, en una tabla en 2FN se necesitan crear tablas nuevas para eliminar las dependencias funcionales, las tablas nuevas tendrán los atributos que dependen funcionalmente de la clave y los que forman la parte de la clave de la que dependen. Una vez creadas las nuevas tablas, se eliminan de la tabla primera los atributos que tenían dependencias funcionales.
En el ejemplo anterior, tanto el nombre como los apellidos dependen del NIF. Se crea una nueva tabla que contiene los atributos: NIF, nombre y apellidos, eliminándose de la tabla cliente los atributos nombre y apellidos, quedando las siguientes tablas:
Tabla en segunda forma normal
NIF Dir CPost Pobl Prov
1 C/ Marín nº16 33698 Oviedo Asturias
2 C/ Tenerías nº34 85458 Cigales Valladolid
2 C/ Ramorta nº65 54585 Bueu Pontevedra

Tabla en segunda forma normal
NIF Ape Nom
1 García Francisco
2 Sanchez Luisa

Establece que todas las dependencias parciales se deben eliminar y separar dentro de sus propias tablas. Una dependencia parcial es un término que describe a aquellos datos que no dependen de la clave de la tabla para identificarlos.
Una vez que ha alcanzado el nivel de la Segunda Forma Normal, se han controlado la mayoría de los problemas de lógica. Puede insertar un registro sin un exceso de datos en la mayoría de las tablas.

- Tercera Forma Normal (3FN)
Se dice que hay dependencia funcional transitiva entre dos atributos cuando un atributo que no pertenece a la clave primaria permite conocer el valor de otro atributo.
Por ejemplo: dada la tabla clientes, entre los atributos provincia y prefijo telefónico hay una dependencia funcional transitiva, ya que el primero permite conocer el valor del segundo.
Una tabla está en Tercera Forma Normal o 3FN si está en 2FN y no existen atributos que no pertenezcan a la clave primaria que puedan ser conocidos mediante otro atributo que no forma parte de la clave primaria, es decir, no hay dependencias funcionales transitivas.
Siguiendo con el ejemplo anterior, cuando hay dependencias funcionales transitivas, se crea una nueva tabla con los atributos que tienen dependencia funcional transitiva, eliminándose el atributo dependiente de la tabla original.
Si nos fijamos en esta tabla:
Tabla en segunda forma normal
NIF Dir CPost Pobl Prov
1 C/ Marín nº16 33698 Oviedo Asturias
2 C/ Tenerías nº34 85458 Cigales Valladolid
2 C/ Ramorta nº65 54585 Bueu Pontevedra
La dirección, la población y la provincia dependen del código postal, que no forma parte de la clave primaria. Descomponiendo sin perdida una vez más, obtenemos estas dos tablas:
Tabla en tercera forma normal
NIF Dir
1 C/ Marín nº16
2 C/ Tenerías nº34
2 C/ Ramorta nº65

Tabla en tercera forma normal
CPost Dir Pobl Prov
33698 C/ Marín nº16 Oviedo Asturias
85458 C/ Tenerías nº34 Cigales Valladolid
54585 C/ Ramorta nº65 Bueu Pontevedra

La regla de la Tercera Forma Normal señala que hay que eliminar y separar cualquier dato que no sea clave. El valor de esta columna debe depender de la clave. Todos los valores deben identificarse únicamente por la clave.

- Cuarta Formal Normal (4FN)
Existe dependencia funcional multivalorada o de múltiples valores si, dados tres atributos de una tabla, si para cada valor del primer atributo existen múltiples valores en el segundo atributo y no hay ninguna relación entre el tercer atributo y el primero, a no ser a través del segundo atributo.
Una tabla está en Cuarta Forma Normal o 4FN si está en FNBC y las únicas dependencias funcionales multivaloradas que existen son las dependencias funcionales de la clave con los atributos que no forman parte de la misma. Estas dependencias multievaluadas de la clave con los atributos que no forman parte de la misma son dependencias triviales, por lo que algunos autores dicen que no existen dependencias multievaluadas en 4FN.
Supongamos que los atributos de la tabla transporte son conductor, tipo de vehículo y tipo de carga, formando los tres campos la clave primaria. A cada conductor se le puede asignar un vehículo u otro y cada vehículo puede transportar varios tipos de carga.
Tabla que no esta en cuarta forma normal
Transporte
Conductor Tipo Vehículo Tipo Carga
Juan Furgoneta Perecederos
Marcos Furgoneta Perecederos
Juan Furgoneta Muebles
Marcos Furgoneta Muebles
Juan Camión Mudanza
Marcos Camión Mudanza
Con estas condiciones, los conductores son independientes de la carga; el tipo de vehículos depende del conductor y el tipo de vehículo depende de la carga. En este caso hay dependencias funcionales multivaloradas, ya que algunos atributos que forman la clave dependen de otro atributo que también la forman.
Para conseguir que esta tabla esté en 4FN se necesita crear dos nuevas tablas en lugar de la tabla actual, manteniendose en cada una de ellas una dependencia múltiple. La primera tabla tendrá los atributos conductor y tipo de vehículo y la segunda, tipo de vehículo y tipo de carga. De este modo la tabla en 4FN debido a que la clave primaria de ambas tablas son todos los campos que la forman. Resultado:
Tabla en cuarta forma normal
Tipo Vehículo Tipo Carga
Furgoneta Perecederos
Furgoneta Perecederos
Furgoneta Muebles
Furgoneta Muebles
Camión Mudanza
Camión Mudanza

Tabla en cuarta forma normal
Conductor Tipo Vehículo
Juan Furgoneta
Marcos Furgoneta
Juan Furgoneta
Marcos Furgoneta
Juan Camión
Marcos Camión

Forma Normal de Boyce-Codd o FNBC:
Una tabla está en Forma Normal de Boyce-Codd o FNBC si solo existen dependencias funcionales elementales que dependan de la clave primaria o de cualquier clave alternativa. Si la clave primaria está formada por un solo atributo y está en 3FN, ya está en FNBC.
Un ejemplo típico para mostrar una tabla que, estando en 3FN, mantiene dependencias funcionales, sin relación con el ejemplo seguido hasta este momento, es una tabla que posee los atributos dirección, código postal y población, suponiendo que a poblaciones diferentes le corresponden códigos postales distintos.
Tabla en tercera forma normal
CPost Dir Pobl
30009 C/ Pantano Camarillas nº16 Murcia
48596 Av. Buenos Aires nº12 Madrid
En este caso hay dependencia entre el código postal y la población, ya que, conocido el código postal se puede conocer la población, y conocida la dirección y la población, se conoce el código postal. Para transformar la tabla en una tabla en FNBC se crea una tabla de códigos postales y poblaciones, eliminando de la tabla original la población, obteniéndose dos tablas, una con los atributos dirección y código postal y otra con el código postal y la población:
Tabla en forma normal de Boyce-Codd
CPost Dir
30009 C/ Pantano Camarillas nº16
48596 Av. Buenos Aires nº12

Tabla en forma normal de Boyce-Codd
CPost Pobl
30009 Murcia
48596 Madrid

Quinta Forma Normal o 5FN:
Se dice que hay dependencia de JOIN, de unión o de producto si una tabla tiene dependencia de *unión con varias de sus *proyecciones y se puede obtener la tabla por medio de la unión de dichas proyecciones.
Proyeccion
*Proyección:
Creación de una tabla cuyos elementos forman un subconjunto de una tabla dada. Se incluyen todas las filas y algunas columnas.

Union
*Unión:
Formar, a partir de dos tablas, una nueva con todos los campos de una de ellas y los registros de ambas, excepto los repetidos. Ambas tablas han de tener el mismo grado y las mismas columnas.
Una tabla esta en Quinta Forma Normal (5FN) o Forma Normal de Proyección-Unión si está en 4FN y las únicas dependencias que existen son las dependencias de unión de una tabla con sus proyecciones relacionándose entre las distintas proyecciones mediante la clave primaria o cualquier clave alternativa. La 5FN se emplea cuando en una misma tabla tenemos mucha información redundante, con pocos atributos o cuando una tabla posee una gran cantidad de atributos y se hace por ello inmanejable.
Para conseguir que una tabla 4FN con gran cantidad de atributos esté en 5FN, se parte la tabla original en tantas tablas como se desee, teniendo cada una de ellas en común con las demás los campos que forman la clave primaria en la tabla original.
Ejemplo para el caso de una tabla que posee una gran cantidad de atributos:
Tabla
Id Datos Familiares Datos Profesionales Datos Personales Datos Clínicos
1 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12
En este caso tenemos una empresa donde se guardan los datos personales, familiares, profesionales y clínicos de cada empleado en una única tabla llamada Empleados. Si esta tabla está ya en 4FN, se puede partir en las tablas empleados-personal, empleados-familia, empleados-profesional, empleados-clínicos; de este modo, la velocidad de acceso y la gestión de datos por cada departamento de la empresa se simplifica, al no tenerse que crear ningún tipo de restricción sobre determinados atributos que no han de ser vistos por el personal que no los necesite.
El resultado sería:
Tabla en quinta forma normal
Id Datos Familiares
1 D1 D2 D3

Tabla en quinta forma normal
Id Datos Profesionales
1 D4 D5 D6

Tabla en quinta forma normal
Id Datos Personales
1 D7 D8 D9

Tabla en quinta forma normal
Id Datos Clínicos
1 D10 D11 D12
Ejemplo para el caso de una tabla que posee mucha información redundante, con pocos atributos:
Tabla que no esta en quinta forma normal
Biblioteca
Título Fecha Socio
T1 FT S1
T2 FU S2
T3 FV S1
T4 FG S4
T1 FH S3
T2 FT S4
T3 FV S3
Si se tiene una tabla de préstamo de libros de una biblioteca, con los atributos título, fecha de préstamo y número de socios que ha tomado prestado el libro, existen multitud de registros que se crean diariamente en esa tabla, pero para cada libro o para cada socio habrá pocos registros, con lo que una consulta para esa tabla como: ¿Cuáles son los libros leídos por un determinado socio?, puede tener una velocidad de respuesta elevada. Si esta tabla se parte en las tablas título-fecha, título-socio y socio-fecha, cualquier consulta similar a la anterior tendrá un tiempo de respuesta tolerable, y cuando sea necesario, se podrán realizar consultas que impliquen los datos de las tres tablas.

El resultado sería pues:
Tabla en quinta forma normal
Título-Fecha
Título Fecha
T1 FT
T2 FU
T3 FV
T4 FG
T1 FH
T2 FT
T3 FV

Tabla en quinta forma normal
Título-Socio
Título Socio
T1 S1
T2 S2
T3 S1
T4 S4
T1 S3
T2 S4
T3 S3

Tabla en quinta forma normal
Fecha-Socio
Fecha Socio
FT S1
FU S2
FV S1
FG S4
FH S3
FT S4
FV S3

http://www.scourdesign.com/articulos/BD-FN.php

Registro Visitas