- : Engenharia de Software para Ciência de Dados
| 14:00-15:30 | Transmissão simultânea no Youtube da SBC

: Márcio Ribeiro (UFAL)

Avanços em tecnologias voltadas para Ciência de Dados e Inteligência Artificial, a grande quantidade de dados, iniciativas de dados abertos bem como a crescente disponibilidade de poder computacional têm incentivado investimentos para o desenvolvimento de sistemas suportados por Ciência de Dados. Em particular, diversos setores têm usufruído destes avanços, tais como: redes sociais (e.g., reconhecimento de fake news), Internet das Coisas (e.g., serviços como a Alexa, da Amazon), Cidades Inteligentes (e.g., gerenciamento inteligente de sinais para controle de trânsito), e saúde (e.g., reconhecimento de doenças a partir de imagens em exames de radiologia). No entanto, há evidências acerca de diversas dificuldades técnicas para dar suporte à Ciência de Dados bem como ao desenvolvimento desses sistemas, além de pequenos programas que auxiliam o tratamento de dados, a transformação de dados e a mineração dos mesmos. Essas dificuldades podem causar problemas no fluxo de desenvolvimento, aumentando custos, diminuindo a produtividade e reduzindo a qualidade das entregas. Para minimizar esses problemas, técnicas de Engenharia de Software têm se tornado cada vez mais essenciais nesse contexto. Por exemplo, pode-se trabalhar em revisões sistemáticas, estudos empíricos e controlados e questionários para levantar e melhor entender as demandas e problemas dos desenvolvedores em ambientes de notebooks como o Jupyter ou o Google Colaboratory, por exemplo, para em seguida (i) propor técnicas para o levantamento de requisitos em tais sistemas; (ii) propor e estudar arquiteturas considerando opções e formas de implantação de modelos; (iii) propor a aplicação de princípios de projeto de software, e.g., modularidade, information hiding, princípios SOLID, etc; (iv) propor melhorias de usabilidade (UI/UX) em ambientes de desenvolvimento; (v) propor a utilização de técnicas para melhoria de manutenção de códigos escritos em tais notebooks (e.g., busca e refatoração de smells, busca e refatoração para deixar o código mais limpo e fácil de ler e entender etc); e (vi) propor técnicas para melhor testar esses sistemas e tentar evitar, por exemplo, testes não determinísticos. Dado esse contexto, o objetivo deste painel é discutir algumas das dificuldades que desenvolvedores de sistemas suportados por Ciência de Dados têm levantado. Adicionalmente, o perfil de tais desenvolvedores será discutido, já que muitas pessoas sem formação em computação têm trabalhado no contexto de Ciência de Dados. Ademais, o painel visa discutir metodologias e técnicas da Engenharia de Software que possam ajudar na tarefa de implementar tais sistemas. Além de discutir como a Engenharia de Software pode ajudar, os painelistas irão compartilhar algumas de suas experiências no tópico supracitado.

Painelistas:

  • Marcos Kalinowski (PUC-Rio)
    Engenharia Software para Ciência de Dados: Perspectivas e Preocupações
  • Leonardo Murta (UFF)
    Ciência de Dados em Pequena Escala
  • Eduardo Almeida (UFBA)
    Jupyter Notebooks: Um Panorama da sua Qualidade

Moderador:

  • Márcio Ribeiro (UFAL)

speaker

Márcio Ribeiro

Universidade Federal de Alagoas


speaker

Marcos Kalinowski

PUC-Rio


speaker

Leonardo Murta

Universidade Federal Fluminense


speaker

Eduardo Almeida

Universidade Federal da Bahia