2. 1. DESCRIPCIÓN DEL PROBLEMA
Se trata de realizar una aplicación web para un restaurante, por medio de la cual pueda ofrecer sus
alimentos clasificados según el horario o el tipo (postre, bebida, desayuno, comida, cena). Los usuarios
del sistema serán tanto los clientes, como el administrador del mismo. Por su parte el administrador
debe tener obligadamente una cuenta para poder realizar las operaciones de agregar, eliminar y
actualizar los alimentos, así como poder enviar correos a los clientes. Mientras que los clientes podrán
visualizarlos alimentos por categorías, ver información de los mismos, agregarlos a su carrito de compra
y visualizar el estado del mismo en el momento que lo requieran, aunque deberán crear una cuenta de
usuario en el sistema con datos como: nombre, domicilio, teléfono, email y número de tarjeta, para
que puedan proceder a realizar el pago de su pedido.
2. METODOLOGÍA
La metodología de desarrollodesoftwarequeutilizaremosparadar soluciónal problema
planteado será la metodología XP (Xtreme Programming), la cual es una metodología de
desarrollo de la ingeniería de softwareformulada por KentBeck. Es el más destacado de
los procesos ágiles de desarrollo de software. Al igual que éstos, la programación
extrema sediferencia de las metodologías tradicionales principalmenteen queponemás
énfasis en la adaptabilidad que en la previsibilidad. Los defensores de la XP consideran
que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e
incluso deseable del desarrollo de proyectos. Creen que ser capaz de adaptarse a los
cambios de requisitos en cualquier punto de la vida del proyecto es una aproximación
mejor y más realista que intentar definir todos los requisitos al comienzo del proyecto e
invertir esfuerzos después en controlar los cambios en los requisitos.
3. 2.1 PLANEACIÓN
2.1.1 Historias de usuario
Historiade Usuario
Número: 1 Usuario: Administrador
Nombre historia: Creación de cuenta
Prioridad en negocio:
Alta
Riesgo en desarrollo:
Baja
Tiempo estimado 3 horas Fecha 18-Nov-2016
Programador responsable: Raúl, Luis, Benjamin
Descripción:
Se ingresara los datos personales para tener una cuenta con acceso al sistema, con permisos de
administrador.
Historiade Usuario
Número: 2 Usuario: Administrador
Nombre historia: Login
Prioridad en negocio:
Alta
Riesgo en desarrollo:
Baja
Tiempo estimado: 2 hrs. Fecha 18-Nov-2016
Programador responsable: Raul, Luis, Benjamin
Descripción:
Logearse al sistema como usuario administrador.
4. Historiade Usuario
Número: 3 Usuario: Administrador
Nombre historia: Alta-categoria
Prioridad en negocio:
Alta
Riesgo en desarrollo:
Baja
Tiempo estimado: 5 hrs. Fecha 18-Nov-2016
Programador responsable: Raul, Luis, Benjamin
Descripción:
Dar de alta una nueva categoría de alimentos que el restaurant incluirá en su menú del dia.
5. Historiade Usuario
Número: 4 Usuario: Administrador
Nombre historia: Baja-producto
Prioridad en negocio:
Alta
Riesgo en desarrollo:
Baja
Tiempo estimado: 5 hrs. Fecha 19-Nov-2016
Programador responsable: Raul, Luis, Benjamin
Descripción:
Añadir un nuevo producto indicando la categoría a la que pertenece.
Historiade Usuario
Número: 5 Usuario: Administrador
Nombre historia: Baja-categoria
Prioridad en negocio:
Alta
Riesgo en desarrollo:
Baja
Tiempo estimado: 2 hrs. Fecha 19-Nov-2016
Programador responsable: Raul, Luis, Benjamin
Descripción:
Dar de baja una categoría previamente dada de alta menú del dia.
6. Historiade Usuario
Número: 6 Usuario: Administrador
Nombre historia: Alta-producto
Prioridad en negocio:
Alta
Riesgo en desarrollo:
Baja
Tiempo estimado: 2 hrs. Fecha 19-Nov-2016
Programador responsable: Raul, Luis, Benjamin
Descripción:
Eliminar un producto dentro del sistema en general.
Historiade Usuario
Número: 7 Usuario: Administrador
Nombre historia: Baja-producto
Prioridad en negocio:
Alta
Riesgo en desarrollo:
Baja
Tiempo estimado: 2 hrs. Fecha 19-Nov-2016
Programador responsable: Raul, Luis, Benjamin
Descripción:
Eliminar un producto dentro del sistema en general.
7. Historiade Usuario
Número: 8 Usuario: Cliente
Nombre historia: Creación de cuenta
Prioridad en negocio:
Alta
Riesgo en desarrollo:
Baja
Tiempo estimado: 2 hrs. Fecha 21-Nov-2016
Programador responsable: Raul, Luis, Benjamin
Descripción:
Se ingresaran los datos personales para tener una cuenta con acceso al sistema con permisos
de cliente.
Historiade Usuario
Número: 9 Usuario: Cliente
Nombre historia: Login
Prioridad en negocio:
Alta
Riesgo en desarrollo:
Baja
Tiempo estimado: 2 hrs. Fecha 20-Nov-2016
Programador responsable: Raul, Luis, Benjamin
Descripción:
Logearse al sistema como usuario cliente
8. 3. Desarrollo
Para el presente proyecto utilizamos las siguientes tecnologías de desarrolloweb:
HTML
HTML es un lenguaje de marcas (etiquetas) que se emplea para dar formato a los documentos que se
quieren publicar en la WWW. Los navegadores son capaces de interpretar las etiquetas y mostrar los
documentos con el formato deseado.
Las páginas web o páginas HTML son unos cheros escritos en el lenguaje HTML . El desarrollo de estas
páginas abarca un amplio grupo de tecnologías, desde las páginas más sencillas que sólo usan el
lenguaje HTML hasta las más complejas que usan DHTML , CSS , JavaScript , applets realizados en Java
o componentes ActiveX .
El lenguaje HTML se basa en SGML , un sistema mucho más completo y complicado de procesamiento
de documentos que indica como organizar y marcar (etiquetar) un documento.
HTML se pueden diseñar usando texto con distintos tipos de letras o colores, imágenes, listas de
elementos, tablas, etc. Su modo de empleo es muy sencillo: se basa en el uso de etiquetas que indican
que elementos contiene cada página, el formato que hay que aplicar a cada uno de ellos y como se
tienen que distribuir por la página.
JAVASCRIPT
9. JavaScript es un lenguaje de programación interpretado, dialecto del estándar ECMAScript, se define
como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinamico.
Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un
navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas, aunque existe
una forma de JavaScript del lado del servidor.
Su uso en aplicaciones web, por ejemplo en documentos PDF, aplicaciones de escritorio.
Un programa en JavaScript seintegra en una paginaWeb y es el navegador el que lo interpreta (ejecuta).
Es decir el JavaScript es un lenguaje interpretado, no compilado (no se genera ningún tipo de fichero
objeto o .exe).
Todos los navegadores modernos interpretan el codigo JavaScript integrado en las paginas web. Para
interactuar con una pagina web se provee al lenguaje JavaScript de una implementación del Document
Object Model (DOM).
CSS
Las hojas de estilo o CSS, por Cascading StyleSheets son un mecanismo que permiten aplicar formato a
los documentos escritos en HTML o XHML (y en otros lenguaje estructurados, como XML) separando el
contenido de las paginas de su apariencia. Esto significa que la información estará contenida en la
pagina HTML, pero este archivo no debe definir como será visualizada esa información, sino la hoja de
estilos asociada a el.
Junto con HTML y JavaScript, CSS es una tecnología usada por muchos sitios web para crear páginas
visualmente atractivas, interfaces de usuario para aplicaciones web, y sus GUIs para muchas
aplicaciones móviles.
CSS esta diseñado especialmente para marcar la separación del contenido del documento y la forma de
presentación de este, características tales como las capas o layout, los colores y las fuentes.
Esta separación busca mejorar las accesibilidad del documento, proveer mas flexibilidad y control en la
especificación de características presentacionales, permitir que varios documentos HTML compartan
un mismo estilo usando una sola hoja de estilos separada en un archivo .css y reducir la complejidad y
la repetición de codigo en la estructura del documento.
La especificación CSS describe un esquema prioritario para determinar que reglas de estilo se aplican si
mas de una regla coincide para un elemento en particular. Estas reglas, aplicadas con un sistema
llamado en cascada, las prioridades son calculadas y asignadas a las reglas, asi que los resultados son
predecibles.
Node.js
Node.js es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del
servidor (pero no limitándose a ello) basado en el lenguaje de programación ECMAScript, asíncrono,
con I/O de datos en una arquitectura orientada a eventos y basado en el motor v8 de Google, fue creado
10. con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo,
servidores web.
Como se mencionó anteriormente Node.js está basado en el motor V8 de JavaScript de Google, este
motor esta diseñado para correr en un navegador y ejecutar el codigo de JavaScript de una forma
extremadamente rápida.
La tecnología que esta detrás de Node.js permite ejecutar este motor en lado del servidor, para en ello
el entorno de Node.js ha desarrollado un conjunto amplio de librerías que no tienen nada que envidiar
a otras plataformas, por otro lado se han eliminado algunas funcionalidades que en el entorno de
servidor no tenían sentido como por ejemplo el uso de Document Objet Model.
JSON
JSON acrónimo de JavaScript Object Notation, es un formato de texto ligero para el intercambio de
datos. JSON es un subconjunto de la notación literal de objetos de JavaScript aunque hoy, debido a su
amplia adopción como alternativas a XML, se considera un formato de lenguaje independiente.
Las ventajas de JSON sobre XML como formato de intercambio de datos es que es mucho mas sencillo
escribir un analizador sintáctico de JSON. En JavaScript.
Los tipos de datos disponibles con JSON son:
Números: se permiten números negativos y opcionalmente pueden contener parte fraccional
separadapor puntos.
Cadenas: representan secuencias de cero o más caracteres, se ponen entre doble comilla y se
permitencadenasde escape.
Booleanos: representan valores booleanos y pueden tener valores los cuales pueden ser de
cualquiertipo.
JADE
Jade es un sistema para generación de plantillas HTML hecho para trabajar con NodeJS y que puede
usarse como lenguaje para prototipado.
Jade utiliza un metalenguaje casi mecanografiado basado en la notación de HTML que ha sido
simplificado para ser breve, conciso y fácil.
Jade se encarga de generar codigo HTML bien formado, también se puede utilizar variables y
condicionales de JavaScript para generar codigo HTML según su configuración.
Jade puede er una herramienta útil para prototipar y generar codigo para prototipos funcionales
usando como guía los bocetos y prototipos en papel, los archivos de Jade son compactos, fáciles de leer
por humanos y es muy sencillo editarlos y compartirlos.
Lo mejor es que el HTML generado por Jade puede integrarse después al codigo en producción con
poco esfuerzo, ya que su salida es de alta calidad y es compatible con otras librerías y frameworks que
se usan en desarrollo web como Bootstrap, JQuery o AngularJS entre otros.
PostgreSQL
PostgreSQL es un Sistema de gestión de bases de datos relacional orientado a objetos y libre,
publicado bajo la licencia PostgreSQL,1 similar a la BSD o la MIT.
Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una
empresa o persona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma
11. desinteresada, altruista, libre o apoyados por organizaciones comerciales. Dicha comunidad es
denominada el PGDG
Algunas de las principales características son, entre otras:
Alta concurrencia
Mediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus siglas en
inglés) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma
tabla sin necesidad de bloqueos. Cada usuario obtiene una visión consistente de lo último a lo que se
lehizo commit.Estaestrategiaes superior al uso de bloqueos por tabla o por filas común en otras bases,
eliminando la necesidad del uso de bloqueos explícitos...
Amplia variedad de tipos nativos
PostgreSQL provee nativamente soporte para:
Números de precisión arbitraria.
Texto de largo ilimitado.
Figuras geométricas (con una variedad de funciones asociadas).
Direcciones IP (IPv4 e IPv6).
Bloques de direcciones estilo CIDR.
Direcciones MAC.
Arrays.
Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que pueden ser por
completo indexables gracias a la infraestructura GiST de PostgreSQL. Algunos ejemplos son los tipos
de datos GIS creados por el proyecto PostGIS.
Ventajas
-Seguridad en términos generales
-Integridad en BD: restricciones en el dominio
-Integridad referencial
-Afirmaciones (Assertions)
-Disparadores (Triggers)
-Autorizaciones
-Conexión a DBMS
-Transacciones y respaldos