Engenharia de Software para Computação em Nuvem

Local/Horário

Terças/Quintas – 16h até 18h – Sala: 3 – Bloco 951
Laboratório: (A definir)

Apresentação

Esta página foi criada com intuito de dar suporte aos alunos da disciplina Tópicos Avançados em Sistemas de Informação II do Programa de Mestrado e Doutorado do Departamento de Computação da Universidade Federal do Ceará. O tema abordado na disciplina é Engenharia de Software para Computação em Nuvem. Aqui são detalhados os objetivos da disciplina, além da metodologia de ensino utilizada durante o curso, avaliação e uma série de outras informações. Alunos devem visitar constantemente esta página, pois mesma servirá como um canal de comunicação entre alunos e o professor.

Esta disciplina é ofertada anualmente pelo Departamento de Computação/UFC, e tem por objetivo apresentar os principais conceitos relacionados ao impacto da construção de aplicações que se beneficiem das características dos modelos de computação em nuvem. Para isso, são realizadas aulas expositivas sobre as principais características de computação em nuvem, desafios e temas de pesquisa relacionadas com as áreas. A disciplina também possui aulas práticas de laboratório, onde utiliza-se as infraestruturas públicas da Amazon Web Services, do Google AppEngine, assim com a nuvem privada da UFC, baseada no OpenNebula.

Ementa

Não há uma ementa fixa, mas sim, sugerida. Esta ementa será refinada a cada nova edição da disciplina. Seguem aqui, resumidos, uma lista de assuntos que se pretende apresentar em sala de aula. A disposição dos assuntos não obedece uma cronologia de apresentação.

  • Introdução à Computação em Nuvem: Conceito. Características. Vantagens. Desvantagens. Arquitetura. Modelos de Implantação; Principais desafios para a computação em nuvem;
  • Engenharia de Software e a nuvem. O que muda? Quais são as vantagens? O que já foi feito? Quais os principais desafios?
  • Plataformas Públicas de Nuvem:
  • Estudo de Caso: Amazon Web Services (Infraestrutura como Serviço)
  • Estudo de Caso: Google AppEngine
  • Plataformas Privadas de Nuvem:
  • Estudo de Caso: Open Stack
  • Estudo de Caso: Open Nebula
  • Virtualização;
  • Multitenancy;
  • Modelo de Programação Map/Reduce; Estudo de Caso: Apache Hadoop

Metodologia

Serão realizadas aulas expositivas sobre os assuntos citados na ementa. Idealmente, serão também realizadas aulas práticas em laboratório sobre uso das plataformas apresentadas. Estas aulas servirão de base para que os alunos possam realizar um projeto prático a ser apresentado ao final do curso (Ver Avaliação). As aulas práticas serão intercaladas com aulas teóricas. Serão distribuídos também artigos sobre os temas das aulas, para debate em sala. Todo aluno matriculado na disciplina deve participar destes debates.
Cronograma (previsto) de Aulas

Segue aqui um cronograma inicial previsto para a disciplina. Ressalta-se que este pode ser mudado no decorrer da disciplina.

      • 04/09/2012 – Apresentação da Disciplina. Ementa. Avaliação. Bibliografia Básica. Resultados Esperados.
      • 06/09/2012 – Introdução a Computação em Nuvem
      • 11/09/2012 – Introdução a Computação em Nuvem Introdução a Computação em Nuvem (Continuação)
      • 13/09/2012 – Engenharia de Software para Computação em Nuvem. 
      • 18/09/2012 – Engenharia de Software para Computação em Nuvem (Cont) 
      • 20/09/2012 – Engenharia de Software para Computação em Nuvem (Cont)
      • 25/09/2012 – Congresso Brasileiro de Software: Teoria e Prática (Natal/RN)
      • 27/09/2012 – Congresso Brasileiro de Software: Teoria e Prática (Natal/RN)
      • 02/10/2012 – Apresentação da Amazon Web Services. 
      • 04/10/2012 – Desenvolvimento de Aplicações para AWS.
      • 09/09/2012 – Desenvolvimento de Aplicações para Google AppEngine.
      • 11/09/2012 – Plataforma OpenNebula 
      • 16/09/2012 – Webmedia 2012 (São Paulo/SP)
      • 18/10/2012 – Webmedia 2012 (São Paulo/SP)
      • 23/10/2012 – Virtualização
      • 25/10/2012 – Não houve aula
      • 30/10/2012 – Software Multitenancy
      • 01/11/2012 – Não houve aula
      • 08/11/2012 – Apache Hadoop
      • 13/11/2012 – Planejamento de Seminários/Entrega de Projetos
      • 15/11/2012 – Feriado – Proclamação da República
      • 20/11/2012 – Prova
      • 22/11/2012 – Debate/Entrega das Provas
      • 27/11/2012 – Seminários (Edgar/Paulo Rego)
      • 29/11/2012 – Seminários (Thiago/Paulo Artur)
      • 04/12/2012 – Seminários (Christiano/José Ricardo)
      • 06/12/2012 – Seminários (Fábio/Phillip)
      • 11/12/2012 – Seminários (Sidartha/Hanna)
      • 13/12/2012 – Seminários (Ítalo/Larissa/Thalisson)
      • 18/12/2012 – Acompanhamento de Projetos.

Os projetos finais deverão ser entregues após o recesso de final de ano. Aqueles que desejarem antecipar a entrega, podem requisitar esta antecipação com o professor.

Avaliação

A avaliação dos alunos constará da realização de uma prova, uma seminário e de um trabalho prático utilizando alguma plataforma de nuvem. Sugere-se que os temas baseiem-se em artigos científicos relevantes, publicados em periódicos ou conferências conhecidas (vide referências). A avaliação dos alunos será feita em etapas durante a disciplina, porém de forma diferenciada entre os de graduação e os de pós-graduação.

A média final da disciplina será calculada por meio de uma média aritmética das notas. Cada atividade valerá uma nota (de 0 a 10).

Critérios de pontuação

Em relação ao seminário, são critérios de avaliação:

  1. Apresentação pessoal;
  2. Correto uso do português;
  3. Não extrapolar nem o tempo mínimo nem o máximo da apresentação;
  4. Correta explanação do tema;

Em relação ao projeto, são critérios de avaliação:

  1. Completude da aplicação;
  2. Corretude da aplicação;

Seminários

De acordo com o interesse dos alunos, segue a lista de seminários definidos para cada aluno:

2012.2

  • Christiano Rodrigues: Cloud Computing e Internet das Coisas;
  • Fábio Silva: Cloud Computing e Redes Veiculares;
  • José Ricardo: Cloud Gaming
  • Paulo Rego: Mobile Cloud
  • Phillip Costa: Segurança em Cloud Computing
  • Thiago Ferraz: Desenvolvimento com Microsoft Azzure
  • Edgar Marçal: Educação como Serviço
  • Ítalo Linhares, Larissa Rocha e Thalisson Oliveira: Testes e Qualidade em software na nuvem
  • Paulo Artur: Desenvolvimento orientado a modelos para cloud computing
  • Sidartha Carvalho: Cloud HealthCare
  • Hanna Tamoudi: Ferramentas OpenSource de auxílio ao desenvolvimento de aplicações na nuvem

Projeto

Também de acordo com o interesse dos alunos, os projetos definidos foram:

2012.1

  • José Ricardo, Thalllison e Paulo Artur: Desenvolvimento de uma aplicação (controle de publicações) multitenancy;
  • Paulo Rego: Desenvolvimento de uma aplicação integrada mobile + cloud;
  • Fábio/Thiago: Desenvolvimento de uma aplicação mobile para gestão de infraestrutura de nuvem;
  • Ítalo/Christiano: Desenvolvimento de uma aplicação Multitenancy;
  • Sidartha: Desenvolvimento de aplicação android integrada à nuvem
  • Hanna: Desenvolvimento de uma mesma aplicação para duas nuvens distintas com portabilidade.

Cada equipe precisa entregar ao professor um documento com a especificação do projeto (1/2 página(s)).

Recursos Didáticos

Todos o material (slides, artigos, vídeos) será disponibilizado aos alunos pela plataforma SigaA e pela lista de emails criada para dar suporte aos alunos que não estejam formalmente inscritos na disciplina.

Bibliografia

A definir…

Referências Fundamentais

    1. Above the Clouds: A Berkeley View of Cloud Computing.
    2. Software Engineering for the Cloud a Research Roadmap. Annais do CBSoft 2012.

Links

Tutorial cadastro no programa Amazon AWS Educate.

Exercícios de Revisão – NP1

Em breve