Está en la página 1de 15

CAPITULO II: MARCO TEORICO

2.1 AREA DE CONOCIMIENTO DEL PROYECTO

2.1.1. Sistemas de información

Un sistema de información es un conjunto de componentes interrelacionados que


recaban, procesan, almacenan y distribuyen datos e información y proporcionan un
mecanismo de retroalimentación para cumplir un objetivo. Este mecanismo es el que
ayuda a las organizaciones a lograr sus objetivos, como incrementar sus ganancias o
mejorar su servicio al cliente.

Figura # 2: Componentes de un sistema de información

(Fuente: Stair y Reynols, 2010)

Un sistema de información basado en computadora es un conjunto único de hardware,


software, bases de datos, telecomunicaciones, personas y procedimientos configurado
para recolectar, manipular, almacenar y procesar datos para convertirlos en información.

2.1.2 Componentes de un sistema de información basado en computadora

 Hardware: Equipo de cómputo que se utiliza para llevar a cabo actividades de


entrada, procesamiento y salida.
 Software: Programas de cómputo que rigen la operación de la computadora.
 Bases de datos: Una base de datos es un conjunto organizado de hechos e
información que por lo general consta de dos o más archivos de datos
relacionados.
 Telecomunicaciones, redes e internet: Las telecomunicaciones consisten en la
transmisión electrónica de señales de comunicación, que permite a las
organizaciones llevar a cabo procesos y tareas a través del uso de eficientes redes
de computadoras.
 Gente: Las personas pueden ser el elemento más importante en la mayoría de los
sistemas de información basados en computadora. Tan es así que pueden
representar la diferencia entre el éxito y el fracaso de un negocio
Los usuarios son personas que trabajan con los sistemas de información para
obtener resultados.
 Procedimientos: Los procedimientos constituyen las estrategias, políticas,
métodos y reglas para utilizar los sistemas de información basados en
computadora, lo cual incluye la operación, mantenimiento y seguridad de la
computadora.

2.1.3. Aplicación web

Una aplicación web es un tipo especial de aplicación cliente/servidor, donde tanto el


cliente (el navegador, explorador o visualizador) como el servidor (el servidor web) y el
protocolo mediante el que se comunican (HTTP) están estandarizados y no han de ser
creados por el programador de aplicaciones (Figura 3).

Figura # 3: Esquema básico de una aplicación web.

(Fuente: Lujan, 2002)


El protocolo HTTP forma parte de la familia de protocolos de comunicaciones TCP/IP, que
son los empleados en Internet. Estos protocolos permiten la conexión de sistemas
heterogéneos, lo que facilita el intercambio de información entre distintos ordenadores.
HTTP se sitúa en el nivel 7 (aplicación) del modelo OSI.

 El cliente
El cliente web es un programa con el que interacciona el usuario para solicitar a un
servidor web el envío de los recursos que desea obtener mediante HTTP2.
La parte cliente de las aplicaciones web suele estar formada por el código HTML
que forma la página web más algo de código ejecutable realizado en lenguaje de
script del navegador (JavaScript o VBScript) o mediante pequeños programas
(applets) realizados en Java. También se suelen emplear plug-ins3 que permiten
visualizar otros tendidos como las tecnologías anteriores y plantean problemas de
incompatibilidad entre distintas plataformas. Por tanto, la misión del cliente web es
interpretar las páginas HTML y los diferentes recursos que contienen (imágenes,
sonidos, etc.).

 El servidor
El servidor web es un programa que está esperando permanentemente las
solicitudes de conexión mediante el protocolo HTTP por parte de los clientes web.
La parte servidor de las aplicaciones web está formada por:
 Páginas estáticas (documentos HTML) que siempre muestran el mismo
contenido.
 Recursos adicionales (multimedia, documentos adicionales, etc.) que se
pueden emplear dentro de las páginas o estar disponibles para ser
descargados y ejecutados (visualizados) en el cliente.
 Programas o scripts que son ejecutados por el servidor web cuando el
navegador del cliente solicita algunas páginas. La salida de este script
suele ser una página HTML estándar que se envía al navegador del cliente.
Tradicionalmente este programa o script que es ejecutado por el servidor
web se basa en la tecnología CGI. En algunos casos pueden acceder a
bases de datos.
Figura # 4: Tecnologías empleadas en el cliente y en el servidor web.

(Fuente: Lujan, 2002)

2.2. METODOLOGIA DE DESARROLLO

Características XP Scrum AUP

Desarrollo Pequeñas mejoras, Pequeñas En AUP se establecen


iterativo e unas tras otras mejoras una tras cuatro fases que transcurren
incremental conocido como otra, dividido en de manera consecutiva y
iteraciones. sprint que acaban con hitos claros
alcanzados también son
iterativos.
Participación del El cliente siempre El cliente también Comunicación entre equipo
cliente está presente en el tiene
proceso de participación en
desarrollo. el desarrollo del
proyecto.
Programación Consiste en una Trabajo en Trabajo en equipo
en pares práctica en la cual equipo auto
dos desarrolladores organizado.
se sientan juntos a
realizar una misma
funcionalidad. Parte
del principio que
dos desarrolladores
trabajando juntos
generan más
códigos y de mejor
calidad que dos
desarrolladores
trabajando por
aparte.
Valores y La comunicación, Individuos e Personal comprometido en
principios La simplicidad, La iteraciones por el trabajo.
retroalimentación, sobre procesos y
El coraje herramientas.
Motivación
Transparencia
Compromiso
Respeto
documentacion Software funcional Software La documentación en esta
funcionando por metodología es muy
sobre importante porque todo
documentación tiene que estar muy claro lo
exhaustiva que se quiere hacer.

Tiempo de Cada sprint tiene un Cada sprint tiene Los tiempos de duración
desarrollo tiempo de duración un tiempo de son de meses.
de 2 a 3 semanas. duración es de 3
a 4 semanas.
Roles Líder ágil o coach ProductOwner.  Pueden llevarse a cabo por
Cliente ScrumMaster. varias personas.
Programador Equipo de Una persona puede adquirir
(desarrollador) desarrollo. múltiples roles.
Tester Un rol no es una posición.
Pruebas Las pruebas se lo Las pruebas se lo El sistema se lleva
unitarias realiza frecuente realizan después a los entornos de
continuas mente. de terminar un preproducción donde se
sprint la decisión somete a pruebas
la toma el equipo. de validación
.  y aceptación y finalmente 
se despliega en los sistemas
 de producción.
Corrección de Se corrigen todos Se corrigen todos Esta fase no existe por que
errores los errores antes de los errores antes al momento de programar
añadir una nueva de añadir una se encargan de que el
funcionalidad. nueva sistema no presente errores.
funcionalidad.
Simplicidad Es la mejor manera Más enfocados Utilización de varias
de que todo
en la herramientas para su mejor
funcione bien "lo
simple siempre es funcionalidad y desarrollo antes de iniciar
lo mejor".
no así en la con la etapa de
simplicidad. implementación.

Conclusión

Se optó por la metodología ágil xp por la adaptabilidad del proyecto y por contempla
pruebas continuas del sistema, los periodos cortos de sus iteraciones tienden a durar de 2
a 3 semanas como mínimo, permite realizar retrospectiva de la anterior iteración
corrección de fallas antes de pasar a la siguiente etapa de desarrollo.

2.2.1. Programación extrema (XP)

http://ecaths1.s3.amazonaws.com/cups/673151444.TodoAgil.Pdf
XP es una metodología ágil centrada en potenciar las relaciones interpersonales como
clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo,
preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de
trabajo. XP se basa en realimentación continua entre el cliente y el equipo de desarrollo,
comunicación fluida entre todos los participantes, simplicidad en las soluciones
implementadas y coraje para enfrentar los cambios. XP se define como especialmente
adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un
alto riesgo técnico.

2.2.3 Roles XP

Los roles de acuerdo con la propuesta original de Beck son:

 Programador. El programador escribe las pruebas unitarias y produce el código del sistema.
 Cliente. Escribe las historias de usuario y las pruebas funcionales para validar su
implementación. Además, asigna la prioridad a las historias de usuario y decide cuáles se
implementan en cada iteración centrándose en aportar mayor valor al negocio.
 Encargado de pruebas (Tester). Ayuda al cliente a escribir las pruebas funcionales. Ejecuta
las pruebas regularmente, difunde los resultados en el equipo y es responsable de las
herramientas de soporte para pruebas.
 Encargado de seguimiento (Tracker). Proporciona realimentación al equipo.
Verifica el grado de acierto entre las estimaciones realizadas y el tiempo real
dedicado, para mejorar futuras estimaciones. Realiza el seguimiento del progreso
de cada iteración.
 Entrenador (Coach). Es responsable del proceso global. Debe proveer guías al
equipo de forma que se apliquen las prácticas XP y se siga el proceso
correctamente.
 Consultor. Es un miembro externo del equipo con un conocimiento específico en
algún tema necesario para el proyecto, en el que puedan surgir problemas.
 Gestor (Big boss). Es el vínculo entre clientes y programadores, ayuda a que el
equipo trabaje efectivamente creando las condiciones adecuadas. Su labor
esencial es de coordinación.

2.2.4 Proceso XP
El ciclo de desarrollo consiste (a grandes rasgos) en los siguientes pasos:

1. El cliente define el valor de negocio a implementar.

2. El programador estima el esfuerzo necesario para su implementación.

3. El cliente selecciona qué construir, de acuerdo con sus prioridades y las restricciones de tiempo.

4. El programador construye ese valor de negocio.

5. Vuelve al paso 1.

En todas las iteraciones de este ciclo tanto el cliente como el programador aprenden. No se debe
presionar al programador a realizar más trabajo que el estimado, ya que se perderá calidad en el software
o no se cumplirán los plazos. De la misma forma el cliente tiene la obligación de manejar el ámbito de
entrega del producto, para asegurarse que el sistema tenga el mayor valor de negocio posible con cada
iteración.

El ciclo de vida ideal de XP consiste de seis fases: Exploración, Planificación de la Entrega

(Release), Iteraciones, Producción, Mantenimiento y Muerte del Proyecto.

2.2.5 Prácticas XP

La principal suposición que se realiza en XP es la posibilidad de disminuir la mítica curva


exponencial del costo del cambio a lo largo del proyecto, lo suficiente para que el diseño
evolutivo funcione. Esto se consigue gracias a las tecnologías disponibles para ayudar en
el desarrollo de software y a la aplicación disciplinada de las siguientes prácticas:

 El juego de la planificación. Hay una comunicación frecuente el cliente y los


programadores. El equipo técnico realiza una estimación del esfuerzo requerido
para la implementación de las historias de usuario y los clientes deciden sobre el
ámbito y tiempo de las entregas y de cada iteración.
 Entregas pequeñas. Producir rápidamente versiones del sistema que sean
operativas, aunque no cuenten con toda la funcionalidad del sistema. Esta versión
ya constituye un resultado de valor para el negocio. Una entrega no debería tardar
más 3 meses.
 Metáfora. El sistema es definido mediante una metáfora o un conjunto de
metáforas compartidas por el cliente y el equipo de desarrollo. Una metáfora es
una historia compartida que describe cómo debería funcionar el sistema (conjunto
de nombres que actúen como vocabulario para hablar sobre el dominio del
problema ayudando a la nomenclatura de clases y métodos del sistema).
 Diseño simple. Se debe diseñar la solución más simple que pueda funcionar y
ser implementada en un momento determinado del proyecto.
 Pruebas. La producción de código está dirigida por las pruebas unitarias. Éstas
son establecidas por el cliente antes de escribirse el código y son ejecutadas
constantemente ante cada modificación del sistema.
 Refactorización (Refactoring). Es una actividad constante de reestructuración
del código con el objetivo de remover duplicación de código, mejorar su legibilidad,
simplificarlo y hacerlo más flexible para facilitar los posteriores cambios. Se mejora
la estructura interna del código sin alterar su comportamiento externo.
 Programación en parejas. Toda la producción de código debe realizarse con
trabajo en parejas de programadores. Esto conlleva ventajas implícitas (menor
tasa de errores, mejor diseño, mayor satisfacción de los programadores).
 Propiedad colectiva del código. Cualquier programador puede cambiar cualquier
parte del código en cualquier momento.
 Integración continúa. Cada pieza de código es integrada en el sistema una vez
que esté lista. Así, el sistema puede llegar a ser integrado y construido varias
veces en un mismo día.
 40 horas por semana. Se debe trabajar un máximo de 40 horas por semana. No
se trabajan horas extras en dos semanas seguidas. Si esto ocurre, probablemente
está ocurriendo un problema que debe corregirse. El trabajo extra desmotiva al
equipo.
 Cliente in-situ. El cliente tiene que estar presente y disponible todo el tiempo para
el equipo. Éste es uno de los principales factores de éxito del proyecto XP. El
cliente conduce constantemente el trabajo hacia lo que aportará mayor valor de
negocio y los programadores pueden resolver de manera inmediata cualquier duda
asociada. La comunicación oral es más efectiva que la escrita.
 Estándares de programación. XP enfatiza que la comunicación de los
programadores es a través del código, con lo cual es indispensable que se sigan
ciertos estándares de programación para mantener el código legible.
2.3 PLATAFORMA DE DESARROLLO (frameworks)

Características Laravel CodeIgniter  Phalcon Symfony

Código Es de Código Es de Código abierto Son proyectos Su código, y el de


abierto u open u open source. de código todos los
source. abierto con componentes y
soporte librerías que incluye,
multilingüe y se publican bajo la
ORM. licencia MIT
de software libre.

enrutamiento Fácil Su enrutamiento es Proporciona Enrutamiento es


enrutamiento sencillo y comprensible. capacidades
sencillo y
aun cuando avanzadas de
eres iniciante. enrutamiento. comprensible.

Motor de Blade, Motor de Solo utiliza html. Las vistas son a Twig es el sistema
plantillas. menudo modelo para la
plantillas
archivos HTML creación de plantillas
con código PHP para PHP
incrustado que
realizan tareas
relacionadas
únicamente a la
presentación de
datos
modelos Soporte Motor Vista Utiliza una Separa la lógica de
Controlador: Separació arquitectura negocio, la lógica de
para MVC
n de la lógica y MVC servidor y la
arquitectura de la web. presentación de la
aplicación web

instalación La instalación Es sencillo de Su instalación  La instalación por


se hace instalar, basta con subir es muy sencilla, medio de un
mediante los archivos al ftp y Phalcon comando común de
Composer y en tocar un archivo de necesita acceso Composer
cualquier configuración para root al servidor.
servidor. definir el acceso a la bd.

componentes Utiliza varios Limitado Limitado ya que Los componentes de


componentes usa lenguaje c Symfony son tan
de frameworks útiles y están tan
tan reconocidos probados.
como Symfony.

documentación La Gran comunidad y muy La La documentación del


documentación buena documentación. documentación proyecto también es
que existe en la para phalcon es libre e incluye varios
red es sencilla y muy limitada ya libros y decenas de
muy completa. que trabaja con tutoriales específicos.
lenguaje c su
comunidad es
reducida.
Conclusión

¿Por qué?

Hay muchos lenguajes de programación que se puede usar, pero PHP sigue siendo la
opción superior cuando se trata de scripts del lado del servidor. Se decide usar laravel por
que la comunidad de desarrolladores es muy activa, existe mayor documentación a la
hora de realizar una tarea.

2.3.1 Laravel

Laravel es un framework para aplicaciones web con sintaxis expresiva y elegante.


Creemos que el desarrollo debe ser una experiencia agradable y creativa para que sea
verdaderamente enriquecedora. Laravel busca eliminar el sufrimiento del desarrollo
facilitando las tareas comunes utilizadas en la mayoría de los proyectos web, como la
autenticación, enrutamiento, sesiones y almacenamiento en caché.

Laravel es un framework para el lenguaje de programación PHP. Aunque PHP es


conocido por tener una sintaxis poco deseable, es fácil de usar, fácil de desplegar y se le
puede encontrar en muchos de los sitios web modernos que usas día a día. Laravel no
solo ofrece atajos útiles, herramientas y componentes para ayudarte a conseguir el éxito
en tus proyectos basados en web, sino que también intenta arreglar alguna de las
flaquezas de PHP.

Laravel tiene una sintaxis bonita, semántica y creativa, que le permite destacar entre la
gran cantidad de frameworks disponibles para el lenguaje. Hace que PHP sea un placer,
sin sacrificar potencia y eficiencia. Es sencillo de entender, permite mucho la modularidad
de código lo cual es bueno en la reutilización de código.

2.3.2 Características y ventajas

 Está diseñado para desarrollar bajo el patrón MVC (modelo - vista - controlador),
centrándose en la correcta separación y modularización del código. Lo que facilita
el trabajo en equipo, así como la claridad, el mantenimiento y la reutilización del
código.
 Integra un sistema ORM de mapeado de datos relacional llamado Eloquent
aunque también permite la construcción de consultas directas a base de datos
mediante su Query Builder.
 Permite la gestión de bases de datos y la manipulación de tablas desde código,
manteniendo un control de versiones de las mismas mediante su sistema de
Migraciones.
 Utiliza un sistema de plantillas para las vistas llamado Blade, el cual hace uso de
la cache para darle mayor velocidad. Blade facilita la creación de vistas mediante
el uso de layouts, herencia y secciones.
 Facilita la extensión de funcionalidad mediante paquetes o librerías externas. De
esta forma es muy sencillo añadir paquetes que nos faciliten el desarrollo de una
aplicación y nos ahorren mucho tiempo de programación.
 Incorpora un intérprete de línea de comandos llamado Artisan que nos ayudará
con un montón de tareas rutinarias como la creación de distintos componentes de
código, trabajo con la base de datos y migraciones, gestión de rutas, cachés,
colas, tareas programadas, etc.

2.3.3 Modelo - Vista - Controlador

El modelo–vista–controlador (MVC) es un patrón de arquitectura de software que separa


los datos y la lógica de negocio de una aplicación de la interfaz de usuario y el módulo
encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la
construcción de tres componentes distintos que son el modelo, la vista y el controlador, es
decir, por un lado define componentes para la representación de la información, y por otro
lado para la interacción del usuario. Este patrón de arquitectura de software se basa en
las ideas de reutilización de código y la separación de conceptos, características que
buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.

De manera genérica, los componentes de MVC se podrían definir como sigue:

 El Modelo: Es la representación de la información con la cual el sistema opera,


por lo tanto gestiona todos los accesos a dicha información, tanto consultas como
actualizaciones. Las peticiones de acceso o manipulación de información llegan al
'modelo' a través del 'controlador'.
 El Controlador: Responde a eventos (usualmente acciones del usuario) e invoca
peticiones al 'modelo' cuando se hace alguna solicitud de información (por
ejemplo, editar un documento o un registro en una base de datos). Por tanto se
podría decir que el 'controlador' hace de intermediario entre la 'vista' y el 'modelo'.
 La Vista: Presenta el 'modelo' y los datos preparados por el controlador al usuario
de forma visual. El usuario podrá interactuar con la vista y realizar otras peticiones
que se enviarán al controlador.

2.4 ADMINISTRADOR DE LA BASE DE DATOS

Características MySql PostgreSQL MongoDB

Código abierto De código abierto, pero Completamente de Es de código abierto


propiedad de Oracle y código abierto
ofrece versiones
comerciales.
Vistas Soporta tablas Soporta vistas Datos no estructurados
materializadas/Tablas temporales pero no materializadas y tablas guardados en formato
temporales soporta vistas temporales. BSON – binary JSON.
materializadas.
Soporte para Solo soporte para datos Varias funcionalidades En MongoDB, los datos
NoSQL/JSON JSON soportadas es una colección de
documentos JSON
Servidor de sistemas FreeBSD  FreeBSD  Linux 
operativo Linux  HP-UX  OS X 
OS X  Linux  Solaris 
Solaris  NetBSD  Windows
Windows OpenBSD 
OS X 
Solaris 
Unix 
Windows
Conclusión

¿Por qué?

mysql tiene una amplia comunidad de desarrolladores y también documentación muy


completa si bien es limitado Solo tiene soporte para datos JSON, se seleccionó por las
características y el grado de complejidad que tiene el proyecto a ser desarrollado.

https://www.oracle.com/technetwork/database/mysql/index.html

2.4.1 MySQL

MySQL es la base de datos de código abierto más popular del mundo, que permite la
entrega rentable de aplicaciones de bases de datos integradas y confiables, de alto
rendimiento y escalables basadas en la Web. Es una base de datos integrada, segura
para transacciones, compatible con ACID con capacidad total de confirmación,
retrotracción, recuperación de fallas y bloqueo a nivel de fila. MySQL ofrece la facilidad de
uso, la escalabilidad y el alto rendimiento, así como un juego completo de controladores
de base de datos y herramientas visuales para ayudar a los desarrolladores y
administradores de bases de datos a construir y administrar sus aplicaciones MySQL
críticas para el negocio. La base de datos MySQL proporciona las siguientes
características:

 Alto rendimiento y escalabilidad para satisfacer las demandas de usuarios y


cargas de datos en crecimiento exponencial.
 Clústeres de replicación con recuperación automática para mejorar la
escalabilidad, el rendimiento y la disponibilidad.
 Cambio de esquema en línea para cumplir con los requisitos comerciales
cambiantes.
 Esquema de rendimiento para supervisar el rendimiento a nivel de usuario y
aplicación y el consumo de recursos.
 Acceso a SQL y No SQL para realizar consultas complejas y operaciones simples
y rápidas de valor clave.
 Plataforma Independiente que le brinda la flexibilidad para desarrollar e
implementar en múltiples sistemas operativos.
 Interoperabilidad de Big Data usando MySQL como el almacén de datos
operacionales para Hadoop y Cassandra.
2.5 HERRAMIENTAS

Características WAMP XAMP

Sistemas Operativos. WAMP funciona solo en el sistema XAMPP es multiplataforma, funciona


operativo Windows en Windows, Linux, Mac, etc.
Soportes. WAMP proporciona soporte solo XAMPP brinda soporte para
para MySQL y PHP MySQL, PHP y Perl
Iniciar el proceso fácilmente e WAMP no existe tal botón Puede iniciar el proceso fácilmente
intuitivo. en XAMPP pero simplemente
haciendo clic en el botón de inicio
Características adicionales. WAMP no puede agregar ninguna En XAMPP puede agregar
característica adicional características adicionales como
perl, mercury mail, servidor de
archivos y mucho más

Conclusión

¿Por qué?

XAMPP es simple y ligero en comparación con WAMP, además que es multiplataforma.

https://www.ecured.cu/XAMPP

2.5.1.1 XAMPP

XAMPP es un servidor independiente de plataforma, software libre, que consiste


principalmente en la base de datos MySQL, el servidor Web Apache y los intérpretes para
lenguajes de script: PHP y Perl. El nombre proviene del acrónimo de X (para cualquiera
de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl. El programa está
liberado bajo la licencia GNU y actúa como un servidor Web libre, fácil de usar y capaz de
interpretar páginas dinámicas.

2.5.1.2 Características y Requisitos

XAMPP solamente requiere descargar y ejecutar un archivo .zip, .tar, o .exe, con unas
pequeñas configuraciones en alguno de sus componentes que el servidor Web
necesitará. XAMPP se actualiza regularmente para incorporar las últimas versiones de
Apache/MySQL/PHP y Perl. También incluye otros módulos como OpenSSL y
phpMyAdmin. Para instalar XAMPP se requiere solamente una pequeña fracción del
tiempo necesario para descargar y configurar los programas por separado.
2.6 BIBLIOGRAFIA

 Stair, R., y Reynolds, G. (2010) Principios de sistemas de información: un enfoque


administrativo, 9a. ed.
 Lujan, S. (2002) Programación de aplicaciones web: historia, principios básicos y
clientes web. España
 Canós, J., Letelier, P., y Penadés, C. Métodologías Ágiles en el Desarrollo de
Software
Fecha de consulta: 10 de Junio de 2019. Recuperado de:
http://ecaths1.s3.amazonaws.com/cups/673151444.TodoAgil.Pdf
 Gallego, A. Laravel 5
 MySQL
Fecha de consulta: 10 de Junio de 2019. Recuperado de:
https://www.oracle.com/technetwork/database/mysql/index.html
 XAMPP
Fecha de consulta: 10 de Junio de 2019. Recuperado de:
https://www.ecured.cu/XAMPP

También podría gustarte