Static Code Analyzer - Part I
-
Upload
ulisses-costa -
Category
Technology
-
view
404 -
download
0
description
Transcript of Static Code Analyzer - Part I
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
SAAP - Software para Analise e Avaliacao deProgramas
Jose Pedro Silva Pedro Faria Ulisses Costa
Engenharia de LinguagensProjecto integrado
December 12, 2010
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Index
1 Motivacao e Tecnologias
2 Contextualizacao
3 ModelacaoModelacao de dados
XMLXSD
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Motivacao e Objectivos
Aprofundar e demonstrar conhecimentos em:
Desenhar arquitectura de um sistema de informacao
Desenvolvimento web
Linguagens de Scripting
Bases de dados
Processamentos de texto
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Tecnologia
Principais ferramentas a usar:
RoR - interface web
Perl - scripting
DB2 - motor de base de dados
Haskell
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Index
1 Motivacao e Tecnologias
2 Contextualizacao
3 ModelacaoModelacao de dados
XMLXSD
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Descricao do Sistema
Descricao do sistema e funcionalidades:
Disponivel atraves de uma interface web
Criacao de concursos e enunciados
Permite a submissao de programas
Avalia os programas submetidos
Gera metricas para programas existentes no sistema
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Utilizadores do sistema - Docente
Pode criar, editar e eliminar concursos e enunciados
Pedir ao sistema para gerar metricas
Consultar todo o tipo de resultados
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Utilizadores do sistema
Admin Entidade com mais poder no sistema, pode criarcontas para docentes
Grupo Pode submeter ficheiros que serao avaliados pelosistema
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Index
1 Motivacao e Tecnologias
2 Contextualizacao
3 ModelacaoModelacao de dados
XMLXSD
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelacao informal da arquitectura
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelacao formal
{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}
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelacao formal
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)→ 1{exerciceCreated(Exercicioed)}
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelacao formal
{existSession(s) ∧ contestNotFull(c)}registerOnContest :: s ∼ SessionID → c ∼ Contest → Credenciais{}
{existeSession(s) ∧ isProf (s) ∧ contestIsClosed(c)}consultarLogsContest :: s ∼ SessionID → c ∼ Contest → LogsContest{}
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelacao formal
{}geraReport :: e ∼ Exercicio → res ∼ Resolucao → Report{}
geraReportBugCompile :: Exercicio → Error → Report
geraReportBugCompare :: Exercicio → Errado → Report
geraReportNoBug :: Exercicio → Resolucao → Report
execute :: Program→ Exercicio → ResolucaoProposta
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelacao formal
geraReport :: Exercicio -> Resolucao -> Report
geraReport exer res = do
case compile res of
(Left error) -> geraReportBugCompile error res
(Right p) ->
let resProps = execute p exer
in case (compare exer resProps) of
(Left certo) -> geraReportNoBug e res
(Right errado) -> geraReportBugCompare errado
res
geraReport exer res =
compile res >>= \p -> compare exer (execute p exer)
>>= \c -> geraReportNoBug exer res
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Index
1 Motivacao e Tecnologias
2 Contextualizacao
3 ModelacaoModelacao de dados
XMLXSD
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelo de dados - Concurso, tentativa e enunciado
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelo de dados - Grupo e Doecente/Admin
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
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”?><Enunciado x m l n s : x s i=” h t t p : //www. w3 . org /2001/XMLSchema−i n s t a n c e ”
xs i :noNamespaceSchemaLocat ion=” e n u n c i a d o . xsd ”><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 os numeros que l h e sao 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 Output : 5</ Exemplo><Docente> PRH </ Docente><FuncAval>D i f f</ FuncAval><L i n g u a g e n s>
<Linguagem>C</ Linguagem></ L i n g u a g e n s>
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelo de dados - XML - Enunciado - Part2
<D i c t><Teste>
<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>
</ Teste><Teste>
<Nome>L i s t a c / 1 elem</Nome><I n p u t>1</ I n p u t><Output>1</ Output>
</ Teste><Teste>
<Nome>L i s t a c / v a r i o s elem</Nome><I n p u t> 2 3 4 5 </ I n p u t><Output>14</ Output>
</ Teste></ D i c t>
</ Enunciado>
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
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”?><Enunciado x m l n s : x s i=” h t t p : //www. w3 . org /2001/XMLSchema−i n s t a n c e ”
xs i :noNamespaceSchemaLocat ion=” t e n t a t i v a . xsd ”><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><idGrupo>36</ idGrupo>
<data>2010−12−08</ data><hora>16 : 3 3 : 0 0</ hora>
<compi lou>1</ compi lou>
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelo de dados - XML - Tentativa - Part2
<D i c t><Teste>
<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>
</ Teste><Teste>
<Nome>L i s t a c / 1 elem</Nome><I n p u t>1</ I n p u t><Output>1</ Output>
</ Teste><Teste>
<Nome>L i s t a c / v a r i o s elem</Nome><I n p u t> 2 3 4 5 </ I n p u t><Output>14</ Output>
</ Teste></ 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>
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelo de dados - XML - Tentativa - Part3
<c o d i g o F o n t e><nome>prog . c</nome><c o d i g o>
<! [CDATA[#i n c l u d e <s t d i o . h>
. . . r e s t a n t e c o d i g o . . .
] ]></ c o d i g o>
</ c o d i g o F o n t e>
</ Enunciado>
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelo de dados - excerto do XSD do Enunciado
Exemplo de elemento com restricoes:
<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 base=” 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>
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelo de dados - excerto do XSD do Enunciado
Exemplo de elemento com restricoes:
<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 base=” 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=” Java ”/><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>
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelo de dados - Diagrama correspondete ao XSD doEnunciado
Figure: diagrama do schema para o enunciado
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
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=” Teste ” 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>
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Modelacao de dados
Modelo de dados - Diagrama correspondete ao XSD daTentativa
Figure: diagrama do schema para a tentativa
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas
Motivacao e TecnologiasContextualizacao
ModelacaoPerguntas
Perguntas
?
Jose Pedro Silva, Pedro Faria, Ulisses Costa SAAP - Software para Analise e Avaliacao de Programas