You are on page 1of 16

1.

5 MODELOS DE CICLO DE VIDA “Un modelo de ciclo de vida de software es una vista de las actividades que ocurren durante el desarrollo de software, intenta determinar el orden de las etapas involucradas y los criterios de transición asociadas entre estas etapas.” [1] “Las principales diferencias entre distintos modelos de ciclo de vida están divididas en tres grandes visiones: *El alcance de ciclo de vida *La cualidad y cantidad de las etapas en que dividiremos el ciclo de vida *La estructura y la sucesión de las etapas” [2] MODELO CASCADA “Este es el más básico de todos los modelos, y sirve como bloque de construcción para los demás modelos de ciclo de vida. La visión del modelo cascada del desarrollo de software es muy simple; dice que el desarrollo de software puede ser a través de una secuencia simple de fases.”[3] “El modelo de ciclo de vida cascada, captura algunos principios básicos: • Planear un proyecto antes de embarcarse en él. • Definir el comportamiento externo deseado del sistema antes de diseñar su arquitectura interna. • Documentar los resultados de cada actividad. • Diseñar un sistema antes de codificarlo. • Testear un sistema después de construirlo”. [4] “Tipos de proyectos para los que es adecuado • Aquellos para los que se dispone de todas las especificaciones desde el principio, por ejemplo, los de reingeniería. Se está desarrollando un tipo de producto que no es novedoso. Proyectos complejos que se entienden bien desde el principio.”[5]

[6]

1

”[10] 2 .”[7] “*Se evitan proyectos largos y se entrega “Algo de valor” a los usuarios con cierta frecuencia *El usuario se involucra más *Difícil de evaluar el coste total *Difícil de aplicar a sistemas transaccionales que tienden a ser integrados y a operar como un todo *Requiere gestores experimentados *Los errores en los requisitos se detectan tarde. El sistema es entonces desarrollado. Los desarrolladores construyen una implementación parcial del sistema que recibe sólo estos requerimientos.MODELO INCREMENTAL “El desarrollo incremental es el proceso de construcción siempre incrementando subconjuntos de requerimientos del sistema. los usuarios lo usan. Basada en esta retroalimentación. los requerimientos son cuidadosamente examinados. un documento de requerimientos es escrito al capturar todos los requerimientos para el sistema completo. Típicamente. *El resultado puede ser muy positivo. y proveen retroalimentación a los desarrolladores.”[8] [9] PROTOTIPADO EVOLUTIVO “En el modelo evolutivo. y sólo esos que son bien comprendidos son seleccionados para el primer incremento. y una segunda versión del producto es desarrollada y desplegada. la especificación de requerimientos es actualizada.

paulatinamente.“Construcción de una implementación parcial que cubre los requisitos conocidos.”[12] [13] 3 . se construye el producto de ingeniería. *Reduce costos y aumenta la probabilidad de éxito *Exige disponer de las herramientas adecuadas *No presenta calidad ni robustez *Una vez identificados todos los requisitos mediante el prototipo. incorporarlos al sistema: *Reduce el riesgo y aumenta la probabilidad de éxito *No se conocen niveles apropiados de calidad y documentación *Problemas de gestión de configuración. para ir aprendiendo el resto y.”[11] MODELO DE PROTOTIPO “*No modifica el flujo del ciclo de vida *Reduce el riesgo de construir productos que no satisfagan las necesidades de los usuarios.

Consiste en una serie de ciclos que se repiten. mal diseño.” [14] [15] “En cada iteración Boehm recomienda recopilar la siguiente lista de informaciones: • • Objetivos: Se hacen entrevistas a los clientes. etc. errores en la implementación. Se consideran desde dos puntos de vista o o Características del producto. etc. En este sentido es parecido al modelo incremental. Un riesgo puede ser muchas cosas: requisitos no comprendidos. 4 . Cada uno tiene las mismas fases y cuando termina da un producto ampliado con respecto al ciclo anterior.MODELO DE CICLO DE VIDA EN ESPIRAL “Propuesto inicialmente por Boehm en 1988. Alternativas: Son las diferentes formas posibles de conseguir los objetivos. • Restricciones: o Desde el punto de vista del producto: Interfaces de tal o cual manera. Formas de gestionar el proyecto. etc. rendimiento. se les hace rellenar cuestionarios. la diferencia importante es que tiene en cuenta el concepto de riesgo.

este puede consistir en un nuevo ciclo.”[20] MODELO BASADO EN REUTILIZACION “*Principios de la reutilización: • Existen similitudes entre distintos sistemas de un mismo dominio de aplicación 5 . también se verifica que funciona correctamente. Necesita de la participación continua por parte del cliente. tiempo. El riesgo en general es menor. Proyectos donde sea importante el factor riesgo.”[17] “Ventajas • • • No necesita una definición completa de los requisitos para empezar a funcionar. Compromiso: Decisiones de gestión sobre como continuar. ya que al identificar los problemas en etapas tempranas hay tiempo de subsanarlos. porque si todo se hace mal. No existe una diferencia muy clara entre cuando termina el proyecto y cuando empieza la fase de mantenimiento. El riesgo de sufrir retrasos es menor. solo se ha perdido el tiempo y recursos invertidos en una iteración (las anteriores iteraciones están bien). etc. y esto lleva tiempo. Cuando se subcontrata hay que producir previamente una especificación completa de lo que se necesita. El propio cliente evalúa el producto. Resultados: Son lo que realmente ha ocurrido después de la resolución de riesgos.”[19] “Dónde es adecuado • • • Sistemas de gran tamaño.”[16] “Al terminar una iteración se comprueba que lo que se ha hecho efectivamente cumple con los requisitos establecidos. Resolución de riesgos: La técnica más usada es la construcción de prototipos. personal.o • • • • • Desde el punto de vista organizativo: Coste.”[18] • “Inconvenientes • • • Es difícil evaluar los riesgos. Cuando no sea posible definir al principio todos los requisitos. Cuando hay que hacer un cambio. Riesgos: Lista de riesgos identificados. Al entregar productos desde el final de la primera iteración es más fácil validar los requisitos. Planes: Lo que se va a hacer en la siguiente fase.

son más modulares y por lo tanto el trabajo se puede dividir en un conjunto de miniproyectos.”[23] MODELO FUENTE 6 .”[21] • • • [22] CICLOS DE VIDA ORIENTADOS A OBJETOS “Los objetos tienen una particularidad. el modelo fuente. y es que están basados en componentes que se relacionan entre ellos a través de interfaces.El software puede representarse como una combinación de módulos Diseñar aplicaciones = especificar módulos + interrelaciones Los sistemas nuevos se pueden caracterizar por diferencias respecto a los antiguos *Reduce tiempos y costes de desarrollo *Aumenta la fiabilidad *Dificultad para reconocer los componentes potencialmente reutilizables *Dificultad de catalogación y recuperación *Problemas de motivación *Problemas de gestión de configuración. Un tipo de ciclo de vida orientado a objetos. o lo que es lo mismo. que es el más representativo.

Entrega La primera y la tercera fase son independientes de la metodología de desarrollo orientado a objetos. Planificación del negocio 2.“Fue creado por Henderson-Sellers y Edwards en 1990. Un proyecto se divide en las fases: 1. con las fases de Planificación del negocio. Cada mejora se planifica igual que el periodo anterior. Construcción: Es la más importante y se divide a su vez en otras cinco actividades o o o o o Planificación Investigación Especificación Implementación Revisión 3. Crecimiento: Es el tiempo durante el cual se construye el sistema 2. Es un tipo de ciclo de vida pensado para la orientación a objetos y posiblemente el más seguido. Además de las tres fases. existen dos periodos: 1.”[25] [26] 1. La ventaja es que permite un desarrollo solapado e iterativo.”[24] “Cada clase puede tener un ciclo de vida sólo para ella debido a que cada una puede estar en una fase diferente en un momento cualquiera. Construcción y Entrega.6 LEGISLACION DEL SOFTWARE 7 . Madurez: Es el periodo de mantenimiento del producto. es decir.

¿entonces para qué lo registro? La decisión de registrar o no un programa o su documentación es tuya. Tanto el Registro Público del Derecho de Autor. • Ley de Propiedad Industrial (LPI) y su reglamento Protege elementos que pueden acompañar a un programa de cómputo. menciona en su artículo 19 sección IV que los programas de cómputo no son considerados invenciones. y demás obras.“¿Qué leyes rigen en México para los programas de cómputo. que puede ayudarte a resolver una controversia si se presentara. El registro de un programa de cómputo o base de datos en el INDA es un antecedente fechado por una institución oficial. y un oficio con el número de registro. • Código Penal Federal y • Código Federal de Procedimientos Penales Sancionan la producción masiva de COPIAS no autorizadas de programas de cómputo o su venta. El reconocimiento de los derechos de autor y de los derechos conexos no requiere registro ni documento de ninguna especie. dibujos o íconos distintivos. ¿necesito registrarlo para que yo tenga derechos de autor sobre de él? No. Un programa de cómputo podría ser parte de un invento. Tiene además su Reglamento (RLFDA).”[27] “La LPI. que regula el otorgamiento de patentes en México a las invenciones de productos o de procesos. como un elemento para realizar alguna de las funciones del invento.”[28] “Si hago un programa de cómputo. las canciones y sus letras. las bases de datos y su documentación? Principalmente las siguientes: • Ley Federal de Derechos de Autor (LFDA) y su reglamento Protege los programas de cómputo. sea un producto o un proceso. las grabaciones musicales.” [29] “Si no requiero registrarlo para que valgan los derechos de autor de mi programa de cómputo o base de datos. como tú conservan un ejemplar sellado de tu obra. LFDA Artículo 5: La protección se concede a las obras desde el momento en que hayan sido fijadas en un soporte material. como son: marcas. las pinturas. su documentación y las bases de datos en forma similar a los libros.” [30] 8 .

¿soy el titular del derecho de autor del programa? Depende de las cláusulas de tu contrato de trabajo. precio es cero.“Si soy empleado o consultor y realizo un programa de cómputo durante mi trabajo. redistribuir. y de si firmaste un acuerdo de confidencialidad y/o desarrollos propietarios con tu empleador. El acuerdo de reconocimiento de derechos dejará en claro que el programa que vas hacer no es un trabajo por encargo y que serás el titular del derecho de autor. En caso afirmativo. Lo que sí tienes que decidir. preferentemente antes de empezar a desarrollar el programa. el abogado examinará tus documentos y te propondrá un acuerdo de reconocimiento de derechos para que lo firme el representante legal de tu empleador. es si vas a registrar el código fuente o el código binario. Uso en una computadora por el pago de un precio. Usar. en casa.”[31] “Si soy empleado o consultor y realizo un programa de cómputo en mi tiempo libre.”[33] “¿Necesito definir la licencia de uso para mi programa de cómputo antes de registrarlo? No. Uso limitado en tiempo o capacidades.”[32] “Si el programa de cómputo que pretendes hacer se traslapa con las responsabilidades de tu puesto.7 METODOLOGIA • Definición de metodología “Conjunto de métodos que se siguen en una investigación científica o en una exposición doctrinal. Código fuente incluido.”[34] 1. ¿soy el titular del derecho de autor o lo es mi empleador? Salvo pacto en contrario. con equipo y herramientas de desarrollo de mi propiedad. *Freeware. modificar. copiar. los derechos patrimoniales sobre un programa de computación y su documentación.” [35] 9 . *Software libre. cuando hayan sido creados por uno o varios empleados en el ejercicio de sus funciones o siguiendo las instrucciones del empleador. también deja menos claro el caso. Éste último puede especificar que todo programa que desarrolles es propiedad de tu empleador. estudiar. LFDA 103. después pagar un precio. corresponden a éste. ¿Qué tipos de licencias hay? Las licencias de uso de software generalmente caen en alguno de estos tipos: *Licencia propietaria. Usar y copiar ilimitado. *Shareware. Decide si quieres consultar tu caso con un abogado o no. sin dejar en claro el caso descrito en esta pregunta.

Ambiente: Administrando el ambiente de desarrollo. Implementación: Creando software que se ajuste a la arquitectura y que tenga el comportamiento deseado. Requerimientos: Trasladando las necesidades del negocio a un sistema automatizado. Construcción.“La metodología (meta = a través de. elementos que forman parte de una metodología y desarrollo de los pasos de una metodología “Rational Unified Process (RUP) La metodología RUP. conocimiento): es la teoría acerca del método o del conjunto de métodos. lógos = teoría. fin. oídos = camino.” [37] “Cada una de estas etapas es desarrollada mediante el ciclo de iteraciones. es llevada bajo dos disciplinas: Disciplina de Desarrollo • • • • • Ingeniería de Negocios: Entendiendo las necesidades del negocio. El objetivo es llegar a obtener el release del proyecto. llamada así por sus siglas en inglés Rational Unified Process. La metodología es normativa (valora). Elaboración. Distribución: Hacer todo lo necesario para la salida del proyecto” [39] 10 . divide en 4 fases el desarrollo del software: • • • • Inicio. Vale mencionar que el ciclo de vida que se desarrolla por cada iteración. razón. En esta etapa el objetivo es llevar a obtener la capacidad operacional inicial. Transmisión. la cual consiste en reproducir el ciclo de vida en cascada a menor escala. manera. pero también es descriptiva (expone) o comparativa (analiza). El Objetivo en esta etapa es determinar la visión del proyecto. Pruebas: Asegurándose que el comportamiento requerido es el correcto y que todo lo solicitado está presente.” [36] • Tipos de metodología. Análisis y Diseño: Trasladando los requerimientos dentro de la arquitectura de software. En esta etapa el objetivo es determinar la arquitectura óptima. Administrando el proyecto: Administrando horarios y recursos.” [38] “Disciplina de Soporte • • • • Configuración y administración del cambio: Guardando todas las versiones del proyecto.

la metodología se basa en: • Pruebas Unitarias: se basa en las pruebas realizadas a los principales procesos. utilizada para proyectos de corto plazo. cuya particularidad es tener como parte del equipo. Programación en pares: propone la programación en pares. y que cada una se convierte luego en un entregable al cliente. La metodología consiste en una programación rápida o extrema. un modelo. podamos hacer pruebas de las fallas que pudieran ocurrir. Cada miembro lleva a cabo la acción que el otro no está haciendo en ese momento. al usuario final. Un artefacto puede ser un documento. de tal manera que adelantándonos en algo hacia el futuro.”[41] “Características de XP. se hace exigente el uso de artefactos. Son los procesos que se llegan a determinar en cada iteración. pues es uno de los requisitos para llegar al éxito del proyecto.“Es recomendable que a cada una de estas iteraciones se les clasifique y ordene según su prioridad.” [40] “Extreme Programing (XP) Es una de las metodologías de desarrollo de software más exitosas en la actualidad. el otro consulta el mapa. para lo cual se crean patrones o modelos estándares. siendo más flexible al cambio. Refabricación: se basa en la reutilización de código. Es como el chofer y el copiloto: mientras uno conduce. o un elemento de modelo. por este motivo.” [42] • • “¿Qué es lo que propone XP? 11 . la cual consiste en que dos desarrolladores participen en un proyecto en una misma estación de trabajo. es una de las metodologías más importantes para alcanzar un grado de certificación en el desarrollo del software. Artefactos. Vienen hacer las personas o entes involucrados en cada proceso. Esto trae como beneficio la retroalimentación que se tendría en cada entregable o en cada iteración. Trabajadores. Los elementos del RUP son: • • Actividades. • En cada ciclo de iteración. corto equipo y cuyo plazo de entrega era ayer.

concreta y frecuente del equipo de desarrollo. proyectos que requieren 50 personas a más.• • • • • Empieza en pequeño y añade funcionalidad con retroalimentación continua El manejo del cambio se convierte en parte sustantiva del proceso El costo del cambio no depende de la fase o etapa No introduce funcionalidades antes que sean necesarias El cliente o el usuario se convierte en miembro del equipo” [43] “Derechos del Cliente • • • • • Decidir que se implementa Saber el estado real y el progreso del proyecto Añadir. modelos y prácticas de uso. MSF se centra en los modelos de proceso y de equipo dejando en un segundo plano las elecciones tecnológicas. usado en cualquier parte como un mapa. al desarrollar y codificar los módulos del sistema • La retroalimentación. entre los usuarios y los desarrolladores • La simplicidad. del cual su uso es limitado a un específico lugar. que controlan la planificación. el cliente y los usuarios finales” [46] “Microsoft Solution Framework (MSF) Esta es una metodología flexible e interrelacionada con una serie de conceptos.”[47] “MSF tiene las siguientes características: • Adaptable: es parecido a un compás. 12 . el desarrollo y la gestión de proyectos tecnológicos. cambiar o quitar requerimientos en cualquier momento Obtener lo máximo de cada semana de trabajo Obtener un sistema funcionando cada 3 o 4 meses” [44] “Derechos del Desarrollador • Decidir cómo se implementan los procesos • Crear el sistema con la mejor calidad posible • • • Pedir al cliente en cualquier momento aclaraciones de los requerimientos Estimar el esfuerzo para implementar el sistema Cambiar los requerimientos en base a nuevos descubrimientos” [45] “Lo fundamental en este tipo de metodología es: • La comunicación. • Escalable: puede organizar equipos tan pequeños entre 3 o 4 personas. así como también.

” [48] “MSF se compone de varios modelos encargados de planificar las diferentes partes implicadas en el desarrollo de un proyecto: • Modelo de Arquitectura del Proyecto: Diseñado para acortar la planificación del ciclo de vida. Las fases de diseño conceptual. Modelo de Equipo: Este modelo ha sido diseñado para mejorar el rendimiento del equipo de desarrollo. describiendo las fases.” [49] • • • • • CONCLUSION Comenzando por la definición de modelo de ciclo de vida de software. Este modelo proporciona un entorno estructurado para la toma de decisiones y acciones valorando los riesgos que puedan provocar. Modelo de Proceso: Diseñado para mejorar el control del proyecto. Tecnología Agnóstica: porque puede ser usada para desarrollar soluciones basadas sobre cualquier tecnología. el mantenimiento y el soporte. Puede ser escalado dependiendo del tamaño del proyecto y del equipo de personas disponibles. y aumentar la calidad acortando el tiempo de entrega. el equipo y los desarrolladores. por mencionar algunos están: *Modelo de cascada 13 . Modelo de Diseño del Proceso: Diseñado para distinguir entre los objetivos empresariales y las necesidades del usuario. Los servicios utilizados en este modelo son escalables. minimizando el riesgo. Este modelo define las pautas para construir proyectos empresariales a través del lanzamiento de versiones. y pueden ser usados en un solo ordenador o incluso en varios servidores. Proporciona un modelo centrado en el usuario para obtener un diseño eficiente y flexible a través de un enfoque iterativo. Proporciona una estructura de pautas a seguir en el ciclo de vida del proyecto. la liberación de versiones y explicando su relación con el Modelo de equipo.• • Flexible: es utilizada en el ambiente de desarrollo de cualquier cliente. Existen diversos modelos. Modelo de Gestión del Riesgo: Diseñado para ayudar al equipo a identificar las prioridades. Proporciona una estructura flexible para organizar los equipos de un proyecto. tomar las decisiones estratégicas correctas y controlar las emergencias que puedan surgir. proporciona un modelo de tres niveles para diseñar y desarrollar aplicaciones software. las actividades. Modelo de Aplicación: Diseñado para mejorar el desarrollo. es una vista de las actividades que ocurren durante el desarrollo de software. lógico y físico proveen tres perspectivas diferentes para los tres tipos de roles: los usuarios.

*Freeware. El cliente tiene derecho a saber en qué estado se 14 . después pagar un precio. modificar. es por eso que solo se permite. etc. comprendí que es quien estudia los métodos. Usar. *Software libre. conllevando el comportamiento requerido y deseado por el cliente. existen diversos tipos de metodología. Uso en una computadora por el pago de un precio. convirtiéndola en una metodología muy importante. así como los artefactos. algunos son más convenientes en su uso en proyectos más grandes que otros. los cuales son el camino para lograr llegar al cometido (objetivos). debemos analizar la complejidad del problema. de tal manera que un desarrollador realiza lo que el otro no hace en ese momento. Elaboración. Uso limitado en tiempo o capacidades. redistribuir. estudiar. Consecuentemente se mencionó Extreme Programing (XP). puede reutilizar código y propone la programación en pares. que será el que ayudara a la empresa. etc. Extreme Programing (XP) y Microsoft Solution Framework (MSF). *Shareware. para esto. Por metodología.. precio es cero. También se decide si se registrara el código fuente o el código binario y finalmente existen tipos de licencia de software como lo son: *Licencia propietaria. plasmando 3. modelos. ya que es una pieza clave para lograr el éxito. metodología que actúa en situaciones de proyectos a corto plazo y que emergentemente tienen que entregarse en caso de demorarse. la certeza de que los requerimientos dados por el cliente son completos y correctos. el tiempo del que se dispone para entregar el proyecto. Código fuente incluido. la metodología RUP es más útil cuando se trata de proyectos programados a largo plazo.*Incremental *Prototipo evolutivo *Espiral *Orientado a objetos. En el desarrollo de los pasos se tienen que tomar en cuenta las necesidades del negocio para plasmarlas de manera adecuada en un sistema. Construcción y Transmisión. copiar. además se caracteriza por realizar pruebas unitarias. estos últimos pueden ser documentos. que son: “Rational Unified Process (RUP). música. otros tienen más contacto con el usuario durante el desarrollo. de forma similar a los libros. Se puede sancionar la producción masiva de copias no autorizadas del programa de cómputo o su venta. se divide en 4 fases que son Inicio. su particularidad es tener al usuario final como parte del equipo. que por derechos de autor se proteja dicho programa. donde se marcan objetivos que van desde la visión del proyecto hasta la entrega del mismo. En cuanto a legislación del software. pero específicamente en lo anterior solo se mencionan los referentes al diseño de software. en México no se considera un software como un invento. las cuales pueden adelantarnos los posibles errores en el futuro. si el cliente desea entregas parciales para verificar los requerimientos pedidos en un principio. en esta metodología particularmente se exige el uso de artefactos. Usar y copiar ilimitado. es decir. Sus elementos son las actividades. trabajadores. de tal forma que es preferible utilizar el que mejor se adapte al proyecto a desarrollar. etc. Cada uno de los anteriores tiene características diferentes y algunas en común.

entre otras actividades.html 15 .uclm.ia.es/img/Def.uclm. realizar un sistema con calidad.uclm.encuentra el sistema.es/doc/ISOFTWAREI/Tema03.blogspot.inf-cr. por eso es de mucha relevancia la comunicación entre el cliente y el desarrollador. [1] http://www.pdf [5] http://www.pdf [8].edu.es/img/Def. puede tener soluciones basadas sobre otro tipo de tecnología.pdf [23]-[26] http://www.cepeu. es por eso que es adaptable.uned. escalable.ia.Modelo_de_Ciclo_de_Vida. se compone de diversos modelos que planifican ciertas partes del proyecto.[22] http://alarcos.uned.es/doc/ISOFTWAREI/Tema03.es/doc/ISOFTWAREI/Tema03.Modelo_de_Ciclo_de_Vida. decidir cómo implementar los procesos.inf-cr.es/ia/asignaturas/adms/GuiaDidADMS/node10. Modelo de Gestión del Riesgo.inf-cr. así como proyectos que requieren 50 personas o más.uclm.html [21]. Modelo de Equipo. identificación de lo que se requiera. control. es capaz de organizar grupos pequeños de 3 o 4 personas. de tecnología agnóstica.pdf [7] http://rguerrero334. Modelo de Diseño del Proceso.Modelo_de_Ciclo_de_Vida. Modelo de Aplicación.blogspot. en decidir que se implementa en el momento que lo requiera.es/img/Def.pdf [11]-[13] http://alarcos.es/ia/asignaturas/adms/GuiaDidADMS/node10.pdf [2]-[4]http://rguerrero334.inf-cr.blogspot.ia. hasta el mantenimiento. flexible. y son: Modelo de Arquitectura del Proyecto. así de igual manera el desarrollador puede pedir al cliente aclaraciones de los requerimientos.[9] http://alarcos.es/doc/ISOFTWAREI/Tema03. que diseñan desde la planificación del ciclo de vida.pdf [14]-[20] http://www. concretamente puede usarse en cualquier parte.py/LIBROS_ELECTRONICOS_3/lpcu097%20-%2001. Por último Microsoft Solution Framework (MSF) se centra en modelos de proceso y de equipo. Modelo de Proceso. la simplicidad al codificar y finalmente la retroalimentación.html [6] http://alarcos.pdf [10] http://rguerrero334.es/ia/asignaturas/adms/GuiaDidADMS/node10. desarrollo.uned.

itescam.com.[27]-[34] http://pp. Vigésima edición [36] https://www.mx/legalfaq.edu.informatizate.mx/principal/sylabus/fpdb/recursos/r33282.html 16 .html [35] Diccionario de la Real Academia Española.net/articulos/metodologias_de_desarrollo_de_software_07062004.PDF [37]-[49] http://www.