Minicursos

Minicurso #1 – Predição de Defeitos de Software: Teoria, Prática e Oportunidades de Pesquisa. (Segunda-feira – 18/09)
Apresentadores: Antônio José Amâncio da Silva, Renan Gomes Vieira, Lincoln Souza Rocha e João Paulo Pordeus Gomes (UFC)

Resumo: A predição de defeitos de software (PDS) é uma técnica que busca identificar os defeitos, ou a propensão a defeitos, antes que eles efetivamente ocorram. O custo de reparar um defeito de software durante a fase de manutenção (i.e., depois do software entrar produção) pode chegar a ordem de 500 vezes mais que o custo de repará-lo durante as fases de projeto e desenvolvimento. A PDS é uma área de pesquisa bastante ativa dentro da Engenharia de Software cujos objetivos principais são: (i) estimar o número de defeitos em sistemas; (ii) descobrir associações entre atributos (métricas) de software e defeitos; e (iii) classificar os módulos (classes) do sistema quanto a sua propensão a defeitos. Dessa forma,  sabendo quais módulos/partes do software são mais propensos a defeitos, é possível priorizar a alocação dos recursos do projeto nas atividades de teste com o intuito de revelar a existência de defeitos e removê-los o quanto antes. As principais abordagens para PDS utilizam técnicas de aprendizagem de máquina baseadas em raciocínio supervisionado (classificação e regressão). O minicurso será dividido em duas partes, uma teórica e outra prática. Na parte teórica serão apresentados os conceitos básicos sobre PDS, o uso de métricas de software e datasets na predição de defeitos, as principais técnicas de aprendizagem de máquina aplicadas na predição de defeitos, o estado da prática e suas limitações e desafios de pesquisa para a área. Na parte prática, será apresentado um tutorial no estilo “hands on” mostrando como construir e utilizar um dataset para predição de defeitos e o uso de ferramentas e bibliotecas de apoio a predição de defeitos em um sistema real.


Minicurso #2 – Desenvolvimento de aplicações para internet das coisas com node-RED (Segunda-feira – 18/09)
Apresentadores: Danilo Reis  e Márcio Maia (UFC)

Resumo: Com a popularização das tecnologias de comunicação e processamento, objetos do mundo físico estão sendo equipados com alguma capacidade de computação. Assim, tais objetos podem ser acessados e controlados por sistemas computacionais, obtendo informações e atuando no ambiente físico que estão inseridos. Esse novo paradigma é chamado de Internet das Coisas (Internet of Things – IoT), que conecta objetos, também conhecidos como Coisas, aos serviços, aplicações e sistemas já existentes na Internet. Dessa forma, o objetivo desse curso é apresentar conceitos básicos para a construção de aplicações para Internet das Coisas e desenvolver alguns projetos simples utilizando a placa de prototipação Intel Galileo e a plataforma de desenvolvimento para Internet das Coisas chamada Node-RED.

Conteúdo programático:
Introdução e visão geral da Internet das Coisas; Elementos arquiteturais, domínios de aplicação e desafios; Arquitetura e comunicação; Protocolos e dispositivos de hardware. Construção de dispositivos embarcados de hardware utilizando Intel Galielo e a plataforma de desenvolvimento Node-RED.


Minicurso #3 – Desmistificando Microservices: Projetando Arquiteturas Efetivamente Escaláveis (Terça-feira – 19/09)
Apresentador: Vinícius Garcia (UFPE)

Resumo: Ao longo dos anos, com os avanços tecnológicos, cada vez mais o termo “computação” vem se transformando com “conexão”. As mais variadas formas de comunicação e conectividade se reinventaram. Desta maneira, diferentes e inovadoras formas de desenvolver software surgiram, aliando novas estratégias, técnicas, metodologias e tecnologias, trazendo tanto a multidisciplinaridade que estas características inerentemente possuem, como também aumentando a complexidade no ciclo de desenvolvimento. Neste cenário, a utilização de arquiteturas monolíticas como padrão de desenvolvimento de aplicações corporativas não encontra mais espaço nem sustentabilidade, principalmente quando a necessidade é por aplicações de larga escala e com alta disponibilidade e, principalmente, trazendo inconvenientes quando há necessidade de iterações e entregas frequentes. Com isso, a arquitetura de microsserviços surge como uma alternativa para construção de aplicações corporativas complexas, escaláveis, flexíveis e em evolução contínua. A abordagem de Arquiteturas de Microsserviços é mais do que apenas sobre tecnologia. Ela alcança a base da organização para permitir que seja possível criar sistemas verdadeiramente escaláveis, adaptativos e complexos que ajudem as organizações a se adaptarem aos mercados competitivos em rápida e frequente mudança. Utilizando uma abordagem prática, este minicurso tem por objetivo explorar os conceitos e fundamentos da arquitetura baseada em microsserviços, os principais obstáculos, as vantagens e trade offs envolvidos na criação das aplicações e as principais características e tomadas de decisão envolvidas no processo. Um único estudo de caso guiará a aplicação dos conceitos.


Minicurso #4 – Desenvolvendo com React e Redux (Terça-Feira – 19/09)
Apresentador: Eduardo Mendes (UNI7)

Resumo: React é a biblioteca JavaScript desenvolvida pelo Faceboook que tem se tornado a referência na construção de interfaces de usuários para aplicações ricas. Aprenda a utilizar Redux, React Router e ES6 para construir uma aplicação real com React.


Minicurso #5 – Gerenciamento de aplicações distribuídas em Big Data (Quinta-Feira – 21/09)
Apresentador: Haroldo Gomes, Yago Moussalem, João Lucas Barbosa, Leandro Seixas & Priscilla Silva (UNIFESSPA)

Resumo: A elasticidade no volume de dados trouxe consigo alguns desafios para as corporações e entidades científicas, como concorrência de dados e inconsistência de hardware. Com isso, o gerenciamento de aplicações, bem como sua orquestração, tornaram-se processos essenciais na gestão de dados e tomadas de decisão. Para a compreensão de tal problemática e complexidade, adota-se a utilização de um serviço de coordenação denominado Apache ZooKeeper (objetivo geral deste proposto minicurso), este que faz a integração entre o HBASE que é um sistema de armazenamento de dados em BigData que provê acesso randômico e em tempo real de leitura e escrita, HDFS (Hadoop Distributed File System) que é um sistema de arquivos distribuídos, com grande tolerância a falhas e o Apache Hadoop é um framework que provê processamento de dados e permite a aplicação escalar entre um ou vários servidores. Este minicurso busca abordar aspectos teóricos sobre aplicações e arquiteturas distribuídas utilizando grandes volumes de dados e uma abordagem prática baseada em implementação orquestrada utilizando Apache ZooKeeper.


Minicurso #6 – Garantia de Qualidade em Ecossistemas de Software Móvel (Quinta-feira – 21/09)
Apresentador: Awdren de Lima Fontão (UFAM), Rodrigo Santos (UNIRIO) e Arilo Claudio Dias Neto (UFAM)

Resumo: Em um Ecossistema de Software Móvel (MSECO), as organizações de software passaram a abrir a sua estrutura para desenvolvedores externos visando atingir metas que garantam o funcionamento da sua plataforma tecnológica, tais como o aumento do número de usuários, de aplicações móveis (apps) e de desenvolvedores. Isso tem requerido estratégias para reestruturar processos de desenvolvimento e motivar o desenvolvimento de apps. Nesse contexto, as organizações têm utilizado lojas de apps como instrumentos para apoiar a garantia de qualidade da plataforma e de suas apps. No entanto, apenas os critérios de qualidade das lojas não garantem que as apps certificadas atinjam o desempenho desejado em relação a número de downloads e avaliações positivas dentro do MSECO. Outros elementos devem ser considerados, e.g., o engajamento do desenvolvedor, a qualidade do suporte oferecido pela organização aos desenvolvedores e os processos internos do MSECO. Neste minicurso, será discutida a garantia de qualidade em MSECOs, incluindo processos e práticas/recomendações atualmente utilizadas para certificação de apps. Casos reais serão analisados e discutidos.