• No se han encontrado resultados

Desarrollo de una herramienta para la determinación de factibilidad ecoómica en proyectos de software de la UCI.

N/A
N/A
Protected

Academic year: 2023

Share "Desarrollo de una herramienta para la determinación de factibilidad ecoómica en proyectos de software de la UCI."

Copied!
109
0
0

Texto completo

(1)

UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS FACULTAD 3

Desarrollo de una herramienta para la determinación de factibilidad económica en proyectos de software de la UCI.

Trabajo de Diploma para optar por el título de Ingeniero en Ciencias Informáticas.

Autor: Randy Torres Pérez.

Tutor: Lic. Yaima Chávez Sotelo.

Asesor: Ing. Yudier Cervantes Puga.

Ciudad de la Habana Mayo 2009

(2)

~ II ~ DECLARACION DE AUTORIA.

Declaro que soy el único autor de este trabajo y autorizo a la Universidad de Ciencias Informáticas (UCI) para que hagan el uso que estimen pertinente con este trabajo.

Para que así conste firmo la presente a los ____ días del mes de _________ del año_____.

________________ ______________

Firma del Autor Firma del tutor

(3)

DEDICATORIA y AGRADECIMIENTOS

A mi madre y a mi padre por quererme tanto y guiarme siempre, porque lo que soy hoy se lo debo a la ternura de mi madre y al sudor de mi padre, porque me han enseñado a andar por este sendero al que le llaman vida, porque son ellos los seres que más quiero y sé que esta obra se la merecen por ser la realidad de un sueño de ellos y mío, gracias a ti, madre, por llevarme en tu vientre y cuidarme tanto, gracias a ti, padre, por ser mi mejor amigo.

A mi novia Yumi por apoyarme y estar a mi lado en todo este tiempo tan bonito.

A mi hermano por ayudarme a crecer.

(4)

~ II ~

(5)

~ III ~ RESUMEN

La ciencia avanza cada día más rápido y el hombre como creador de ciencia debe avanzar junto a ella y aportar su grano de arena con el fin de agilizar y perfeccionar nuestro trabajo, además de satisfacer necesidades de nuestra sociedad.

En esta investigación se desarrolla una herramienta para el cálculo de la factibilidad económica de un proyecto de software, la cual ayudará en la determinación de factibilidad económica para la toma de decisiones por los líderes de proyecto y la administrativa económica, permitiendo además que personas con conocimientos básicos de finanzas sean capaces de desarrollar esta tarea.

El éxito de la aplicación depende en gran medida del estudio realizado a la bibliografía existente y en la toma de decisiones arquitectónicas tomadas durante su desarrollo, definiendo las características fundamentales de las tecnologías y aspectos esenciales de diseño y obteniendo una idea clara y objetiva de lo que se está desarrollando.

PALABRAS CLAVES.

Toma de decisión, factibilidad económica, tasa interna de retorno, valor actual neto, eficiencia.

(6)

~ IV ~ Tabla de contenido

Introducción. ... 1

Capitulo 1: Fundamentación Teórica. ... 1

1.1Introducción al Capítulo: ... 1

1.2 Sistemas que permiten determinar la factibilidad económica financiera. ... 1

1.2.1 Experiencia internacional. ... 1

1.2.2 Experiencia nacional. ... 3

1.3 Metodología a emplear para el cálculo de factibilidad económica financiera. ... 3

1.4 Fundamentación de la metodología a utilizar para el desarrollo del software. ... 5

1.5 Lenguajes de modelado. ... 10

1.6 Paradigmas de programación. ... 11

1.6.1 Programación estructurada. ... 11

1.6.2 Programación modular... 12

1.6.3 Programación concurrente. ... 13

1.6.4 Programación lógica. ... 14

1.6.5 Programación con Restricciones. ... 14

1.6.6 Programación orientada a objetos. ... 16

1.7 Herramientas a utilizar. ... 17

1.7.1 Herramientas CASE. ... 17

1.8 Aplicaciones Web. ... 19

1.9 ¿Qué es un servidor Web? ... 20

1.10 Tecnologías del lado del cliente. ... 21

1.11 Tecnologías del lado del servidor. ... 22

1.12 Sistemas de Gestión de Base de Datos. ... 24

1.13 Entorno de desarrollo integrado (IDE) ... 25

1.14 Frameworks. ... 29

1.15 CMS o Gestión de contenidos. ... 31

1.16 Conclusiones... 33

Capitulo2: Descripción y análisis de la solución propuesta. ... 34

2.1 Introducción al Capítulo. ... 34

2.2 Flujo actual de los procesos involucrados en el campo de acción. ... 34

2.3 Objeto de automatización. ... 34

2.4 Información que se maneja. ... 35

(7)

~ V ~

2.5 Modelo del Negocio. ... 35

2.5.1 Reglas del negocio. ... 36

2.5.2 Actores del negocio ... 36

2.5.3 Trabajador del Negocio ... 36

2.5.4 Casos de uso del Negocio. ... 37

2.5.5 Casos de uso del negocio objeto de estudio. ... 37

2.5.6 Entidades del Negocio. ... 37

2.5.7 Diagrama de Caso de Uso del Negocio. ... 38

2.5.8 Descripción textual de los casos de usos del negocio. ... 38

2.5.9 Diagrama de clases del Modelo de objetos del Negocio. ... 43

2.5.10 Diagrama de Actividades del Negocio. ... 44

2.6 Especificación de los requerimientos de software. ... 44

2.6.1 Requerimientos funcionales. ... 44

2.6.2 Definición de los Requisitos Funcionales. ... 45

2.6.3 Requerimientos no funcionales. ... 46

2.7 Propuesta de Sistema. ... 47

2.7.1 Modelo de Casos de Uso del Sistema. ... 47

2.7.2 Actores del sistema. ... 47

2.7.3 Diagrama de Casos de Uso del Sistema. ... 48

2.7.4 Descripción de los Casos de Uso del Sistema. ... 49

2.8 Modelo de Diseño. ... 49

2.8.1 Patrón de arquitectura Modelo Vista Controlador. ... 49

2.8.2 Diagrama de clases del diseño. ... 50

2.9 Diseño de la Base de datos... 54

2.9.1 Diagrama de Clases Persistentes. ... 54

2.10 Implementación. ... 55

2.10.2 Diagrama de componentes. ... 55

2.10.3 Diagrama de despliegue. ... 57

2.12 Conclusiones... 58

Capitulo 3: Validación de la solución propuesta. ... 59

3.1 Introducción al Capítulo ... 59

3.2 Proceso o fase inicial. Modelo de métricas. ... 60

3.2.1 Métrica de la calidad de especificación de los requisitos ... 60

(8)

~ VI ~

3.2.2 Métrica para determinar el número de requisitos que no son considerados en ningún

CU. ... 62

3.3 Búsqueda o diseño de los test que permitan validar la solución propuesta. ... 63

3.4 Descripción de los test de unidades. ... 65

3.5 Evaluación de la ejecución de los test y de los resultados obtenidos... 73

3.6 Conclusiones... 76

Conclusiones Generales. ... 77

Recomendaciones. ... 78

Referencias Bibliográficas. ... 79

Anexos. ... 81

Glosario de términos. ... 95

(9)

~ 1 ~ Introducción.

Los cambios tecnológicos en el campo de la informática hacen que esta ciencia sea cada día más dinámica. Tecnologías como las redes, el comercio electrónico, las de tele trabajo, entre otras están teniendo tal repercusión en el mundo empresarial cubano, que cada vez resulta más difícil sustraerse a esta corriente de innovación.

La economía cubana a partir de la desintegración del campo socialista de Europa del Este, la URSS y el arreciamiento del bloqueo por parte de los gobiernos estadounidenses, provocó que la introducción de mejoras tecnológicas en el país se viera frenada y que las que estaban en uso se volvieran caducas. Nuestro país en aras de revertir esta situación ha invertido grandes recursos en la medida que la economía lo permitiera.

De este modo, durante los primeros años de este siglo, el país se ha centrado en un proceso de informatización de la sociedad, lo que trajo consigo la necesidad de crear sistemas eficientes y a la altura de las nuevas tecnologías, que como parte de los avances económicos que va teniendo el país, se van introduciendo.

Con el desarrollo de la industria del software surge la necesidad de destinar una serie de recursos para el perfeccionamiento en la calidad de productos informáticos, estos recursos deben ser aprovechados al máximo para una mayor eficiencia en la producción del software cubano.

Situación Problémica: En la actualidad los proyectos de software en la facultad 3 carecen de un especialista económico por cada proyecto y no se tiene una información económico financiera que permita conocer la situación real de los proyectos existentes.

Según los planteamientos anteriores se define el siguiente problema:

¿Cómo ayudar a mejorar la determinación de la factibilidad económica de un proyecto de software para la toma de decisiones según los resultados de los mismos en la UCI?

Objeto de Estudio:

Proceso de desarrollo del software y gestión de proyecto.

Dentro del objeto de estudio el campo de acción en el que centrará la investigación será:

(10)

~ 2 ~

Desarrollo de sistema web y factibilidad económico-financiera.

Para enfocar la investigación se planteó como objetivo:

Desarrollar una herramienta que ayude a mejorar la determinación de la factibilidad económica de un proyecto de software para la toma de decisiones según los resultados de los mismos en la UCI.

Hipótesis: Si desarrollamos una herramienta que ayude a mejorar la determinación de factibilidad económica del software a comercializar, que considere las características de la producción, se tendrá mejor control sobre la información económica del software y ayudará en la toma de decisiones según los resultados de los mismos en la UCI.

La investigación se desarrolló a través de las siguientes tareas:

1. Analizar los sistemas informáticos similares tanto a nivel nacional como internacional.

2. Definir las herramientas a utilizar para el desarrollo.

3. Definir la estrategia de desarrollo.

4. Implementar un sistema de cálculo de factibilidad económica para ayudar a mejorar la determinación de la factibilidad de un proyecto de software para la toma de decisiones en proyectos informáticos.

Para realizar las tareas se emplearon los siguientes métodos:

Métodos teóricos:

Análisis y Síntesis: para el procesamiento de la información y arribar a las conclusiones de la investigación, así como para precisar las características del modelo arquitectónico propuesto.

Histórico - Lógico: Para determinar las tendencias actuales de desarrollo de los modelos y enfoques arquitectónicos.

Método Sistémico: Para determinar los componentes y definir las relaciones entre estos.

Métodos empíricos:

Observación: Para la percepción selectiva de las restricciones y propiedades del sistema, y sistémica para el control de la evolución de la arquitectura inicial.

Los aportes prácticos esperados del trabajo: Posibles resultados:

(11)

~ 3 ~

 Determinar la factibilidad económica de proyectos de software.

 Generar reportes para la ayuda en la toma decisiones.

 Que sea libre de costo y no necesite muchos recursos hardware para su uso.

(12)

~ 1 ~

Capitulo 1: Fundamentación Teórica.

1.1Introducción al Capítulo:

En el presente capítulo se definen los principales conceptos relacionados con el tema a desarrollar, se abordará sobre la existencia de sistemas similares en el ámbito internacional y nacional, se hará una descripción de las metodologías, paradigmas de programación, herramientas y tecnologías existentes para el desarrollo de la aplicación. Se valoran las ventajas y desventajas de los elementos en cuestión arribando a una conclusión y justificando todo lo que se usará para el desarrollo del sistema.

1.2 Sistemas que permiten determinar la factibilidad económica financiera.

1.2.1 Experiencia internacional.

En el ámbito internacional existen diferentes formas y métodos para realizar la evaluación de proyectos de inversión. Se considera de importancia mencionar las siguientes:

EvalAs: Software para Evaluación de Proyectos Productivos. Este es un software que te permite la introducción de datos como productos y producción, costos fijos y variables, inversiones, impuestos etc. A partir de los datos ingresados, se calcula la Matriz de Flujos de Caja y luego los principales indicadores financieros como los son el VAN, TIR, TIR Modificada, Período de Repago y Período de Repago con Descuento.

Permite detallar la información de los créditos solicitados para financiar el Proyecto. El software calcula automáticamente las cuotas para los préstamos con sistemas de amortización francés y alemán, permitiendo adicionalmente el ingreso manual de los montos de las cuotas, si se utiliza otro sistema. A partir de estos datos, se calculan nuevamente los principales indicadores del Proyecto. En la última versión se puede realizar Análisis de Sensibilidad y de Escenarios. Permite la comparación con otro Proyecto para determinar cuál alternativa es la más rentable.

Puede utilizarse para determinar rentabilidad de proyectos de producción de software, industrial, forestal y agropecuaria (Evals).

(13)

~ 2 ~

Managerial Analyzer: Esta es una herramienta creada para el análisis empresarial, facilita la confección, interpretación y realización del estudio y análisis total de la situación económico-financiera. Está diseñado para cualquier tipo de empresa.

Análisis que realiza esta aplicación: Análisis de Balances, balance de situación, balance de Pérdidas y Ganancias, análisis del activo disponible y realizable, análisis del activo real y ficticio, análisis del exigible a corto y largo plazo, análisis de los resultados de explotación, análisis del balance por masas patrimoniales.

Analítica: cuadro analítico de pérdidas y ganancias, resumen analítico en porcentajes(base 100), indicador de Conan y Holder, ratios de evolución, resultados financieros, activo funcional y extra funcional, análisis y cálculo del valor añadido, análisis y cálculo del flujo de caja, cuadro de financiación.

Rentabilidad: rentabilidad económica y financiera, umbral de rentabilidad, cálculo del apalancamiento financiero, análisis y cálculo del fondo de maniobra, análisis de la capacidad de autofinanciación, análisis de la capacidad de crecimiento, períodos de maduración y ciclo de caja.

La aplicación presenta 50 gráficos: Los gráficos para la afectación de activo, pasivo, debe y haber de pérdidas y ganancias, balance de masas patrimoniales, - flujo de caja y valor añadido; los tipos de gráficos son: barras, columnas, tridimensional, área, circular y de líneas.

La aplicación presenta una batería de 44 informes: Estudios, comentarios de gestión. ( 6 páginas de comentarios), estudio sectorial (estudio comparativo de los 28 ratios sectoriales más importantes),estudio económico-financiero. (Estudio correspondiente a 71 ratios), segmentados por apartados: liquidez, endeudamiento, rotaciones, autofinanciación, fondo de maniobra y pérdidas y ganancias.

Estos software son muy completos para el cálculo de factibilidad económica pero no se ajustan a las condiciones de los proyectos de la UCI, tienen en cuenta demasiadas partidas y son muy complejos a la hora de realizar cualquier operación pues la ayuda de ambos está en inglés y son hechos especialmente para personal especializado en finanzas, ambos se distribuyen bajo una licencia de software propietario (Analyzer, 2009).

(14)

~ 3 ~ 1.2.2 Experiencia nacional.

En una investigación realizada a los centros del Ministerio de las Comunicaciones(MIC) y el ICID se dio a conocer que estos no utilizan una herramienta especializada para el cálculo de factibilidad económica, en su lugar se crea una plantilla en Excel donde se introducen las fórmulas para obtener los criterios de decisión. En la Universidad de las Ciencias Informáticas (UCI) se llevo a cabo un estudio para saber si se utilizaba algún software pero tampoco se encontró ninguna aplicación en uso.

1.3 Metodología a emplear para el cálculo de factibilidad económica financiera.

Para llevar a cabo el análisis de factibilidad se utilizará la Guía Metodológica para realizar Estudios de Factibilidad Económica para inversiones de CIMEX S.A. Esta metodología figura entre las más difundidas y aplicada probablemente por el impresionante Capital Físico que posee esta Corporación, fue elaborada bajo la coordinación de la Gerencia Técnica de Inversiones y en ella participaron un grupo de Especialistas en la Materia Drs. en Ciencias, buena parte de ellos profesores universitarios en servicio, jubilados o exprofesores.

Principales pasos para el cálculo de factibilidad económico financiera de la metodología:

Umbral de rentabilidad: El umbral de rentabilidad puede definirse como el nivel de ventas que satisface el monto de la inversión a una Tasa Neta de Ganancia (TNG) dada, es el punto a partir del cual se comienzan a obtener solo ganancias.

Proyección del estado de resultado: “Considerando y cuantificando los cambios que puedan producirse a lo largo de la vida útil del proyecto mediante la aplicación de los estimados de demanda y de costos de operación y con el diagrama de auxilio del umbral de rentabilidad, se procede a elaborar la secuencia de los eventos previsibles.

En tal sentido suelen tomarse los años significativos que pueden ser aquellos en que se logren resultados estabilizadores de 3 a 10 años o toda la vida útil de la instalación, según el caso. Ello suele estar determinado por la vida de los equipos y maquinarias fundamentales y no por la de las edificaciones y mucho menos por la del terreno que por lo general sobreviven a la instalación como tal”.(Ferran Oliva Juan M., 1997) Proyección del flujo de liquidez: “Las salidas monetarias provocadas por la obra durante el periodo de ejecución y los gastos operativos una vez concluida, deben ser

(15)

~ 4 ~

sincronizadas en el tiempo con las entradas que tendrán por ventas y otros conceptos.

De no lograrse la adaptación entre egresos e ingresos, la ejecución de la inversión pudiera prolongarse más de lo planificado incrementando su costo, así como el tiempo de inmovilización del capital y el pago de intereses. La tabla de corriente de liquidez tiene como propósito analizar sus posibilidades financieras en términos de realización y logro de resultados oportunos. Toma en cuenta las dificultades prácticas que por lo general se presentan durante la ejecución y sobre todo en los primeros años de operación en los cuales el pago de las deudas contraídas debe de afrontar inconvenientes como el bajo aprovechamiento de la capacidad debido a factores técnicos o a causa exógenas como el período de introducción en el mercado y otras”

(Ferran Oliva Juan M., 1997).

Criterio de aceptación-rechazo y toma de decisión: Este paso permite pasar a la evaluación de la inversión, para ello se dispone de diversos métodos, los más generalizados la tasa simple de rendimiento del capital, el periodo de recuperación de la inversión, la Tasa Interna de Rendimiento del Capital (TIR), el Valor Actual Neto (VNA o VAN) y el coeficiente de rentabilidad.

El valor actual neto (VAN o VNA) es uno de ellos y consiste en calcular la diferencia entre los ingresos y los egresos de efectivo para cada año proyectado y actualizado a una tasa de descuento determinada. El periodo analizado abarca desde el inicio de la construcción, pasando por su terminación y puesta en marcha y su operación normal hasta un momento en que haya adquirido madurez. Por tanto incluye los egresos originados en el periodo de inversión y los costos operativos y de otro tipo durante la vida útil de la instalación; asimismo los ingresos una vez puesta en marcha la obra. Si el VAN resulta negativo la rentabilidad de la inversión está por debajo del nivel de rechazo y ello sugiere la desaprobación del proyecto. Cuando este es positivo ocurre todo lo contrario y los resultados serán superiores al mínimo establecido, lo que hace recomendable la inversión. Si este es igual a cero la rentabilidad esperada es igual al nivel de rechazo, en tal caso puede proceder apretadamente la recomendación de aprobación.

La TIR es la tasa de actualización a la cual el valor neto actualizado de la inversión se reduce a cero. Sigue un procedimiento similar al VAN lo que en aquel aparece la tasa de actualización como una constante que refleja el tipo de interés pagado en el mercado y en este caso la incógnita es el por ciento a descontar que es una variable.

(16)

~ 5 ~

La TIR expresa el interés compuesto al que se remunera el capital invertido. El criterio de aceptación-empleado consiste en comparar la TIR obtenida con la tasa de corte preestablecida. Las características señaladas sugieren a la TIR como un indicador de eficiencia muy elocuente. Si se comparan diversas variantes, se debe escoger la que tenga TIR más alta, siempre que la misma sea mayor que la tasa de rechazo” (Ferran Oliva Juan M., 1997).

Limitaciones de la TIR: si en el futuro hay ciertos años en que el costo sea mayor que los beneficios, es decir, si la corriente neta de fondos del proyecto presenta más de un cambio de signo en el transcurso del tiempo, hay más de una tasa de interés que llenaría el requisito de la ecuación de que el VAN sea igual a cero. La TIR no permite seleccionar proyectos que se excluyan recíprocamente, dado que una TIR mayor no significa necesariamente un mayor VAN.

Entre los indicadores descritos en los párrafos anteriores se distinguen por su uso generalizado el VAN y la TIR, los cuales toman en cuenta el factor tiempo en los flujos de ingresos del proyecto. Es decir el valor del dinero en el tiempo.

1.4 Fundamentación de la metodología a utilizar para el desarrollo del software.

Una metodología para el desarrollo de un proceso de software es un conjunto de filosofías, fases, procedimientos, reglas, técnicas, herramientas, documentación y aspectos de formación para los desarrolladores de Sistemas Informáticos. Por ello escoger la metodología que va a guiar el proceso de desarrollo del sistema es un paso tan importante.

A continuación se exponen las características fundamentales de dos de las metodologías más utilizadas en la actualidad para el desarrollo de software, una de ellas, Análisis y Diseño Orientado a Objetos de Sistemas Informáticos en su versión 5 y la otra, el Proceso Unificado de Desarrollo. Se justifican las razones por las cuales ha sido seleccionada esta última para guiar el proceso de desarrollo de la herramienta propuesta.

XP: Esta metodología fue creada para el desarrollo de aplicaciones dónde el cliente no sabe muy bien lo que quiere. Está pensado para un grupo pequeño y muy integrado (máximo 12 personas) dónde la comunicación sea más factible que en grupos de desarrollo grandes.” Sus características principales son:

(17)

~ 6 ~

• Comunicación: Los programadores están en constante comunicación con los clientes para satisfacer sus requisitos y responder rápidamente a los cambios de los mismos.

Muchos problemas que surgen en los proyectos se deben a que después de concretar los requisitos que debe cumplir el programa no hay una revisión de los mismos, pudiendo dejar olvidados puntos importantes.

• Simplicidad: Codificación y diseños simples y claros. Muchos diseños son tan complicados que cuando se quieren ampliar resulta imposible hacerlo y se tienen que desechar y partir de cero.

• Realimentación (Feedback): Mediante la realimentación se ofrece al cliente la posibilidad de conseguir un sistema apto a sus necesidades ya que se le va mostrando el proyecto a tiempo para poder ser cambiado y poder retroceder a una fase anterior para rediseñarlo a su gusto.

• Coraje: Se debe tener coraje o valentía para cumplir los tres puntos anteriores; Hay que tener valor para comunicarse con el cliente y enfatizar algunos puntos, a pesar de que esto pueda dar sensación de ignorancia por parte del programador, hay que tener coraje para mantener un diseño simple y no optar por el camino más fácil y por último hay que tener valor y confiar en que la realimentación sea efectiva.

(Booch, Rumbaugh, & Jacobson, 1999)

Esta metodología no se usará por varias razones, entre las cuales se puede mencionar que la misma está diseñada para proyectos donde hay cambios muy frecuentes, y con amplias posibilidades a dificultades técnicas”. (NEWKIRK, J., 2002.) Proceso Unificado de Rational (RUP): Es RUP el resultado de tres décadas de desarrollo y uso en proyectos reales y prácticos. Como toda metodología permite transformar los requisitos del usuario en un software hecho a las medidas de sus necesidades. Tiene entre sus principales características que es manejado por Casos de Uso, centrado en la arquitectura y que su desarrollo es iterativo e incremental. RUP crea y mantiene modelos, en lugar de enfocarse en la producción de una gran cantidad de papeles de documentación.

Es un proceso de ingeniería de software que mejora la productividad del equipo de trabajo y entrega las mejores prácticas del software a todos los miembros del mismo.

Los contenidos específicos para ebusiness del RUP proporcionan una guía específica en áreas tales como la de Modelación de Negocios, Arquitecturas Web, Pruebas y Calidad.

(18)

~ 7 ~

La creación sólida de software de calidad requiere el conocimiento específico de las tareas que deben llevarse a cabo en cada entorno. Ahí radica la importancia de aplicar un proceso de desarrollo flexible y adaptado a cada objetivo de desarrollo. El proceso RUP combina un conjunto básico de mejores prácticas aprobadas por el sector con una serie de complementos opcionales del proceso a fin de dar cabida y soporte a proyectos de cualquier envergadura o alcance. Cualquier tipo de proyecto (incluidos los pequeños, los basados en Web, aquellos fundamentales para un proyecto y los proyectos integrados) permiten obtener unos resultados más acordes con las previsiones gracias a la aplicación del proceso RUP. (Jacobson y otros, 2000.)

El proceso puede describirse en dos dimensiones, o a lo largo de dos ejes:

1 El eje horizontal representa tiempo y muestra el aspecto dinámico del proceso, expresado en términos de ciclos, fases, iteraciones, y metas.

2 El eje vertical representa el aspecto estático del proceso; como está descrito en términos de actividades, artefactos, trabajadores y flujos de trabajo.

En definitiva el RUP es una metodología de desarrollo de software que intenta integrar todos los aspectos a tener en cuenta durante todo el ciclo de vida del software, con el objetivo de hacer abarcables tanto pequeños como grandes proyectos software.

Además Rational proporciona herramientas para todos los pasos del desarrollo así como documentación en línea para sus clientes. Las características principales de RUP son:

 Guiado/Manejado por casos de uso: La razón de ser de un sistema software es servir a usuarios ya sean humanos u otros sistemas; un caso de uso es una facilidad que el software debe proveer a sus usuarios. Los casos de uso reemplazan la antigua especificación funcional tradicional y constituyen la guía fundamental establecida para las actividades a realizar durante todo el proceso de desarrollo incluyendo el diseño, la implementación y las pruebas del sistema.

 Centrado en arquitectura: La arquitectura involucra los elementos más significativos del sistema y está influenciada entre otros por plataformas software, sistemas operativos, manejadores de bases de datos, protocolos, consideraciones de desarrollo como sistemas heredados y requerimientos no funcionales. Es como una radiografía del sistema que estamos desarrollando,

(19)

~ 8 ~

lo suficientemente completa como para que todos los implicados en el desarrollo tengan una idea clara de qué es lo que están construyendo.

 Iterativo e Incremental: Para hacer más manejable un proyecto se recomienda dividirlo en ciclos. Para cada ciclo se establecen fases de referencia, cada una de las cuales debe ser considerada como un mini proyecto cuyo núcleo fundamental está constituido por una o más iteraciones de las actividades principales básicas de cualquier proceso de desarrollo. En concreto RUP divide el proceso en cuatro fases, dentro de las cuales se realizan varias iteraciones en numero variable según el proyecto y en las que se hace un mayor o menor hincapié en los distintas actividades. En la Figura 1.1 tenemos un ejemplo de la distribución del trabajo.

 Desarrollo basado en componentes: La creación de sistemas intensivos en software requiere dividir el sistema en componentes con interfaces bien definidas, que posteriormente serán ensamblados para generar el sistema.

Esta característica en un proceso de desarrollo permite que el sistema se vaya creando a medida que se obtienen o se desarrollan y maduran sus componentes.

 Utilización de un único lenguaje de modelado: UML es adoptado como único lenguaje de modelado para el desarrollo de todos los modelos.

 Proceso Integrado: Se establece una estructura que abarque los ciclos, fases, flujos de trabajo, mitigación de riesgos, control de calidad, gestión del proyecto y control de configuración; el proceso unificado establece una estructura que integra todas estas facetas. Además esta estructura cubre a los vendedores y desarrolladores de herramientas para soportar la automatización del proceso, soportar flujos individuales de trabajo, para construir los diferentes modelos e integrar el trabajo a través del ciclo de vida y a través de todos los modelos.

(20)

~ 9 ~

Figura 1.1: Rational Unified Process (RUP) (Jacobson y otros, 2000.)

Esta metodología divide en 4 fases el desarrollo de software (Figura 1.1):

 Inicio: El Objetivo en esta etapa es determinar la visión del proyecto.

 Elaboración: En esta etapa el objetivo es determinar la arquitectura óptima.

 Construcción: En esta etapa el objetivo es llegar a obtener la capacidad operacional inicial.

 Transición: El objetivo es llegar a obtener el release del proyecto.

Flujos de trabajo (Figura 1.1):

 Modelamiento del negocio: Describe los procesos de negocio, identificando quiénes participan y las actividades que requieren automatización.

 Requerimientos: Define qué es lo que el sistema debe hacer, para lo cual se identifican las funcionalidades requeridas y las restricciones que se imponen.

 Análisis y diseño: Describe cómo el sistema será realizado a partir de la funcionalidad prevista y las restricciones impuestas (requerimientos), por lo que indica con precisión lo que se debe programar.

 Implementación: Define cómo se organizan las clases y objetos en componentes, cuáles nodos se utilizarán y la ubicación en ellos de los componentes y la estructura de capas de la aplicación.

 Prueba (Testeo): Busca los defectos a los largo del ciclo de vida.

 Instalación: Produce release del producto y realiza actividades (empaque, instalación, asistencia a usuarios, etc.) para entregar el software a los usuarios finales.

(21)

~ 10 ~

 Administración del proyecto: Involucra actividades con las que se busca producir un producto que satisfaga las necesidades de los clientes.

 Administración de configuración y cambios: Describe cómo controlar los elementos producidos por todos los integrantes del equipo de proyecto en cuanto a: utilización/actualización concurrente de elementos, control de versiones, etc.

 Ambiente: Contiene actividades que describen los procesos y herramientas que soportarán el equipo de trabajo del proyecto; así como el procedimiento para implementar el proceso en una organización.

Los 6 primeros son conocidos como flujos de ingeniería y los tres últimos como flujos de apoyo.

Para el desarrollo de proyectos de software es necesario la elección de una metodología a utilizar ya que estas proporcionan la calidad y el mantenimiento del producto a obtener. Dichas metodologías no se pueden aplicar como secuencia de pasos lógicos sino que debemos adaptarlas a las necesidades que presentan los proyectos durante su desarrollo (Jacobson y otros, 2000.).

Es válido aclarar que las metodologías no son “camisas de fuerza” para los procesos de desarrollo de software sino guías para este, por lo que pueden ser adaptadas a las necesidades del equipo de desarrollo. Se decidió usar (RUP) ya que se tiene mayor experiencia sobre esta metodología, tiene una forma disciplinada de asignar tareas y responsabilidades, pretende implementar las mejores técnicas de programación, se puede adecuar a cualquier proyecto de software y además es la más usada en la universidad para la implementación y prueba de sistemas. Esta facilita el trabajo en organización.

1.5 Lenguajes de modelado.

UML: Lenguaje Unificado de Modelado (UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; aún cuando todavía no es un estándar oficial, está respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema de software. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocios y funciones del sistema, y aspectos

(22)

~ 11 ~

concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes de software reutilizables.

Es importante resaltar que UML es un "lenguaje" para especificar y no para describir métodos o procesos. Se utiliza para definir un sistema de software, para detallar los artefactos en el sistema y para documentar y construir. En otras palabras, es el lenguaje en el que está descrito el modelo. Se puede aplicar en una gran variedad de formas para dar soporte a una metodología de desarrollo de software (tal como el Proceso Unificado de Rational) -pero no especifica en sí mismo qué metodología o proceso usar.

Entre sus objetivos fundamentales se encuentran(Booch, Rumbaugh, & Jacobson, 1999):

1. Ser tan simple como sea posible, pero manteniendo la capacidad de modelar toda la gama de sistemas que se necesita construir.

2. Necesita ser lo suficientemente expresivo para manejar todos los conceptos que se originan en un sistema moderno, tales como la concurrencia y distribución, así como también los mecanismos de la ingeniería de software, como son el encapsulamiento y los componentes.

3. Debe ser un lenguaje universal, como cualquier lenguaje de propósito general.

Imponer un estándar mundial.

En el trabajo se utilizará la versión UML 2.0 ya que es una de las versiones más reciente publicada.

1.6 Paradigmas de programación.

Los paradigmas de programación son bastante variados, aunque puede que muchos conozcan una metodología para realizar programas. En la mayoría de los casos, los paradigmas se centran en programación modular y programación estructurada, pero existen otros tipos de programación

1.6.1 Programación estructurada.

La programación estructurada está compuesta por un conjunto de técnicas que han ido evolucionando considerablemente la productividad del programa reduciendo el tiempo de depuración y mantenimiento del mismo. Esta programación estructurada utiliza un número limitado de estructuras de control, reduciendo así considerablemente los errores.

(23)

~ 12 ~

Este paradigma incorpora:

 Recursos abstractos (simplicidad): consiste en descomponer las acciones complejas en otras más simples capaces de ser resueltas con mayor facilidad.

 Estructuras básicas: existen tres tipos de estructuras básicas:

Estructuras secuénciales: cada acción sigue a otra acción secuencialmente. La salida de una acción es la entrada de otra.

Estructuras selectivas: en estas estructuras se evalúan las condiciones y en función del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lógicas.

Estructuras repetitivas: son secuencias de instrucciones que se repiten un número determinado de veces.

Las principales ventajas de la programación estructurada son:

 Los programas son más fáciles de entender

 Se reduce la complejidad de las pruebas

 Aumenta la productividad del programador

 Los programas queden mejor documentados internamente.

Un programa esta estructurado si posee un único punto de entrada y sólo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por último, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos.

El principal inconveniente de este paradigma de programación, es que se obtiene un único bloque de programa, que cuando se hace demasiado grande puede resultar problemático su manejo, debido al tamaño del sistema este paradigma se hace insuficiente para satisfacer las necesidades por lo que no será usado (Paradigmas deLlenguajes de Programación).

1.6.2 Programación modular.

La programación modular es un paradigma de programación que consiste en dividir un programa en módulos ó subprogramas con el fin de hacerlo más legible y manejable.

Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver.

(24)

~ 13 ~

Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en otros subproblemas más simples.

Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó análisis descendente.

Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar.

En caso de que un módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar bien definida.

Si bien un modulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la práctica es común representarlos con procedimientos y funciones. Adicionalmente, también pueden considerarse módulos las librerías que pueden incluirse en un programa o, en programación orientada a objetos, la implementación de un tipo de dato abstracto.

A medida que se divide el problema en subproblemas y el número de módulos crece, se produce un incremento de las interfaces, entre estos con la consiguiente complejidad asociada, por lo que no será usada en el desarrollo del sistema (Paradigmas deLlenguajes de Programación).

1.6.3 Programación concurrente.

Es la ejecución simultánea de múltiples tareas interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución creados por un único programa. Las tareas se pueden ejecutar en una sola unidad central de proceso (multiprogramación), en varios procesadores o en una red de computadores distribuidos. La programación concurrente está relacionada con la programación paralela, pero enfatiza más la interacción entre tareas. Así, la correcta secuencia de interacciones o comunicaciones entre los procesos y el acceso coordinado de recursos que se comparten por todos los procesos o tareas son las claves de esta disciplina.

La misma no será usada en el desarrollo del sistema debido a que no se implementaran funciones que utilicen estas técnicas de programación (Paradigmas deLlenguajes de Programación).

(25)

~ 14 ~ 1.6.4 Programación lógica.

Consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación; no debe confundirse con la disciplina de la lógica computacional.

La programación lógica comprende dos paradigmas de programación: la programación declarativa y la programación funcional. La programación declarativa gira en torno al concepto de predicado, o relación entre elementos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático.

Se suele utilizar en la inteligencia artificial y pequeños programas infantiles. Se trata de una programación basada en el cálculo de predicados (una teoría matemática que permite lograr que un ordenador basándose en hecho y reglas lógicas, pueda dar soluciones inteligentes).

Hasta donde se pretende llegar en el desarrollo del sistema no se utilizará técnicas de inteligencia artificial, por lo que no usaremos este paradigma (Paradigmas deLlenguajes de Programación).

1.6.5 Programación con Restricciones.

Es un paradigma de la programación, donde las relaciones entre las variables son expresadas en términos de restricciones (ecuaciones). Actualmente es usada como una tecnología de software para la descripción y resolución de problemas combinatorios particularmente difíciles, especialmente en las áreas de planificación y programación de tareas (calendarización).

Este paradigma representa uno de los desarrollos más fascinantes en los lenguajes de programación desde 1990 y no es sorprendente que recientemente haya sido identificada por la ACM (Asociación de Maquinaria Computacional) como una dirección estratégica en la investigación en computación.

Se trata de un paradigma de programación basado en la especificación de un conjunto de restricciones, las cuales deben ser satisfechas por cualquier solución del problema planteado, en lugar de especificar los pasos para obtener dicha solución.

La programación con restricciones se relaciona mucho con la programación lógica y con la investigación operativa. De hecho cualquier programa lógico puede ser traducido en un programa con restricciones y viceversa. Muchas veces los programas

(26)

~ 15 ~

lógicos son traducidos a programas con restricciones debido a que la solución es más eficiente que su contraparte.

La diferencia entre ambos radica principalmente en sus estilos y enfoques en el modelado del mundo. Para ciertos problemas es más natural (y por ende más simple) escribirlos como programas lógicos, mientras que en otros es más natural escribirlos como programas con restricciones.

El enfoque de la programación con restricciones se basa principalmente en buscar un estado en el cual una gran cantidad de restricciones sean satisfechas simultáneamente. Un problema se define típicamente como un estado de la realidad en el cual existe un número de variables con valor desconocido. Un programa basado en restricciones busca dichos valores para todas las variables.

Algunos dominios de aplicación de este paradigma son:

 Dominios booleanos, donde solo existen restricciones del tipo verdadero/falso.

 Dominios en variables enteras y racionales.

 Dominios lineales, donde sólo se describen y analizan funciones lineales.

 Dominios finitos, donde las restricciones son definidas en conjuntos finitos.

 Dominios mixtos, los cuales involucran dos o más de los anteriores.

Los lenguajes de programación con restricciones son típicamente ampliaciones de otro lenguaje. El primer lenguaje utilizado a tal efecto fue Prolog. Por esta razón es que este campo fue llamado inicialmente Programación Lógica con Restricciones. Ambos paradigmas comparten características muy similares, tales como las variables lógicas (una vez que una variable es asignada a un valor, no puede ser cambiado), o el backtracking.

La programación con restricciones puede ser implementada como un lenguaje propio o como bibliotecas para ser usadas en algún lenguaje de programación imperativo.

Algunos lenguajes populares de programación con restricciones son:

 B-Prolog (Basado en Prolog, propietario).

 CHIP V5 (Basado en Prolog, también existen bibliotecas en C y C++, propietario).

 Ciao Prolog (Basado en Prolog, software libre: GPL/LGPL).

 ECLiPSe (Basado en Prolog, propietario).

 Mozart (Basado en Oz, software libre: X11).

(27)

~ 16 ~

 SICStus (Basado en Prolog, propietario).

 GNU Prolog (Basado en Prolog, software libre).

 SWI Prolog Un entorno Prolog que contiene varias librerías para soluciones con restricciones (LGPL) (Paradigmas deLlenguajes de Programación).

1.6.6 Programación orientada a objetos.

La programación orientada a objetos (POO, en lo adelante) que centra su diseño en objetos y sus interacciones para diseñar aplicaciones y programas de computadora.

Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990.

Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.

Se trata de un paradigma que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilización de los objetos.

El elemento principal de la programación orientada a objetos es el objeto.

El objeto es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.

Un objeto contiene varios datos bien estructurados y pueden ser visibles o no dependiendo del programador y las acciones del programa en ese momento.

La POO expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.

De esta forma, un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos.

A su vez, los objetos disponen de mecanismos de interacción llamados métodos que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separan ni deben separarse el estado y el comportamiento.

Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de

(28)

~ 17 ~

métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a ninguno de ellos, hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.

En la actualidad existen muchos paradigmas de programación como se ha planteado que son empleadas en el desarrollo de proyectos. Cada una nos brinda sus ventajas, pero debido a la exigencia que demandan los productos en cuando a reutilización de código, reparación y complejidad de los mismos, paradigma de programación que responde a estas exigencias es la POO, esta técnica fomenta la reutilización y extensión del código, permite crear sistemas más complejos y relacionarlos con el mundo real, agiliza el desarrollo del software y facilita el trabajo en equipo.

Basándonos en todas estas ventajas se decide que la POO es la mejor opción para el desarrollo del sistema propuesto (Paradigmas deLlenguajes de Programación).

1.7 Herramientas a utilizar.

1.7.1 Herramientas CASE.

Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Ordenador) son diversas aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el coste de las mismas en términos de tiempo y de dinero. Estas herramientas pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, cálculo de costes, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores entre otras, propiciando las siguientes ventajas:

Según (Almenares, Kiosmy de León, Rubén., 2007) cada una de estas herramientas persigue nueve objetivos principales:

 Mejorar la productividad en el desarrollo y mantenimiento del software.

 Aumentar la calidad del software.

 Mejorar el tiempo y coste de desarrollo y mantenimiento de los sistemas informáticos.

 Mejorar la planificación de un proyecto

(29)

~ 18 ~

 Aumentar la biblioteca de conocimiento informático de una empresa ayudando a la búsqueda de soluciones para los requisitos.

 Automatizar, desarrollo del software, documentación, generación de código, pruebas de errores y gestión del proyecto.

 Ayuda a la reutilización del software, portabilidad y estandarización de la documentación

 Gestión global en todas las fases de desarrollo de software con una misma herramienta.

 Facilitar el uso de las distintas metodologías propias de la ingeniería del software.

Actualmente existen Herramientas CASE tales como: Visual Paradigm para UML, Rational Rose, Enterprise Architect,Umbrelo,ArgoUML pero en la en la Universidad de las Ciencias Informáticas las herramientas más utilizadas son Rational Rose y Visual Paradigm.

Rational Rose es una de las más poderosas herramientas de modelado visual para sistemas basados en objetos. Se utiliza para modelar un sistema antes de proceder a construirlo. Cubre todo el ciclo de vida de un proyecto: concepción y formalización del modelo, construcción de los componentes, transición a los usuarios y certificación de las distintas fases. También utiliza un proceso de desarrollo iterativo controlado (controlled iterative process development), donde el desarrollo se lleva a cabo en una secuencia de iteraciones. Otra característica importante es que usando Rose se puede generar código en distintos lenguajes de programación a partir de un diseño en UML (Philippe, 2001).

Otra herramienta case sumamente interesante y a tomar en consideración es Visual Paradigm la cual da soporte para el modelado visual tanto con UML 2.0 como 2.1. La misma soporta el ciclo de vida completo del desarrollo de software: análisis y diseño orientados a objetos, construcción, pruebas y despliegue. Visual Paradigm también ayuda a una más rápida construcción de aplicaciones de calidad, mejores y a un menor coste. Permite dibujar todos los tipos de diagramas de clases, código inverso, generar código desde diagramas y generar documentación. Las siguientes características demuestran las verdaderas potencialidades de esta herramienta:

entorno de creación de diagramas para UML 2.0; diseño centrado en casos de uso y

(30)

~ 19 ~

enfocado al negocio que generan un software de mayor calidad; uso de un lenguaje estándar común a todo el equipo de desarrollo que facilita la comunicación;

capacidades de ingeniería directa e inversa; modelo y código que permanece sincronizado en todo el ciclo de desarrollo; disponibilidad de múltiples versiones, para cada necesidad; disponibilidad de integrarse en los principales IDEs (Integrated Development Environment); disponibilidad en múltiples plataformas; ofrece un mecanismo general para la organización de los modelos/subsistemas/capas agrupando elementos de modelado y versión gratuita (licencia para Community Edition).

A pesar de todas las facilidades que ofrece Visual Paradigm se escogió Rational Rose como herramienta CASE para realizar el modelado visual de los procesos en el sistema debido a que constituye una de las herramientas líderes en el mundo de la modelación visual, ofrece un lenguaje de modelado común que agiliza la creación del software, hay mayor experiencia en el uso de esta y a que se requieren menos requisitos de hardware.

1.8 Aplicaciones Web.

Con la introducción del Internet y de la Web en concreto, se han abierto infinidad de posibilidades en cuanto al acceso y uso de información desde cualquier parte del mundo. Con los avances en tecnología cada vez se demandan aplicaciones más rápidas, ligeras y robustas que permitan ser usadas sin importar el lugar u horario.

Las primeras páginas web representaban la información de forma estática, haciendo que los sitios debieran actualizarse manualmente, lo que traía molestias, tardanza y la incorporación de un ejército de personas para realizar el proceso en dependencia del tamaño,esto elevaba los costos de actualización y provocó que muchos permanecieran abandonados, desactualizados e incluso la gran mayoría de estos sitios dejaron de existir. Esta situación cambió definitivamente al aparecer las aplicaciones dinámicas, las que como anillo al dedo comenzaron a prevalecer sobre las primeras y son hoy en día las que dominan todo el espacio virtual de Internet.

Ejemplos de este tipo de aplicaciones: sitios de noticia, investigación, publicaciones, entretenimiento y de búsquedas se hicieron realidad gracias a la implementación en lenguajes de programación. (FERNÁNDEZ, F, 2007).

Una aplicación web es un sistema informático que los usuarios utilizan accediendo a un servidor web a través de Internet o de una intranet. Las aplicaciones web son

(31)

~ 20 ~

populares debido a la practicidad del navegador web como cliente ligero. La facilidad para actualizar y mantener aplicaciones web sin distribuir e instalar software en miles de potenciales clientes es otra razón de su popularidad. Aplicaciones como los webmails, wikis, weblogs, tiendas en línea son ejemplos bien conocidos de aplicaciones web.

Ventajas:

 No requieren instalación, pues usan tecnología Web, lo cual nos permite el aprovechamiento de todas las características del Internet.

 Son fáciles de usar (no requieren conocimientos avanzados de computación).

 Alta disponibilidad, ya que puede realizar consultas en cualquier parte del mundo donde tenga acceso a Internet y a cualquier hora.

 Datos centralizados y fácil integración de datos de múltiples fuentes.

 Menos requerimientos de memoria: Las demandas de memoria RAM (Random Access Memory, Memoria de Acceso Aleatorio) por parte del usuario final son más razonables que en los programas instalados localmente (FERNÁNDEZ, F, 2007).

1.9 ¿Qué es un servidor Web?

Un servidor web es un programa que implementa el protocolo HTTP (hypertext transfer protocol) y se ejecuta continuamente en un ordenador, manteniéndose a la espera de peticiones por parte de un cliente (un navegador web) y que responde a estas peticiones adecuadamente, mediante una página web que se exhibirá en el navegador o mostrando el respectivo mensaje si se detectó algún error.

Algunos servidores web importantes son el, Apache, IIS(Internet Imformation Server) y Cherokee aunque el más utilizado es el Apache, el cual es un software libre de código abierto para plataformas Unix (BSD, GNU/Linux), Windows y Macintosh fundamentalmente, que implementa el protocolo HTTP y la noción de sitio virtual.

Apache presenta mensajes de error altamente configurables, bases de datos de autenticación y negociado de contenido, aunque carece de una interfaz gráfica que ayude en su configuración.

Apache es el servidor web hecho por excelencia, su configurabilidad, robustez y estabilidad hacen que cada vez millones de servidores reiteren su confianza en este programa.

(32)

~ 21 ~

Las características de este servidor que hacen la utilización de este en el sistema de factibilidad económica son:

 Es un servidor de web conforme al protocolo HTTP/1.1

 Modular: Puede ser adaptado a diferentes entornos y necesidades, con los diferentes módulos de apoyo que proporciona, y con la API de programación de módulos, para el desarrollo de módulos específicos.

 Se desarrolla de forma abierta

 Extensible: gracias a ser modular se han desarrollado diversas extensiones entre las que destaca PHP, un lenguaje de programación del lado del servidor.

 Soporte para los lenguajes perl, python, tcl y PHP.

 Multiplataforma

 Incentiva la realimentación de los usuarios, obteniendo nuevas ideas, informes de fallos y parches para la solución de los mismos.

 Basado en hebras en la versión 2.0 (Apache?, 2008)

1.10 Tecnologías del lado del cliente.

Los lenguajes de lado cliente son aquellos que pueden ser directamente asimilados por el navegador Web, (entre los cuales se encuentra el HTML, Java y JavaScript que son simplemente incluidos en el código HTML).

Flash: es una tecnología, y un programa, para crear efectos especiales en páginas web. Con Flash también se pueden hacer páginas dinámicas del lado del cliente. Flash en realidad no es un lenguaje; Sin embargo, si habría que catalogarlo en algún sitio quedaría dentro del ámbito de las páginas dinámicas de cliente (Eguíluz Pérez, 2007).

CSS: son las siglas de Cascading Style Sheets, en español Hojas de estilo en Cascada. Es una tecnología que nos permite crear páginas web de una manera más exacta. Gracias a las CSS somos mucho más dueños de los resultados finales de la página, pudiendo hacer muchas cosas que no se podía hacer utilizando solamente HTML, como incluir márgenes, tipos de letra, fondos, colores... Incluso podemos definir nuestros propios estilos en un archivo externo a nuestras páginas; así, si en algún momento queremos cambiar alguno de ellos, automáticamente se nos actualizarán todas las páginas vinculadas de nuestro sitio (Eguíluz Pérez, 2007).

DHTML: no es precisamente un lenguaje de programación. Más bien se trata de una nueva capacidad de la que disponen los navegadores modernos, por la cual se puede tener un mayor control sobre la página que antes.

(33)

~ 22 ~

Cualquier página que responde a las actividades del usuario y realiza efectos y funcionalidades se puede englobar dentro del DHTML, pero en este caso se hace referencia a efectos en el navegador por los cuales se pueden mostrar y ocultar elementos de la página, se puede modificar su posición, dimensiones, color, etc.

DHTML brinda más control sobre la página, gracias a que los navegadores modernos incluyen una nueva estructura para visualizar en páginas web denominada capa. Las capas se pueden ocultar, mostrar, desplazar, etc.

Para realizar las acciones sobre la página, como modificar la apariencia de una capa, es necesario aún un lenguaje de programación del lado del cliente como Javascript o VBScript.

En la actualidad, DHTML también puede englobar la programación en el servidor.

Dentro del concepto de DHTML se engloban también las Hojas de Estilo en Cascada o CSS (Cascade Style Sheets) (Marshall, 1997).

HTML: siglas de HyperText Markup Language (Lenguaje de Marcas de Hipertexto), es el lenguaje de marcado predominante para la construcción de páginas web. Es usado para describir la estructura y el contenido en forma de texto, así como para complementar el texto con objetos tales como imágenes. HTML se escribe en forma de etiquetas, rodeadas por corchetes angulares (<,>). HTML también puede describir, hasta un cierto punto, la apariencia de un documento, y puede incluir un script (por ejemplo Javascript), el cual puede afectar el comportamiento de navegadores web y otros procesadores de HTML (Marshall, 1997).

Javascript: es un lenguaje de programación utilizado para crear pequeños programas encargados de realizar acciones dentro del ámbito de una página web. Se trata de un lenguaje de programación del lado del cliente, porque es el navegador el que soporta la carga de procesamiento. Su uso se basa fundamentalmente en la creación de efectos especiales en las páginas y la definición de interactividades con el usuario (Eguíluz Pérez, 2007).

1.11 Tecnologías del lado del servidor.

Los lenguajes de lado del servidor son aquellos que son reconocidos, ejecutados e interpretados por el propio servidor y que se envían al cliente en un formato comprensible para él. Debido a las necesidades y requisitos que posee el proyecto en cuestión se decidió utilizar como leguaje de programación el PHP del cual se abordará posteriormente.

(34)

~ 23 ~

ASP:(Active Server Pages) es la tecnología desarrollada por Microsoft para la creación de páginas dinámicas del servidor. ASP se escribe en la misma página web, utilizando el lenguaje Visual Basic Script o Jscript (Javascript de Microsoft) (Gates, 2005).

JSP: es un acrónimo de Java Server Pages, que sería Páginas de Servidor Java. Es una tecnología orientada a crear páginas web con programación en Java (Thomson, 2005).

Con JSP podemos crear aplicaciones web que se ejecuten en variados servidores web, de múltiples plataformas, ya que Java es en esencia un lenguaje multiplataforma.

Por tanto, las JSP podremos escribirlas con nuestro editor HTML/XML habitual.

Perl: es un lenguaje de programación interpretado, al igual que muchos otros lenguajes de Internet como Javascript o ASP. Esto quiere decir que el código de los scripts en Perl no se compila sino que cada vez que se quiere ejecutar se lee el código y se pone en marcha interpretando lo que hay escrito. Además es extensible a partir de otros lenguajes, ya que desde Perl se pueden hacer llamadas a subprogramas escritos en otros lenguajes. También desde otros lenguajes podremos ejecutar código Perl.

PHP: (HyperText Pre-Processor) es un lenguaje interpretado de propósito general ampliamente usado y que está diseñado especialmente para desarrollo web y puede ser incrustado dentro de código HTML. Generalmente se ejecuta en un servidor web, tomando el código en PHP como su entrada y creando páginas web como salida.

Puede ser desplegado en la mayoría de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno.

Se decidió utilizar el lenguaje PHP en el desarrollo del sistema por:

 Ser un lenguaje multiplataforma.

 Tener la capacidad de conexión con la mayoría de los manejadores de base de datos que se utilizan en la actualidad.

 Tiene la capacidad de expandir su potencial utilizando la enorme cantidad de módulos.

 Posee una amplia documentación en su página oficial, entre la cual se destaca que todas las funciones del sistema están explicadas y ejemplificadas en un único archivo de ayuda.

(35)

~ 24 ~

 Ser libre, por lo que se presenta como una alternativa de fácil acceso para todos.

 Permitir las técnicas de Programación Orientada a Objetos (Autores, 2005).

1.12 Sistemas de Gestión de Base de Datos.

Una base de datos no es más que un conjunto de información almacenada en memoria auxiliar que permite acceso directo y un conjunto de programas que manipulan esos datos. Los sistemas de gestión de bases de datos son un tipo de software que funciona como interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. Se compone de un lenguaje de definición de datos, un lenguaje de manipulación de datos y un lenguaje de consulta.

Oracle: es un sistema de bases de datos relacional que se destaca por ofrecer soporte de transacciones, estabilidad, escalabilidad, además de ser multiplataforma.

Por estas características se le considera como uno de los más completos. Las últimas versiones han sido certificadas para poder trabajar sobre plataforma Linux. Su principal defecto es su enorme precio, que es de varios miles de euros, además de criticársele la política de suministro de parches de seguridad desde el 2005, lo cual ha incrementado el nivel de exposición de los usuarios en lo que a seguridad respecta (PECOS, 2005).

Microsoft SQL Server: es también un sistema de bases de datos relacional, entre sus características se destacan el soporte de transacciones, su escalabilidad, estabilidad y seguridad. Incluye un potente entorno grafico de administración. Este sistema constituye la alternativa de Microsoft a otros potentes gestores como Oracle, PostgreSQL o MySQL. Su principal dificultad radica en que no es multiplataforma, solo está disponible en Sistemas Operativos de Microsoft (SQL, 2008).

PostgreSQL: Es un sistema de gestión de base de datos relacional orientada a objetos de software libre. Posee una alta concurrencia, mediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus siglas en inglés) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos. Esta estrategia es superior al uso de bloqueos por tabla o por filas común en otras bases, eliminando la necesidad del uso de bloqueos explícitos.

PostgreSQL provee nativamente soporte para, números de precisión arbitraria, texto de largo ilimitado, figuras geométricas (con una variedad de funciones asociadas), direcciones IP (IPv4 e IPv6), bloques de direcciones estilo CIDR, direcciones MAC, y arrays (PECOS, 2005).

Referencias

Documento similar

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

Y tendiendo ellos la vista vieron cuanto en el mundo había y dieron las gracias al Criador diciendo: Repetidas gracias os damos porque nos habéis criado hombres, nos

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

entorno algoritmo.

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

diabetes, chronic respiratory disease and cancer) targeted in the Global Action Plan on NCDs as well as other noncommunicable conditions of particular concern in the European

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)