Desarrollo de una plataforma abierta para la gestión de asociaciones Rubén Angulo Fernández



Descargar 338.46 Kb.
Fecha de conversión13.03.2017
Tamaño338.46 Kb.



Universidad de Deusto


Ingeniería en Informática
Proyecto Fin de Carrera

Desarrollo de una plataforma abierta para la gestión de asociaciones
Rubén Angulo Fernández
Director: Pablo Garaizar Sagarminaga
Abril de 2004




Resumen y descriptores

Este proyecto consiste en una plataforma abierta web para la gestión de asociaciones. La idea de que sea abierta viene dada por una serie de características del software libre que pueden ser especialmente útiles para las asociaciones, estas son: poder reutilizar y adaptar desarrollos previos sin preocuparnos del coste de las licencias del software y el multilingüismo (debido su carácter colaborativo es habitual encontrarlos en varios idiomas).

Entre los distintos tipos de plataformas que se existen se ha elegido una aplicación web escrita en PHP. Las razones para la elección de este lenguaje es que es de código abierto, lo que continúa la filosofía libre del proyecto. Por otra parte la razón de que se haya elegido una aplicación web es que este tipo de aplicaciones pueden ejecutarse en cualquier ordenador: sea nuevo o viejo e independientemente de su arquitectura o Sistema Operativo instalado, lo único necesario es que ese ordenador posea un navegador web. Esto es muy interesante en asociaciones pequeñas que tienen equipos informáticos de muy distinta procedencia.

Por lo tanto este proyecto consta de dos partes:



  • un análisis inicial de las herramientas existente que cumplen los requisitos antes explicados para poder elegir justificadamente la que mejor se adapta a nuestras necesidades

  • la modificación de la herramienta y desarrollo de nuevas funciones hasta que las herramienta se ajuste a los objetivos

Las palabras clave que pueden servir para definir este proyecto son:

Web PHP Asociación Gestión PHProjekt

Índice

Capítulo 1. Introducción 7

Capítulo 2. Especificación de requisitos 13

Capítulo 3. Planificación y Asignación de Tareas 17

Capítulo 4. Desarrollo 29

Capítulo 5. Estudio previo de las herramientas disponibles 61

Capítulo 6. Manual de usuario 81

Conclusión 109

Anexo 113





Capítulo 1. Introducción

1.1Descripción general


A raíz del rápido crecimiento de Internet, las asociaciones han ido desplazando los faxes y archivos en papel por una gestión informatizada de todas sus actividades. La paulatina introducción de tecnologías ofimáticas ha sido muchas veces escalonada y sin una orientación clara, lo que ha supuesto un problema en la mayoría de los casos, debido a cuestiones de incompatibilidades entre herramientas, formatos y dispositivos de almacenamiento.

Dentro de las necesidades típicas de una asociación destacan la gestión documental, la gestión de sus proyectos, la disponibilidad de mecanismos sencillos de comunicación interna y la posibilidad de exportar sus conocimientos y desarrollos a otros formatos diferentes, ya sean portales web, o tecnologías que faciliten la accesibilidad a la información que generan (sobre todo a personas con discapacidades).

Otro de los factores importantes en los que el tejido asociativo vasco está interesado es el multilingüismo desde el punto de vista informático. A día de hoy es impensable que una aplicación orientada a asociaciones no tenga esta cuestión como eje transversal de su desarrollo. Es necesario que todos los desarrollos que tengan como objetivo potenciar las actividades de las asociaciones sean fácilmente exportables a otros idiomas, con vistas a adaptarlas a las ricas y variadas situaciones lingüísticas en las que desempeñan sus labores.

Por otra parte, el Software Libre nos proporciona un marco de trabajo idóneo para el desarrollo de plataformas abiertas que permitan la interconexión de diferentes sistemas heterogéneos. Así mismo, la práctica totalidad del software desarrollado bajo estos principios se puede descargar de Internet sin costes de licencias, por lo que resulta una solución mucho más acorde a la situación presupuestaria de la mayoría de las asociaciones, permitiendo destinar fondos a partidas más relacionadas con el objetivo de la propia asociación.


1.2Oportunidad del proyecto


Desde la experiencia trabajando con asociaciones, hemos podido constatar que éstas comienzan normalmente siendo un grupo pequeño de personas, donde las transferencias de información y la infraestructura técnica necesaria no suele suponer un problema. Sin embargo, conforme va creciendo la cantidad de proyectos desarrollados o el número de integrantes de la asociación, se van detectando carencias en sus métodos de comunicación interna y en el soporte a la gestión de sus proyectos. Otros de los factores que merman sus capacidades son las incompatibilidades entre un gran cúmulo de sistemas, productos y versiones diferentes, así como una mala gestión de su archivo documental.

Muchas de las inversiones en equipamiento informático dentro de una asociación vienen de la mano de subvenciones o ayudas. Esto ocasiona una evolución tecnológica basada en saltos discontinuos, o lo que es lo mismo, la convivencia de tecnologías muy heterogéneas dentro de la asociación. En muy contadas ocasiones la infraestructura tecnológica se revisa después de un cambio de estas características, y el nuevo equipamiento se incorpora a la asociación en el lugar inmediato que requiere su uso, lo que a la postre deriva en una descompensación de las tareas realizadas en un puesto u otro en función del hardware disponible. Resulta habitual que tareas clave dentro de una pequeña asociación se realicen en el puesto destinado, por ejemplo, al auxiliar administrativo puesto que ha sido el último en ser adquirido y es el más potente. Este tipo de situaciones son las que se pretenden evitar con este proyecto, separando la gestión global de la asociación de cada uno de los puestos dentro de la misma.

Las posibilidades que nos brinda el Software Libre son numerosísimas. Su uso hace posible reutilizar y adaptar desarrollos previos con objetivos similares sin preocuparnos del coste asociado a las licencias del software. Además. esta manera de entender el software favorece la colaboración entre diferentes proyectos. Todo lo desarrollado en el presente proyecto no se reducirá a su propio ámbito, sino que podrá ser utilizado como base para realizar futuras modificaciones o mejoras y emprender proyectos relacionados. Trabando así, no es necesario reinventar la rueda, gozamos de una amplia base de soluciones funcionales que podemos utilizar, modificar o ampliar libremente.

Otra de las ventajas de trabajar con Software Libre tiene que ver con el soporte para multilingüismo de las librerías y programas utilizados. Debido al carácter colaborativo inherente a los proyectos de Software Libre, los grupos de trabajo cuentan con programadores de diferentes lugares del mundo, con requerimientos idiomáticos muy diversos. Esto hace que desde el principio se establezca la base para el soporte multilingüe en la amplia mayoría de proyectos basados en esta manera de entender el software. Por lo tanto, la adaptación de elementos previos al proyecto supondrá menos esfuerzo y el coste asociado a la consecución de un sistema totalmente multilingüe se verá notablemente reducido.

Así mismo, esta plataforma puede resultar un soporte de referencia en el marco del apartado “Solidaridad” dentro del Plan Euskadi en la Sociedad de la Información. Si bien no todas las asociaciones tienen por qué tener un carácter solidario, un porcentaje elevado de ellas sí que desempeñan una labor social y podrían ser entendidas dentro de este marco.

1.3Objetivos


El objetivo principal del proyecto es desarrollar una plataforma abierta para la gestión de asociaciones. Esta plataforma tendrá un diseño orientado a la web, basado en sistemas y formatos abiertos y centrado en dar un soporte global a las necesidades habituales de una asociación en cuanto a comunicación, gestión de proyectos y gestión de contenidos.

Así mismo, de forma externa a la plataforma pero con una importancia capital para el éxito en la implantación de la misma, sería necesario proporcionar los siguientes servicios a fin de facilitar su utilización:

1. Formación

2. Asistencia técnica (Call center)

3. Soporte

4. Alojamiento / Gestión de dominios.

De esta forma, la implantación de la plataforma GNU/Elkarian no sería tan dificultosa y gozaría de un soporte rápido y fiable tanto a nivel formativo como a nivel de incidencias o problemas técnicos. Además de esto, consideramos muy positiva la labor de facilitar la gestión de un dominio en Internet así como el alojamiento web de las asociaciones que decidan convertir su intranet en una extranet y no tengan experiencia previa al respecto.

Un objetivo funcional de la plataforma básico es que todo esté basado en una interfaz web y que sea compatible con los estándares web propuestos por el W3C (World Wide Web Consortium). Esto tiene consecuencias muy positivas dentro de la asociación:

a) La utilización de la plataforma es independiente del Sistema Operativo empleado en cada uno de los puestos. Esto evitará problemas de interoperabilidad de fabricantes (PC/Mac, Windows/Linux/MacOS, etc.) y de incompatibilidades.

b) La capacidad de trabajar con la plataforma no está ligada a las características técnicas de cada ordenador. El sistema funcionará igual de bien en un ordenador limitado que en uno muy potente, ya que el procesamiento se realiza en el servidor web y no en los clientes.

c) Es posible utilizar el sistema desde cualquier equipo que tenga acceso a la intranet o extranet de la asociación, bien desde ordenadores de sobremesa, equipos portátiles, PDAs o incluso teléfonos móviles con conexión a Internet.

d) La utilización de formatos abiertos basados en estándares públicos permite a la plataforma no ligarse indisolublemente a una tecnología en concreto y previene de posibles problemas en futuras migraciones de datos de un formato a otro.

Aparte del objetivo principal de desarrollar la plataforma, y previamente a su implementación, este proyecto tiene además otros objetivos secundarios:

a) Analizar en profundidad las necesidades típicas de una asociación en cuanto a soporte informático y de gestión, detallando problemas típicos, carencias o cuellos de botella.

b) Realizar un estudio y análisis de las herramientas existentes que puedan ser reutilizadas o adaptadas para su inclusión en la plataforma.

c) Dotar a la plataforma de un soporte global para el multilingüismo en todos los aspectos de su funcionamiento, desde la instalación al manejo de la herramienta, así como a la documentación del proyecto.

d) Realizar una experiencia piloto en una asociación real para escribir un informe acerca del impacto en cuanto a productividad y mejora de la calidad de vida de los usuarios de la plataforma, utilizando valoraciones subjetivas de los propios usuarios, así como indicadores objetivos de los progresos obtenidos.



Capítulo 2. Especificación de requisitos

2.1¿Qué hace el sistema?


Los servicios que ofrecerá la plataforma pueden englobarse en varias categorías:

1. Herramientas de gestión:

a. Gestión de socios

b. Contabilidad

c. Gestión de recursos

d. Gestión de proyectos

e. Herramientas de gestión documental y Biblioteca:

a) Gestión de ficheros multimedia

b) Gestión de Biblioteca

c) Búsquedas

2. Herramientas para el trabajo personal:

a. Agenda con notificaciones

b. Contactos

c. Notas personales

d. Disco virtual

e. Gestión de tareas e incidencias

3. Herramientas de comunicación:

a. Correo electrónico

b. Foros temáticos

c. Encuestas

d. Chat

e. Reuniones virtuales mediante video/audio conferencia

f. Herramientas para la gestión de la página Web de la asociación

De todos estos requisitos obtenidos no se van a implementar todos en este proyecto. En realidad este proyecto está pensado para más largo plazo y, por tanto, todos estos requisitos son considerados como un máximo. A continuación se van a detallar brevemente todos los requisitos listados:



  • Herramientas de gestión. En este apartado se engloban todos los aspectos referentes a la gestión de la asociación. Los módulos que se pretende que este en este apartado comprenden la gestión de socios, la gestión de recursos y la gestión de proyectos, es decir, todas las tareas de gestión de la asociación. Pero también incluye herramientas de gestión documental y Biblioteca en el que se debería incluir todo lo referente a ficheros multimedia y biblioteca que posea la asociación.



  • Herramientas para el trabajo personal. En toda asociación se requieren herramientas que ayuden a organizar el trabajo personal de los empelados. Entre estas herramientas podemos encontrar: agenda con notificaciones, una agenda de contactos que almacene toda su información personal, notas personales que ayuden a recordar las cosas por hacer y datos variados. Por último también se considera importante que los empleados de la asociación dispongan de un disco virtual donde puedan subir los archivos que deseen y que sirva para intercambiarlos con otros usuarios.



  • Herramientas de comunicación. En las asociaciones y empresas es también muy importante la comunicación entre sus miembros. Ayuna serie de herramientas que ayudan a esta comunicación y que también deben estar incluidas en nuestro sistema. Tenemos por un lado las más sencillas entre las que se encuentran: el correo electrónico, los foros temáticos, un sistema de encuestas que ayude a conocer las opiniones de los empleados, un chat que permita la comunicación en tiempo real. Por otro lado tenemos otro tipo de herramientas más complejas como pueden ser las reuniones virtuales mediante video/audio conferencia. Por último, y aunque no se trata propiamente de una herramienta de comunicación tenemos las herramientas para la gestión de la página Web de la asociación. Esta ultima no es una herramienta de comunicación pero se encarga de mantener las página Web de la asociación y esta si que puede ser considerada una herramienta de comunicación pero esta en vez de ser entre los empleados de la asociación es de la asociación hacia fuera, hacia el público en general.

Estos como se ha dicho anteriormente todos estos requisitos no se han cumplido en la realización de este proyecto. Cumplirlos todos requeriría de más tiempo y personal del que ha dispuesto este proyecto. Por tanto, el proyecto esta abierto a que en un futuro sea continuado. En el capítulo 4 de esta documentación se describe más ampliamente los objetivos logrados con el proyecto y como están realizados y estructurados de una manera mucho más completa y detallada.



Capítulo 3. Planificación y Asignación de Tareas

3.1Calendario del Proyecto


El proyecto se ha realizado siguiendo el calendario que se detalla a continuación. Todas las tareas han sido desarrolladas por una sola persona pero pese ha eso hay tareas que se solapan debido a que la presente documentación se fue elaborando mientras se desarrollaba la implementación del proyecto.







3.2Definición del equipo de trabajo


El equipo de trabajo esta compuesto de una sola persona: Rubén Angulo Fernández, como puede verse en la tabla superior. Esta persona se encarga de todas las distintas tareas de las que se compone el proyecto: analista, programador, documentalista... En ocasiones se puede ver que en los calendarios y en los diagramas de Gannt que se desarrollan dos tareas a la vez, por ejemplo, el análisis y la documentación o la implementación y la documentación.


3.3Especificación de las actividades


Es este grupo podemos encontrar tres grandes grupos de tareas: Investigación, Implementación y Documentación. Cada una de ellas se divide en una serie de tareas. A continuación se detalla una descripción de cada una de las tareas y se explica su contenido:



  • Investigación. Esta fase comprende todas las actividades de investigación y estudio previas al desarrollo de la aplicación propiamente dicho. Se descompone en las tareas que se citan y se detallan a continuación:



    • Estudio previo de las herramientas disponibles. Un paso previo al desarrollo del programa era hacer un estudio de las herramientas disponibles que tuvieran unas funcionalidades similares. El objetivo de esto era poder escoger justificadamente la mejor y más completa de las herramientas para comenzar el proyecto con esa herramienta como base. Es decir, se debía escoger la herramienta que mejor se acoplara a los requisitos del proyecto para que realizar las modificaciones fuera más sencillo. Este estudio lo podemos encontrar en el capítulo 5 de esta documentación titulado: “Estudio previo de las herramientas disponibles”.



    • Estudio tecnología html. El siguiente paso de la investigación fue ponerse al día con la tecnología html, que si bien ya era conocida estaba un poco olvidada y era necesario refrescar conocimientos.



    • Estudio tecnología php. Esta tecnología era completamente desconocida para el equipo de desarrollo, por lo tanto fue necesario un periodo de aprendizaje para entender los conceptos y estructuras básicas del lenguaje. El hecho de que se la sintaxis sea similar a la de C facilitó mucho el aprendizaje. Para realizar este aprendizaje se estudiaron manuales y tutoriales. Alguno de los tutoriales y manuales utilizados pueden encontrarse en las siguientes páginas:

http://jips.bankhacker.com/linux/apache/ssl/urlsphp.phtml

http://es.tldp.org/Manuales-LuCAS/manual_PHP/manual_PHP/

En este apartado se incluye también el aprendizaje del servidor Web que se ha utilizado para levar a cabo el desarrollo: Apache, y de la base de datos que se ha utilizado: MySQL.



  • Implementación.

    • Eliminación código y opciones sobrantes. El primer paso de la fase de implementación del proyecto fue eliminar todas los módulos, opciones y en general, todo el código que no tenia ninguna utilidad en nuestro proyecto. En esta fase se dedico muchas horas a la lectura del código pues era imprescindible comprender el funcionamiento y la forma en que estaba estructurado el código antes de borrar nada. Y por otro lado tampoco bastaba con que las opciones y módulos no necesarios simplemente no aparecieran en pantalla. Había que eliminar todo rastro de este código porque el planteamiento inicial de este proyecto es que sea continuado en siguientes años por otros alumnos y, aunque lo sencillo hubiera sido simplemente hacer que esas opciones sobrantes no se mostraran en pantalla, no eliminar el código por completo hubiera confundido a los alumnos futuros que continúen el proyecto debido a que se encontrarían con código que no sirve para nada.



    • Desarrollo nueva interfaz. En esta etapa del proyecto se diseño una nueva interfaz para la herramienta. Los cambios principales y más visibles fueron: por un lado, cambiar el menú de la parte superior a la parte lateral izquierda y por otro lado, cambiar los colores de unas tonalidades azules que tenia al principio a una combinación de verde y blanco. Además de estos cambios mas importantes también se han realizado una serie de cambios menores con el objetivo de hacer más sencilla y fácil el uso de la herramienta: facilitar el acceso a la ayuda, cambiar terminologías...



    • Modificación de los módulos del programa. El siguiente paso fue cambiar los módulos existentes para que se ajustaran mejor a la idea y objetivos del proyecto.



    • Desarrollo nuevo módulo. Una vez hechos los cambios en la interfaz y en los módulos ya existentes, se procedió a la implementación de nuevos módulos. En realidad sólo se ha implementado un nuevo módulo: biblioteca. Este módulo sirve para llevar un control de los libros que posee la asociación. Permite ordenar y buscar libros, mostrar una pequeña sinopsis del libro, añadir nuevos libros y exportar la lista de libros.



    • Fase de pruebas. Una vez modificados los módulos e implementado uno nuevo se ha invertido un tiempo en intentar corregir algunos errores. Para ello se han insertado datos que podrían ser auténticos en todos los módulos de la aplicación para comprobar que todo funcionaba como estaba previsto.



  • Documentación.

    • Introducción. En este capitulo de la documentación se incluye una descripción general del proyecto, las oportunidades del proyecto y los objetivos. Fue escrita al comienzo del proyecto mientras se estaba realizando el análisis de las herramientas disponibles, como puede verse en los diagramas de Gannt que aparecen en el siguiente apartado o en la tabla de actividades que se ha mostrado un poco mas arriba.



    • Especificación de requisitos. En este capítulo se hace una descripción detallada de los requisitos del sistema.



    • Planificación y asignación de tareas. En este capítulo se incluye la calendario del proyecto, definición del equipo de trabajo, especificación de las actividades y los diagramas de Gannt de planificación de tareas.



    • Desarrollo. En este capítulo se describe la estructura de la herramienta: como están interconectados los módulos y que hace cada uno de los ficheros que componen la herramienta. Además se explica la tecnología utilizada (PHP) y se justifica su uso y las razones por las que se ha utilizado en vez de alguna otra tecnología.

.

    • Manual de usuario. En este capítulo se incluye un detallado manual de usuario de la herramienta. Está acompañado de múltiples imágenes que ilustran mejor y más fácilmente las explicaciones sobre como utilizar la herramienta. Este manual se ha realizado una vez desarrollada la aplicación completamente mientras se encontraba en la fase de pruebas.



    • Conclusiones. Aquí se han expuesto las conclusiones que se han obtenido de la realización del proyecto. Es decir, las cuestiones mas remarcables e importantes. Este capítulo de la documentación se ha realizado en último lugar una vez que todo lo demás estaba ya terminado.


3.4Diagrama Gantt de planificación de tareas


En las tres siguientes páginas se muestran los diagramas de Gannt del proyecto. En estos diagramas se puede ver claramente como ha sido el desarrollo del proyecto y en que fechas se ha desarrollado cada una de las tareas que componen el proyecto.






Capítulo 4. Desarrollo

4.1Descripción de la tecnología utilizada: php

4.1.1Un poco de historia


PHP es un lenguaje creado por una gran comunidad de personas. El sistema fue desarrollado originalmente en el año 1994 por Rasmus Lerdorf como un CGI escrito en C que permitía la interpretación de un número limitado de comandos. El sistema fue denominado Personal Home Page Tools y adquirió relativo éxito gracias a que otras personas pidieron a Rasmus que les permitiese utilizar sus programas en sus propias páginas. Dada la aceptación del primer PHP y de manera adicional, su creador diseñó un sistema para procesar formularios al que le atribuyó el nombre de FI (Form Interpreter) y el conjunto de estas dos herramientas, sería la primera versión compacta del lenguaje: PHP/FI.

La siguiente gran contribución al lenguaje se realizó a mediados del 97 cuando se volvió a programar el analizador sintáctico, se incluyeron nuevas funcionalidades como el soporte a nuevos protocolos de Internet y el soporte a la gran mayoría de las bases de datos comerciales. Todas estas mejoras sentaron las bases de PHP versión 3. Actualmente PHP se encuentra en su versión 4, que utiliza el motor Zend, desarrollado con mayor meditación para cubrir las necesidades actuales y solucionar algunos inconvenientes de la anterior versión. Algunas mejoras de esta nueva versión son su rapidez -gracias a que primero se compila y luego se ejecuta, mientras que antes se ejecutaba mientras se interpretaba el código-, su mayor independencia del servidor web -creando versiones de PHP nativas para más plataformas- y un API más elaborado y con más funciones. PHP actualmente significa Hypertext Preprocessor.



Gráfica del número de dominios y direcciones IP que utilizan PHP.

Estadística de Netcraft.

En el último año, el número de servidores que utilizan PHP se ha disparado, logrando situarse cerca de los 5 millones de sitios y 800.000 direcciones IP, lo que le ha convertido a PHP en una tecnología popular. Esto es debido, entre otras razones, a que PHP es el complemento ideal para que el tándem Linux-Apache sea compatible con la programación del lado del servidor de sitios web. Gracias a la aceptación que ha logrado, y los grandes esfuerzos realizados por una creciente comunidad de colaboradores para implementarlo de la manera más óptima, podemos asegurar que el lenguaje se convertirá en un estándar que compartirá los éxitos augurados al conjunto de sistemas desarrollados en código abierto.

PHP es un lenguaje del lado del servidor, esto es, que se ejecuta en el servidor web justo antes de que se envíe la página a través de Internet al cliente. Las páginas que se ejecutan en el servidor pueden realizar accesos a bases de datos, conexiones en red, y otras tareas para crear la página final que verá el cliente. El cliente solamente recibe una página con el código HTML resultante de la ejecución de la PHP. Como la página resultante contiene únicamente código HTML, es compatible con todos los navegadores.

Esquema del funcionamiento de las páginas PHP.



Una vez que ya conocemos el concepto de lenguaje de programación de scripts del lado del servidor podemos hablar de PHP. PHP se escribe dentro del código HTML, lo que lo hace realmente fácil de utilizar, al igual que ocurre con el popular ASP de Microsoft, pero con algunas ventajas como su gratuidad, independencia de plataforma, rapidez y seguridad. Cualquiera puede descargar a través de la página principal de PHP www.php.net y de manera gratuita, un módulo que hace que nuestro servidor web comprenda los scripts realizados en este lenguaje. Es independiente de plataforma, puesto que existe un módulo de PHP para casi cualquier servidor web. Esto hace que cualquier sistema pueda ser compatible con el lenguaje y significa una ventaja importante, ya que permite portar el sitio desarrollado en PHP de un sistema a otro sin prácticamente ningún trabajo.

4.1.2Cosas para tener en cuenta en un lenguaje de scripts


Las cuatro grandes características: Velocidad, estabilidad, seguridad y simplicidad.

  • Velocidad: No solo la velocidad de ejecución, la cual es importante, sino además no crear demoras en la máquina. Por esta razón no debe requerir demasiados recursos de sistema. PHP se integra muy bien junto a otro software, especialmente bajo ambientes Unix, cuando se configura como módulo de Apache, esta listo para ser utilizado.



  • Estabilidad: La velocidad no sirve de mucho si el sistema se cae cada cierta cantidad de ejecuciones. Ninguna aplicación es 100% libre de bugs, pero teniendo de respaldo una increíble comunidad de programadores y usuarios es mucho mas difícil para lo bugs sobrevivir. PHP utiliza su propio sistema de administración de recursos y dispone de un sofisticado método de manejo de variables, conformando un sistema robusto y estable.



  • Seguridad: El sistema debe poseer protecciones contra ataques. PHP provee diferentes niveles de seguridad, estos pueden ser configurados desde el archivo .ini



  • Simplicidad: Se les debe permitir a los programadores generar código productivamente en el menor tiempo posible. Usuarios con experiencia en C y C++ podrán utilizar PHP rápidamente.

Bueno otra característica a tener en cuenta seria la conectividad. PHP dispone de una amplia gama de librerías, y agregarle extensiones es muy fácil. Esto le permite al PHP ser utilizado en muchas áreas diferentes, tales como encriptado, gráficos, XML y otras.

4.1.3Ventajas y contras de PHP


Ventajas:

  • PHP corre en (casi) cualquier plataforma utilizando el mismo código fuente, pudiendo ser compilado y ejecutado en algo así como 25 plataformas, incluyendo diferentes versiones de Unix, Windows (95,98,NT,ME,2000,XP,bla,bla,bla) y Macs. Como en todos los sistemas se utiliza el mismo código base, los scripts pueden ser ejecutados de manera independiente al OS.



  • La sintaxis de PHP es similar a la del C, por esto cualquiera con experiencia en lenguajes del estilo C podrá entender rápidamente PHP. Entre los lenguajes del tipo C incluimos al Java y Javascript, de hecho mucha de la funcionalidad del PHP se la debe al C en funciones como fread() o srtlen().



  • PHP es completamente expandible. Está compuesto de un sistema principal (escrito por Zend), un conjunto de módulos y una variedad de extensiones de código.



  • Muchas interfaces distintas para cada tipo de servidor. PHP actualmente se puede ejecutar bajo Apache, IIS, AOLServer, Roxen yTHTTPD. Otra alternativa es configurarlo como modulo CGI.



  • Puede interactuar con muchos motores de bases de datos tales como MySQL, MS SQL, Oracle, Informix, PostgreSQL, y otros muchos. Siempre podrás disponer de ODBC para situaciones que lo requieran.



  • Una gran variedad de módulos cuando un programador PHP necesite una interfase para una librería en particular, fácilmente podrá crear una API para esta. Algunas de las que ya vienen implementadas permiten manejo de gráficos, archivos PDF, Flash, Cybercash, calendarios, XML, IMAP, POP, etc.



  • Rapidez. PHP generalmente es utilizado como modulo de Apache, lo que lo hace extremadamente veloz. Esta completamente escrito en C, así que se ejecuta rápidamente utilizando poca memoria.



  • PHP es Open Source, lo cual significa que el usuario no depende de una compañía específica para arreglar cosas que no funcionan, además no estás forzado a pagar actualizaciones anuales para tener una versión que funcione.

Contras:

El manejo de errores no es tan sofisticado como Cold Fusion o ASP.

No existe IDE o Debugger. Una IDE puede no ser importante para la mayoría de los programadores y un debugger ha sido prometido por Zend Tech para un futuro muy cercano.

4.1.4Cuando utilizar PHP


Si estas desarrollando bajo una plataforma UNIX o Linux, debes elegir entre Perl y PHP, ambos excelentes. Para mucha gente PHP es más simple a la hora de escribir scripts, haciéndolo más productivo en proyectos no tan grandes.

En ambientes Windows compite muy de cerca con ASP y Cold Fusion, aquí la elección se basa en asuntos un poco más técnicos y en la política que desee utilizarse para el sitio. Aunque su sintaxis puede diferir sensiblemente podriamos decir que PHP y ASP son lenguajes parecidos en cuanto a potencia y dificultad. Algunas diferencias principales pueden, no obstante, mencionarse:



  • PHP, aunque multiplataforma, ha sido concebido inicialmente para entornos UNIX y es en este sistema operativo donde se pueden aprovechar mejor sus prestaciones. ASP, siendo una tecnología Microsoft, esta orientado hacia sistemas Windows, especialmente NT.



  • Las tareas fundamentales que puede realizar directamente el lenguaje son definidas en PHP como funciones mientras que ASP invoca más frecuentemente los objetos. Por supuesto, esto no es más que una simple cuestión de forma ya que ambos lenguajes soportan igualmente ambos procedimientos.



  • ASP realiza numerosas tareas sirviéndose de componentes (objetos) que deben ser comprados (o programados) por el servidor a determinadas empresas especializadas. PHP presenta una filosofía totalmente diferente y, con un espíritu más generoso, es progresivamente construido por colaboradores desinteresados que implementan nuevas funciones en nuevas versiones del lenguaje.


4.1.5Tareas principales del PHP


Poco a poco el PHP se va convirtiendo en un lenguaje que permite hacer de todo. En un principio diseñado para realizar poco más que un contador y un libro de visitas, PHP ha experimentado en poco tiempo una verdadera revolución y, a partir de sus funciones, en estos momentos se pueden realizar una multitud de tareas útiles para el desarrollo del web:

Funciones de correo electrónico

Podemos con una facilidad asombrosa enviar un e-mail a una persona o lista parametrizando toda una serie de aspectos tales como el e-mail de procedencia, asunto, persona a responder...

Otras funciones menos frecuentes pero de indudable utilidad para gestionar correos electrónicos son incluidas en su librería.

Gestión de bases de datos

Resulta difícil concebir un sitio actual, potente y rico en contenido que no es gestionado por una base de datos. El lenguaje PHP ofrece interfaces para el acceso a la mayoría de las bases de datos comerciales y no comerciales (MySQL, mSQL, Oracle, Informix) y por ODBC a todas las bases de datos posibles en sistemas Microsoft, a partir de las cuales podremos editar el contenido de nuestro sitio con absoluta sencillez.



Gestión de archivos

Crear, borrar, mover, modificar...cualquier tipo de operación más o menos razonable que se nos pueda ocurrir puede ser realizada a partir de una amplia librería de funciones para la gestión de archivos por PHP. También podemos transferir archivos por FTP a partir de sentencias en nuestro código, protocolo para el cual PHP ha previsto también gran cantidad de funciones.



Tratamiento de imágenes

Si tenemos que tratar miles de imágenes enviadas por nuestros internautas puede resultar muy tedioso uniformar en tamaño y formato miles de imágenes recibidas día tras día. Todo esto puede ser también automatizado eficazmente mediante PHP.

También puede parecer útil el crear botones dinámicos, es decir, botones en los que utilizamos el mismo diseño y solo cambiamos el texto. Podremos por ejemplo crear un botón haciendo una única llamada a una función en la que introducimos el estilo del botón y el texto a introducir obteniendo automáticamente el botón deseado.

Muchas otras funciones pensadas para Internet (tratamiento de cookies, accesos restringidos, comercio electrónico...) o para propósito general (funciones matemáticas, explotación de cadenas, de fechas, corrección ortográfica, compresión de archivos...) son realizadas por este lenguaje. A esta inmensa librería cabe ahora añadir todas las funciones personales que uno va creando por necesidades propias y que luego son reutilizadas en otros sitios y todas aquellas intercambiadas u obtenidas en foros o sitios especializados.


4.2Descripción de la tecnología usada: MySQL


SQL es el lenguaje de bases de datos más popular y estandarizado del mundo. MySQL es una implementación cliente/servidor que consiste en un demonio mysqld y varios programas clientes y librerías. 

 Las principales virtudes del MySQL son su gran velocidad, robustez y facilidad de uso. Junto con PostgreSQL lo mejorcito que hay en bases de datos. MySQL soporta muchos lenguaje de programación distintos como: C, C++, Eiffel, Java, Perl, PHP, Python y TCL. También tiene la opción de protección mediante contraseña. 

MySQL es un gestor de bases de datos SQL. Un dato histórico interesante es que IBM empezó a comercializar en 1.981 el SQL y desde entonces este producto ha tenido un papel importante en el desarrollo de la bases de datos relacionales. IBM propuso y fue aceptada, una versión de SQL al Instituto de Estándares Nacional Americano (ANSI) y desde entonces es utilizado de forma generalizada en las bases de datos relacionales. En 1.983 nació DB2 la más popular( por lo menos en los grandes ordenadores) de las bases de datos de este tipo hasta estos mismos momentos. Por otra parte, MySQL empezó como un proyecto de programación hará unos 10 años, cuando un programador sueco decidió crear su propio gestor de datos para la aplicación que estaba desarrollando. Hasta ese momento usaba msql, pero vio que se le quedaba corto en algunos aspectos que el podría mejorar directamente. Pronto MySQL fue el número 1 en rendimiento en el ámbito de las bases de datos de código abierto. Posteriormente se creo una empresa sueca, llamada Tux que se dedicó a crear nuevas MySQL es un servidor de bases de datos multiusuario, concretamente, el más rápido en entornos web.

Esta base de datos es considerada (en su propia documentación así lo reseña) como la más rápida y robusta tanto para volúmenes de datos grandes como pequeños (siempre, claro está, comparada con las de su categoría), aunque como veremos más adelante está rapidez es a costa de no implementar ciertos aspectos del SQL. 


 

Sus principales características son: 



  • El principal objetivo de MySQL es velocidad y robustez.  

  • Escrito en C y C++, testado con GCC 2.7.2.1. Usa GNU autoconf para potabilidad.  

  • Clientes C, C++, Java, Perl, TCL, etc 

  • Multiproceso, es decir puede usar varias CPU si éstas están disponibles.  

  • Puede trabajar en distintas plataformas y S.O. distintos.  

  • Sistema de contraseñas y privilegios muy flexible y seguro.  

  • Todas las claves viajan encriptadas en la red.  

  • Registros de longitud fija y variable.  

  • 16 índices por tabla, cada índice puede estar compuesto de 1 a 15 columnas o partes de ellas con una longitud máxima  de 127 bytes.  

  • Todas las columnas pueden tener valores por defecto.  

  • Utilidad (Isamchk) para chequear, optimizar y reparar tablas.  

  • Todos los datos están grabados en formato ISO8859_1.  

  • Los clientes usan TCP o UNIX Socket para conectarse al servidor.  

  • El servidor soporta mensajes de error en distintas lenguas.  

  • Todos los comandos tienen -help o -? Para las ayudas.  

  • Diversos tipos de columnas como enteros de 1, 2, 3, 4, y 8 bytes, coma flotante, doble precisión, carácter, fechas, enumerados, etc. 

  • Según benchmarks disponibles en Internet, hasta 80 veces más rápida que Oracle en las mismas condiciones. 

La última versión de MySQL es la 4.0. Las nuevas características parecen ser InnoDB Engine, que proporciona transacciones, claves externas, actualización y borrado en cascada y bloqueo a nivel de fila, más rápido, con caché de consultas, mejoras en inserciones, búsqueda en índices compuestos y creación de índices sobre texto completo, un servidor embebido y compatibilidad con otras BD truncate table, union, internacionalización. 

4.3Diseño


Desarrollar diagramas de un programa que no he diseñado se me ha hecho una tarea totalmente imposible. Hay que decir que la estructura de PHProjekt no es nada sencilla: hay variables en alemán; la relación entre los módulos es en muchos cosos, como mínimo, curiosa; no hay documentación que detalle las variables y las funciones; y el programa está compuesto de miles y miles de líneas de código que han sido imposible de descifrar por completo en tan poco tiempo. Hay que decir también a su favor que el código está ordenado por directorios y cada directorio es un módulo distinto, además hay otros directorios que se ocupan de otras funciones que se detallarán a continuación. Por otro lado los distintos archivos dentro de cada módulo tienen nombres distintivos de su función. A continuación se va a proceder a la explicación de la función de cada uno de los archivos que componen el programa y en algunos casos las relaciones que existen entre ellos.

4.3.1Directorios de módulos


Entendemos estos directorios como aquellos en los que hay código relativo a un relativo módulo. Podemos englobar aquí los siguientes directorios: bookmarks, calendar, chat, contacts, filemanager, forum, help, mail, notes, projects, settings, summary y votum. Dentro de estos directorios se pueden encontrar un número variable de archivos dependiendo principalmente de su complejidad. Todos tienen como mínimo un archivo que es: “nombremódulo.php”. Este archivo es el principal, desde el se llama al resto de partes del módulo. A continuación se presenta el archivo “notes.php” que pertenece al módulo de Notas. El código tiene comentados los aspectos más relevantes e importantes (los comentarios están resaltados en verde y el código en azul):

Al comienzo de cada archivo hay una cabecera con información del PHProjekt (herramienta en que se ha basado esta aplicación), copyright y autor.

// notes.php - PHProjekt Version 4.1

// copyright © 2000-2003 Albrecht Guenther ag@phprojekt.com

// www.phprojekt.com

// Author: Albrecht Guenther

Al comienzo de este tipo de archivos se asigna valor a la variable $path_pre y se incluyen las librerías necesarias para el módulo

$path_pre="../";

$include_path = $path_pre."lib/lib.inc.php";

include_once $include_path;

En el array $fields se incluyen algunas variables de idioma que se van a necesitar en el módulo

$fields = array('all'=>$rts_23,'name'=>$forum_text5,'remark'=>$forum_text6);

A continuación se llama a las hojas de estilo que van a definir los colores y tipos de letras de las página y se indica que la página va a contener javascript

echo $html_tag."$lang_cfg\n";

echo "\n";

echo "\n";

La variable $mode indica que parte del módulo se debe ejecutar a continuación. Esto es así porque desde ciertas partes de la aplicación como el modulo de contactos y el de proyectos se pueden crear notas asociadas para un contacto o un proyecto y por tanto se abre notes_forms.php en vez de notes_view.php que es el archivo que muestra la pantalla princidpal del módulo notas con las notas existentes

if (!$mode) {

if (!$notes_view_both and ($ID > 0 or $contact_ID > 0 or $projekt_ID > 0)) {$mode = 'forms'; }

else $mode = 'view';



}

include_once('./notes_'.$mode.'.php');



echo '


La base de datos está protegida por derechos de autor ©bazica.org 2016
enviar mensaje

    Página principal