Desenvolvimento de uma Plataforma Web de Gestão de Restauração César Meira Mestrado em Engenharia Informática, 30538, [email protected] Jorge Freitas Mestrado em Engenharia Informática, 30549, [email protected] Emanuel Peres Escola de Ciências e Tecnologia, Departamento de Engenharias, [email protected] Luís Magalhães Escola de Ciências e Tecnologia, Departamento de Engenharias, [email protected] Maximino Bessa Escola de Ciências e Tecnologia, Departamento de Engenharias, [email protected] Este projeto descreve uma plataforma web para a gestão de empresas de restauração, cujos os objetivos se baseiam em permitir ao gestor um melhor controlo e decisão. Disponibiliza estatísticas e informação útil para a tomada de decisão, contribui para uma melhor gestão do pessoal e das encomendas, e melhora a eficácia no atendimento dos clientes através da redução do tempo de espera, isto é, o cliente pode fazer o seu próprio pedido num quiosque multimédia. O pedido é executado de forma rápida, intuitiva e fluida, demorando o menor tempo possível. A plataforma tem como objetivos: (1) a diminuição dos tempos de espera de atendimento, permitindo aos clientes efetuarem o seu próprio pedido de modo fácil e rápido, através de um quiosque multimédia, (2) permitir a gestão de utilizadores com diferentes níveis de acesso e privilégios, (3) ser uma plataforma segura, restringindo o acesso por grupos, (4) possibilitar a gestão de produtos e divisão por categorias, (5) criação de menus e atribuição a dias, com possibilidade menus diferentes para almoço e jantar, (6) permitir a consulta e edição de encomenda, (7) disponibilizar multilinguagem na plataforma e (8) permitir a ativação e desativação de módulos, possibilitando a cada estabelecimento utilizar a plataforma como preferir. Introdução Estado da Arte A aposta nas novas tecnologias e a ideologia do rápido e fácil, consequentemente o pensamento constante e inevitável da falta de tempo tem vindo a estar cada dia que passa mais presente nas nossas atitudes e hábitos, desta forma, com o intuito de superar as expectativas dos clientes, para que os mesmos se sintam importantes e respeitados, é importante arranjar uma solução para quem quer fazer uma refeição rápida. Inspirado nesse mesmo problema, ajudando as empresas de restauração a consolidar a liderança no segmento de self-service, foi desenvolvida uma plataforma web protótipo com o objectivo de facilitar o serviço de restauração de modo que a principal preocupação seja o pedido do cliente. Para o desenvolvimento deste projeto optou-se pela utilização de tecnologias OpenSource. A linguagem de desenvolvimento da plataforma Web foi php[4], “PHP: Hypertext Preprocessor", contudo, para que fosse feita uma plataforma segura e bem estruturada foi optada a utilização da tecnologia Zend Framework [1], que possibilita a criação de uma plataforma Web em MVC “Model-View-Controller” promovendo assim melhores práticas de programação e mantendo uma estrutura completamente separada e organizada, ou seja, o modelo isola a lógica da aplicação da interface do utilizador, sendo assim mais fácil de gerir e controlar. Para o sistema de gestão de base de dados foi utilizado igualmente tecnologia OpenSource, neste caso MySQL[2] que utiliza a linguagem SQL “Linguagem de Consulta Estruturada” como interface. MySQL[2] é uma plataforma de excelente desempenho e estabilidade, pouco exigente a nível de recursos de processamento, fácil de usar e obviamente possui compatibilidade com PHP[4]. e não se encontra disponível para outros restaurantes. Exemplo: Foi utilizado também o jQuery[3], uma tecnologia OpenSource, que é uma biblioteca JavaScript rápida e concisa permitindo simplificar o desenvolvimento para a web, jQuery[3] sem sombra de dúvidas revolucionou a maneira como se escreve Javascript, estendendo-se muito além do que se pode imaginar, a manipulação de eventos, CSS, assim como a utilização de efeitos, animações e a interação através de Ajax é simplificada de forma significativa. Com a utilização desta tecnologia é evidente o aumento da produtividade, pois permite a reutilização de código através de plugins, reduzindo assim o código necessário. Como é uma tecnologia OpenSource, dispõe de plugins criados por outros programadores. Resumindo, é uma biblioteca completa, sem deixar a simplicidade e facilidade de utilização de lado. Antes de ser iniciado o desenvolvimento do projeto foi feito um trabalho de pesquisa e estudo de mercado relativamente a aplicações já desenvolvidas neste contexto. Durante essa pesquisa foram encontradas várias aplicações ligadas à área de restauração, contudo e felizmente para nós, as aplicações desenvolvidas existentes são essencialmente para utilização do estabelecimento, permitindo várias funcionalidades de gestão e controlo mas para uso exclusivo dos funcionários e gestores como exemplo a WinRest Pro, Figura 1. Figura 2 - Aplicação do MacDonalds Fonte: http://4.bp.blogspot.com/HYEn9iqhvzg/TdFwnM1ZOZI/AAAAAAAALY/VR6oEdZ5Ml8/s1600/mc+machine.jpg Através do trabalho de campo, necessário para nos ambientarmos no mercado existente, de todos os projetos que foram encontrados nenhum deles tinha uma ambição e amplitude como este, fazendo assim com que este projeto seja original. É claro que serviram de inspiração como também de complemento para ideias adicionais de melhoração do sistema. Este projeto marca a diferença pois a plataforma desenvolvida é abrangente, ampla e configurável de acordo com o estabelecimento, sendo facilmente ajustável a vários tipos de restauração, como Fast-Food, bares, restaurantes tradicionais, etc. não só a nível nacional como internacional, pois permite multi-idioma nos produtos e até mesmo na própria plataforma. Arquitetura proposta Figura 1 - Aplicação WinRest Fonte: http://www.winrest.pt/produto.ud121?oid=4660&c_oid=-141 Foi encontrado uma outra aplicação e esta sim já semelhante com este projeto, o self-service digital da MacDonalds, Figura 2, que permite aos clientes fazerem o seu próprio pedido de maneira rápida, contudo essa aplicação foi desenhada para uso exclusivo da MacDonalds Como o projeto consiste no desenvolvimento de uma plataforma Web em MVC, Figura 3, com o objectivo de ser essencialmente rápida e segura, é necessário que o estabelecimento disponha de uma rede interna. É exigido também um servidor para alojar a aplicação juntamente com a base de dados e respetivos terminais para se aceder à plataforma, como quiosque com ecrã táctil, leitor de cartões, emissor de talões, para o cliente e funcionário, tablets, e computadores. colocando restrições consoante o grupo a que o utilizador da plataforma pertence, não permitindo o acesso a páginas onde os utilizadores não são autorizados. Protótipo desenvolvido Figura 3 - Funcionamento Plataforma MVC A aplicação é dividida em Front-Office e Back-Office. O Front-Office é designado para funcionalidades que estejam relacionadas com o cliente, neste caso a criação do pedido e o seu tratamento por parte do funcionário, assim sendo, o Front-Office é dividido em dois módulos. Um dos módulos diz respeito à criação de pedidos, que poderá ser acedida pelo terminal disponibilizado ao cliente, de modo que este tenha a possibilidade de efetuar o seu próprio pedido, ou então, por um terminal pertencente ao funcionário, como tablet ou mesmo um quiosque no balcão em que somente o funcionário tenha permissões de aceder, pois caso um cliente não esteja registado ou prefira fazer o pedido através do funcionário tenha sempre essa possibilidade. Quando o módulo é acedido por um funcionário não haverá limitação dos produtos como existe para os clientes, ou seja, todos os produtos estarão disponíveis para aquisição. O outro módulo do nosso FrontOffice refere-se ao tratamento de pedidos, que será acedida unicamente por um terminal do funcionário, nesse módulo será possível visualizar todos os pedidos das últimas 24 horas e filtrar essa informação para uma consulta mais rápida e focada. O funcionário poderá ainda tratar a encomenda, marcando os produtos que foram entregues até que esta fique concluída. O back-office é utilizado para o gerenciamento de toda a plataforma, permite ao administrador gerir os seus clientes, funcionários, e até mesmo os produtos do seu estabelecimento. É possível limitar a disponibilidade de produtos, como os menus, consoante uma agenda tornando os produtos disponíveis apenas em certas ocasiões. É permitido também selecionar os produtos que estarão disponíveis no módulo de self-service, desligar certos módulos da plataforma como a agenda por exemplo, fazendo que os menus estejam disponíveis sem necessidade de verificação da agenda. É também fornecido estatísticas de venda. Como pretendemos uma plataforma segura é necessária uma identificação inicial, antes de aceder a algum módulo, no módulo do self-service será feito a partir da leitura de um cartão de cliente, nos restantes módulos será necessário iniciar sessão através do nome de utilizador e a respetiva palavra-chave. A plataforma possui controlos de acesso, Antes de começar a desenvolver aplicação foi necessário ter uma ideia de como todo o sistema iria funcionar, definindo assim o que se espera que a plataforma faça, assim sendo, começou-se pela criação dos diagramas de caso de uso descrevendo um cenário que mostra as principais funcionalidades, diagrama entidade relação, Figura 4, que descreve o modelo de dados de um sistema com alto nível de abstração, e diagrama de estados representando os estados ou situações em que o objeto se pode encontrar no decorrer da execução do sistema. Para esta etapa do projeto foram utilizadas as aplicações StarUML[5] e MySQL WorkBench. Figura 4 - Diagrama Entidade Relação Com o decorrer do projeto foi necessário redesenhar várias vezes a especificação à medida que as ideias iam fluindo, de forma que o sistema consiga suportar todas as funcionalidades pretendidas como multi-idioma, menus, agendação de menus e configuração de módulos. Devido ao facto de não se estar familiarizado nem com a linguagem nem com as tecnologias utilizadas para o desenvolvimento do projeto, o desenvolvimento da plataforma tornou-se assim mais difícil. Foi necessário um estudo prévio da Zend Framework [1], pois este é bastante completo e era necessário compreender ao máximo essa plataforma de forma que fosse possível aproveitar ao máximo todas as suas potencialidades. Durante o desenvolvimento da plataforma a atenção foi mais focada no desenvolvimento do módulo de pedido do cliente, pois esta seria a principal funcionalidade da aplicação marcando a diferença sobre as restantes aplicações concorrentes. Começou-se por desenvolver os modelos necessários para a plataforma e respetivos controladores, isto é a lógica da aplicação, depois partiu-se para a interface do utilizador, onde são exibidos os dados. Para a criação de grupos de utilizadores e definição de controladores que cada grupo pode aceder utilizou-se a zend_acl, uma classe da Zend Framework [1], assim, antes de aceder a qualquer ação do controlador haverá uma verificação de autenticação, conferindo se o utilizador está autenticado e se o grupo ao qual ele pertence tem permissões para aceder a esse mesmo controlador, tornando assim a plataforma mais segura. Todas as informações do pedido tal como variáveis de autenticação são guardadas numa variável de sessão, para isso utilizámos o zend_session. O protótipo desenvolvido é composto por 3 controladores, controlador do cliente, funcionário e administrador. O controlador do cliente implementa métodos em Ajax e JavaScript com o intuito de tornar a página dinâmica e rápida, utilizando o Ajax para carregar e atualizar a página de modo assíncrono sem que o utilizador repare, e JavaScript para permitir arrastar os produtos que ele deseja adquirir para o carrinho de compras. A visualização deste controlador permite ainda ao cliente escolher um idioma antes de começar o seu pedido. As páginas para efetuar o pedido contém uma divisão que permite visualizar todos os produtos disponíveis para aquisição, Figura 5, como produtos, menus, separados por grupos, categorias, de modo a que o cliente consiga encontrar o que pretende consoante o que deseja, e inserir esses produtos no seu pedido, para aquisição, uma divisão onde será possível ver informação referente ao seu pedido como produtos, preço atual, e também retirar os produtos que assim pretender do pedido, por último uma divisão com os produtos preferidos do respetivo cliente permitindo assim pedidos mais rápidos. Figura 5 - Design protótipo do controlador cliente O controlador funcionário possibilita visualizar todos os pedidos e as suas informações base. Através de Ajax é possível expandir a informação da encomenda e consoante o estado do pedido as opções vão mudando, como por exemplo, se uma encomenda estiver em espera sem haver funcionário responsável pela mesma, é possível responsabilizar-se pelo pedido, tornando possível a entrega dos produtos e sua conclusão, ou seja, a página consoante o estado do pedido e o funcionário que a visualiza altera o que é possível fazer. O controlador do administrador permite gerir toda a informação da plataforma, como inserir utilizadores, funcionários, produtos, menus, agendas, entre outros. Conclusões e trabalho futuro Pode-se concluir que devido ao facto de existirem poucos sistemas que têm uma amplitude tão larga em relação a gerenciamento de restauração e self-service para não falar na originalidade do projeto, pode-se dizer que tem grande potencial a nível de distribuição pelo mercado. Como perspectiva futura visa-se o melhoramento da plataforma, pois existem várias tecnologias que poderão melhorar o seu desempenho como o uso do HTML 5 que agora é suportado pela maioria dos navegadores, melhoramento na navegação entre as diferentes páginas, e também o melhoramento da plataforma conforme os resultados do teste ao protótipo. REFERÊNCIAS 1. Zend Framework: http://framework.zend.com/ 2. MySQL: http://www.mysql.com/ 3. jQuery: http://jquery.com/ 4. php: http://www.php.net/ 5. StarUML: http://staruml.sourceforge.net/en/