1. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o
ca
Perguntas
SAAP - Software para An´lise e Avalia¸˜o de
a ca
Programas
Jos´ Pedro Silva
e Pedro Faria Ulisses Costa
Engenharia de Linguagens
Projecto integrado
December 12, 2010
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
2. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o
ca
Perguntas
Index
1 Motiva¸˜o e Tecnologias
ca
2 Contextualiza¸˜o
ca
3 Modela¸˜o
ca
Modela¸˜o de dados
ca
XML
XSD
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
3. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o
ca
Perguntas
Motiva¸˜o e Objectivos
ca
Aprofundar e demonstrar conhecimentos em:
Desenhar arquitectura de um sistema de informa¸˜o
ca
Desenvolvimento web
Linguagens de Scripting
Bases de dados
Processamentos de texto
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
4. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o
ca
Perguntas
Tecnologia
Principais ferramentas a usar:
RoR - interface web
Perl - scripting
DB2 - motor de base de dados
Haskell
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
5. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o
ca
Perguntas
Index
1 Motiva¸˜o e Tecnologias
ca
2 Contextualiza¸˜o
ca
3 Modela¸˜o
ca
Modela¸˜o de dados
ca
XML
XSD
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
6. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o
ca
Perguntas
Descri¸˜o do Sistema
ca
Descri¸˜o do sistema e funcionalidades:
ca
Disponivel atrav´s de uma interface web
e
Cria¸˜o de concursos e enunciados
ca
Permite a submiss˜o de programas
a
Avalia os programas submetidos
Gera m´tricas para programas existentes no sistema
e
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
7. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o
ca
Perguntas
Utilizadores do sistema - Docente
Pode criar, editar e eliminar concursos e enunciados
Pedir ao sistema para gerar m´tricas
e
Consultar todo o tipo de resultados
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
8. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o
ca
Perguntas
Utilizadores do sistema
Admin Entidade com mais poder no sistema, pode criar
contas para docentes
Grupo Pode submeter ficheiros que ser˜o avaliados pelo
a
sistema
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
9. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Index
1 Motiva¸˜o e Tecnologias
ca
2 Contextualiza¸˜o
ca
3 Modela¸˜o
ca
Modela¸˜o de dados
ca
XML
XSD
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
10. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modela¸˜o informal da arquitectura
ca
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
11. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modela¸˜o formal
ca
{existsInDatabase(u)}
login :: u ∼ Username × Hash → SessionID → Error + SessionID
{}
{existeSession(s) ∧ isProf (s) ∧ (notEmpty ◦ getExercice) c}
createContest :: s ∼ SessionID → c ∼ Contest → 1
{(notEmpty ◦ getDict) c}
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
12. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modela¸˜o formal
ca
data Dict a b = (a × b)∗
data Exercicio = Exercicio Enunciado (Dict Input Output)
data Contest = Contest Nome Tipo Exercicio ∗
{existeSession(s) ∧ isProf (s) ∧ (not ◦ exist)(Exercicio e d)}
createExercice :: s ∼ SessionID → e ∼ Enunciado → d ∼ (Dict a b) →
{exerciceCreated(Exercicioed)}
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
13. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modela¸˜o formal
ca
{existSession(s) ∧ contestNotFull(c)}
registerOnContest :: s ∼ SessionID → c ∼ Contest → Credenciais
{}
{existeSession(s) ∧ isProf (s) ∧ contestIsClosed(c)}
consultarLogsContest :: s ∼ SessionID → c ∼ Contest → LogsContest
{}
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
14. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modela¸˜o formal
ca
{}
geraReport :: e ∼ Exercicio → res ∼ Resolucao → Report
{}
geraReportBugCompile :: Exercicio → Error → Report
geraReportBugCompare :: Exercicio → Errado → Report
geraReportNoBug :: Exercicio → Resolucao → Report
execute :: Program → Exercicio → ResolucaoProposta
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
15. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modela¸˜o formal
ca
geraReport :: Exercicio -> Resolucao -> Report
geraReport exer res = do
case compile res of
( Left error ) -> g e r a R e p o r t B u g C o m p i l e error res
( Right p ) ->
let resProps = execute p exer
in case ( compare exer resProps ) of
( Left certo ) -> ge ra R ep or t No Bu g e res
( Right errado ) -> g e r a R e p o r t B u g C o m p a r e errado
res
geraReport exer res =
compile res > >= p -> compare exer ( execute p exer )
> >= c -> g e ra Re po r tN oB ug exer res
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
16. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Index
1 Motiva¸˜o e Tecnologias
ca
2 Contextualiza¸˜o
ca
3 Modela¸˜o
ca
Modela¸˜o de dados
ca
XML
XSD
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
17. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - Concurso, tentativa e enunciado
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
18. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - Grupo e Doecente/Admin
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
19. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - XML - Enunciado
<?xm l v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8” ?>
<E n u n c i a d o x m l n s : x s i=” h t t p : //www . w3 . o r g /2001/XMLSchema−i n s t a n c e ”
x s i : n o N a m e s p a c e S c h e m a L o c a t i o n=” e n u n c i a d o . x s d ”>
<i d C o n c u r s o> 1 </ i d C o n c u r s o>
<Peso>20</ Peso>
<T i t u l o> E x e r c i c i o 1 </ T i t u l o>
<D e s c r i c a o> Some o s numeros que l h e s a o p a s s a d o s como argumento , e a p r e s e n t e
o r e s u l t a d o . </ D e s c r i c a o>
<Exemplo>I n p u t : 1 1 1 1 1 O u t p u t : 5</ Exemplo>
<D o c e n t e> PRH </ D o c e n t e>
<F u n c A v a l>D i f f</ F u n c A v a l>
<L i n g u a g e n s>
<Linguagem>C Linguagem></
</ L i n g u a g e n s>
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
20. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - XML - Enunciado - Part2
<D i c t>
<T e s t e>
<Nome >L i s t a v a z i a</Nome >
<I n p u t> I n p u t>
</
<Output>0</ Output>
</ T e s t e>
<T e s t e>
<Nome >L i s t a c / 1 e l e m</Nome >
<I n p u t>1</ I n p u t>
<Output>1</ Output>
</ T e s t e>
<T e s t e>
<Nome >L i s t a c / v a r i o s e l e m</Nome>
<I n p u t> 2 3 4 5 </ I n p u t>
<Output>14</ Output>
</ T e s t e>
</ D i c t>
</ E n u n c i a d o>
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
21. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - XML - Tentativa
<?xm l v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8” ?>
<E n u n c i a d o x m l n s : x s i=” h t t p : //www . w3 . o r g /2001/XMLSchema−i n s t a n c e ”
x s i : n o N a m e s p a c e S c h e m a L o c a t i o n=” t e n t a t i v a . x s d ”>
<i d C o n c u r s o>1</ i d C o n c u r s o>
<i d E n u n c i a d o>1</ i d E n u n c i a d o>
<i d G r u p o>36</ i d G r u p o>
<d a t a>2010−12−08 d a t a>
</
<h o r a>16 : 3 3 : 0 0</ h o r a>
<c o m p i l o u>1</ c o m p i l o u>
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
22. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - XML - Tentativa - Part2
<D i c t>
<T e s t e>
<Nome >L i s t a v a z i a</Nome >
<I n p u t> I n p u t>
</
<Output>0</ Output>
</ T e s t e>
<T e s t e>
<Nome >L i s t a c / 1 e l e m</Nome >
<I n p u t>1</ I n p u t>
<Output>1</ Output>
</ T e s t e>
<T e s t e>
<Nome >L i s t a c / v a r i o s e l e m</Nome>
<I n p u t> 2 3 4 5 </ I n p u t>
<Output>14</ Output>
</ T e s t e>
</ D i c t>
<p a t h M e t r i c a s>s a s a s</ p a t h M e t r i c a s>
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
23. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - XML - Tentativa - Part3
<c o d i g o F o n t e>
<nome>p r o g . c</nome>
<c o d i g o>
<! [CDATA[
#i n c l u d e <s t d i o . h>
. . . restante codigo . . .
] ]>
</ c o d i g o>
</ c o d i g o F o n t e>
</ E n u n c i a d o>
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
24. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - excerto do XSD do Enunciado
Exemplo de elemento com restri¸˜es:
co
<e d : e l e m e n t name=” Peso ” d e f a u l t=” 25 ”>
<e d : s i m p l e T y p e>
< e d : r e s t r i c t i o n b a s e=” e d : i n t e g e r ”>
<e d : m i n I n c l u s i v e v a l u e=” 0 ” />
<e d : m a x I n c l u s i v e v a l u e=” 100 ” />
</ e d : r e s t r i c t i o n>
</ e d : s i m p l e T y p e>
</ e d : e l e m e n t>
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
25. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - excerto do XSD do Enunciado
Exemplo de elemento com restri¸˜es:
co
<e d : e l e m e n t name=” Linguagem ” maxOccurs=” unbounded ”>
<e d : s i m p l e T y p e>
< e d : r e s t r i c t i o n b a s e=” e d : s t r i n g ”>
<e d : e n u m e r a t i o n v a l u e=”C” />
<e d : e n u m e r a t i o n v a l u e=” J a v a ” />
<e d : e n u m e r a t i o n v a l u e=” H a s k e l l ” />
</ e d : r e s t r i c t i o n>
</ e d : s i m p l e T y p e>
</ e d : e l e m e n t>
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
26. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - Diagrama correspondete ao XSD do
Enunciado
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
27. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - excerto do XSD da Tentativa
Exemplo de elemento que pode ocorrer mais do que uma vez:
<t t : e l e m e n t name=” D i c t ”>
<t t : c o m p l e x T y p e>
<t t : s e q u e n c e>
<t t : e l e m e n t name=” T e s t e ” maxOccurs=” unbounded ”>
<t t : c o m p l e x T y p e>
<t t : s e q u e n c e>
<t t : e l e m e n t name=”Nome” t y p e=” t t : s t r i n g ” />
<t t : e l e m e n t name=” I n p u t ” t y p e=” t t : s t r i n g ” />
<t t : e l e m e n t name=” Output ” t y p e=” t t : s t r i n g ” />
</ t t : s e q u e n c e>
</ t t : c o m p l e x T y p e>
</ t t : e l e m e n t>
</ t t : s e q u e n c e>
</ t t : c o m p l e x T y p e>
</ t t : e l e m e n t>
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
28. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o de dados
ca
Modela¸˜o
ca
Perguntas
Modelo de dados - Diagrama correspondete ao XSD da
Tentativa
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca
29. Motiva¸˜o e Tecnologias
ca
Contextualiza¸˜o
ca
Modela¸˜o
ca
Perguntas
Perguntas
?
Jos´ Pedro Silva, Pedro Faria, Ulisses Costa
e SAAP - Software para An´lise e Avalia¸˜o de Programas
a ca