La evolución del software surge y se desarrolla
paralelamente a la evolución del hardware adaptándose circunstancialmente para
cubrir las necesidades de los usuarios, corregir errores u omisiones de los
programadores y adaptarlos a las nuevas tecnologías.
Las constantes modificaciones a los que los productos
software han sido sometidos permitió el surgimiento de las denominadas
“versiones” que servían principalmente para que los sistemas aprovecharan al
máximo los recursos físicos con los que disponían; al principio todo este
proceso se realizaba bajo el control de los desarrolladores sin el uso de los
procedimientos estandarizados con los que hoy se trabaja, no existían las fases
de la ingeniería de software por lo tanto no se contaba si quiera con una
planeación estructurada, todo era especificado mientras el proyecto se
desarrollaba.
Gracias al incremento en la demanda de soluciones software
en el mercado aparecieron las hoy llamadas “casas de software” que comenzaron a
desarrollar una familia de productos que por lo general compartían
características graficas o de uso como es el caso de la paquetería de Office,
también aparecieron sistemas operativos cada vez más complejos como es el caso
de Windows y MAC OS.
En las últimas décadas la automatización de más actividades
y procesos ha permitido un incremento en el desarrollo sistemas especializados
que incluso conllevan al desarrollo de nuevos elementos hardware.
Fuentes
Miguel Angel Sicilia. (208). Evolución del Software [archivo PDF]. OpenStax-CNX.
Recuperado de http://cnx.org/exports/77a12d95-3a5e-4a64-a4c7-cc0805d38f24@3.pdf/evoluci%C3%B3n-del-software-3.pdf
Eder Chavez Acha. (2013). Historia y evolución del software [archivo PDF]. Wordpress.
Recuperado de https://ederchavezacha.files.wordpress.com/2013/02/historia-y-evolucic3b3n-del-software.pdf
Podemos definir a un CASE como una herramienta software,
individual o parte de una paquetería, la cual principalmente automatiza
procesos, metodologías y actividades específicas de alguna de las fases o de
todo el ciclo que comprende el desarrollo de una solución software.
Existen diversas formas en las que los CASE son empleados
como en la distribución de actividades, administración de horarios,
especificación de requerimientos o captura de definiciones y conceptos. Para
tareas más enfocadas al desarrollo estos brindan apoyo para la diagramación de
procesos e inclusive para la generación de códigos de manera automática,
también se cuenta con aplicaciones que logran reconstruir programas o
adaptarlos a nuevos requerimientos en base a la ingeniería inversa o
reingeniería.
Las herramientas CASE logran agilizar y estructurar las
actividades deben llevarse a acabo para la creación de proyectos basándose en
el principio de que debe realizarse desde la perspectiva de la ingeniería,
respetando metodologías, normas y estándares.
Fuentes:
·Jeferey, L.W. (1996). Análisis y diseño de sistemas de información. (3era ed). Mc
Graw-Hill.
·Universidad Politécnica de Valencia. Metodología y Tecnología de la Programación.
Recuperado de: http://users.dsic.upv.es/asignaturas/eui/mtp/doc-practicas/intro_case_SA.pdf
La metodología RAD comprende
el desarrollo interactivo, la construcción de prototipos y el uso de utilidades
CASE.
La metodología RAD surge como predecesora a las metodologías
ágiles y con ella se desarrollaron distintas herramientas automatizadas basadas
en sus características y beneficios.
Una de estas herramientas es
GitHub la cual es una plataforma de desarrollo colaborativo para alojar
proyectos utilizando el sistema de control de versiones Git..
El proyecto a desarrollar es
una aplicación móvil para sistema operativo Android la cual permita visualizar
el menú y platillos de la cafetería de la UPIICSA así como habilitar una
valoración con estrellas (1 a 5) y comentarios para cada platillo.
La metodología RAD se aplica
al elaborar los modelos de gestión, proceso y datos comprendidos dentro de la
estructura, así como el desarrollo iterativo y la generación de prototipos y el
uso de varias herramientas CASE.
GitHub es usado como la
plataforma para el desarrollo iterativo y colaborativo del proyecto, creando
además varios branch que se ajustan a el trabajo por módulos de RAD.
Índice
Metodología RAD.4
Herramientas usadas.4
Fases del Proyecto. 5
Generación de la
aplicación con el uso de GitHub.15
RAD significa por sus siglas en inglés: rapid
application development.
El método comprende el desarrollo interactivo, la
construcción de prototipos y el uso de utilidades CASE (Computer Aided Software
Engineering). Tradicionalmente, el desarrollo rápido de aplicaciones tiende a
englobar también la usabilidad, utilidad y la rapidez de ejecución.
La metodología comprende entre sus elementos cuatro
componentes importantes, la definición de los requerimientos, el diseño o
realización de prototipos, la codificación y el testing.
Finalmente podemos definir que la metodología
comprende ciertas etapas consecutivas iniciando por el modelado de gestión,
modelado de datos y de procesos, siguiendo con la generación de las
aplicaciones y la aplicación de pruebas a estas, todo esto en un periodo de
entre 60 y 90 días.
Herramientas usadas.
RAD hace énfasis en el uso de herramientas CASE y de
desarrollo visual para agilizar los procesos y actividades que tengan que ver
con el desarrollo general del proyecto, algunas de las herramientas utilizadas
para este proyecto fueron:
Git: es un software de control
de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la
confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas
tienen un gran número de archivos de código fuente. Su propósito es llevar
registro de los cambios en archivos de computadora y coordinar el trabajo que
varias personas realizan sobre archivos compartidos.
GitHub: es una plataforma de
desarrollo colaborativo para alojar proyectos utilizando el sistema de control
de versiones Git. Se utiliza principalmente para la creación de código fuente
de programas de computadora. El software que opera GitHub fue escrito en Ruby
on Rails. Desde enero de 2010, GitHub opera bajo el nombre de GitHub, Inc.
Anteriormente era conocida como Logical Awesome LLC. El código de los proyectos
alojados en GitHub se almacena típicamente de forma pública, aunque utilizando
una cuenta de pago, también permite hospedar repositorios privados.
StarUML: Es muy útil para la
creación de diseños y diagramas UML. Mediante una interfaz sencilla, se pueden
crear diagramas de clases, uso, secuencias, composición, y componentes, entre
otros.
Adobe
illustrator CS6: Es un editor de gráficos
vectoriales en forma de taller de arte que trabaja sobre un tablero de dibujo,
conocido como «mesa de trabajo» y está destinado a la creación artística de
dibujo y todo tipo de ilustraciones.
Fases del Proyecto
Planeación.
La problemática
consiste en la ignorancia de los platillos que conforman el menú general y los
eventuales menús del día de la cafetería “come y piensa” de la UPIICSA la cual
únicamente muestra su menú en al interior. Los estudiantes y trabajadores
demuestran preferir salir de las instalaciones a comer ya que de los negocios
del exterior conocen ampliamente la oferta de alimentos.
Secundariamente
el problema de nivel de satisfacción de los clientes en cuanto a algunos
platillos ha generado opiniones variadas en cuanto a la calidad de estos, así
como la justificación de sus precios.
Por lo tanto, se
define como solución la creación de una aplicación móvil para sistema operativo
Android que muestre los menús del día de la cafetería así como los platillos y
que permita la valoración tipo cinco estrellas y comentario de cada uno de los
platillos.
Caso de uso.
Requerimientos
funcionales
●Consulta de menú general de la cafetería
●Consulta de menú del día de la cafetería
●La aplicación funcionará sobre la plataforma Android
●Alojamiento del servidor en digital ocean
●Conexión a base de datos
●Relacionar comentarios tipo muchos a uno a un platillo del
menú
●Uso de la aplicación sin necesidad de registro de usuario
●Para realizar un comentario no se necesita registro
Requerimientos no funcionales
●Análisis de comentarios para evitar spam
●Análisis de comentarios para evitar ofensas
●Respuesta del servidor en tiempo real
●Teléfonos con versión Android superior a la 5.0 (Lolipop)
●Uso de Framework Phoenix para la aplicación web
●Peso de la aplicación deberá ser menor a 50 Mb
Análisis
Diferentes cafeterías cuentan con sistema que mejora la eficiencia y
productividad, pero al momento de organizar por categorías en ocasiones se
puede tornar algo complicado y decrementa las ganancias, la manera más sencilla
es contar con un apoyo ya sea un nuevo sistema o en otro caso tener un
excelente manejo de alguna herramienta que cuente con las características que
se buscan para cumplir con los requerimientos y los objetivos que se plantean
inicialmente con la finalidad de cumplir con dichas metas, primero es necesario
definir los alcances y como se utilizará una base de datos es importante
definir de manera apropiada los campos con los que se va a trabajar, organizar
la comida y los platillos en pocas categorías para hacer más entendible y claro
las opciones con las que se cuentan y de ésta manera elegir la mejor opción.
En primera instancia la forma de organizar el menú consiste en desayuno en
diferentes presentaciones, dentro del cual tienes la opción de escoger entre
diferentes platillos y acompañarlo con fruta o jugo y en la cuanto a bebidas
café o té, en el horario de la comida se cuenta con múltiples platillos cada
uno tiene de manera específica y clara el precio, o bien elegir entre un menú
con un precio determinado previamente, así como añadir un postre. Y en la
última categoría se encuentran los antojitos y snack que son los platillos
ligeros o más rápidos de entregar entre ellos podemos encontrar, hamburguesas,
quesadillas, entre otros.
El procedimiento es el siguiente al momento de entrar y elegir lo que se
comprará el primer paso es pagar en la caja te proporcionan un ticket,
posteriormente llevas dicho ticket a la barra y esperas unos minutos a qué tu
pedido sea completado, la deficiencia de dicho procedimiento es que si
cualquier usuario se encuentra en algún edificio lejano de la cafetería se
complicaría ir para saber el menú del día por tal razón dicho proyecto se
enfoca en reducir tiempos y mantener al usuario al tanto del menú del día, y de
no contar con la comida de su preferencia no es necesario que se desplace hasta
la cafetería para conocer dicha información.
Implementaremos una opción para que si tienes un consumo frecuente cada dos
meses aplicas para una comida gratis, con el fin de tener un plus contra la
competencia y contar con un espacio cómodo para que los alumnos puedan comer
sus almuerzos o refrigerios
Desayunos
Platillo
Jugo o Fruta
Café o té
Menú predeterminado
Menú de $50
Menú de $60
Comidas
Enchiladas
Ensaladas
Pechuga de pollo
Antojitos y Snacks
Hamburguesas
Sándwich
Quesadillas
Tortas
Hot Dog
Diagrama
de secuencia
Diagrama de login.
Diagrama de subir
una reseña
Diagrama de
calificación de platillo
Diseño
Se generan diseños de pantalla sobre el aspecto
preliminar y funciones con las que contará la aplicación, así se desarrolla el
primer prototipo para instalar el proyecto en un dispositivo.
Este diseño está claramente sujeto a cambios futuros
tras las revisiones, iteraciones en el avance o cambio de funciones y
requisitos.
También se diseño el logotipo de la aplicación,
utilizando el nombre de la cafetería: “Come y Piensa”:
El logotipo está compuesto por varios elementos, al
centro un círculo que podría simular la forma de un plato, con sus cubiertos a
un lado. Dentro del círculo hay varios alimentos lo que nos indica que en la
cafetería de la UPIICSA podemos encontrar una gran variedad de comida, para
todo tipo de gustos. El color principal del logotipo es el naranja,
específicamente es:
#FF9900
R: 255G:153B:0
De igual manera, se hizo el diseño del menú del día,
el cual va aparecerdentro de la
aplicación.
Modelado de
gestión.
Modelado de
datos
La aplicación manejara y almacenará una gran cantidad
de información, ya que tendría una gran cantidad de usuarios (los estudiantes
de la UPIICSA), por eso es importante mostrar la forma en que estarán
almacenados los datos.
La aplicación constará únicamente de dos clases: alumno y supervisor. El alumno
tiene la opción de registrarse en la aplicación por lo tanto, si decide
registrarse tendría los atributos que se indican en el diagrama. Tiene tres
métodos para registrarse, ver el menú disponible en la cafetería cada día, y
para calificar los alimentos de la cafetería por medio de comentarios.
Del supervisor únicamente es necesario conocer el id. Y cuenta con tres métodos
para subir el menú de cada día, ver el menú que se ha subido y para poder
visualizar los comentarios que han puesto los alumnos.
Modelado de
proceso.
Es necesario comprender que es un modelo de procesos,
el cual se explicará a continuación.
Está conectado con las pruebas que se realizan para
ver las posibilidades que trae cada proceso. Permite un conocimiento más
profundo de las pruebas y los resultados, estableciendo un sólido comienzo para
la optimización de procesos, por lo que es posible y más fácil de ver los
obstáculos y puntos ineficientes. De igual manera, un modelo de procesos es utilizado
por la mayoría de las empresas, esto para realizar una abstracción de todos los
procesos que se deben seguir.
En dicho proyecto utilizamos BPMN (Business Process
Modeling Notation (BPMN).) que es una notación gráfica estandarizada que
permite el modelado de procesos de negocio, en un formato de flujo de trabajo
(workflow).
El objetivo principal de BPMN es proporcionar una
notación que pueden comprender de inmediato todos los usuarios del negocio,
desde los analistas de negocio que crean los borradores iniciales de los
procesos, hasta los desarrolladores técnicos responsables de la implementación
de la tecnología que realizará estos procesos.Otro objetivo es asegurar que los
lenguajes XML diseñados para la ejecución de procesos de negocio, tales como
BPEL4WS (Business Process Execution Language for Web Services) y BPML (Business
Process Modeling Language), puedan visualizarse con una notación común.
Nuestra aplicación contará con múltiples fases, las
cuales deben de ser optimizadas en procesos, esto servirá para un mejor manejo
de la información, así como una mejor comprensión de estos, logrando que sea
entendible para cualquier persona.
Se mostrarán los procesos por los cuales pasará la
aplicación para que le usuario pueda acceder a la aplicación y pueda
interactuar con esta.
Generación de la aplicación con el
uso de GitHub.
Generación del repositorio
Con la cuenta de Aquiles se generó el repositorio en
la plataforma de GitHub en la cual después de crear el repositorio es agregar a
los cuatro integrantes en como colaboradores del proyecto para así poder
generar los branches y generar lo que es el esqueleto de la aplicación.
●Inicialización de un
repositorio
Después
de generar nuestro repositorio en GitHub en el entorno git usamos el comando
git clone junto con la URL que nos proporciona la plataforma es:
git@github.com:Aquiles2016601505/Cafeteria-UPIICSA.git para que el
comando quede de la siguiente manera:
después de poder generar nuestros archivos ya al
ingresar a la carpeta de trabajo ya tendremos el repositorio listo para
trabajar y crear nuestra aplicación.
Por el lado de android studio después declonar nuestro repositorio habrá que hacer un
nuevo proyecto sobre android studio y que su carpeta de raiz del proyecto sea
la carpeta que nos genera git para guardar nuestros documentos.
Después ya que se genero el esqueleto básico de la
aplicación se tendrá que que ir a la línea de comandos git y generar nuestros
primer commit a master
para esto es necesitamos ejecutar los siguientes
comandos
git
add .
git
commit -m”boiler plate”
git
push origin master
haciendo mención a que se usa la palabra origin para
poder actualizar el repositorio de GitHub junto con el repositorio local.
●Creando la arquitectura MVP
El presentador
El presentador es responsable de actuar como
intermediario entre la vista y el modelo. Recupera datos del modelo y lo
devuelve formateado a la vista. Pero a diferencia del MVC típico, también
decide qué sucede cuando se interactúa con la vista.
La vista
La vista, generalmente implementada por una Actividad
(puede ser un Fragmento, una Vista ... dependiendo de cómo esté estructurada la
aplicación), contendrá una referencia al presentador. El presentador será
idealmente proporcionado por un inyector de dependencia como Dagger.
Lo único que llamará la vista es del presentador cada
vez que hay una acción de interfaz (un clic de botón, por ejemplo).
El modelo
En una aplicación con una buena arquitectura en capas,
este modelo solo sería la puerta de entrada a la capa de dominio o lógica de
negocios. Si utilizáramos la arquitectura limpia del Tío Bob, el modelo
probablemente sería un interactor que implemente un caso de uso.
●Creandos Branches
Para
la creación de branches se utilizan los comandos git checkout -b [nombre de la
rama] de las cuales nuestro proyecto por funcionalidad se integra en tres
módulos que son el sign In , menu shop y send review en los cuales se establece
las pantallas de inicio de sesión, la pantalla principal y el enviar la reseña
de un platillo.
para
que al subir las versiones el proyecto se quede organizado de la siguiente
manera.
●Hacer merge
Después
de que ya se trabajó sobre el modelado de las vistas y agregar los componentes
es hora de hacer un merge de las ramas para conjuntar y mandarlo al entorno de
producción(master)
los comandos a usar son git merge [nombre de la rama a
fusionar] para que se puedan utilizarpor lo que el grafo quedó de la siguiente manera
●Definir siguiente iteraciones
Ya
que solo se en la primera iteración se generó lo que son las vistas y muy poca
funcionalidad en la versión actual se vuelve a crear esas tres ramas y se
pueden seguir trabajando en lo que son las siguientes modulos que es ya
conectar la aplicación con un servicio web que se encargue de mandar las
peticiones para saber el menú de la cafetería y poder consultar si hay nuevos
productos en la cafetería disponibles
CONCLUSIONES
La elaboración de proyectos mediante la
metodología RAD comprende un trabajo iterativo que permite realizar cambios
inmediatos y detectar fallas o ausencias en los modelos generados y ajustarlos.
Otro factor que remarca RAD es el uso de herramientas CASE lo cual facilita
mucho todo tipo de actividades y como hoy en día algunas de estas permiten un
trabajo colaborativo online el desarrollo de los proyectos por equipos es más
fructuoso.
Para este proyecto se hace uso de la
herramienta GitHub, esta cumple con elementos de RAD, pero para poder
desarrollar mejor la aplicación se utiliza Android Studio que además tiene
opciones para trabajar con repositorios GutHub.
El desarrollo de aplicaciones o soluciones
informáticas haciendo uso de la metodología RAD nos permite un trabajo
iterativo y ágil que se ajusta fácilmente a las necesidades de los clientes o
del proyecto mismo.