trabalhos dos alunos de informática da feup os principais ...projfeup/submit_16_17/... · melhores...
Post on 23-Jul-2020
2 Views
Preview:
TRANSCRIPT
Faculdade de Engenharia da Universidade do Porto
Trabalhos dos Alunos de Informática da FEUP
Os principais trabalhos desenvolvidos pelos alunos do
LEIC/MIEIC
Projeto FEUP 2016/2017 -- MIEIC:
Manuel Firmino José Magalhães Cruz
Equipa 1MIEIC01_2:
Supervisor: José Magalhães Cruz Monitor: Bruno Madeira
Estudantes & Autores:
Afonso Azevedo up201603523@fe.up.pt Gonçalo Santos up201603265@fe.up.pt
Guilherme Silva up201603647@fe.up.pt João Vieira up201603190@fe.up.pt
Pedro Lopes up201603557@fe.up.pt Susana Lima up201603634@fe.up.pt
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC 1
/18
Resumo
Este trabalho foi realizado no âmbito da unidade curricular do Projeto FEUP, da
Faculdade de Engenharia da Universidade do Porto, com o objetivo de responder a uma
pergunta: “Quais foram os principais trabalhos desenvolvidos pelos alunos da LEIC?”.
Para responder a esta pergunta, o projeto tem como objetivos: caracterizar os trabalhos
desenvolvidos pelos alunos de Informática da antiga Licenciatura de Informática e de
Computação ao longo da vida do curso; apresentar o essencial e os pormenores de 3 dos
melhores trabalhos desenvolvidos na LEIC e sugerir novos temas a desenvolver ou novas
áreas a abordar.
Para a realização de todas as componentes pedidas, começamos por fazer pesquisa
sobre o curso da LEIC e sobre os trabalhos desenvolvidos pelos alunos do mesmo curso.
Depois fizemos a seleção dos três melhores de forma a termos uma amostra variada. Por
fim, organizamos a informação já selecionada em texto para o relatório e para o poster.
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC 2
/18
Índice
1. Introdução
2. Trabalhos na LEIC
2.1 Estatística dos Trabalhos da LEIC
3. Trabalhos MIEIC
3.1 Contribuição dos alunos para o projetos no GitHub
3.1.1 Projeto Mopidy
3.2 Projeto “Tecnologias de Distribuição e Integração”
3.2.1 Arquitetura Física
3.2.2 Arquitetura Lógica
3.3 Train Ticket App
3.3.1 User Application
3.3.2 Inspector Application
3.3.3 Server Application
4. Sugestão Trabalhos
5. Conclusões
Referências bibliográficas
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC 3
/18
1. Introdução
O presente trabalho relaciona a nossa perspetiva desenvolvida sobre o Presente,
Passado e Futuro, a nível dos trabalhos propostos nas diferentes unidades curriculares, da
LEIC/MIEIC.
Mais concretamente, abordamos assuntos que vão desde a explicação geral dos
trabalhos tratados ao longo da LEIC/MIEIC, passando pela exemplificação de alguns
realizados em anos anteriores, à proposta de novos temas que poderiam ser interessantes
de desenvolver.
Desenvolvemos o trabalho nas três secções supramencionadas, sendo que a segunda
(Trabalhos do MIEIC) é igualmente repartida em três subseções, nas quais abordamos
projetos como o “Mopidy”, que serão explicados.
Importa referir ainda neste ponto a existência da questão inicial “Quais foram os
principais trabalhos desenvolvidos pelos alunos da LEIC/MIEIC?”.
Para concretização desses trabalhos, além da própria pesquisa que cada um de nós
realizou, questionamos regentes e docentes das diferentes unidades curriculares para
descobrir, quais seriam os melhores projetos a explorar neste âmbito.
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC 4
/18
2. Estatísticas dos Trabalhos da LEIC
Durante o primeiro ano da LEIC, as UC não possuem trabalhos práticos de grandes 1
dimensões, nos quais seja necessário um grande investimento de tempo e esforço. Na
verdade, apenas no segundo ano os trabalhos práticos realizados em aula começam a ter
um peso mais significativo na avaliação, sejam estes individuais ou em grupo (como é a
maioria), em UC’s como Laboratório de Programação Orientada a Objetos e Laboratório de
Computadores.
No 3º ano, os trabalhas práticos exigem cada vez mais tempo para que sejam realizados
com qualidade, e por isso mesmo, os trabalhos começam a ser acompanhados nas aulas
práticas de cada UC, e grande parte deles são desenvolvidos fora das aulas. Novamente,
existe um padrão na realização dos trabalhos - são quase todos feitos em equipa.
Tanto o 4º como o 5º ano da LEIC possuem UC nas quais um grande peso da avaliação
são os trabalhos práticos/projetos desenvolvidos quer na aula quer em casa,
independentemente do grau de complexidade do trabalho em si. No 4º ano existem 4 UC
obrigatórias em cada semestre, havendo ainda as disciplinas optativas, e no 5º ano todas as
UC são optativas e é possível escolher algumas dentro de um leque bastante variado e
extenso.
Essencialmente, existem 3 tipos de UC’s. Algumas delas possuem um projeto para ser
desenvolvido ao longo do semestre. Noutras existem trabalhos práticos e laboratoriais, que
podem ser desenvolvidos ou fora ou nas aulas. Por fim, existem ainda algumas UC’s cujo
grande peso da avaliação está em testes escritos
Para além disso, os temas desenvolvidos ao longo de cada UC são bastante variados, e
abrangem duas grandes áreas: uma área relativa a programação, bases de dados e
software, e outra relativa à gestão empresarial. E nestas duas áreas, existem algumas UC
que se destacam na componente prática.
Por exemplo, na UC Laboratório e Desenvolvimento de Software do 4º ano da LEIC,
parte da avaliação é feita a um projeto desenvolvido pelos alunos em equipas. Esta
avaliação está dividida em 5 iterações, sendo que em cada uma os alunos têm de entregar
certos documentos das diferentes fases de criação do seu software final. Este projeto é
acompanhado nas aulas laboratoriais, mas grande parte é realizado fora das aulas. Tanto
1 UC - Unidades Curriculares
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC 5
/18
nesta UC como noutras (Agentes e Inteligência Artificial Distribuída por exemplo), a
componente prática é utilizada pelos professores como a orientação para a aprendizagem.
Já no 5º ano da LEIC, grande parte da avaliação nas várias UC é distribuída por um
exame final e por trabalhos práticos realizados em sala de aula, como é por exemplo a UC
Armazéns de Dados ou Gestão de Operações. No entanto, comparativamente ao ano
anterior, existe uma maior número de UC’s que abordam temas relacionados ou em
contexto, não com a informática em específico, mas sim com a gestão empresarial
(Metodologias de Planeamento e Escalonamento e Sistemas de Apoio à Decisão por
exemplo). Para além, no segundo semestre deste ano está ainda contemplado um estágio.
No gráfico abaixo (Fig. 1) estão representados os dados estatísticos relativos à
componente prática das UC’s do curso da LEIC ao longo dos 5 anos[1].
Figura 1 - Gráfico com as modalidades da componente prática das UC’s da LEIC
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC 6
/18
3. Trabalhos MIEIC
3.1 Contribuição dos alunos para o projetos no GitHub
No âmbito da Unidade Curricular “Engenharia de Software” do 3º ano do MIEIC, os
alunos foram convidados a contribuir para um projeto open source no GitHub, essa
contribuição passou principalmente por documentar este projetos. Para este efeito os alunos
foram divididos em grupos de 4 elementos e cada grupo teve de escolher um projeto que
ainda estivesse ativo e com alguma complexidade. Todo o projeto teve espaço na
plataforma online GitHub, incluindo a comunicação entre membros da equipa e participantes
externos que participam ativamente no projeto. Este teve de envolver os alunos nos vários
passos da engenharia de software (Fig 1). (Rui Maranhão - 2015)
Figura 2 - Passos do desenvolvimento de um programa
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC 7
/18
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC 8
/18
3.1.1 Projeto “Mopidy”
Mopidy é um servidor escrito em Python, que permite a reprodução de música em
diversos dispositivos armazenada numa série de plataformas como Spotify, SoundCloud,
Google Play Music e através de um disco local. Contudo, na versão base deste programa
apenas podemos reproduzir através de um disco local, tudo o resto pode ser obtido através
de extensões, que também são parte do projeto em questão.
Como já foi referido Mopidy é apenas um servidor que pode correr em sistemas
operativos como o Linux e o MacOS, desde que tenham uma conexão à internet e alguma
saída de áudio. Uma implementação muito comum deste software é a sua instalação num
Raspberry Pi[1], um computador pequeno e barato que pode ser usado como um servidor.
Mopidy possui APIs[2] para Python[3], JSON-RPC[4] e JavaScript[4], com estas
ferramentas podemos adicionar as funcionalidades que desejarmos. Um exemplo muito
notório é o uso de um leitor de cassetes antigo para trocar de playlist no Spotify.
(https://docs.mopidy.com/en/latest/ - 2016)
3.1.1.1 Extensões
Como já foi referido Mopidy possui extensões que expandem as funcionalidades
daquilo que programa pode fazer, exemplos são notórios:
● Mopidy-Spotify - permite reproduzir músicas da biblioteca de músicas da aplicação
Spotify
● Mopidy-YouTube - permite acesso ao áudio de vídeos na plataforma YouTube
● Mopidy-Podcast - permite fazer stream de RSS feeds
Estes são alguns exemplos de extensões entre muitas outras disponíveis em:
https://docs.mopidy.com/en/latest/ext/backends/.
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC 9
/18
3.2 Projeto “Tecnologias de Distribuição e Integração”
No âmbito da Unidade Curricular “Tecnologias de Distribuição e Integração” do 4º
ano do MIEIC, os alunos Leonardo Faria e Vítor Teixeira descreveram a utilização de um
sistema distribuído usando SOA que através de uma instituição financeira, como um banco 2
ou uma corretora, permite a venda e compra de ações. As ordens de compra/venda são
feitas através dos balcões da instituição, por um funcionário numa aplicação GUI ou pelos 3
próprios clientes através de uma aplicação web de e-banking. As ordens são executadas
pelo serviço bolsista utilizando uma aplicação que lista as ordens por executar. Esta
aplicação permite ainda alterar o valor das ações.
3.2.1 Arquitetura Física
O serviço de compra/venda é baseado num modelo de cliente-servidor, no qual o
Departamento de Informática serve como servidor e tanto o balcão como a web-app são
clientes. A comunicação é realizada por HTTP[1] como pedidos REST[2]. O Departamento
de Informática comunica com o Serviço Bolsista através de uma fila de mensagens e este
responde usando os serviços REST, como pode ser observado na Figura 3.
2 SOA - Service Oriented Architecture 3 GUI - Graphical user interface
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC
10/18
Figura 3 - Arquitetura Física
3.2.2 Arquitetura Lógica
A aplicação do serviço Bolsista, que permite realizar operações de compra e venda de
ações, alterar o seu valor e guardar as ações por realizar, está implementada em Java[3],
recorrendo à biblioteca Java Swing[4] para gerar a interface gráfica. A comunicação com o
Departamento de Informática utiliza a biblioteca RabbitMQ[5] através de pedidos HTTP.
O servidor do Departamento de Informática é baseado em javaEE[6], hospedando os
WebServices, implementados em REST, pelo Glassfish[7]. A Web app, também hospedada
pelo Glassfish, utiliza HTML, Javascript e CSS, além de Jquery e Bootstrap. Os dados são
guardados numa base de dados em MySQL[8].
3.2.3 Funcionalidades
O serviço bolsista permite realizar as operações de compra/venda, alterar a cotação das
ações e guardar as operações por realizar, caso não possam ser executadas de imediato. A
WebApp e a aplicação de balcão têm funcionalidades semelhantes, permitindo listar a
carteira de ações e as operações dos clientes, listar as ações das empresas e criar novas
operações.
Figura 4 - Página de Cliente na WebApp
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC
11/18
3.3 Train Ticket App
No âmbito da Unidade Curricular “Computação Móvel” do 5º ano do MIEIC, os
alunos André Silva e Pedro Fernandes idealizaram e desenvolveram um par de aplicações
(ambas Android apps ) com o intuito de permitir a compra e a validação de bilhetes de
comboio de forma rápida, eficaz e segura. Por um lado, uma destas aplicações - «Train
Ticket App» - seria utilizada pelo cliente para a compra de bilhetes, com hipótese de escolha
do lugar, para a consulta de horários de partida e chegada de inúmeros comboios, bem
como da duração das viagens, do preço e da lista dos bilhetes anteriormente comprados.
Por outro lado, a aplicação - «Inspector Ticket App » -, que seria utilizada pelo inspetor,
tendo portanto um uso restrito, teria o propósito de validar os bilhetes adquiridos através da
outra app e permitir a consulta de estatísticas relativas ao número de bilhetes emitidos.
O projeto encontra-se dividido em três componentes principais : “Server Application”,
“User Application” e “Inspector Application”. Ambas as aplicações Android (Utilizador e
Inspector) foram construídas utilizando uma arquitetura que se assemelha ao padrão MVC 4
[1] com o fim de separar os objetivos dos diferentes componentes o máximo possível.
4 MVC-Model view controller
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC
12/18
Figura 5 - Train Ticket App e Inspector Ticket App, respetivamente
3.3.1 User Application
Após o registo na aplicação (para o qual é necessário um email válido, um nome e
uma password), o usuário tem a possibilidade de comprar bilhetes através da opção «Buy
Tickets» que se encontra no menu principal, escolhendo as estações em que inicia e
termina a viagem («Calculate Route») e a data da mesma («Select Date»), estando esta
suscetível a mudanças se for do interesse do comprador. É também possível a escolha do
lugar que este deseja ocupar («Pick Seat»).
O pagamento é efetuado com cartão de crédito, pelo que o comprador tem de
fornecer o número do cartão, uma data válida de expiração (mês e ano) e o código de
segurança do mesmo. O usuário pode também consultar informações acerca de compras
anteriores clicando na opção «My Tickets» apresentada em diferentes menus.
Para que ocorra a validação dos bilhetes o comprador deve ir a «Ticket Activity»,
onde encontra toda informação sobre os mesmos, incluindo códigos QR[2] e NFC[3]
necessários à sua verificação.
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC
13/18
3.3.2 Inspector Application
Por um lado,o inspetor tem a possibilidade de validar os bilhetes de duas maneiras
distintas, depois de se registar na aplicação: ou através de códigos QR ou de NFC tags. No
primeiro caso, o inspetor deve clicar na opção «Validate aTicket(QRCode)» que o
redireciona para «QRCode Validation Activity», na qual um scanner de câmara tenta captar
o sinal emitido pelo código QR gerado no Ticket Menu da aplicação do cliente. No segundo
caso, opta por «Validate a Ticket (NFC)» que o redireciona para «Scan NFC Activity», onde
aguarda até examinar o NFC de um dispositivo disponível, nomeadamente o do cliente. Tal
acontece tocando simultaneamente em ambos os dispositivos até a informação de validação
do bilhete ser transmitida para a aplicação do inspetor. Para consultar as estatísticas
relativas ao número de bilhetes emitidos e verificados num dia, o inspetor deve optar por
«See Tickets Statistics» que o conduz, progressivamente, até essa informação, recorrendo a
diferentes gráficos.
Por outro lado, através desta aplicação é possível atualizar informações sobre a
venda de bilhetes de modo a que os compradores consigam constatar quais bilhetes ainda
estão disponíveis para compra («Upload Stored Tickets»).
3.3.3 Server Application
Por fim temos a componente do servidor que utiliza uma interface de programação
de aplicações (API)[4] baseada em serviços web REST que usa NodeJS 4.0 [5].
A aplicação de servidor tem diversas funções que são fundamentais para o funcionamento
das componentes em Android.
Os certificados de chaves de segurança tanto públicas como privadas que permitem
a autenticação de informação enviada pela internet estão guardadas nos servidores e
salvaguardam os pedidos dos utilizadores de serem interceptados por terceiros. A
armazenagem, a atualização e a modificação dos esquemas das bases de dados também
são responsabilidade dos servidores. Cada tabela relevante de base de dados com funções
de operações lógicas tem um modelo enquanto que as bases de dados são iniciadas por
scripts [6] tanto os scripts como os modelos estão guardados nos servidores.
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC
14/18
Além destas tarefas, esta componente define as rotas para as comunicações REST através
da interface de programação de aplicações e valida o input [7] para as rotas referidas.
4. Sugestões de trabalhos
- Desenvolvimento de uma aplicação para android que possibilita a leitura e registo de
receitas médicas e que ajude o utente a gerir a toma de medicamentos.
- Desenvolvimento de uma aplicação para android que possibilita uma melhor
preparação aquando de um incêndio: a aplicação mostrava um mapa do edifício em
questão e marcava a posição do utilizador e a posição na qual o incêndio
começou/alarme de incêndio foi ativado; permitindo uma evacuação mais imediata
de quem se encontra mais perto do local de início do fogo.
- Desenvolvimento de um projeto como uma turma, em que cada grupo é responsável
por apenas uma parte do desenvolvimento do trabalho, fomentando assim o conceito
de abstração já referido nas aulas
- Desenvolvimento de um projeto entre vários anos do mesmo curso, e talvez até entre
unidades curriculares relacionadas, em que o objetivo é não só a criação de um
produto final (seja ele uma aplicação ou um programa) como também o crescimento
das capacidades de trabalho em equipa e do espírito de grupo necessário em
qualquer profissão no futuro.
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC
15/18
5. Conclusões
Tendo como questão inicial a supramencionada na introdução e tendo desenvolvido
todos os tópicos a que nos propusemos na mesma, resta apenas referir que os objetivos do
trabalho foram cumpridos e que a questão inicial foi respondida com sucesso em todos
esses tópicos expostos.
Os trabalhos desenvolvidos ao longo do curso da LEIC são caracterizados pela
variedade, existindo uma grande quantidade de trabalho e projetos diferentes que os alunos
têm a oportunidade de realizar, tanto em pequena como em grande escala. Mais relevante
ainda é o facto de os trabalhos fomentarem nos alunos o crescimento do espírito de equipa
e também a expansão dos horizontes de conhecimento dos alunos. Desde trabalhos práticos
simples a grandes projetos, todos são importantes no desenvolvimento de competências e
no crescimento individual e em grupo dos estudantes.
No entanto, é também importante realçar o facto de este trabalho, por incluir uma
vertente de pesquisa e recolha de informações, permitiu um alargamento do horizonte de
conhecimentos dos alunos relativamente aos trabalhos realizados em diferentes cadeiras do
curso, representando por isso uma mais valia para quem o realizou.
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC
16/18
Referências bibliográficas
Faculdade de Engenharia da Universidade do Porto. 2016. “Cursos.” FEUP . Accessed
October 19.
https://sigarra.up.pt/feup/pt/cur_geral.cur_planos_estudos_view?pv_plano_id=638&pv
_ano_lectivo=2007&pv_tipo_cur_sigla=l&pv_origem=cur.
“Mopidy” 2016. Mopidy — Mopidy 2.0.1 Documentation . Accessed October 16.
https://docs.mopidy.com/en/latest/.
Rui Maranhão. 2016. “Using Github to Teach Software Engineering: A Hands-on Approach.”
Gist . Accessed October 16.
https://gist.github.com/ruimaranhao/b2c64e906ac9a6bcad02.
Silva, André e Fernandes, Pedro. “Train Ticket App”. FEUP, 2015.
Pascoal Faria, Leonardo e Teixeira, Vítor. “Tecnologias de Distribuição e Integração”. FEUP,
2015
Lista de referências bibliográficas 5
Estatísticas dos Trabalhos da Leic
[1]https://sigarra.up.pt/feup/pt/cur_geral.cur_planos_estudos_view?pv_plano_id=638&pv
_tipo_cur_sigla=&pv_origem=CUR&pv_ano_lectivo=2007 6
Trabalhos MIEIC
3.1
[1]https://www.raspberrypi.org
[2]http://readwrite.com/2013/09/19/api-defined/
[3]https://www.python.org/
5 Todos os links que se encontram nesta lista foram visitados em Outubro de 2016. 6 Neste link encontra-se uma lista de todas as unidades curriculares da LEIC no ano letivo
2007/2008.
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC
17/18
[4]http://www.jsonrpc.org/specification
3.2
[1]http://searchwindevelopment.techtarget.com/definition/HTTP
[2http://www.restapitutorial.com/lessons/whatisrest
[3]https://java.com/en/download/faq/whatis_java.xml
[4]https://www.techopedia.com/definition/26102/java-swing
[5]https://www.rabbitmq.com/features.html
[6]http://www.oracle.com/technetwork/java/javaee/overview/index.html
[7]https://www.techopedia.com/definition/27238/glassfish
[8]http://www.thesitewizard.com/faqs/what-is-mysql-database.shtml#void
3.3
[1]http://tableless.com.br/mvc-afinal-e-o-que
[2]http://br.qr-code-generator.com
[3]http://electronics.howstuffworks.com/nfc-tag.htm
[4]http://techterms.com/definition/api
[5]https://nodejs.org/en/
[6]http://searchenterpriselinux.techtarget.com/definition/script
[7]http://www.computerhope.com/jargon/i/input.htm
Trabalhos dos alunos de Informática da FEUP - Os principais trabalhos desenvolvidos pelos alunos da(o) LEIC/MIEIC
18/18
top related