1
Capítulo II Estado del arte.
En esta sección se hablará de algunos trabajos o proyectos similares a
Eduscore, además de hacer una comparación entre ellos y Eduscore, explicando
los principales beneficios que ofrece Eduscore en comparación con los demás.
Además se describirán algunas metodologías que pueden ser útiles para el
desarrollo de este proyecto.
Antes de empezar a describir los trabajos es necesario entender el porqué es
importante un sistema que gestione la información de las universidades.
En la actualidad las decisiones que se toman en las universidades giran
alrededor de asignar diversos recursos como personas, tiempo, capital, etc. para
satisfacer distintas necesidades dentro de la organización. Estas decisiones no se
suelen tomar por solo una persona, es decir, varias personas intervienen en este
proceso de toma de decisiones, por lo tanto para poder tomar de la mejor manera
posible estas decisiones es necesario contar con la información necesaria y que
además dicha información esté actualizada, sea fácil acceder a ella y sea confiable.
Aquí es donde entran los sistemas como Eduscore, ya que gracias a ellos se
actualiza en tiempo real la información, además de que la información es guardada
en un sitio seguro y permite que haya facilidad al momento de querer acceder a la
información en cualquier momento.
A continuación se describirán algunos sistemas que son parecidos al sistema
Eduscore que en estos momentos está en desarrollo.
2.1 Proyectos similares a Eduscore y su comparación con
Eduscore.
2.1.1 Magix ERP
[1]El fin de este ERP es ofrecer un sistema de gestión que se adecue a las
características y necesidades de los centros educativos.
Este sistema está en constante evolución para poder satisfacer las
necesidades de los centros educativos, además de integrar todos los sistemas de
gestión académica y administrativa del centro educativo lo que permite evitar la
duplicación de los datos.
El sistema de gestión Magix brinda todas las herramientas necesarias para
dar soporte a los procesos de gestión académica, administrativa y de áreas de
2
apoyo de la Institución. En la figura 2.1 se pueden observar los módulos que
conforman al sistema de Magix.
Todos los módulos de Magix-SE están totalmente integrados y dialogan entre
sí, por lo cual permite la posibilidad de aplicar controles cruzados entre los mismos.
Magix es un software que utiliza tecnología de última generación, que gracias
a sus posibilidades de parametrización se adapta fácilmente a diferentes realidades
institucionales.
Algunas de las características de este sistema son:
Es un sistema parametrizable y no empaquetado, características que permiten la
adaptación del sistema a la realidad particular de la organización en las diferentes
áreas que la conforman.
Se adapta a diferentes realidades, por lo que los costos de implantación y
adaptación son bajos, al igual que los costos de mantenimiento.
La integración de información y definición de flujos eficientes de trabajo permite
también que la organización reduzca sus costos de operación.
La amigabilidad de sus pantallas permite que los usuarios se adapten fácilmente,
obteniendo altos niveles de satisfacción.
2.1 Módulos de Magix SE
http://www.magix.com.uy/index.php?option=com_content&view=article&id=64&Itemid=28
3
2.1.2 SOFTAULA
[2]Es una plataforma que está enfocada a la gestión de escuelas y centros
educativos. Ofrece diversas herramientas que permiten a las empresas gestionar
sus procesos de una manera fácil y eficiente.
[3]Una de las herramientas que ofrece es AKAUD la cual está dirigida a las
pequeñas y medianas empresas. Es fácil de aprender y utilizar, además de que
permite un proceso de gestión en la nube. Algunas de las funciones con las que
cuenta son:
Matriculación flexible.
Mensajes automáticos.
Gestión económica.
Informes y estadísticas.
2.2 Vista de aKaud
https://www.akaud.com/#iLightbox[box2]/2
SOFTAULA ofrece otras herramientas como SoftMoodle que sirve para
construir tu propia plataforma de aprendizaje, SoftMailchimp que sirve para crear
campañas de email marketing más efectivas con Mailchimp y sincronizar todas tus
listas de suscriptores,SoftCampus que ofrece diversos servicio a profesores y
alumnos y EstudiPlan que Canaliza y Optimiza la comunicación entre tus alumnos,
familias y docentes, desde tu móvil o tableta.
4
2.1.3 Sistema Integral de Información Académica y Administrativa (SIIAA)
Universidad Politécnica de Sinaloa
Este ERP es de gran ayuda para el personal de la universidad donde se
utiliza, debido a que proporciona a los alumnos una herramienta en la cual puede
consultar sus horarios, calificaciones, su asesor asignado, solicitar ciertos
documentos, subir ciertos trabajos que les solicitan, observar sus pagos realizados,
descargar fichas de pago, entre otras cosas.
Por otro lado permite a los profesores y demás usuarios que no son alumnos
el realizar ciertos procesos de una manera más sencilla y que la información
necesaria sea guardada correctamente y pueda ser posteriormente consultada
cuando se le necesite. Entre estos procesos por mencionar algunos se encuentran
calificar a los alumnos, escribir reportes sobre las acciones del alumnado, consultar
a los alumnos inscritos, en caso de ser asesor o director proporciona un medio por el
cual poder mandar ciertas notificaciones al alumnado, etc.
El SIIAA es una herramienta confiable, eficiente, fácil de aprender y de utilizar
para sus usuarios. Además de que permite unificar todos los procesos de las
diversas áreas que conforman a la universidad.
Se puede observar en la figura 2.3 un ejemplo de cómo se ve el apartado del
login que maneja el SIIAA.
2.3 Vista del SIIAA
http://www.upsin.edu.mx/siiaa
2.1.4 Eduscore
Este es el ERP que se está desarrollando en el proyecto, al igual que el SIIAA
por el momento su uso está dirigido a la universidad en la que se está desarrollando.
5
Eduscore cuenta con una interfaz amigable para el usuario, es fácil de
aprender y utilizar, actualmente sigue en desarrollo, pero ya cuenta con diversos
módulos que apoyan a las diversas áreas de la universidad en la que se desarrolla.
Eduscore permite que el alumnado pueda verificar el estado de sus pagos,
que puedan descargar las facturas de sus pagos en cualquier momento, además
que les manda un correo con las facturas en cuanto se verifican sus pagos.
Eduscore ofrece herramientas a la universidad para la gestión del alumnado y
de las finanzas, así como también para la generación horarios y un chat entre sus
usuarios. Esto ayuda a la gestión de los recursos de la universidad.
2.4 Login del sistema Eduscore.
https://www.eduscore.net/
A continuación, se mencionan las diferencias entre los diferentes ERP
mencionados.
Lo principal que diferencia tanto a Magix ERP y SOFTAULA es que su uso es
comercial y no solo están enfocadas en una sola universidad, y por el contrario el
SIIAA y Eduscore se enfocan solo a la universidad donde se desarrolló por el
momento.
SOFTAULA está enfocada en pequeñas y medianas empresas, y permite un
proceso de gestión en la nube.
Lo que diferencia a Eduscore de los demás ERP es que no solo permite un
eficiente manejo de los procesos e información, sino que además permite que los
usuarios sean notificados de las cosas que tienen que ver con ellos, como en el caso
6
de los alumnos pueden ver sus pagos y descargar sus facturas en cualquier
momento.
En esta sección además se describirán algunos conceptos claves para
entender el contenido del estado de arte.
Estos conceptos son los siguientes:
2.2 Conceptos utilizados en el proyecto.
2.2.1 ERP:
[4]ERP significa Enterprise Resource Planning o Planificación de Recursos
Empresariales en español.
Los ERP son sistemas que ayudan en la gestión de los procesos en las
empresas y ayuda a controlar su inventario o stock. A menos de que hayan sido
diseñados para ello, el uso de un ERP no está limitado a solo una empresa.
Las empresas que cuentan con algún sistema ERP tienen ventaja sobre las
que no cuentan con uno de estos sistemas, debido a que las empresas usuarias de
ERP pueden controlar mejor sus procesos, lo que permite que reduzcan gastos de
operación.
Los ERP pueden ser aplicaciones para escritorio o sistemas en la nube.
En la figura 2.5 se pueden observar palabras que se relacionan con la palabra
ERP.
2.5 Palabras relacionadas con un ERP
http://interselec.blogspot.mx/2015/04/la-historia-del-erp-enterprise-resource.html
7
2.2.2 Computación en la nube.
[5]El RAD Lab de la Universidad de Berkeley dice que "La computación en la nube
se refiere tanto a las aplicaciones entregadas como servicio a través de Internet,
como el hardware o el software de los centros de datos que proporcionan estos
servicios". Algunos ejemplos de computación en la nube son Google Drive, Dropbox,
Youtube o Netflix.
Las personas pueden acceder fácilmente a la tecnología basada en la nube
debido a que solo se necesita una conexión a internet para poder acceder a ella.
En la figura 2.6 se puede observar como es la composición de la nube.
2.6 Composición de la nube.
https://es.wikipedia.org/wiki/Computaci%C3%B3n_en_la_nube
2.2.3 Metodología
[6] Se define como metodología al conjunto de procedimientos o mecanismos que se
emplean para lograr una meta u objetivo.
La palabra metodología suele estar relacionada con ciencia, pero también es
aplicada otras áreas como en la educativa.
Hay diferentes tipos de metodologías entre ellas se encuentran la didáctica,
jurídica, software, del conocimiento, científica, de la historia, etc.
En desarrollo de software una metodología hace referencia al conjunto de
herramientas y técnicas empleados para el desarrollo de un software de calidad,
algunas metodologías para el desarrollo de software son la metodología XP
(programación extrema) y la metodología Scrum.
8
En la figura 2.7 se pueden observar conceptos relacionados con la
metodología.
2.7 Conceptos relacionados con la palabra metodología.
http://manualdelinvestigador.blogspot.mx/2015/02/metodologia-de-la-investigacion-los.html
2.2.4 Recursos de la empresa.
El usuario de SlideShare ponceguillermo71 [7] en sus diapositivas dice que los
recursos "Son todos aquellos elementos que se requieren para que una empresa
pueda lograr sus objetivos", además de clasificar estos recursos en humanos,
financieros, materiales y técnicos o tecnológicos.
Los recursos humanos se refieren a todas las personas que desempeñan
alguna función en la empresa sin importar en que jerarquía estén, estos pueden ser
conserjes, directores, secretarias, obreros, técnicos, etc.
Los recursos financieros son los recursos de carácter monetario y económico
que la empresa requiere para el desarrollo de sus actividades, como el dinero en
efectivo.
Los recursos materiales son aquellos que son tangibles y son propiedad de la
empresa como instalaciones y materia prima.
Y por último los recursos técnicos o tecnológicos son las herramientas e
instrumentos que ayudan en la coordinación de los demás recursos.
9
En la figura 2.8 se puede observar otro tipo de organización de los recursos
de las empresas.
2.8 Tipos de recursos en las empresas
http://proyectoadmonbbc.blogspot.mx/2015/03/los-tipos-de-recursos-de-une-empresa.html
2.2.5 HTML 5
[8]Es un lenguaje markup usado para estructurar y presentar el contenido para la
web lo que lo diferencia de sus predecesores es que HTML 5 cuenta con nuevos
elementos que se adecuan mejor con los tiempos actuales, entre estos elementos se
encuentran aquellos que permiten la inserción de multimedia en los sitios web.
Otra de las ventajas que ofrece HTML 5 es la reducción en el uso de plugins
que son necesarios para ver determinados sitios web un ejemplo de ello es el Adobe
Flash, además de que ofrece la misma funcionalidad que sus predecesores, pero
consumiendo menos recursos.
Una característica que le dio popularidad a HTML 5 es que los usuarios
pueden acceder a sitios web de manera offline, es decir, sin estar conectados a
internet, además de que introdujo nuevas etiquetas como el header, el footer y dos
de las más importantes de HTML 5 audio y video las cuales son las etiquetas que
nos permiten acceder a contenido multimedia de una forma simple y en casi
cualquier dispositivo.
Otra etiqueta importante que trae consigo HTML 5 es la etiqueta canvas que
permite el poder dibujar gráficos por vectores en un sitio web.
10
En la figura 2.9 se puede observar el logo de HTML 5.
2.9 Logo de HTML 5
https://hipertextual.com/archivo/2013/05/entendiendo-html5-guia-para-principiantes/
2.2.6 Parametrización
[9]Se refiere a la organización y estandarización de la información que se ingresa en
un sistema.
Cuando se habla de un diseño parametrizable, se habla de cualquier tipo de
aplicación que es creada para ser flexible, es decir, que puede modificarse sin
necesidad de reescribirse.
El grado en el que una aplicación se puede parametrizar depende mucho del
entorno en el que se está desarrollando y de la creatividad del desarrollador.
2.2.7 Base de datos
Según el trabajo de Damián Pérez Valdés [10] el término de base de datos se
escuchó por primera vez en 1963 y se puede definir como un conjunto de
información relacionada que se encuentra agrupada o estructurada.
Las bases de datos o BD se componen de una o más tablas que guardan un
grupo de datos, además cada tabla se compone por columnas y filas. Las columnas
guardan información sobre cada elemento que se quiere guardar en una tabla y
cada fila de una tabla representa un registro.
11
Otra forma de definir a las bases de datos es como una serie de datos
organizados y que están relacionados entre sí, los cuales son recolectados y
utilizados por algún sistema de información de una empresa o negocio.
2.10 Ejemplo de clientes recuperando información de la base de datos
http://queesel.info/que-es-una-base-de-datos-memoria-de-almacenamiento/
Al momento de diseñar una base de datos se hace uso de modelos de bases
de datos, los cuales describen la forma en la que una base de datos almacena y el
cómo recupera la información guardada en ella. Algunos de los modelos más
utilizados son [11]:
2.2.7.1 Bases de datos jerárquicas
Como su nombre lo indica se almacena la información mediante una estructura
jerárquica en forma de árbol visto al revés y que se basa en nodos, en los cuales
siempre hay un nodo raíz el cual tiene nodos hijos que a su vez pueden hijos.
Su mayor desventaja es la incapacidad de representar eficientemente la
redundancia de datos. En la imagen 2.11 se puede observar cómo sería un ejemplo
de este tipo de modelo de base de datos.
Los nodos como regla pueden tener más de un padre esto es lo que causa el
problema de la redundancia de datos.
En este modelo es muy importante definir las relaciones que se tendrán en los
nodos (padre e hijos).
12
2.11 Ejemplo de una estructura jerárquica en las bases de datos.
http://www.monografias.com/trabajos59/administracion-diseno-db/administracion-diseno-db2.shtml
2.2.7.2 Base de datos de red
Se parece al modelo jerárquico de las bases de datos, pero es ligeramente distinto,
su principal diferencia con el modelo jerárquico es que su manejo de los nodos
permite que los nodos tengan varios padres, este nuevo manejo permite arreglar el
problema del modelo jerárquico con la redundancia de datos.
Pero en este modelo es muy difícil administrar la información por lo cual suele
ser utilizado por programadores en vez de ser utilizado por usuarios finales.
En la figura 2.12 se puede apreciar un ejemplo de la estructura de una base
de datos de red.
2.12 Ejemplo de una base de datos de red.
http://www.monografias.com/trabajos59/administracion-diseno-db/administracion-diseno-db2.shtml
13
2.2.7.3 Base de datos relacionales
Este modelo es el más usado en la actualidad, ya que es muy útil para modelar
problemas reales y administrar datos de forma dinámica.
Este modulo se basa en el uso de relaciones que desde un punto de vista
lógico son un conjunto de datos llamados tuplas. Las filas de una tabla (registros)
representan a las tuplas y las columnas de la tabla representan los campos.
En este modelo no se toma importancia a la manera en que se almacenan los
datos, a diferencia de otros modelos como el jerárquico y el de red, esto le da como
ventaja el ser mas fácil de entender para la mayoría de los usuarios de la base de
datos. Para poder almacenar o recuperar información se utilizan consultas, las
cuales ofrecen flexibilidad y poder para administrar la información.
El lenguaje más utilizado para la construcción de consultas es el SQL. En la
figura 2.13 se puede observa la estructura de las bases de datos relacionales.
2.13 Ejemplo de la estructura de una base de datos relacional.
http://www.monografias.com/trabajos59/administracion-diseno-db/administracion-diseno-db2.shtml
2.2.8 Sistema de Gestión de Base de Datos (SGBD)
Para poder administrar una base de datos se necesita el uso de un Sistema de
Gestión de Base de Datos o SGBD el cual es un tipo de software que sirve como
interfaz entre la base de datos, los usuarios y las aplicaciones que utilizan la base de
datos. [10]
Algunos ejemplos de SGBD son [12] MySQL, Oracle, Microsoft SQL Server,
Microsoft Access, etc.
2.2.8.1 MySQL
[13]Es un sistema de administración de base de datos y es el más popular entre los
servidores de bases de datos relacionales. Este sistema ofrece alta velocidad al
14
realizar operaciones y un bajo costo de requerimientos para la elaboración de base
de datos.
[12]Entre sus desventajas podemos encontrar que no es intuitivo como otros
programas como por ejemplo Access y que una gran parte de sus utilidades no
están documentadas.
MySQL es Open Source lo que significa que cualquier persona puede
utilizarlo sin necesidad de pagar por él, aunque también se puede dar el caso en que
una empresa tenga que pagar por el uso de MySQL. Esta desarrollado en su
mayoría en ANSI C.
Usualmente para utilizar MySQL se utiliza la herramienta SQLyog.
En la figura 2.14 se puede observar el logo representativo de MySQL.
2.14 Logo de MySQL
http://www.definicionabc.com/tecnologia/mysql.pp
SQLyog
[14] SQLyog es una herramienta que se usa para la gestión de bases de datos de
MySQL, su interfaz gráfica es muy sencilla de usar y cuenta con un generador de
consultas cuando necesites realizar una consulta básica como viene siendo
recuperar información, insertar nueva información, actualizar la información o
eliminar información.
Además de que te permite copiar tablas completas o solo su estructura entre
bases de datos de una forma sencilla solo dando ciertos clics. También te ofrece una
forma de exportar la información que recuperaste por medio de consultas en
diversos formatos como son xml, xls, csv, sql y html.
15
SQLyog es gratuito, es decir, que cualquier persona puede descargar y
utilizar esta herramienta sin ningún costo, aunque además existe la posibilidad de
pagar por ciertas licencias que ofrecen mas utilidades dependiendo de la licencia
adquirida, pero es funcional en su versión gratuita.
Una desventaja es que no es multiplataforma y solo puede ser usado por
usuarios de Windows o puede ser emulado en Linux por medio del programa WINE.
En la figura 2.15 se puede observar el logo de SQLyog.
2.15 Logo de SQLyog
https://docenciainformatica2015.wordpress.com/2016/07/16/sqlyog-enterprice/
2.2.8.2 Oracle
[15] Según el David Masip Oracle es básicamente una herramienta cliente/servidor
para la gestión de base de datos. Esta herramienta se vende a nivel mundial, pero a
consecuencia de su elevado precio solo es usado por empresas que son muy
grandes y multinacionales.
Debido a que solo muy grandes empresas usan Oracle en el desarrollo de
páginas web no es tan usado como otros SGBD como por ejemplo Access, MySQL,
SQL Server, etc. Sin embargo Oracle es considerado como uno de los sistemas de
base de datos más completos [12] debido a que tiene un gran soporte de
transacciones, es muy estable y es multiplataforma.
Si se desea utilizar Oracle es necesaria la herramienta servidor Oracle 8i y las
herramientas de desarrollo Oracle Designer y Oracle Developer.
En la figura 2.16 se puede observar el logo de Oracle.
16
2.16 Logo de Oracle
http://logo-share.blogspot.mx/2013/11/oracle-logo.html
El lenguaje utilizado para desarrollar en Oracle es PL/SQL, el cual es un
lenguaje de 5a generación que es potente para gestionar bases de datos, además
por norma al momento de usar formularios se utiliza el lenguaje SQL.
Oracle Developer
[16]Es una herramienta gratuita que proporciona Oracle que sirve para desarrollar,
generar y ejecutar consultas SQL en bases de datos Oracle para así eliminar la
necesidad de recurrir a herramientas de terceros para poder manipular las bases de
datos de Oracle.
En sus últimas versiones se agregaron varias mejoras entre ellas la
posibilidad de conectarse con bases de datos que no sean de Oracle como es el
caso MySQL, SQL Server o Access.
Para poder conectarse a bases de datos como MySQL y Access se hace la
conexión a través de JDBC. Cuando se establece la conexión es posible explorar los
objetos de estas bases de datos como si fueran de Oracle, como también se puede
ejecutar consultas SQL sobre ellas, pero la desventaja es que ciertas
funcionalidades más avanzadas estarán mucho más limitadas.
[17]Esta herramienta es muy útil, ya que mejora la productividad y simplifica
las tareas de desarrollo para las bases de datos que usan Oracle, algunas de las
funciones que ofrece son navegación, edición y creación de objetos de base de
datos Oracle, ejecutar sentencias SQL, etc.
En la figura 2.17 se puede observar el logo de Oracle Developer.
17
2.17 Logo de Oracle Developer
http://www.devshed.com/c/a/oracle/how-to-use-the-oracle-sql-developer-tool/
Oracle Designer
[18] Oracle Designer es una herramienta de Oracle para el modelado y se usa para
representar necesidades de negocios, esta herramienta incluye soporte para el
análisis de sistemas, el diseño de software, generación automática de código y la
reingeniería de procesos de negocios.
Esta herramienta también es conocida como Oracle Case u Designer/2000,
esta herramienta proporciona una plataforma de trabajo que cuenta con diversas
herramientas que ayudan a analistas de aplicaciones de computadora y diseñadores
a crear diagramas directamente en la computadora, para después actualizar la
herramienta CASE Dictionary con la cual trabaja en conjunto.
2.18 Vista de la herramienta Oracle Designer o Designer/2000
http://www.prenhall.com/oracle/tutorial/lesson5/page1.html
18
Case Dictionary
Esta herramienta funciona como un repositorio que se comparte con varios usuarios
el cual contiene los artículos relacionados con el proyecto de desarrollo de
aplicaciones.
Esta herramienta se puede combinar con la herramienta Oracle Designer la
cual actualiza el Case Dictionary cuando una persona realiza algún diagrama para
compartirlo así con las demás personas interesadas con el proyecto en que estén
trabajando.
PL/SQL
Según el sitio web del baúl del programador el PL/SQL o
ProceduralLanguage/Structured Query Language por sus siglas en ingles apareció
por primera vez en la versión 6 de Oracle en 1988, y su función es ampliar el
lenguaje SQL con los elementos característicos de los lenguajes de programación
como viene siendo las variables, sentencias de control de flujo, bucles, etc.
Este lenguaje es proporcionado por Oracle para extender al lenguaje SQL
con otro tipo de instrucciones. PL/SQL permite realizar programas en conjunto con
otras herramientas de Oracle como viene siendo Oracle Forms, Oracle Reports,
Oracle Graphics y Oracle Aplication Server.
Como en todos los lenguajes de programación es necesario conocer los
fundamentos para poder utilizar este lenguaje, algunas de sus características es que
no diferencia mayúsculas y minúsculas.
En la figura 2.19 se puede apreciar el logo del lenguaje PL/SQL.
2.19 Logo de PL/SQL
http://soytaquero.com/2013/05/28/recorrer-plsql-consulta-oracle-cursor/
19
2.2.9 SQL
[20]Según el sitio web de desarrolloweb.com SQL es un lenguaje común que sirve
para comunicarse con las bases de datos y es un estándar para todas las bases de
datos.
Este lenguaje es muy importante debido a que existe una gran variedad de
lenguajes y tipos de bases de datos (Oracle, MySQL, etc.) por ello es necesario un
lenguaje intermedio entre ellos que pueda ser usado en combinación con cualquier
lenguaje (ASP o PHP) y tipo de base de datos.
Este lenguaje a pesar de ser un estándar en todas las bases de datos no es
idéntico en todas ellas, debido a que ciertas bases de datos tienen sus propias
funciones que no funcionan en las demás bases de datos.
Ofrece diversas funciones útiles para el manejo de bases de datos, entre ellos
están:
-La función SELECT, la cual se encarga de seleccionar determinada información de
las tablas que están en una base de datos.
-La función CREATE, la cual se encargar de crear bases de datos, tablas, vistas y
procedimientos almacenados.
-La función ALTER, modifica tablas, triggers y demás objetos de datos.
-La función DROP elimina tablas, triggers, vistas, bases de datos, etc.
2.20 Logo del lenguaje SQL
http://www.yottahack.net/blog/structured-query-la-what/
20
2.2.10 Framework
[24]Sebastián Córdoba define a un framework como "un conjunto de herramientas, la
cuales nos permiten trabajar de forma sencilla, y que la mayoría de las veces
podemos reutilizar en otros proyectos".
La traducción literal de framework seria que es un marco de trabajo, esto
quiere decir, que nos brinda la estructura base para trabajar y nosotros solo nos
debemos adecuar a ella.
Es muy útil usar algún framework cuando se desarrolla un proyecto debido a
que para empezar nos brinda la estructura base lo cual nos permite reutilizar código,
y de este modo no hacer tan pesado el proyecto con tantas líneas de código.
Un framework puede estar enfocado tanto en el diseño como también en el
desarrollo web.
Cuando hay más de un programador en un proyecto suele existir la
problemática de que los estilos de codificación de cada programador es diferente y
cuando alguno de ellos trata de interpretar lo que quiere hacer o lo que hizo otro
programador necesitan mucho tiempo para comprenderlo, debido a que en muchas
ocasiones los estilos de programación difieren mucho entre los programadores. Esta
problemática se minimiza con el uso de un framework, ya que a pesar de que sus
estilos de programar sean diferentes ambos deben seguir la misma estructura, lo
cual facilita el proceso de interpretación del código de otro programador.
Existen muchos frameworks en el mundo y algunos de ellos son:
Bootstrap que es un framework para el css.
Angular Js que es un framework de JavaScript.
CodeIgniter que es un framework para el desarrollo web.
2.21 Ejemplos de framework
http://www.emprenderalia.com/deberias-usar-un-framework-para-tu-proyecto-web/
21
2.2.11 Trello
Luis Carlos define a Trello como [25] "un gestor de tareas que permite el trabajo de
forma colaborativa mediante tableros (board) compuestos de columnas (llamadas
listas) que representan distintos estados".
Trello puede considerarse una herramienta para la administración de las
tareas, ya sea de un proyecto personal o de un proyecto grupal.
Trello se parece a un panel de tareas debido a que se pueden dividir las
tareas en el en pendientes por hacer, en las que se están haciendo actualmente y
las que ya se han completado.
Con Trello se puede visualizar en que están trabajando los miembros de un
proyecto y que tanto avance llevan de sus tareas.
En Trello se puede acrear una tarea principal que está formada por tareas
más pequeñas las cuales contienen un checkbox que se debe marcar una vez
finalizada esa determinada tarea, al marcarlo te muestro un progreso en porciento
de la tarea principal, el cual tiene un aumento variante dependiendo de cuantas sub
tareas la conformen.
La unidad básica de Trello son las tarjetas las cuales están contenidas en
listas, las que a su vez están contenidas en tableros.
2.22 Ejemplo de cómo se ve Trello
https://prezi.com/dfbp0gxdx-b9/que-es-trello/
22
2.2.12 PHP
El usuario Christian Van Der Henst S. [26] define a PHP como "un lenguaje
interpretado de alto nivel embebido en páginas HTML y ejecutado en el servidor. El
PHP inicio como una modificación a Perl escrita por Rasmus Lerdorf a finales de
1994. Su primer uso fue el de mantener un control sobre quien visitaba su
Curriculum en su web".
El FAQ de php.net define a PHP como "un lenguaje de script incrustado
dentro del HTML. La mayor parte de su sintaxis ha sido tomada de C, Java y Perl
con algunas características específicas de sí mismo. La meta del lenguaje es
permitir rápidamente a los desarrolladores la generación dinámica de paginas".
Uno de los rasgos más importantes del lenguaje PHP es que tiene soporte
para diferentes bases de datos, entre las cuales podemos encontrar a MySQL,
Oracle y PostgreSQL.
PHP cuenta con una basta documentación de sus funciones donde se explica
que hacen y dan ejemplos de cómo usarlas, esta documentación está disponible en
diferentes idiomas aunque no todo el contenido este traducido para todos los
idiomas.
La página oficial para encontrar la documentación de PHP e información
sobre PHP es php.net.
2.23 Logo de PHP
https://programarenphp.wordpress.com/page/2/
23
2.2.13 CodeIgniter
El usuario Miguel Ángel Álvarez [27] define a CodeIgniter como "un programa o
aplicación web desarrollada en PHP para la creación de cualquier tipo de aplicación
web bajo PHP".
CodeIgniter es de código libre y puede usarse en cualquier aplicación,
además está compuesto por diversas librerías que sirven para el desarrollo de
aplicaciones web.
Este framework implementa el patrón de arquitectura de MVC o Modelo Vista
Controlador, el cual es un estándar para el desarrollo de aplicaciones y que además
funciona no solo para sitios web sino también para programas tradicionales.
2.2.13.1 Características
CodeIngiter tiene diversas características que lo hace popular entre los
desarrolladores, las cuales son:
-Versatilidad
Esta es de las características más importantes de CodeIngiter, debido a que puede
trabajar con la mayor parte de los entornos o servidores, así como también en
sistemas de alojamiento compartido, en los cuales solo se pueden acceder por FTP
para enviar archivos al servidor y no se puede acceder a los archivos de
configuración.
-Compatibilidad
Debido a que CodeIgniter funciones con versiones nuevas y viejas de PHP es
posible usarlo en cualquier servidor, esto incluye algunos de los antiguos.
Este rasgo es importante de resaltar debido a que hay framework que
requieren una versión especifica de PHP para funcionar, por ello no todos los
servidores pueden usar esos framework a menos de que actualicen su PHP a una
versión más nueva que en ciertos casos puede generar problemas con el código ya
escrito, debido a que algunas funciones se quedan obsoletas y se intercambien por
otras.
-Facilidad de instalación
El proceso para instalar este framework es relativamente fácil, lo único que se
necesita es una cuenta de FTP para subir el framework de CodeIgniter al servidor.
24
Cuando se quiere configurar la cuenta FTP no es necesario utilizar líneas de
comando que no siempre están disponibles, sino que basta con modificar un simple
archivo para hacer la conexión, en este archivo también se encuentra la
configuración para conectarse a un base de datos.
-Flexibilidad
El framework de CodeIgniter es menos rígido que otros frameworks, debido a que
define una manera específica de trabajar, pero es posible seguirlas o no sin que
haya problemas. También tiene ciertas reglas de codificación que en muchos casos
se pueden saltar para buscar la forma más cómoda de trabajar.
Debido a esta característica el aprendizaje de este framework es
relativamente fácil desde el principio.
-Ligereza
El núcleo que conforma al framework de CodeIgniter es bastante ligero esto ayuda a
que el servidor no consuma muchos recursos en interpretar y ejecutar grandes
porciones de código.
Además se cuenta con la ventaja de que los módulos y clases que trae
consigo este framework no se cargan solos, se puede seleccionar cuales se quieren
cargar para ser utilizados y los demás no son cargados hasta que el desarrollador lo
indique.
-Documentación tutorializada
CodeIgniter cuenta con una buena documentación que es relativamente fácil de
entender debido a que fue redactada en forma de tutorial.
2.24 Logo de CodeIgniter
http://programaenlinea.net/codeigniter/
25
2.3 Metodologías útiles para el proyecto en desarrollo
2.3.1 Metodología XP
[21] En su trabajo el usuario Piskamen de SlideShare explica que "la programación
extrema o Xtreme Programming (XP) es un enfoque de la ingeniería de software
formulado por Kent Beck".
Esta metodología es de los procesos agiles más destacados en el desarrollo
de software, en esta metodología en vez de hacer el proceso de planeación, análisis
y diseño antes de empezar el desarrollo, todo esto se va haciendo un poco a lo largo
del proceso.
Esta metodología se basa en la prueba y error en el proceso de desarrollo de
software para obtener un producto funcional. Además el cliente participa muy
activamente en esta metodología.
Se suele trabajar con grupos pequeños de entre 2 a 12 personas, el grupo
usualmente se trabaja en parejas, es decir, la cantidad de integrantes deben ser
múltiplos de 2 hasta un máximo de 6 parejas. Los requisitos pueden ser cambiados y
se fundamenta en principios los cuales son conocidos también como valores y son 4.
2.3.1.1 Principios de la metodología XP
Los 4 principios de la metodología XP son:
Simplicidad
El cual se refiere a solo desarrollar lo que se necesita, es decir, que el producto
cumpla con las necesidades actuales del cliente.
Feedback:
Se refiere a entregas continuas que reciben una retroalimentación por parte de los
clientes para que se hagan mejoras al producto en desarrollo y detectar problemas o
desviaciones de lo que debe satisfacer el producto.
Decisión
Se refiere a la capacidad de tomar decisiones difíciles, reparar los errores cuando se
detectan y mejorar el código después del feedback.
Comunicación
Se refiere a mantener una comunicación continua y directa entre clientes y
desarrolladores.
26
2.3.1.2 Practicas derivadas de la metodología XP
Existen diversas prácticas derivadas de esta metodología y en total son 12,
estas prácticas son:
-Equipo completo
Esta práctica propone que todas las personas que tienen algo que ver con el
proyecto en desarrollo forman parte del equipo, esto incluye tanto al cliente como al
responsable del proyecto, no solo a los desarrolladores.
-Planificación
Aquí se define en qué orden se desarrollara cada versión que revisara el cliente para
la retroalimentación, esta práctica se revisa continuamente.
-Test del cliente
En esta práctica el cliente colabora con los desarrolladores del proyecto para
proponer pruebas que sirvan para validar las versiones que se le van entregando a
lo largo del desarrollo.
-Versiones pequeñas
Esta práctica es sobre ir realizando lo que se conoce como mini-versiones, estas
mini-versiones son avances del producto en desarrollo que se van entregando cada
cierto al cliente para que pueda revisar cómo está avanzando el proyecto y así
detectar problemas para que sean corregidos rápidamente. Las mini-versiones
deben ofrecer algo nuevo y funcional al cliente para que pueda inspeccionar el
avance del proyecto.
Un aspecto importante de las mini-versiones es que su tamaño debe ser
regulado lo suficiente para que cada cierto tiempo se le pueda hacer una entrega al
cliente, casi siempre es un periodo de pocas semanas entre cada entrega.
-Diseño simple
Esta práctica es sobre mantener todo simple durante el desarrollo del proyecto,
siempre enfocándose en hacer lo mínimo imprescindible.
-Pareja de programadores
En esta práctica los desarrolladores (programadores) trabajan en parejas en un
mismo ordenador, estas parejas son dinámicas y cambian constantemente.
-Desarrollo guiado por las pruebas automáticas
En esta práctica se necesitan realizar programas que hagan pruebas automáticas al
producto en desarrollo de manera continua. Entre más tipos de pruebas se hagan al
producto mejor.
27
-Integración continua
En esta práctica es muy importante siempre tener una versión funcional del producto
y en cuanto se termine una nueva funcionalidad se debe integrar a dicha versión y
hacer pruebas. Algo que no se debe de hacer es mantener una versión congelada
durante mucho tiempo, mientras se hacen nuevas funcionalidades y después de
tener varias funcionalidades, tratar de integrarlas todas al mismo tiempo.
-El código es de todos
Según esta práctica cualquier miembro del equipo tiene el derecho y obligación de
modificar y conocer cualquier parte del código, no deben existir problemas debido a
que se deben hacer constantemente pruebas automáticas.
-Normas de codificación
Según esta práctica los programadores que participan en el desarrollo deben usar el
mismo estilo de programación, sin importar cual se elija solo deben coincidir su
forma de programar de tal manera que parezca que solo una persona realizo la
codificación.
-Metáforas
En esta práctica se busca definir las partes que componen al programa por medio de
frases o palabras que con solo verlas den una idea general de que es lo que hace
cada parte del programa.
-Ritmo sostenible
En esta práctica se debe definir un ritmo de trabajo que evite los días muertos que
es cuando no se sabe que hacer o el exceso de horas en ciertos días por falta de
tiempo. Se debe definir el ritmo de tal manera para conseguir la terminación de las
mini-versiones.
Esta metodología ofrece varias ventajas como una baja tasa de errores
debido a las series de pruebas que se realizan constantemente, se puede aplicar a
cualquier lenguaje de programación, el cliente participa bastante en el proyecto y
define cuales serán las prioridades, la programación que se hace es muy
estructurada y facilita que el cliente cambie los requerimientos.
Pero como todo tiene sus inconvenientes como el que se recomiendo usarlo
para proyectos de corto plazo, además de existir casos en que es más fácil usar el
desarrollo tradicional que emplear esta metodología.
28
2.25 Ejemplo del ciclo de vida de un proyecto con la metodología de XP
http://slideplayer.es/slide/2273638/
En el siguiente esquema se puede observar información sobre la metodología
XP resumida.
2.26 Esquema sobre la metodología XP
http://angelmedina26.blogspot.mx/
2.3.2 Metodología Scrum
Walter Lara en su trabajo en la página Platzi [22] describe a Scrum como "un
framework para trabajar en equipo en una serie de interacciones".
29
2.3.2.1 Fases de Scrum
La metodología Scrum cuenta con 3 fases las cuales son:
1-El ¿Quien? y el ¿Qué?
En esta fase se definen los roles y responsabilidades de los involucrados en el
proyecto.
Roles de Scrum
Existen 3 roles en esta fase los cuales son:
Product Owner
Conocido como Dueño del producto en español, esta persona es la voz del
cliente y sus responsabilidades son desarrollar, mantener y priorizar las
tareas en el backlog. Un backlog es la lista de pendientes del proyecto.
Scrum Master
Es el responsable de asegurarse que todo el trabajo sigue las bases de la
metodología Scrum, además de buscar y eliminar obstáculos con los que se
encuentre el equipo de trabajo.
Los Development Team Members
También conocidos miembros del equipo de desarrollo, los cuales son los
encargados de la codificación tanto la escritura como las pruebas.
2.27 Roles de Scrum
https://platzi.com/blog/guia-scrum/
30
2.-El Sprint - ¿Dónde? y ¿Cuándo?
En la metodología Scrum un sprint es la unidad básica de trabajo para el equipo de
trabajo. Un sprint es la principal característica que diferencia a Scrum de otras
metodologías.
Walter Lara define a un sprint como "una simple iteración llevada a cabo por
los miembros del equipo". Un proyecto puede tener diversos sprint durante su
desarrollo, los cuales deben ser completados por los miembros del equipo.
Un sprint empieza desde el momento en que un equipo se compromete con
un trabajo y finaliza con la entrega del objetivo del sprint. El tiempo mínimo para
completar un sprint es una semana y el máximo es de 4 semanas.
Scrum Events
Durante el desarrollo de un sprint ocurren ciertos eventos conocidos como
Scrum Events o Eventos Scrum, estos eventos son 5 en total y son:
1- Planeamiento del Sprint/Sprint Planning
Todos los miembros del equipo de Scrum se reúnen en este evento para planificar el
sprint, esto incluye definir las tareas que deberá hacer cada miembro del equipo.
Para definir el tiempo que debe durar el sprint se le pregunta a cada miembro
cuanto tiempo cree conveniente asignar a sus tareas asignadas.
2- Reunión de Equipo de Scrum/Scrum team meeting
El equipo se reúne todos los días a la misma hora y en el mismo lugar por un tiempo
máximo de 15 minutos, durante este tiempo cada miembro debe decir que fue lo que
hizo el día anterior, que planea hacer hoy y que problemas tuvo al realizar sus
actividades.
Una de las finalidades de estas reuniones diarias es que los miembros del
equipo se apoyen entre ellos cuando se encuentran con alguna dificultad que
provoque que el cumplimiento de la tarea tome más tiempo del esperado.
3- Refinamiento del Backlog/Backlog Refinement
En esta parte el dueño del producto verifica la lista de pendientes, esto con el fin de
aclarar las dudas que el equipo de desarrolladores puedan tener. Esto también sirve
para volver estimar el tiempo asignado para las tareas pendientes y cuanto esfuerzo
se debe enfocar en cada una de las tareas.
31
4- Revisión del Sprint/Sprint Review
Los clientes y los miembros del equipo se reúnen para poder revisar el avance del
proyecto, es decir, que tareas o pendientes se han completado a ese momento, en
esta reunión no es necesario que los miembros del equipo hablen, debido a que la
reunión está a cargo del dueño del producto y el Scrum master.
5- Retrospectiva del Sprint/Retrospective
En esta parte el dueño del producto se reúne con los miembros del equipo y el
Scrum master para así hablar sobre el desarrollo del sprint, esto incluye que cosas
se hicieron bien, que cosas se hicieron mal y que problemas surgieron que causaron
un retraso en el desarrollo del sprint.
En la figura 2.28 se puede observar el ciclo de vida de un sprint.
2.28 Ciclo de vida de un sprint
https://platzi.com/blog/guia-scrum/
3. Herramientas Scrum – ¿Por qué? ¿Cómo?
Scrum provee herramientas para lograr responder estas preguntas, estas
herramientas son:
-Backlog del producto / Product Backlog
Se refiere a todos los elementos que envuelven al proyecto, entre estos elementos
están los bugs, alguna parte de un requerimiento o alguna referencia.
32
Los backlogs del producto brindan información muy general sobre el proyecto,
por ello no se consideran como requerimientos oficiales del proyecto. El backlog del
producto también es conocido como product backlog.
-Historias de Usuario / User Stories
Las historias del usuario son elementos del backlog del producto. Se les conoce
como historias, porque brindan información sobre como es el comportamiento del
requerimiento que se trabaja, además de proporcionar información del cliente en
caso de que ocurra algún cambio en los requerimientos. Las historias del usuario
también se les conocen como user stories.
Usualmente las historias de los usuarios son consideradas como
requerimientos oficiales, ya que puede existir un cambio solicitado por el cliente y
dicho cambio debe tomarse en cuenta durante el desarrollo del proyecto.
-Backlog del Sprint /Sprint Backlog
Son los elementos del backlog del producto que fueron examinados durante las
reuniones para el planteamiento del sprint, la exanimación se hace con el propósito
de priorizar y medir cada elemento, y de este modo definir qué se debe hacer en el
sprint que está por comenzar.
Los elementos seleccionados junto con las historias del usuario forman los
requerimientos que se deben elaborar en cada sprint del proyecto.
-El panel de Tareas / The taskboard
El panel de tareas es una tabla que contiene información sobre las tareas asignadas
a cada miembro del equipo. La tabla se compone además de tres columnas que
representan que tareas están en espera, cuales tareas están actualmente en
desarrollo y cuales tareas ya se han completado.
Al comienzo de un sprint todas las tareas están en la primera columna que
representa las que están en espera, en cuanto los miembros del equipo seleccionan
la tarea que empezaran a desarrollar se pasa a la segunda columna que representa
cuales se están haciendo en ese momento, esto sirve como información para el
dueño del producto y el Scrum master, los ayuda a conocer que es lo que se está
desarrollando en ese momento y cuanto tiempo llevan invertido en el desarrollos de
esas tareas.
33
Cuando algún desarrollador finaliza una tarea se pasa a la última columna lo
cual representa que dicha tarea será sometida a pruebas para verificar su correcta
funcionalidad y en caso de que se necesite realizar un cambio, la tarea es movida de
la última columna a la segunda. En la figura 2.29 se puede observar un ejemplo de
un panel de tareas de Scrum.
2.29 Ejemplo de un panel de tareas usado en la metodología Scrum
https://msdn.microsoft.com/es-es/library/jj161049(v=vs.120).aspx
-Definición de Listo / Definition of Done
Cuando se trabaja con Scrum los miembros del equipo deben cumplir con ciertas
normas para poder dar como finalizado un proyecto. Estas reglas son:
1-Todas las tareas han sido completadas.
2-Todo el código fue revisado.
3-Fueron realizadas pruebas para cada elemento desarrollado por los miembros del
equipo.
4-El cliente ha revisado el producto final y verifico que cumpla con todos los
requerimientos solicitados.
34
5-Se revisa que es necesario para obtener la aceptación del producto por parte del
dueño del producto.
Las herramientas de Scrum son útiles a lo largo del desarrollo del proyecto y
permiten que los miembros del equipo de trabajo conozcan las razones por las
cuales hacen las cosas. Estas herramientas son visibles tanto para los miembros del
equipo de trabajo como para las personas del exterior.
La metodología Scrum puede aplicarse en cualquier proyecto, pero el hecho
de querer aplicar esta metodología requiere que exista un cambio en la forma que se
trabaja por parte de las personas que formarán al equipo de trabajo.
Podrá parecer algo molesto la forma en que se trabaja esta metodología pero
cuando se vean los frutos del trabajo, los miembros del equipo sabrán que todo el
esfuerzo valió la pena.
2.3.3 Comparación entre Scrum y XP
En su trabajo Ángel Medina hace una comparación entre la metodología Scrum y la
metodología XP (Xtreme Programming) [23], en la cual describe semejanzas y
diferencias entre estas dos metodologías y son las siguientes:
-Semejanzas
-Ambas son metodologías de desarrollo agiles.
-Las dos metodologías usan las historias de los usuarios como herramientas.
-El cliente recibe un avance del proyecto cada cierto tiempo, estas entregas se
hacen en periodos cortos de tiempo.
-En ambas metodologías se hacen reuniones entre los miembros del equipo para
verificar los avances en el proyecto.
-Diferencias
-A pesar de que ambas metodologías hacen iteraciones cortas para entregar
avances al cliente cada una lo hace en periodos diferentes a la otra, en la
metodología Scrum se hacen entregas en un periodo entre dos y cuatro semanas,
mientras que en la metodología XP las entregas son en periodos de entre una a tres
semanas.
-Las iteraciones en la metodología Scrum son conocidas como sprints.
-En la metodología Scrum cuando se finaliza algún sprint las tareas completadas y
que hayan recibido el visto bueno por parte del dueño del producto, no se vuelven a
tocar en ningún otro momento del desarrollo del proyecto.
35
Por otro lado, en la metodología XP las tareas que hayan sido completadas,
entregadas y recibieran el visto bueno por parte del cliente pueden ser modificadas
durante el desarrollo del trabajo.
-En la metodología Scrum los miembros del equipo trabajan de forma individual,
mientras que en la metodología XP los desarrolladores trabaja en pareja, la cual
cambia constantemente a lo largo del desarrollo del proyecto,
-En la metodología Scrum el orden en el cual se van a ir desarrollando las tareas del
proyecto es escogido por los desarrolladores, quienes pueden modificar ese orden
en cualquier momento.
En la metodología XP el orden en el cual se desarrollan las tareas es elegido
por el cliente y los desarrolladores deben seguir dicho orden en todo momento.
-La metodología Scrum se enfoca en la administración del proyecto, mientras que la
metodología XP se enfoca en la creación del producto final.