Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tesis Desarrollo de Un Punto de Venta
Tesis Desarrollo de Un Punto de Venta
TESIS
PARA OBTENER EL TÍTULO DE
LICENCIADO EN INFORMÁTICA
PRESENTAN
ANA KAREN DE LA LUZ OLIVA
SERGIO MORLÁN PÁRAMO
ASESOR
MA. VALENTÍN ROLDÁN VÁZQUEZ
DERECHOS RESERVADOS ©
PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL
Todo el material contenido en esta tesis esta protegido por la Ley Federal
del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México).
INTRODUCCIÓN……………….……………………...…………………………………..…1
CAPÍTULO I
MIPYMES DEL COMERCIO AL POR MENOR
1.1 Introducción...……..………………………….…………………………………..……5
1.2 Empresa………………………………………………………………………………..6
1.3 MiPyME………………………………………………………………………..............6
1.4 Sector Comercial…………………………..…………………………………………..9
1.4.1 MiPyMEs del Sector Comercial al Por Menor……………..…...............11
CAPÍTULO II
APLICACIONES WEB
2.1 Antecedentes…..…….………………………………………………………….……13
2.2 Aplicación...……..………………………………………………………………….…14
2.3 Aplicación de Escritorio.…...……………………………………………………...…14
2.4 Aplicación Web.…………....………………...………………………...………….…14
2.4.1 Características de una Aplicación Web.………………...………………16
2.4.2 Arquitectura de las Aplicaciones Web.………………...………………..16
2.4.2.1 Capa o Nivel 1.………………………….……...……………….18
2.4.2.2 Capa o Nivel 2.………………………….……...……………….19
2.4.2.3 Capa o Nivel 3.………………………….……...…………….....20
2.5 Aplicación Web VS Aplicación de Escritorio.……………………...…………….…21
2.6 Protocolo TCP/IP…………………………………………………………………..…21
2.7 Protocolo HTTP……………………………………………………... ………………23
2.8 Word Wide Web.………………………………...…………………...………………23
2.9 Entornos Web…………………….……………………………..…... ………………24
2.10 Patrón de Diseño de Software en las Aplicaciones Web. ………………………26
2.10.1 Modelo Vista Controlador…………………………………………...…..27
2.10.2 Patrón de Arquitectura de Software Utilizado………...……………….28
2.11 Ventajas de las Aplicaciones Web.…………………...………... ….…………….30
2.12 Inconvenientes de las Aplicaciones Web.….…………….……... ………………30
CAPÍTULO III
TECNOLOGÍAS PARA LA CONSTRUCCIÓN DE APLICACIONES WEB
3.1 Introducción………………...………………………………………………………...32
3.2 Capa 1 (Cliente)……………………………………………………………..............32
3.2.1 Navegador Web…………………………………….…………….............32
3.2.2 HTML…………….………………………………….……………..............34
3.2.2.1 HTML5…………….……………………………………............35
3.2.3 CSS…………….………………………………………………….............36
3.2.4 JavaScript…........................................................................................37
3.2.4.1 jQuery………………………...………..……….………............38
3.2.4.2 Ajax………………………………………………………………39
3.2.5 DOM……………………………………………………………..………….39
3.3 Capa 2 (Servidor Web)……………………………………………………...............40
3.3.1 Lenguajes de Programación Web……………………………................40
3.3.1.1 PHP…...................................................................................41
3.3.2 Framework……………………………………………………..................44
3.3.2.1 Symfony………………………………………………...............45
3.3.3 Servidor Web……………………………………………………...............46
3.3.3.1 Servidor HTTP Apache…………………………..…...............48
3.4 Capa 3 (Servidor de Datos)………….……………………………….….................49
3.4.1 Bases de Datos………………………………..………...........................49
3.4.2 SQL………………………………………………………………...............50
3.4.3 Sistema Gestor de Bases de Datos………………………….................51
3.4.3.1 MySQL……….......................................................................52
3.4.4 Modelos de Datos……….....................................................................53
3.4.4.1 Modelo Relacional……….....................................................54
3.4.4.2 Modelo Entidad-Relación………...........................................55
3.4.4.3 Diagrama Entidad-Relación……………………….................56
3.4.5 ORM…………………………………………………………….................57
3.4.5.1 Doctrine………………………………………………...............57
3.5 Otras tecnologías de desarrollo………………………………………...................58
3.5.1 UML…………………………………………………...…………………....58
3.5.2 Twig…………………………………………………………...…………....60
3.5.3 JSON………………………..………………………………………...…....61
CAPÍTULO IV
SEGURIDAD EN APLICACIONES WEB
4.1 Introducción…………………………………………………………………………..64
4.2 Cross-Site Scripting (XSS)…………………………….……………...…………….67
4.3 Cross-Site Request Forgery (CSRF)...……………………………………………..70
4.4 Inyección SQL....................................................................................................71
4.5 Encriptación de Datos...…………………………..……...……….....…..………….76
4.6 Autenticación y Autorización…..………………………..……………….………….79
4.7 Espionaje (Sniffing)...……………………………………...……………..………….81
4.8 Desbordamiento...……….………………………….................………..………….82
4.9 Envenenamiento Cookies…………………………...…………...…………………84
CAPÍTULO V
PROTECCIÓN DE DATOS
5.1 Introducción...……..……………………………………………………………….....87
5.2 Datos Personales…………………………………………………………………….88
5.3 Protección de Datos………………………………………………………………….89
5.4 Instituto Federal de Acceso a la Información y Protección de Datos…………….92
5.5 Ley Federal de Protección de Datos Personales en Posesión de Particulares...94
5.5.1 Fase 1: Obtención y uso de datos………………..……………………...96
5.5.2 Fase 2: Tratamiento de los datos………………………..…….…………97
5.5.3 Fase 3: Conclusión del uso de los datos personales………...…………97
5.6 Aviso de Privacidad……………………………………………………..…………...98
5.7 Derechos ARCO…………………………………………………………...............102
5.7.1 Acceso…………………………………………………………………….102
5.7.2 Rectificación…………………………………………………………...…103
5.7.3 Cancelación……………………………………………………………....103
5.7.4 Oposición………………………………………………………………....104
CAPÍTULO VI
MODELOS DE DISTRIBUCIÓN DE SOFTWARE
6.1 Preámbulo...……….…..……...……...…………………………………………….107
6.1.1 Web 2.0…...………………………………………….……..…………….108
6.1.2 Cloud Computing…...……………….……………………..…………….110
6.4 Modelos de Distribución de Software…...………………………………………...114
6.5 Software Local…...……………………………………………………..…………..115
6.6 Software como Servicio…...……………………………………...………………..117
6.6.1 Ventajas del Software como Servicio…...……………………………..123
6.6.1.1 Ventajas para el Cliente…...………………………………….123
6.6.1.2 Ventajas para el Proveedor…...…………………………...…124
6.6.2 Inconvenientes del Software como Servicio…...……………………...124
6.6.2.1 Inconvenientes para el Cliente…...………………………….125
6.6.2.2 Inconvenientes para el Proveedor…...………………………125
6.7 Freemium…...…………………………………………………………..............….126
CAPÍTULO VII
PUNTO DE VENTA
7.1 Introducción...………..…………………………………….………………………..129
7.2 Terminal Punto de Venta…………………………………………..……………….130
7.3 ARTS……………………………………………………………………………...…131
7.3.1 Modelo de Datos………………………………………………...............131
7.3.2 Unified POS…………………………………………………...………….132
7.3.3 ARTS XML………………………………………………..………………133
7.4 Terminal Punto de Venta en la nube………………………….………………..…134
7.4.1 Características de un Punto de Venta…………………………….……135
7.4.2 Beneficios de una Terminal Punto de Venta………………………..…136
CAPÍTULO VIII
METODOLOGÍA ÁGIL DE DESARROLLO DE SOFTWARE
8.1Introducción…………………………………………………………………….…………….138
8.2 Metodologías Tradicionales……………………………………………………….139
8.3 Metodologías Ágiles……………………………………………...………………...140
8.4 Metodologías Tradicionales vs Metodologías Ágiles…………..…..…………...145
8.5 Programación Extrema…………………………………………………………….146
8.5.1 Ciclo de Vida de Programación Extrema……………………………....150
8.5.2 Desarrollo Incremental…………………………………………………..151
8.5.3 Programación en Parejas……………………………...….…………….152
8.5.4 Integración Continúa…………………………………..…….…………..153
8.5.5 Artefactos…………………………………………………………………155
8.6 Programación Extrema y UML……………………………………..……………...160
CASO PRÁCTICO
DESARROLLO DE UN SISTEMA PUNTO DE VENTA EN LA NUBE
1 Estudio de Mercado..…..…………………………………….……………….……...162
1.1 Análisis de consumidor……………………………………….…………...162
1.2 Análisis de competencia………………………………………….............165
1.3 Estrategia………………………………………………………….............168
2 Análisis y Requerimientos Iterativos…..…………………….….…………………..169
2.1 Historias de usuario (hasta la última liberación)……………….………..170
3 Diseño Iterativo (Final).…………….….……………….…………………...............172
4 Desarrollo Iterativo (Final) con Integración continua…….….….………...............172
5 Implementación.…………………….….………………...…...................................178
ANEXOS
A.- Tablas Comparativas de Tecnologías...…..…………………..............……..…..181
B.- Aviso de Privacidad………..……..…………………..…..………………………...189
C.- Manifiesto por el Desarrollo Ágil de Software…...…..…..……………………….191
D.- Manual de Usuario...……..…………………...………..…..………………………192
PROYECCIONES A FUTURO….……………………………………………....................193
CONCLUSIONES...……..………………………………………………………...................194
BIBLIOGRAFÍA...……..…………………….…………………………………………………198
Índice de Figuras
Figura 1.3 Gráfico que muestra el porcentaje de unidades económicas que proveen
las MiPyMEs del sector comercial al por mayor y al por
menor...…………………………..……..................................................................................11
Figura 3.1 Gráfico extraído del sitio Web W3Counter que muestra la participación
en el mercado de los navegadores más dominantes a nivel mundial hasta Abril de 2013 en
porcentajes…………………………………………………………….………………………..…34
Figura 3.3 Gráfico de Netcraft que muestra el uso mundial de los Servidores Web
más populares hasta abril de 2013……………………..…………………………………….…47
Figura 3.4 Tabla comparativa de algunos los tipos de SGBD más utilizados………51
Figura 4.2 Gráfica de los resultados obtenidos del informe de las tendencias en
vulnerabilidad de las aplicaciones en 2013 realizado por Cenzic………………………….…68
Figura 4.4 Ejemplo común ocultar una URL para hacer un ataque CSFR….…....…70
Figura 4.5 Protección contra CSFR mediante un token provisto por Symfony….…71
Figura 4.8 Cadena de texto resultante que es interpretado como una instrucción
SQL…………………………………………………………………………………………………73
Figura 4.9 Escapado de una cadena de texto recibida desde un formulario con
mysql_real_escape_string de PHP……………………………………………………………...74
Figura 4.10 Ejemplo de protección contra inyección SQL con Doctrine y su método
setParameter con sentencias por nombre……………………………………………………...75
Figura 4.11 Ejemplo de protección contra inyección SQL con Doctrine y su método
setParameter con sentencias por posición.…………………..………………………………...75
Figura 5.1 Balanza representativa de los aspectos que influyen el uso de las redes
sociales…………………………………………………………………………………………….90
Figura 6.2 Representación de las acciones básicas del lado del cliente (Cloud
Client)………………………..……………………………………………………………………113
Figura 6.3 Taba que muestra las proyecciones del mercado de SaaS por región
geográfica según datos de Gartner de 2011……………………………………..……………120
Figura 8.3 Tabla comparativa entre Metodología Ágil contra una Metodología
Tradicional…………………………………………………………….………………………....145
Figura C.1 Ingresos de las empresas del sector comercial en México 2008 de
acuerdo con datos del último censo económico de 2009 del INEGI………………………...162
Figura C.2 Ingresos de las principales ramas de comercio al por menor de acuerdo
con INEGI…………………….…………………………………………………………………..163
Figura C.3 Porcentaje de ingresos de las principales ramas del comercio al por
menor de las MiPyMES en México 2008 de acuerdo con datos del último censo económico
de 2009 del INEGI……………………………………………………….………………………163
Figura C.4 Tabla de competencia de Sistemas punto de venta que operan con
tecnologías Web…………………………..…………………………………………………..…167
Figura C.7 Código QR que envía a la dirección de GitHub que contiene el código y
otros archivos del sistema……………………………………………………...……...............172
Introducción
_________________________________________________________________________
1 Ricardo Monge. G., Cindy Alfaro. A., José I. Alfaro. C. (2005). TICs en las PYMES de
Centroamérica, Impacto de la adopción de las tecnologías de la información y la
comunicación en el desempeño de las empresas. Costa Rica: Editorial Tecnológica de
Costa Rica.
Página |2
__________________________________________________________________
2 Sergio Luján Mora. (2001). Programación en Internet: clientes web. España: Club Universitario.
p.8.
Página |3
__________________________________________________________________
3 Accid. (2010). Nuevas Tendencias en Management: Fundamentos y Aplicaciones. Madrid,
España: Bresca. p. 115.
CAPÍTULO I
MIPYMES DEL COMERCIO AL POR MENOR
Página |5
1.1 Introducción
Ahora en nuestros días, nos hemos percatado que en la economía mexicana las
PyMES, son capaces de generar bienes y servicios para satisfacer las necesidades del
ser humano pero también nos hemos percatado de las deficiencias que tienen para
llevar el control administrativo y en ocasiones, de los recursos con los que cuentan. Es
por esto la necesidad de implementar sistemas informáticos que ayuden al micro,
pequeña y mediana empresa a resolver los problemas de control de información de sus
negocios para poder facilitar la toma de decisiones.
1.2 Empresa
1.3 MiPyME
______________________________________________________________________
1 Instituto Nacional de Estadística y Geografía. (2009). Micro, pequeña, mediana y gran empresa
Estratificación de los establecimientos, Censos Económicos 2009, Aguascalientes, Estados
Unidos Mexicanos: [s.n]. p 7.
2 PyMES, eslabón fundamental para el crecimiento en México. (s.f.). Recuperado el 22 de mayo de
2013 de http://www.promexico.gob.mx/negocios-internacionales/pymes-eslabon-fundamental-
para-el-crecimiento-en-mexico.html.
Página |8
Figura 1.1 Imagen que ilustra la clasificación de MiPyMEs de acuerdo a la estratificación de empresas
publicada en el Diario Oficial de la Federación el 30 de junio de 2009.
Página |9
______________________________________________________________________
3 Instituto Nacional de Estadística y Geografía. (2009). Micro, pequeña, mediana y gran empresa
Estratificación de los establecimientos, Censos Económicos 2009, Aguascalientes, Estados
Unidos Mexicanos: [s.n].p 11.
P á g i n a | 10
Otros Comercio
1.7 49.9
Al por
Menor
96%
Figura 1.3 Gráfico que muestra el porcentaje de unidades económicas que proveen las MiPyMEs del
sector comercial al por mayor y al por menor.
2.1 Antecedentes
__________________________________________________________________
1 Luján Mora S. (2001). Programación en Internet: clientes web. España: Club Universitario. p.8.
P á g i n a | 14
2.2 Aplicación
Este sistema será desarrollado como Aplicación Web sin utilizar plug-ins,
siguiendo así una filosofía de ‘listo para usarse’ además de no crear límites
entre las distintas plataformas en las que se ejecute utilizando como ejemplo:
en iOS de Apple la tecnología Flash no funciona.
P á g i n a | 16
_________________________________________________________________
2 Luján Mora S. (2001). Programación en Internet: clientes web. España: Club Universitario. p.5.
P á g i n a | 17
o JavaScript.
o Applets (Java).
o ActiveX (Microsoft).
o Silverlight (Microsoft).
o JavaFX (Java).
o Flash (Adobe).
o ASP
o PHP
o ColdFusion
o Servlets (Java)
o JSP (Java)
o Python
o Ruby
“El término ‘TCP / IP’ significa generalmente cualquier cosa y todo en relación
con los protocolos específicos de TCP e IP. Se pueden incluir otros protocolos,
aplicaciones y hasta el medio de la red. Una muestra de estos protocolos son: UDP,
ARP, ICMP. Y una muestra de estas aplicaciones son: TELNET, FTP y rcp. Un
término más preciso es ‘La tecnología de internet’. Una red que utiliza la tecnología
de Internet es llamado ‘internet’.” 3
__________________________________________________________________
3 RFC 1180 A TCP/IP Tutorial [RFC 1180 Un Tutorial TCP/IP]. (Junio de 1991). Recuperado el 25
de marzo de 2013 de http://tools.ietf.org/html/rfc1180#page-12.
P á g i n a | 23
Es un protocolo que define la forma en que se tienen que crear y enviar los
mensajes y que acciones debe tomar el servidor y el cliente en respuesta a un
determinado comando.
__________________________________________________________________
4 Luján Mora S. (2001). Programación en Internet: clientes web. España: Club Universitario. p.21.
5 RFC 2616 - Hypertext Transfer Protocol. (Junio de 1999). Recuperado el 20 de marzo de 2013 de
http://tools.ietf.org/html/rfc2616.
P á g i n a | 24
Fue creada por el inglés Sir Timothy John Berners-Lee en conjunto con
Robert Cailliau en el CERN de Ginebra Suiza en 1989 y finalmente publicado en
1992.
Berners Lee dirige desde 2007 el World Wide Web Consortium (W3C), el cual
desarrolla y mantiene los estándares que permiten a las computadoras conectadas
a la Web almacenar y compartir efectivamente la información.
El uso del prefijo ‘www’ no está impuesto por ningún estándar aunque es muy
común encontrarlo al comienzo de las direcciones web debido a la costumbre de
nombrar a los host de Internet (los servidores) con los servicios que proporcionan.
__________________________________________________________________
6 M. Leiner B., et al. (2009). A Brief History of the Internet [Una Breve Historia Del Internet]. Nueva
York, Estados Unidos de América: ACM. p 22.
P á g i n a | 26
2.10.1 Modelo-Vista-Controlador
__________________________________________________________________
8 What is Symfony2? By Fabien Potencier [¿Qué es Symfony2? Por Fabien Potencier]. (25 de
Octubre de 2011). Recuperado el 13 de junio de 2013 de
http://fabien.potencier.org/article/49/what-is-symfony2.
P á g i n a | 29
Como puede observarse parte de la lógica del patrón MVC está contenida
en el Servidor Web mediante el uso del framework, donde el ‘controlador’ escucha
eventos solicitados por el cliente y consulta al ORM, el ORM consulta al Servidor
Datos y posteriormente de acuerdo a la respuesta obtenida devuelve la respuesta
al ‘controlador’ para que este genere una ‘vista’ con ayuda de PHP, HTML y algunos
scripts (como JavaScript) para enviarlos al cliente donde este los visualiza gracias
a un Navegador Web.
P á g i n a | 30
3.1 Introducción
__________________________________________________________________
1 The WorldWideWeb browser [El Navegador WorldWideWeb]. (s.f.). Recuperado el 03 de junio de
2013 de http://www.w3.org/People/Berners-Lee/WorldWideWeb.html.
P á g i n a | 34
Figura 3.1 Gráfico extraído del sitio Web W3Counter que muestra la participación en el mercado
de los navegadores más dominantes a nivel mundial hasta Abril de 2013 en porcentajes. 2
3.2.2 HTML
__________________________________________________________________
2 W3Counter Global Web Status [W3Counter Estatus Global de la Web]. (Junio de 2013).
Recuperado el 06 de junio de 2013 de
http://www.w3counter.com/globalstats.php?year=2013&month=04.
3 HTML 4.01 Specification [Especificación HTML 4.01]. (24 de diciembre de 1999). Recuperado el
20 de abril de 2013 de http://www.w3.org/TR/1999/REC-html401-19991224/.
P á g i n a | 35
3.2.2.1 HTML5
“El término ‘HTML5’ se utiliza ampliamente como una palabra de moda para
referirse a las tecnologías web modernas.” 4
Algunas de las tecnologías Web a las que se refiere Ian Hickson son CSS,
SVG, WOFF, WebGL entre otras y que además funcionan en conjunto con
JavaScript. HTML 5 también cuenta con APIs como:
__________________________________________________________________
4 HTML Standard by Ian Hickson (Google) [El Estándar HTML por Ian Hickson de Google]. (s.f.).
Recuperado el 06 de junio de 2013 http://www.whatwg.org/specs/web-apps/current-
work/#is-this-html5?.
P á g i n a | 36
3.2.3 CSS
__________________________________________________________________
5 Cascading Style Sheets [Hojas de Estilo en Cascada]. (s.f.). Recuperado el 23 de abril de 2013
de http://www.w3.org/Style/CSS/.
P á g i n a | 37
3.2.4 JavaScript
3.2.4.1 jQuery
__________________________________________________________________
6 jQuery Usage Statistics [Estadisticas de Uso de jQuery]. (s.f.). Recuperado el 29 de abril de 2013
de http://trends.builtwith.com/javascript/JQuery.
P á g i n a | 39
3.2.4.2 Ajax
3.2.5 DOM
PHP
ASP/ASP.NET
Java con sus tecnologías Java Servlets y JavaServer Pages (JSP)
Perl
Ruby
Python
3.3.1.1 PHP
__________________________________________________________________
7 PHP: Hypertext Preprocessor. (s.f.). Recuperado el 20 de abril de 2013 de http://www.php.net.
P á g i n a | 42
Después de unos años, se hizo evidente que Ruby on Rails tenía varias
limitaciones. Una limitación importante es la baja disponibilidad y el alto precio de
los hostings de Ruby, mientras que el alojamiento de PHP resultaba más
económico y abundante en cualquier parte del mundo. Aunado a una gran
comunidad de ansiosos desarrolladores de frameworks para PHP dio lugar a una
revolución informática que restó popularidad a Ruby on Rails mientras los
frameworks para PHP fueron ganando cada vez usuarios.
P á g i n a | 43
Figura 3.2 Gráfico de Netcraft que muestra el crecimiento a nivel mundial de la cantidad de host
que utilizan PHP hasta Enero de 2012. 8
__________________________________________________________________
8 PHP just grows & grows [PHP sólo crece y crece]. (31 de enero de 2013). Recuperado el 04 de
mayo de 2013 de http://news.netcraft.com/archives/2013/01/31/php-just-grows-grows.html.
P á g i n a | 44
3.3.2 Framework
3.3.2.1 Symfony
Figura 3.3 Gráfico de Netcraft que muestra el uso mundial de los Servidores Web más
populares hasta abril de 2013.9
__________________________________________________________________
9 April 2013 Web Server Survey [Encuesta de Servidores Web de Abril de 2013]. (02 de abril de
2013). Recuperado el 29 de abril de 2013 de
http://news.netcraft.com/archives/2013/04/02/april-2013-web-server-survey.html.
P á g i n a | 48
3.4.2 SQL
__________________________________________________________________
10 IBM solidDB 6.3 and IBM solidDB Universal Cache 6.3 Information Center. (s.f.). Recuperado el
09 de junio de 2013 de
http://publib.boulder.ibm.com/infocenter/soliddb/v6r3/index.jsp?topic=/com.ibm.swg.im.solid
db.sql.doc/doc/tables.rows.and.columns.html.
P á g i n a | 51
Multiusuario
SGBD Usuario XML
Grupo Centralizado Distribuido Operacional Analítica
Simple
de Empresarial
Trabajo
MS
X X X X
Access
MS
SQL X X X X X X X X
Server
IBM
X X X X X X X X
DB2
MySQL X X X X X X X X
Oracle X X X X X X X X
RDBMS
Figura 3.4 Tabla comparativa de algunos los tipos de SGBD más utilizados
P á g i n a | 52
3.4.3.1 MySQL
__________________________________________________________________
11 Coronel, Morris, Rob. (2013). Database Systems: Design, Implementation, and Management,
Course Technology [Bases de Datos: Diseño, Implementación y Gestión, Curso de
Tecnología]. Estados Unidos de América: Cengage Learning. p 8.
12 PHP MySQL Introduction [Introducción a PHP MySQL]. (s.f.). Recuperado el 26 de abril de 2013
de http://www.w3schools.com/php/php_mysql_intro.asp.
P á g i n a | 53
o Modelo jerárquico
o Modelo en red
o Modelo relacional
Modelos de Datos Físicos: Se trata de estructuras de datos a bajo nivel
implementadas por los SGBDs como los Arboles, las estructuras Hash, etc.
P á g i n a | 54
“En 1979, el CEO de Oracle, Larry Ellison, trabajo junto con investigadores
de IBM y de la Universidad de California en Berkely, y lanzó el primer Sistema
Gestor de Bases de Datos comerciales (SGBD) basado en el Modelo Relacional.
Las Bases de Datos Relacionales (SGBDR) irrumpieron en la escena en la década
de 1980 y rápidamente dominaron el mercado de bases de datos.” 13
__________________________________________________________________
13 Coronel, Morris, Rob. (2013). Database Systems: Design, Implementation, and Management,
Course Technology [Bases de Datos: Diseño, Implementación y Gestión, Curso de
Tecnología]. Estados Unidos de América: Cengage Learning. p 3.
P á g i n a | 55
Las tendencias apuntan hacia tecnologías NoSQL que presumen de ser más
flexibles, de ofrecer mayor escalabilidad y soporte de concurrencia, a
diferencia de las bases de datos relacionales, sin embargo sus servicios de
alojamiento son contados y resultan más costosos. Además los SGBDR
como MySQL son suficientemente escalables y rápidos como para atender
las necesidades de grandes sistemas como el desarrollado en esta tesis.
Uno a Uno.
Uno a Muchos.
Muchos a Muchos.
3.4.5 ORM
Uno de los ORM más utilizado es Hibernate, que surgió para Java y ha sido
llevado al uso del framework .NET con la versión NHibernate. Para PHP existe un
ORM llamado Doctrine y que cuenta con integración con el framewok Symfony.
3.4.5.1 Doctrine
1 <?php
2 // Crear instancia de usuario
3 $usuario = new Usuario();
4 // Colocar nombre
5 $usuario->nombre = “john”;
6 // Colocar password
7 $usuario->password = “12345”;
8 // Persistir objeto usuario ya con las propiedades que se
colocaron
9 $entityManager->persist($usuario);
10 // Se hace una ‘limpieza’ del administrador de entidad
para indicar que ha terminado
11 $entityManager->flush();
12 // Impresión en pantalla del id de usuario se encuentra
guardado
13 echo "El usuario con id $usuario->id ha sido guardado.";
14 ?>
3.5.1 UML
UML cuenta con estándares que permiten describir un modelo que incluye
aspectos conceptuales tales como proceso de negocio, funciones del
sistema expresiones de lenguajes de programación y esquemas de bases de
datos.
__________________________________________________________________
14 Fowler M., Scott K. (1999). UML gota a gota (Jaime González V., David Morales Peake trad.).
Estados Unidos Mexicanos: Pearson.p.1.
P á g i n a | 60
3.5.2 Twig
PHP:
1 <ul id="navegacion">
2 <?php
3 foreach ($arreglo as $elemento) {
4 $class = ($elemento->id == 1) ? "activado" : "";
5 echo "<li class='$class'><a href='$elemento-
>ref'>$elemento- >nombre</a></li>";
6 }
7 ?>
8 </ul>
Twig:
1 <ul id="navegacion">
2 {% for elemento in arreglo %}
3 <li class="{{ (elemento.id == 1) ? ’activado’
}}"><a href="{{ elemento.ref }}">{{ elemento.nombre
}}</a></li>
4 {% endfor %}
5 </ul>
3.5.3 JSON
Ejemplo de JSON
1 {
2 "id": 987387618927373,
3 "nombre": "Juan",
4 "apellidos": "Perez Lopez",
5 "direccion": {
6 "calle": "Av. Arbol",
7 "colonia": "San Martin",
8 "estado": "Distrito Federal"
9 },
10 "telefono": [
11 {"ubicacion": "casa", "numero": "5534231090"},
12 {"ubicacion": "trabajo", "numero": "5569100893"}
13 ]
__________________________________________________________________
15 JSON Tutorial. (s.f.). Recuperado el 12 de junio de 2013 de http://www.w3schools.com/json/
CAPÍTULO IV
SEGURIDAD EN APLICACIONES WEB
P á g i n a | 64
4.1 Introducción
__________________________________________________________________
1 Improving Web Application Security: Threats and Countermeasures [Mejorando la seguridad de
las Aplicaciones Web: Amenazas y Contramedidas]. (s.f.). Recuperado el 05 de junio de
2013 de http://msdn.microsoft.com/en-us/library/ms994921.aspx.
P á g i n a | 65
Figura 4.1 Panorama general de aspectos de seguridad básica en una Aplicación Web.
“Son ataques dirigidos, por lo tanto, contra los uaurios y no contra el Servidor
Web. Mediante ‘Cross-Site Scripting’, un atacante puede realizar operaciones o
acceder a información en un Servidor Web en nombre del usuario afectado,
suplantando su identidad.” 2
__________________________________________________________________
2 Gómez Vieites A. (2007). Enciclopedia de la Seguridad Informática. México: Alfaomega.p 145.
P á g i n a | 68
Versión de Servidor
Web 5%
Inyección SQL 6%
CSRF 8%
Autenticación y
Autorización 13%
Administración de Fuga de
Sesiones 16% Información 16%
Figura 4.2 Gráfica de los resultados obtenidos del informe de las tendencias en vulnerabilidad de
las aplicaciones en 2013 realizado por Cenzic.
“El 26% del total, Cross Site Scripting (XSS) fue la vulnerabilidad más frecuente en
aplicaciones probadas en 2012. Sorprendentemente, las vulnerabilidades XSS
aumentaron significativamente en 2012 respecto a 2011.” 3
__________________________________________________________________
3 Application Vulnerability Trends Report: 2013 [Informe de las Tendencias en Vulnerabilidad de
las Aplicaciones: 2013]. (2013). Recuperado el 05 de junio de 2013 de
P á g i n a | 69
http://info.cenzic.com/rs/cenzic/images/Cenzic-Application-Vulnerability-Trends-Report-
2013.pdf.
Ejemplo:
// El resultado sería:
<a href='test'>Test</a>
1. <img src =
"http://webvulnerable.org/buscar.php?param=valor¶m2=valor
" />
Figura 4.4 Ejemplo común ocultar una URL para hacer un ataque CSFR
Ejemplo:
Figura 4.5 Protección contra CSFR mediante un token provisto por Symfony
Ejemplo:
Figura 4.6 Ejemplo de consulta a base de datos sin protección de escapado de caracteres.
__________________________________________________________________
4 Gómez Vieites A. (2007). Enciclopedia de la Seguridad Informática. México: Alfaomega.p 145.
P á g i n a | 73
Figura 4.8 Cadena de texto resultante que es interpretado como una instrucción SQL
P á g i n a | 74
Figura 4.9 Escapado de una cadena de texto recibida desde un formulario con
mysql_real_escape_string de PHP
Figura 4.10 Ejemplo de protección contra inyección SQL con Doctrine y su método setParameter
con sentencias por nombre.
Figura 4.11 Ejemplo de protección contra inyección SQL con Doctrine y su método setParameter
con sentencias por posición.
__________________________________________________________________
5 Modelo de almacenamiento encriptado. (s.f.). Recuperado el 14 de junio de 2013 de
http://php.net/manual/es/security.database.storage.php.
P á g i n a | 77
Encriptación
Control de Acceso
1 # app/config/security.yml
2 security:
3 # ...
4 access_control:
5 { path: ^/admin, roles: ROLE_USER_IP, ip: 127.0.0.1 }
6 { path: ^/admin, roles: ROLE_USER_HOST, host: symfony.com }
7 { path: ^/admin, roles: ROLE_USER_METHOD, methods: [POST,
PUT] }
8 - { path: ^/admin, roles: ROLE_USER }
Figura 4.13 Ejemplo de configuración del archivo YAML access_control para asignar permisos de
acceso.
P á g i n a | 81
4.8 Desbordamiento
__________________________________________________________________
6 Shema M. (2012). Hacking Web Apps: Detecting and Preventing Web Application Security
Problems [Hacking de Aplicaciones Web: Detección y Prevención de Problemas de
Seguridad de las Aplicaciones Web]. Estados Unidos de América: Syngress. p13.
P á g i n a | 84
5.1 Introducción
En México las personas físicas y morales que recaban datos personales son
sujetos que están regulados por la Ley Federal de Protección de Datos Personales en
Posesión de los Particulares. Dicha legislación establece la forma y las condiciones en
que deben ser usados los datos personales que se recaban al desarrollar cualquier
actividad económica en el ámbito privado.
______________________________________________________________________
1 Declaración Universal de Los Derechos Humanos. (s.f.). Recuperado el 11 de junio de 2013 de
http://www.un.org/es/documents/udhr/index_print.shtml.
P á g i n a | 88
Por lo tanto corroboramos que los datos no solo es información sino una entidad
para cada una de las personas.
_____________________________________________________________________
2 Estados Unidos Mexicanos. Congreso General. Ley Federal de Protección de Datos Personales en
Posesión de los Particulares. DOF 05-07-2010. Diario Oficial de la Federación. 05 de julio de
2010. p. 5
P á g i n a | 89
Dentro de los datos personales hay una categoría que se denomina “datos
personales sensibles”, que como se mencionó en el Capítulo IV (Seguridad en
Aplicaciones Web) requieren especial protección como contraseñas y números de
cuentas bancarias. También los datos sensibles pueden tratarse de información que
puede revelar aspectos íntimos de una persona o dar lugar a discriminación, como el
estado de salud, información genética, creencias religiosas, filosóficas y morales,
afiliación sindical, opiniones políticas, origen racial o étnico y preferencia sexual, por
mencionar algunos.
Figura 5.1 Balanza representativa de los aspectos que influyen el uso de las redes sociales.
Esa misma balanza puede ser utilizada para representar los aspectos que
influyen en el uso en general de los sistemas orientados a tecnologías web y que tratan
con datos personales de sus usuarios.
_____________________________________________________________________
3 Estados Unidos Mexicanos. Congreso General. Ley Federal de Protección de Datos Personales en
Posesión de los Particulares. DOF 05-07-2010. Diario Oficial de la Federación. 05 de julio de
2010. p. 59
P á g i n a | 92
____________________________________________________________________
4 Instituto Federal de Acceso a la información y Protección de Datos Misión Visión y Objetivos. (s.f.).
Recuperado el 10 de Junio de 2013 de
http://inicio.ifai.org.mx/_catalogs/masterpage/misionViosionObjetivos.aspx.
P á g i n a | 94
A Partir del 12 de Junio del 2003 cuando entró en vigor la ley federal de
transparencia y acceso a la información pública, entidades de gobierno y el sector
privado está obligado a atender solicitudes de información bajo vigilancia del IFAI. Esta
dependencia está encargada:
______________________________________________________________________
5 Estados Unidos Mexicanos. Congreso General. Ley Federal de Protección de Datos Personales en
Posesión de los Particulares. DOF 05-07-2010. Diario Oficial de la Federación. 05 de julio de
2010.p. 12
P á g i n a | 95
Los 11 capítulos con los cuales cuenta la Ley y que resumen a grandes rasgos
cuál es su finalidad son los siguientes:
_____________________________________________________________________
6 Estados Unidos Mexicanos. Congreso General. Ley Federal de Protección de Datos Personales en
Posesión de los Particulares. DOF 05-07-2010. Diario Oficial de la Federación. 05 de julio de
2010.p. 6
P á g i n a | 97
Sólo utilizar los datos personales para las finalidades que autorizó el titular o
consintió.
Mantener los datos personales actualizados y correctos.
Conservar los datos personales sólo por el periodo que sea necesario para llevar
a cabo la finalidad para la que se obtuvieron.
Sólo compartir los datos personales con terceros si el titular lo autorizó, salvo las
excepciones previstas en el artículo 37 de la LFPDPPP..
Guardar la confidencialidad de los datos personales.
Implementar medidas de seguridad que eviten el daño, pérdida, alteración,
destrucción o el uso, acceso o tratamiento no autorizado de los datos
personales.
Informar al titular si ha ocurrido una vulneración a la seguridad de las bases de
datos que pueda afectar sus derechos patrimoniales o morales, para que éste
pueda tomar las medidas necesarias para su protección.
Eliminar de las bases de datos o archivos los datos personales del titular,
cuando hayan concluido las finalidades que dieron origen a su obtención.
podrán ser utilizados para ninguna finalidad, y una vez concluido deberán ser
eliminados.
El tratamiento de los datos deberá limitarse y ser acorde con el fin para el cual
son recabados por el responsable, y contar con el consentimiento del titular o dueño de
los datos, que es cada persona en lo individual.
Si el responsable pretende usar los datos para un fin distinto, que no resulte
compatible con los fines establecidos en el aviso de privacidad, necesitará obtener
nuevamente el consentimiento del titular. El aviso de privacidad debe contener lo
siguiente:
______________________________________________________________________
7 Estados Unidos Mexicanos. Congreso General. Ley Federal de Protección de Datos Personales en
Posesión de los Particulares. DOF 05-07-2010. Diario Oficial de la Federación. 05 de julio de
2010. p. 8
P á g i n a | 99
Cuando los datos personales sean obtenidos directamente del titular por cualquier
medio electrónico, óptico, sonoro, visual o a través de cualquier otra tecnología, el
responsable deberá proporcionarle al titular de manera inmediata por lo menos la
P á g i n a | 100
______________________________________________________________________
8 Estados Unidos Mexicanos. Congreso General. Ley Federal de Protección de Datos Personales en
Posesión de los Particulares. DOF 05-07-2010. Diario Oficial de la Federación. 05 de julio de
2010. p. 8
P á g i n a | 102
Los derechos ARCO son aquellos que la LFPDPPP otorga a los titulares de los
datos personales el derecho a acceder, rectificar y cancelar su información personal en
posesión de terceros, así como oponerse a su uso.
5.7.1 Acceso
Cada uno de los titulares de los datos personales tienen derecho de acceder a
su información personal que esté en posesión del responsable, a fin de conocer
cuál es y el estado en que se encuentra, es decir, si es correcta y actualizada y saber
para conocer para qué fines se utiliza.
A través del ejercicio del derecho de acceso, el titular puede conocer las
características generales del uso al que están sometidos los datos personales.
Entre la información a la que se puede acceder se encuentra la siguiente:
5.7.2 Rectificación
“Artículo 24.- El titular de los datos tendrá derecho a rectificarlos cuando sean
inexactos o incompletos.” 9
5.7.3 Cancelación:
Existen ciertas excepciones por las cuales los datos personales no podrán ser
eliminados, estas excepciones se aplicarán cuando:
______________________________________________________________________
9 Estados Unidos Mexicanos. Congreso General. Ley Federal de Protección de Datos Personales en
Posesión de los Particulares. DOF 05-07-2010. Diario Oficial de la Federación. 05 de julio de
2010. p. 9
P á g i n a | 104
5.7.4 Oposición
Por alguna causa legítima sea necesario parar el uso de los datos personales, a
fin de evitar un daño a su persona.
No quieran que su información personal sea utilizada para ciertos fines o por
ciertas personas, empresas, negocios, asociaciones, o cualquier tercero.
P á g i n a | 105
“Artículo 68.- Se sancionará con prisión de seis meses a cinco años al que, con
el fin de alcanzar un lucro indebido, trate datos personales mediante el engaño,
aprovechándose del error en que se encuentre el titular o la persona autorizada para
transmitirlos.” 10
______________________________________________________________________
10 Estados Unidos Mexicanos. Congreso General. Ley Federal de Protección de Datos Personales en
Posesión de los Particulares. DOF 05-07-2010. Diario Oficial de la Federación. 05 de julio de
2010. p. 19
CAPÍTULO VI
MODELOS DE DISTRIBUCIÓN DE SOFTWARE
P á g i n a | 107
6.1 Preámbulo
Desde los inicios del software en los años 50’s, se han buscado distintas
formas de distribuirse, pero en sus inicios el software no era considerado un
producto, sino un añadido que los fabricantes de las computadoras incluían en sus
equipos.
A finales de los 60’s IBM ofrecía tiempo compartido de sus mainframes que
incluían el poder de cómputo y almacenamiento de bases de datos, a manera de
renta. Pero el modelo de renta de mainframes no lo logró perdurar debido a la
escasa infraestructura para el control remoto de aquel tiempo y las pocas opciones
de seguridad existentes.
La Web 2.0 surgió en 1999, este modelo de web permitió tener páginas
dinámicas que se generaban al momento de la visualización. Estas páginas
dinámicas se creaban al momento en que se pedían al servidor y dio un enfoque
más amplio a los programadores, sobre lo que podían ser los sistemas
informáticos. Mediante la Web 2.0 el contenido de las páginas podía generarse de
acuerdo a las acciones del usuario y esto permitió una navegación más amigable.
“La Web 2.0 es la red como plataforma que abarca todos los dispositivos
conectados a ella, las aplicaciones Web 2.0 son las que representan la mayoría de
las ventajas intrínsecas de esta plataforma: la entrega de software como un
servicio continuamente actualizado que mejora mientras más personas lo utilizan,
consumiendo y remezclando datos de múltiples fuentes, incluyendo usuarios
individuales, mientras que la prestación de sus propios servicios de datos permite
ser remezclada por otros, creando el efecto a través red de una ‘arquitectura de
participación’, y que van más allá de la metáfora de la Web 1.0 para ofrecer
mejores experiencias de usuario .” 1
_________________________________________________________________
1 Web 2.0: Compact Definition? [La Web 2.0 ¿En una definición compacta?]. (01 de octubre de
2005). Recuperado el 21 de junio de 2013 de http://radar.oreilly.com/2005/10/web-20-
compact-definition.html.
P á g i n a | 110
_________________________________________________________________
2 Caivano R., Villoria. (2009). Aplicaciones Web 2.0 para aplicaciones educativas en la U.N.V.M.
Cordoba, República Argentina: Eduvim. p. 11
P á g i n a | 111
Figura 6.2 Representación de las acciones básicas del lado del cliente (Cloud Client)
_________________________________________________________________
3 Kane R. (2009). Software Escrow for Dummies [´Fideicomiso´ de Software para Tontitos].
Estados Unidos de América: Iron Mountain Digital. p. 37
P á g i n a | 117
_________________________________________________________________
4 Software as a Service [Software como Servicio]. (s.f.). Recuperado el 20 de junio de 2013 de
http://cloudtaxonomy.opencrowd.com/taxonomy/software-as-a-service/.
P á g i n a | 118
_________________________________________________________________
5 A Brief History of SaaS [Una breve historia sobre el Software como Servicio]. (s.f.). Recuperado
el 20 de junio de 2013 de http://www.computerworld.com/pdfs/Service-Now-
BriefhistoryofSaaS.pdf.
P á g i n a | 119
_________________________________________________________________
6 Gartner Says Worldwide Software-as-a-Service Revenue to Reach $14.5 Billion in 2012 [Gartner
dice que los ingresos del Software como Servicio a nivel mundial pueden llegar a $14,5 mil
millones en 2012]. (27 de marzo de 2012). Recuperado el 20 de junio de 2013 de
http://www.gartner.com/newsroom/id/1963815.
P á g i n a | 120
Los analistas Gartner pronostican que ingresos percibidos por SaaS pueden
llegar a $16,6 mil millones de dólares en 2013, con un incremento aproximado de
17.9 por ciento a partir de 2012. De acuerdo con Gartner, Inc. la entrega basada
en SaaS experimentará un crecimiento saludable hasta 2015, cuando se proyecta
que los ingresos en todo el mundo pueden llegar a $21,2 mil millones de dólares.
_________________________________________________________________
7 Software & Information Industry Association. (2001). Software as a Service: Strategic
Backgrounder [Software como Servicio: Antecedentes Estratégicos]. Washington DC,
Estados Unidos de América: [s.n]. p.4
P á g i n a | 122
A pesar que la SIIA sugiere que todos los conceptos sean englobados,
puesto que al final de cuentas todos ofrecen software a manera de servicio, es
importante diferenciar del modelo seguido por ASP y el concepto actual de SaaS
sobre servicios orientados a la Web, puesto que normalmente los ASP manejan
soluciones ya existentes de software on-promises adaptadas como servicios, y no
soluciones programadas originalmente para la Web como se hace con SaaS.
_________________________________________________________________
8 A Brief History of SaaS [Una breve histiria sobre el Software como Servicio]. (s.f.). Recuperado el
20 de junio de 2013 de http://www.computerworld.com/pdfs/Service-Now-
BriefhistoryofSaaS.pdf.
P á g i n a | 123
Las ventajas del SaaS pueden ser observables desde dos perspectivas, la
perspectiva del cliente y la del proveedor:
Los márgenes de recuperación de inversión, suelen ser más lentos que los
del software on-promises, puesto que el cliente paga una renta que es
mucho menor a la adquisición inicial de un software local.
Los SaaS demandan más niveles de seguridad puesto que la información
es centralizada.
La responsabilidad aumenta ante fallos en un mismo sistema que es
utilizado por múltiples compañías o usuarios.
El buen funcionamiento del sistema también depende de terceros, en
específico de la compañía proveedora de Internet.
P á g i n a | 126
6.7 Freemium
Fue popularizado por Fred Wilson en 2006, con una publicación realizada
en su blog, donde describió su funcionamiento y solicitó sugerencias a sus
lectores acerca de cómo llamar a dicho modelo, iniciando con el texto siguiente:
_________________________________________________________________
9 My Favorite Business Model [Mi Modelo de Negocios Favorito]. (23 de marzo de 2006).
Recuperado el 19 de junio de 2013 de
http://avc.blogs.com/a_vc/2006/03/my_favorite_bus.html.
CAPÍTULO VII
PUNTO DE VENTA
P á g i n a | 129
7.1 Introducción
Terminal Punto de Venta o POS (del inglés Point of Sale). “Es un software
que sirve para gestionar las ventas de las mercancías al por menor” 1. En ciertas
ocasiones, una caja registradora, una computadora o incluso aparatos de
tecnología táctil son utilizados para realizar las ventas de los negocios. La
mayoría del software POS se comunica con el módulo de inventario que ayuda a
mantener un equilibrio dentro del sistema.
En los 80’s se crea el primer POS con interfaz gráfica y además contaba
con pantalla táctil a color, llamado Viewtouch.
En los 90’s fue lanzado un software de punto de venta para manejar ventas
al menudeo que se ejecutaba en Windows llamada T-Retail. Y a mediados de los
90’s se crean el estándares de comunicación para los dispositivos utilizados en los
POS por la Asociación para Estándares de Tecnologías en Minoristas o ARTS (del
inglés The Association for Retail Technology Standards)
__________________________________________________________________
1 What is a POS System? [¿Qué es un Sistema Terminal Punto de Venta?]. (s.f.). Recuperado el
11 de junio de 2013 de http://www.wisegeek.org/what-is-a-pos-system.htm#didyouknowout.
P á g i n a | 131
7.3 ARTS
1. Modelo de Datos
2. Unified POS
3. ARTS XML
__________________________________________________________________
2 National Retail Federation [Federación Nacional de Minoristas]. (s.f.). Recuperado el 11 de junio
de 2013 de http://www.nrf-arts.org/.
P á g i n a | 132
__________________________________________________________________
3 National Retail Federation. (2013). Unified POS [Punto de Venta Unificado]. Estados Unidos de
América: [s.n]. p 41.
P á g i n a | 133
__________________________________________________________________
4 National Retail Federation [Federación Nacional de Minoristas]. (s.f.). Recuperado el 11 de junio
de 2013 de http://www.nrf-arts.org/.
P á g i n a | 134
Fácil de usar
Registro de entradas y salidas de efectivo
Ofrecer un precio al público en automático dependiendo el cliente
Registro de retiro de efectivos al terminar una transacción al día
Control y registro de Inventario
Control de Almacén
Un catálogo de productos
Búsqueda de productos
Catálogo de clientes
Descuentos por clientes
Registro de ventas (diarias, mensuales y anuales)
Control y verificación de stock actual
__________________________________________________________________
5 Universidad Tecnológica de Bahía de Banderas. Recuperado el 14 de junio de 2013 de
http://www.utbb.edu.mx/index.php/component/content/article/3-newsflash/123-ventajas-y-
desventajas-de-los-sistemas-de-punto-de-venta.html
P á g i n a | 136
8.1 Introducción
_________________________________________________________________
1 Sommerville I. (2005). Ingeniería del Software (María Isabel Alfonso Galipienso trad.). (7a ed.).
Madrid, España: Pearson. p 362.
P á g i n a | 141
_________________________________________________________________
2 Metodologías ágiles. (s.f.). Recuperado el 23 de junio de 2013 de
http://www.javiergarzas.com/metodologias-agiles.
P á g i n a | 143
.
Por contrario a lo que pueda pensarse los Métodos Ágiles si pueden
desarrollarse conforme a modelos de procesos para certificaciones ISO 15504.
El ISO 15504 está alineado con las metodologías ágiles (SCRUM, XP, etc.),
también con las guías ISO/IEC 29110 (Lifecycle Profiles for Very Small Enterprises)
y con otras normas muy extendidas en el sector como la ISO/IEC 27001 (seguridad
de la información) y la ISO/IEC 20000 (gestión del servicio TI).
Si bien algo que distingue enormemente a las metodologías ágiles son sus
ciclos iterativos, éstos no son propios de los métodos ágiles puesto que también
existen metodologías tradicionales que utilizan procesos iterativos dentro de su
‘estructura’ general, como por ejemplo RUP.
Puesto que para la elaboración del sistema que abarca esta tesis, se cuenta
con un equipo de 2 personas y un tiempo corto de desarrollo, se ha optado
por seguir una metodología de desarrollo ágil, además de que dicha
metodología permite que proyecciones del sistema previstos se lleven a
cabo con nivel mayor de adaptación, ante nuevas tecnologías o nuevos
requisitos.
Ágil Tradicional
Especialmente preparados para el
Cierta resistencia al cambio
cambio durante el proyecto
Métodos impuestos por el propio Métodos impuestos externamente
equipo (empresa)
Procesos menos controlados, con
Procesos mucho más controlados y
pocos principios donde el cliente
con numerosas normas
es parte del equipo de desarrollo
Grupos pequeños (menos de 10) Grupos grandes y distribuidos
Pocos artefactos (módulos) Más artefactos (módulos)
Pocos roles (2) Más roles y tienden a no cambiar
Menos énfasis en la La documentación de software es
documentación de software esencial.
Figura 8.3 Tabla comparativa entre Metodología Ágil contra una Metodología Tradicional
P á g i n a | 146
_________________________________________________________________
3 Sommerville I. (2005). Ingeniería del Software (María Isabel Alfonso Galipienso trad.). (7a ed.).
Madrid, España: Pearson.p 364.
P á g i n a | 147
Figura 8.4 Gráfico de la estructura de Programación Extrema (XP) con tiempos aproximados
Diseño simple: Sólo se lleva acabo el diseño necesario para cumplir con los
requerimientos actuales.
_________________________________________________________________
4 Sommerville I. (2005). Ingeniería del Software (María Isabel Alfonso Galipienso trad.). (7a ed.).
Madrid, España: Pearson.p 365.
P á g i n a | 150
Figura 8.5 Gráfico representativo del ciclo de vida de la Programación Extrema (XP)
Estos roles suelen cambiarse entre ambos de manera constante cada cierto
tiempo o cada prueba de unidad. Es bueno cambiar de parejas frecuentemente
porque mejora la distribución de conocimiento entre el equipo.
_________________________________________________________________
5 Team spirit agility counts [Espíritu de Equipo, la agilidad cuenta]. (20 de septiembre de 2001).
Recuperado el 23 de junio de 2013 de http://www.economist.com/node/779429.
P á g i n a | 154
_________________________________________________________________
6 Continuous Integration [Integración continúa]. (01 de mayo de 2006). Recuperado el 25 de junio
de 2013 de http://martinfowler.com/articles/continuousIntegration.html.
P á g i n a | 155
8.5.5 Artefactos
Task Card (tarea de ingeniería): Las task card se usan para describir las
tareas que se realizan sobre el proyecto. Las tareas pueden ser: desarrollo,
corrección, mejora, etc. Estas tareas tienen relación con una historia de usuario; se
especifica la fecha de inicio y fin de la tarea, se nombra al programador responsable
de cumplirla y describimos que se tratara de hacer en la tarea.
Tarea de Ingeniería
Desarrollo / Corrección
Número de Tarea: No de Tarea Tipo de Tarea:
/ Mejora
Nombre de Tarea: Campo Opcional si exite un nombre descriptivo
Todo el trabajo de investigación de esta tesis puede ser visto como un estudio de
mercado, a pesar de ello es necesario recalcar a manera de resumen los puntos
clave que proporcionen un panorama general del contenido de esta investigación y
añadiendo datos de mayor interés comercial.
P á g i n a | 162
1 Estudio de Mercado
MiPyMES comerciales
restantes (al por mayor y por
menor)
Figura C.1 Ingresos de las empresas del sector comercial en México 2008 de acuerdo con datos
del último censo económico de 2009 del INEGI
__________________________________________________________________
1 Instituto Nacional de Estadística y Geografía. (2009). Micro, pequeña, mediana y gran empresa
Estratificación de los establecimientos, Censos Económicos 2009, Aguascalientes, Estados
Unidos Mexicanos: [s.n]. pp. 73-74.
P á g i n a | 163
Figura C.2 Ingresos de las principales ramas de comercio al por menor de acuerdo con INEGI
Figura C.3 Porcentaje de ingresos de las principales ramas del comercio al por menor de las
MiPyMES en México 2008 de acuerdo con datos del último censo económico de 2009 del INEGI
P á g i n a | 164
Las grandes empresas cuentan con ventajas como la concentración de una alta
gama de productos, la compra de mercancía en grandes cantidades y el uso de
herramientas tecnológicas que les permiten la automatización de sus operaciones de
compra, venta y logística, que se ven reflejadas en una disminución de sus costos, lo
cual le permite ofrecer precios más competitivos y acaparar gran parte del mercado.
Hoy en día miles de empresas ya usan la web como vía de contacto con más de
2 mil millones de posibles clientes en el mundo, más de 40 millones de ellos están en
México y más de 230 millones en América Latina. De acuerdo con diversas consultas
realizadas en México estos son los usuarios que utilizan internet en el país:
Total
Estudio Fecha
(millones de usuarios)
AMIPCI2 45.1 dic-12
WIP México3 52.3 ago-12
INEGI4 40.9 nov-12
IWS5 42.0 jun-12
______________________________________________________________________
2 Hábitos de los Usuarios de Internet en México 2013. (2013). Recuperado el 25 de junio de 2013 de
http://www.amipci.org.mx/?P=editomultimediafile&Multimedia=348&Type=1.
3 Estudio 2012 de hábitos y percepciones de los mexicanos sobre Internet y diversas tecnologías
asociadas. (2012). Recuperado el 25 de junio de 2013 de http://www.wip.mx/estudios_wip.html.
4 Usuarios de las tecnologías de información 2001 a 2012. (29 de noviembre de 2012). Recuperado el 25
de junio de 2013 de
http://www3.inegi.org.mx/sistemas/sisept/default.aspx?t=tinf204&s=est&c=19437.
5 Internet Usage Statistics, Population and Telecom Reports for the Americas. (30 de junio de 2012).
Recuperado el 25 de junio de 2013 de http://www.internetworldstats.com/stats2.htm.
P á g i n a | 165
Precio
Producto Español Pesos1 País Tecnologías Pros Contras Freemium Página Web
Básico2
Sucursales
UI Sencilla,
en Estados
Extensiones para
Unidos,
PHP, Comercio Precios no
Nueva No (30 días
Vend Si Si $35/m
Zelanda,
JavaScript, Electrónico accesibles para el
de prueba)
http://www.vendhq.com/
HTML5 (shopify), App para mercado mexicano
Reino
iOs, integración de
Unido y
hardware POS
Australia
UI Amigable,
graficas,
No está en español
estadísticas,
Imonggo No No $30/m Texas, EUA Desconocido
funcionamiento
ni maneja peso Si http://www.imonggo.com/
mexicano
offline, integración
de hardware POS
UI anticuada, no
Precio accesible,
PHP Nueva PHP, está en español ni No (14 días
No No $29/m integración con http://www.phppointofsale.com
pointofsale York, EUA JavaScript
hardware POS
maneja peso de prueba)
mexicano
Precios muy
UI Atractiva y costosos, no está
Amigable, gráficos, en español ni
Montreal,
LightSpeed No No $79/m
Canadá
Desconocido estadísticas, app maneja peso No http://www.lightspeedretail.com
para iOS, integración mexicano,
de hardware hardware propio y
costoso
P á g i n a | 167
UI anticuada,
registro
Modelo de
adicionales de
freemium muy
California, tiendas son
Posteria No No $77/m
EUA
Desconocido accesible,
costosos, no está
Si http://www.posterita.org
integración de
en español ni
hardware POS
maneja peso
mexicano
España, Especialización
On Dirigido a grandes
Openbravo Si Si
Demand
India, EUA, Desconocido regional, UI sencilla,
minoristas
No http://www.openbravo.com/
México precio ajustable
Manejo de
No está sujeto a un
comisión por
pago fijo mensual,
Comisión Estocolmo, ventas que eleva el
iZettle Si Si
de ventas Suecia
Desconocido cuenta con lector de
precio de los
No http://www.izettle.com
tarjetas para
productos de los
dispositivos móviles
clientes,
UI Atractiva y
Amigable, gráficos,
No está en español
Chicago, estadísticas, app No (14 días
Cashier Live No No $20/m
EUA
Desconocido
para iOS, integración
ni maneja peso
de prueba)
http://www.cashierlive.com
mexicano
de hardware, costos
accesibles
1 Manejo de pesos mexicanos // 2 Precio en Dólares Estadounidenses, "/m" significa por mes
Datos con base de consulta de 25 de junio de 2013
Figura C.4 Tabla de competencia de Sistemas punto de venta que operan con tecnologías Web.
P á g i n a | 168
1.3 Estrategia
Un ejemplo de esto son las sesiones con el cliente, y hacer a este parte del
equipo, puesto que en este sistema no tenemos un cliente presencial, sino muchos
posibles clientes virtuales, este rol será llevado por alguno de los integrantes del
equipo, que en base a los conocimientos adquiridos en la investigación y el análisis
de la competencia, servirán para definir los requerimientos principales que formen
las historias de usuario. Este rol será rotativo, mientras que una persona cumple
con el rol de programador, el otro integrante cumplirá con el rol de cliente, y se
intercambiaran al terminar cada iteración o cuando se considere necesario.
Figura C.5 Hoja 1 de las principales historias de usuario (hasta la última iteración).
P á g i n a | 171
Figura C.6 Hoja 2 de las principales historias de usuario (hasta la última iteración).
Figura C.7 Código QR que envía a la dirección de GitHub que contiene el código y otros archivos
del sistema
https://github.com/serchserch/wpv
P á g i n a | 173
Diagrama E-R
P á g i n a | 177
5 Implementación
El sistema fue nombrado con las letras clave wpv (web punto de venta), y fue
montado en un servidor Apache y se instaló MySQL en el mismo equipo con las
siguientes características:
Se creó un servidor virtual para que la ruta wpv.com fuese la que mostrará
la aplicación. Modificando el archivo httpd.conf y descomentando la opción
#Include conf/extra/httpd-vhost.conf y agregando las siguientes líneas
al archivo vhost.conf ubicado en xampp\apache\conf\extra.
1 <VirtualHost *:80>
2 DocumentRoot "C:/xampp/htdocs/wpv/public_html/web"
3 ServerName wpv.com
4 ServerAlias wpv.com
5 <Directory "C:/xampp/htdocs/wpv/public_html/web" >
6 Options All
7 AllowOverride All
8 Order allow,deny
9 Allow from all
10 </Directory>
11 </VirtualHost>
Figura C.11 Configuración de Servidor Virtual en Apache.
P á g i n a | 179
Anexo A
Tablas Comparativas de Tecnologías
En algunas tecnologías como por ejemplo los ORMs sobre Symfony, las diferencias
de rendimiento son poco notables y en otras como los motores de plantillas sobre Symfony,
la velocidad es un criterio poco influyente puesto que su transformación (a código PHP) sólo
se realiza una vez y a partir de entonces se guarda en cache obteniendo un desempeño
muy similar de todos los motores de plantillas.
Tomando en cuenta los tiempos y objetivos de esta tesis, los criterios más
influyentes para la selección de las tecnologías fueron aquellas que ofrecieran un tiempo
menor de desarrollo, la mayoría de ellas seleccionadas de acuerdo a una curva de
aprendizaje relativamente baja del resto, de acuerdo con una autoevaluación de los
conocimientos de los participantes antes de comenzar con la tesis. Otro criterio influyente
es que contaran con una amplia documentación y grandes comunidades activas. Estos
criterios seleccionados, ofrecen mayor garantía de soporte y mayor tiempo de “vida” sobre
las tecnologías utilizadas, además de reducción de costos tanto en tiempo como en
recursos humanos.
Sin embargo, somos conscientes (los participantes de esta tesis) de que las
exigencias de un sistema como este pueden llegar a crecer, y no descartamos en ningún
momento la migración hacia otra tecnología que ofrezca un mejor rendimiento. Esto justifica
tanto la arquitectura como la metodología seleccionada, las cuales están diseñadas para
soportar dichos cambios a futuro.
Estructurado, funcional,
MS orientado a objetos,
ASP.NET1 Propietaria Semicompilado
Windows concurrente, dirigido a
2002 bing.com, live.com, msn.com -- Media
eventos
Multi-
Go BSD Compilado
plataforma
Concurrente, imperativo 2009 google.com, soundcloud.com -- Media-Alta
Python
Software Multi- Funcional, imperativo, facebook.com, google.com,
Python Foundation
Interpretado
plataforma orientado a objetos
1991
youtube.com, blogger.com
-- Baja
License
1 Con Visual Basic.NET o C#. // 2 Java EE y/o JSP. // 3 En al menos uno de sus módulos o servicios. // 4 Según datos de craiglist.com, "--" significa menos del 1%. // 5 Basado
en una autoevaluación por parte de los desarrolladores de esta tesis de sus conocimientos al inicio del proyecto.
P á g i n a | 183
ramber.ru, wikipedia.org,
Nginx BSD Multi-plataforma 2002 tumblr.com, pinteres.com, 14.4% Media
wordpress.com
hotfile.com, youtube.com,
Lighttpd BSD Multi-plataforma 2003
thepiratebay.sx, meebo.com
0.4% Media-Alta
1 Apache HTTP Server. // 2 En al menos uno de sus módulos o servicios. // 3 Según datos de w3techs.com, "--" significa menos del 0.1%. // 4 Basado en una
autoevaluación por parte de los desarrolladores de esta tesis de sus conocimientos al inicio del proyecto.
P á g i n a | 184
Multi-plataforma
Dart BSD (Compilado a 2011 DN -- Media
JavaScript)
facebook.com, google.com.
Multi-plataforma
JavaScript BSD (ECMAScript)
(Navegador)
1995 Youtube.com, amazon.com, 89.2% Muy Baja
live.com, wikipedia.com
1 En al menos uno de sus módulos o servicios. "DN" Significa "Dato No disponible" // 3 Según datos de w3techs.com, "--" significa menos del 0.1%. // 4 Basado en una
autoevaluación por parte de los desarrolladores de esta tesis de sus conocimientos al inicio del proyecto.
P á g i n a | 185
GNU (Public
MariaDB Relacional
License)
Multi-plataforma 2009 wikipedia.org 6 Media-baja
foursquare.com, bit.ly,
MongoDB NoSQL GNU APGL Multi-plataforma 2009 sourceforce.net, 5 Media
shutterfly.com
facebook.com,
youtube.com,
GNU (Public
MySQL Relacional
License)
Multi-plataforma 1995 yahoo.com, 1 Muy Baja
wikepedia.org,
wordpress.com
Oracle
Relacional Propietario Multi-plataforma 1978 ebay.com 4 Media
Database
whitepages.com,
PostfreSQL License etsy.com,
PostgreSQL Relacional
(Open Source)
Multi-plataforma 1995
calorieKing.com,
3 Media
chicagocrime.org
1 En al menos uno de sus módulos o servicios. // 2 Según datos de las búsquedas realizadas en google.com obtenidos de google.trends.com (junio 2013) // 3 Basado
en una autoevaluación por parte de los desarrolladores de esta tesis de sus conocimientos al inicio del proyecto.
P á g i n a | 186
Número de Curva de
FRAMEWORK Licencia Plataforma Año
Popularidad2 aprendizaje 3
1 En al menos uno de sus módulos o servicios. // 2 Según datos de las búsquedas realizadas en google.com obtenidos de google.trends.com (junio
2013) // 3 Basado en una autoevaluación por parte de los desarrolladores de esta tesis de sus conocimientos al inicio del proyecto.
P á g i n a | 187
1 En al menos uno de sus módulos o servicios. // 2 Según datos de w3techs.com (junio 2013) // 3 Basado en una autoevaluación por parte de los
desarrolladores de esta tesis de sus conocimientos al inicio del proyecto.
P á g i n a | 188
Curva de
ORM Licencia Plataforma Año En Symnofy 2 Comunidad
aprendizaje 1
Doctrine MIT Multi-Plataforma 2008 Por defecto Muy Activa Muy Baja
1 Basado en una autoevaluación por parte de los desarrolladores de esta tesis de sus conocimientos al inicio del proyecto.
Curva de
ORM Licencia Lenguaje Año En Symnofy 2 Comunidad
aprendizaje 1
Twig BSD PHP 2008 Por Defecto Muy Activa Muy Baja
1 Basado en una autoevaluación por parte de los desarrolladores de esta tesis de sus conocimientos al inicio del proyecto. * Año
Aproximado de acuerdo al copyright de su versión 1.0
P á g i n a | 189
Anexo B
Aviso de privacidad.
Nombre y Apellidos.
Genero.
Dirección.
Dirección de correo electrónico.
Teléfono Local y móvil.
Nombre de su Empresa o Razón Social
Además de solicitar información que detalle el giro del negocio del USUARIO. La
EMPRESA S.A. pude llegar a solicitar información sensible como Números de Tarjetas de
Crédito, y Contraseñas para la manipulación del sistema, datos que serán tratados
mediante técnicas de encriptación que ofrezcan mayor seguridad al USUARIO.
Así mismo la EMPRESA S.A. puede utilizar la información correspondiente del flujo
de las operaciones realizadas por el USUARIO, como ventas y compras, así como la
información involucrada en la operación que detallen al servicio, al producto, los metadatos,
lugar y fecha de dichas operaciones.
Anexo C
Manifiesto por el Desarrollo Ágil de Software
Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la
izquierda.
Anexo D
Manual de usuario
https://github.com/serchserch/wpv/blob/master/src/Anexo%20D%20Manual%20de%20Usuario.d
ocx
P á g i n a | 193
Proyecciones a Futuro
Como pude observarse el POS representa sólo una de las tres piezas
principales que conformaran la gran plataforma enfocada a negocios dedicados al
comercio (principalmente minoristas), y que permitirá a nuestros clientes realizar
sus operaciones más comunes de manera fácil y rápida incluyendo todas las
ventajas de las aplicaciones basadas en tecnologías web.
P á g i n a | 194
CONCLUSIONES
__________________________________________________________________
Al seguir una metodología ágil permitió que su diseño fuese concebido para
proveer de una gran flexibilidad del sistema y permitir su escalabilidad a futuro de
una forma menos complicada. Es importante mencionar que la metodología es tan
flexible que no existe una guía establecida que mencione exactamente cuáles son
los pasos a seguir, puesto que su naturaleza es esa, la flexibilidad, lo cual permite
tanto a los desarrolladores como los analistas experimentar con métodos, fusionar
metodologías e intercambiar funciones para adaptarlos al sistema desarrollado.
¡GRACIAS!
.
.
P á g i n a | 198
Bibliografía
Documentos no periódicos
A. Meyer Eric. (2009). CSS: The Definitive Guide [CSS: La guía definitiva]. (3a ed.).
Estados Unidos de América: O’Reilly Media Inc.
Caivano R., Villoria L. (2009). Aplicaciones Web 2.0 para aplicaciones educativas
en la U.N.V.M. Cordoba, República Argentina: Eduvim.
Doyle M. (2009). Beginning PHP 5.3. [Comenzando con PHP 5.3.]. Estados Unidos
de América: Wrox.
Fowler M., Scott K. (1999). UML gota a gota (Jaime González V., David Morales
Peake trad.). Estados Unidos Mexicanos: Pearson.
López Quijado J. (2007). Domine Php y Mysql. (2a ed.). Barcelona, España: Ra-Ma.
M. Leiner B., et al. (2009). A Brief History of the Internet [Una Breve Historia Del
Internet]. Nueva York, Estados Unidos de América: ACM.
National Retail Federation. (2013). Unified POS [Punto de Venta Unificado]. Estados
Unidos de América: [s.n].
Pavón Puertas J. (2006). Creación de un Portal con Php y MySQL. (2a ed.). Estados
Unidos Mexicanos: Ra-Ma.
Porebski B., Karol P. (2011). Building PHP Applications with Symfony, CakePHP,
and Zend Framework [Construyendo una aplicación PHP con Symfony,
CakePHP y Zend Framework]. Indiana, Estados Unidos de América: Wiley
Publishing, Inc.
Shema M. (2012). Hacking Web Apps: Detecting and Preventing Web Application
Security Problems [Hacking de Aplicaciones Web: Detección y Prevención de
P á g i n a | 200
Publicaciones Gubernamentales
Páginas Web
A Brief History of SaaS [Una breve historia sobre el Software como Servicio]. (s.f.).
Recuperado el 20 de junio de 2013 de
http://www.computerworld.com/pdfs/Service-Now-BriefhistoryofSaaS.pdf.
April 2013 Web Server Survey [Encuesta de Servidores Web de Abril de 2013]. (02
de abril de 2013). Recuperado el 29 de abril de 2013 de
http://news.netcraft.com/archives/2013/04/02/april-2013-web-server-
survey.html.
HTML Standard by Ian Hickson (Google) [El Estándar HTML por Ian Hickson de
Google]. (s.f.). Recuperado el 06 de junio de 2013
http://www.whatwg.org/specs/web-apps/current-work/#is-this-html5?.
IBM solidDB 6.3 and IBM solidDB Universal Cache 6.3 Information Center. (s.f.).
Recuperado el 09 de junio de 2013 de
http://publib.boulder.ibm.com/infocenter/soliddb/v6r3/index.jsp?topic=/com.i
bm.swg.im.soliddb.sql.doc/doc/tables.rows.and.columns.html.
Internet Usage Statistics, Population and Telecom Reports for the Americas. (30 de
junio de 2012). Recuperado el 25 de junio de 2013 de
http://www.internetworldstats.com/stats2.htm.
PHP just grows & grows [PHP sólo crece y crece]. (31 de enero de 2013).
Recuperado el 04 de mayo de 2013 de
http://news.netcraft.com/archives/2013/01/31/php-just-grows-grows.html.
RFC 1180 A TCP/IP Tutorial [RFC 1180 Un Tutorial TCP/IP]. (Junio de 1991).
Recuperado el 25 de marzo de 2013 de
http://tools.ietf.org/html/rfc1180#page-12.
Team spirit agility counts [Espíritu de Equipo, la agilidad cuenta]. (20 de septiembre
de 2001). Recuperado el 23 de junio de 2013 de
http://www.economist.com/node/779429.
Web 2.0: Compact Definition? [La Web 2.0 ¿En una definición compacta?]. (01 de
octubre de 2005). Recuperado el 21 de junio de 2013 de
http://radar.oreilly.com/2005/10/web-20-compact-definition.html.