Professor: Paulo Borba
Monitores: Carlos Pontual, Fernanda d'Amorim, Leopoldo Teixeira, Márcio Ribeiro
Nome oficial: Tópicos Avançados em Linguagens Computacionais (graduação), Tópicos Avançados em Linguagem de Programação 3 (pós-graduação)
Lista de email: if724-l, assine já!
Cronograma
7/8 (10hs, na sala D-002): Apresentação da disciplina
8/8: Definir equipe e estudo de caso a ser utilizado na disciplina
enviar email com nomes dos membros da equipe e estudo de caso escolhido (ver opções no final da página)
14/8 (10hs, na sala D-002): Discutir problemas de modularidade com orientação a objetos, e conceitos básicos de orientação a aspectos
antes estudar em detalhe Identifying, Assigning, and Quantifying Crosscutting Concerns, de Marc Eaddy, Alfred Aho, and Gail C. Murphy; ICSE Workshop on Assessment of Contemporary Modularization Techniques (ACoM 2007), Minneapolis, MN, May 22, 2007.
22/8: Analisar em detalhe o estudo de caso escolhido pela sua equipe, e usar o ConcernTagger para marcar concerns e calcular métricas do estudo de caso (primeira parte do projeto)
28/8: Continuar a atividade anterior (primeira parte do projeto)
29/8: Continuar a atividade anterior (primeira parte do projeto)
4/9 (10hs, na sala D-002): Apresentar resultados do seu projeto
planejar a sua apresentação para 20 minutos, com slides de acordo com o modelo, destacando
o sistema considerado (funcionalidades principais, número de classes e linhas de código, tanto do sistema como um todo quanto, se for o caso, do subsistema analisado pela sua equipe)
concerns identificados no sistema (lista dos concerns, justificativa da escolha do que foi considerado concern, outras escolhas cogitadas mas não seguidas por vocês, hierarquia de concerns)
resumo da atividade de atribuição de concerns (número de linhas de código marcadas, tempo total levado para marcar, 3 exemplos não triviais de concerns e código associado marcado, exemplo de código relacionado a mais de um concern, dúvidas e problemas surgidos durante a atribuição)
métricas geradas pela ferramenta com base na atribuição feita pela sua equipe
conclusões (que concerns vocês acham que são crosscutting, em relação a que outro concern? as métricas foram úteis? estão corretas? por que?)
antes da aula, colocar a sua apresentação (arquivo ppt ou pdf), e o código analizado e marcado com o ConcernTagger, no site do seu projeto
colocar link para o site do seu projeto na seção Projetos realizados mais abaixo
5/9 (8hs, no laboratório C019 - Grad3): Discutir identificação de concerns através da detecção de código duplicado
seguir roteiro de instalação da ferramenta de detecção de códigos duplicados
11/9: Usar a ferramenta de detecção de clones de código para identificar concerns no estudo de caso (segunda parte do projeto)
12/9 (8hs, na sala D-002): Apresentar resultados do seu projeto
planejar a sua apresentação para 10 minutos, com slides de acordo com o modelo, destacando
gráfico de clones de código, gerado pela ferramenta
exemplos de clones encontrados
parâmetros usados para configuração da ferramenta, quantidade de clones encontrados, lista de concerns associados a estes clones, quantidade de clones por concern
colocar a sua apresentação no site do seu projeto, antes da aula
18/9 (10hs, na sala D-002): Discutir construções básicas de AspectJ
estudar em detalhe Getting started with AspectJ, de Gregor Kiczales et al, Communications of the ACM, 44(10), pp. 59-65, October 2001.
estudar em detalhe Distribution and Persistence as Aspects, de Sérgio Soares, Paulo Borba, e Eduardo Laureano, Software: Practice & Experience, 36(7):711-759, 2006. John Wiley & Sons.
estudar em detalhe o artigo I want my AOP!, de Ramnivas Laddad, JavaWorld.com, 2002, partes 1 e 2
caso interessado em saber mais sobre tratamento de concorrência, olhar Concurrency Manager, de Sérgio Soares e Paulo Borba, First Latin American Conference on Pattern Languages of Programming - SugarLoafPLoP'01, pages 221-231, Rio de Janeiro, Brazil, October 2001.
19/9 (8hs, na sala D-002): Discutir construções avançadas de AspectJ
estudar problemas apontados em Controlling Aspect Reentrancy, de É. Tanter, Journal of Universal Computer Science, 2008.
estudar problemas apontados em Tool support for understanding and diagnosing pointcut expressions, de Ye, L. and De Volder, K. 2008, 7th international Conference on Aspect-Oriented Software Development (Brussels, Belgium, March 31 - April 04, 2008). AOSD '08. ACM, New York, NY, 144-155.
estudar problemas apontados em StrongAspectJ: flexible and safe pointcut/advice bindings, de De Fraine, B., Südholt, M., and Jonckers, V. 2008. 7th international Conference on Aspect-Oriented Software Development (Brussels, Belgium, March 31 - April 04, 2008). AOSD '08. ACM, New York, NY, 60-71.
2/10: (10hs, na sala D-002): Fazer exame escrito 1
3/10 (8hs, na sala D-002): Discutir padrões de projeto e refactoring orientado a aspectos
estudar em detalhe Modularizing design patterns with aspects: a quantitative study, de Alessandro Garcia, Cláudio Sant'Anna, Eduardo Figueiredo, Uirá Kulesza, Carlos Lucena, e Arndt von Staa. In Proceedings of the 4th international conference on Aspect-oriented software development, March 2005.
estudar em detalhe Deriving refactorings for AspectJ, de Leonardo Cole e Paulo Borba. In Proceedings of the 4th international conference on Aspect-oriented software development, March 2005.
9/10: Reestruturar o estudo de caso escolhido pela sua equipe para implementar crosscutting concerns com aspectos, inclusive evitando a duplicação de código crosscutting (terceira parte do projeto)
sempre que adequado, usar os refactorings do Eclipse, mas verificar as pré-condições extras necessárias quando aspectos são usados
sempre que adequado, usar refactorings orientados a aspectos referenciados na aula anterior
sempre que adequado, usar padrões de projeto orientados a aspectos e idiomas AspectJ referenciados na aula anterior
registrar que refactorings, padrões e idiomas foram usados, e quantidade de vezes que cada um foi utilizado
registrar que modificações no código não correspondem aos refactorings, padrões e idiomas referenciados na aula anterior
usar a ferramenta de detecção de códigos duplicados para verificar a qualidade da versão resultante do estudo de caso
identificar que mudanças feitas foram derivadas de sugestões de resultados de partes anteriores do projeto, e quais resultaram da execução desta parte do projeto; contrastar resultados anteriores do projeto com os resultados atuais (tipo os crosscutting concerns identificados na primeira parte foram todos modularizados? por que? os clones detectados na segunda parte foram todos modularizados? por que?)
10/10: Continuar a atividade anterior (terceira parte do projeto)
16/10: Continuar a atividade anterior (terceira parte do projeto)
17/10: Continuar a atividade anterior (terceira parte do projeto)
23/10: Continuar a atividade anterior (terceira parte do projeto)
24/10: Continuar a atividade anterior (terceira parte do projeto)
30/10 (10hs, no laboratório C019 - Grad3): Apresentar resultados do seu projeto
cada membro da equipe deve ser capaz de falar sobre qualquer parte do código original e resultante
preparar apresentação resumindo os resultados, com indicadores, percentuais e gráficos ilustrando os principais pontos solicitados na descrição da terceira parte do projeto, de acordo com o modelo
antes da aula, colocar a sua apresentação, e o código reestruturado, no site do seu projeto
Agenda das apresentações
1 - HealthWatcher (hemr)
2 - HealthWatcher (apba, fval)
3 - PetStore 2.0 (gkmo)
4 - Jomic (arfs, fns2)
5 - aKademie (tvsd)
31/10 (8hs, no laboratório C019 - Grad3): Apresentar resultados do seu projeto
Agenda das apresentações
1 - Jajuk Advanced Jukebox (lma4, macfx)
2 - Jajuk Advanced Jukebox (fsf2, pvcv)
3 - MobileMedia (tmsf, vhco)
4 - Plugin para o Since (dmc4)
6/11 (10hs, na sala D-002): Discutir reconciliação de modularidade OO com modularidade OA
estudar em detalhe Specifying design rules in aspect-oriented systems, de Marcos Dósea, Alberto Costa Neto, Paulo Borba, e Sérgio Soares. In I Latin American Workshop on Aspect-Oriented Software Development - LA-WASP'2007, affiliated with SBES'07, pages 67-78, João Pessoa-PB, Brazil, October 2007.
7/11: Descrever design rules para estudo de caso escolhido pela sua equipe
13/11 (10hs, no laboratório C019 - Grad3): Apresentar resultados do seu projeto
mostrar código das design rules identificadas, de acordo com o roteiro.
colocar código das design rules identificadas no site do projeto, antes da aula
14/11 (8hs, na sala D-002): Discutir tendências da construção de software e suas linguagens
Outro sistema ou linha de produtos não trivial, open source ou desenvolvido por você
Do estudo de caso escolhido, deve-se analisar 3 a 4 KSLOC. O mesmo estudo de caso pode ser analisado por mais de uma equipe, desde que as equipes analisem partes diferentes do código.
Participação efetiva nas aulas, questionando, comentando, criticando e pensando em como adaptar e aplicar as idéias vistas
Projeto (entregue em várias partes) e apresentações, em dupla
Exames escritos
A nota da primeira unidade corresponde às notas dos exames escritos; a nota da segunda unidade é definida pela participação em sala e pelas notas das várias partes do projeto e apresentações.