Sustentabilidade técnica de software acadêmico no domínio de ferramentas de análise estática de código-fonte

Sustentabilidade técnica de software acadêmico no domínio de ferramentas de análise estática de código-fonte

Apresentação para banca examinadora da defesa de mestrado do Programa de Pós-graduação em Ciência da Computação da Universidade Federal da Bahia, Salvador-Bahia, 19 de Dezembro de 2017.

Joenio Marques da Costa

Orientadora: Dra. Christina von Flach G. Chavez
Co-orientador: Dr. Paulo Roberto Miranda Meirelles

Agenda

  1. Conceitos, motivação e contextualização
  2. Objetivos, estratégia e questão de pesquisa
  3. Estudos realizados e seus resultados
  4. Síntese de resultados e conclusões
  5. Recomendações e trabalhos futuros

Software acadêmico

Todo software usado para coletar, processar ou analisar resultados de pesquisas com intenção de publicação na literatura acadêmica, incluindo desde protótipos escritos pelos próprios cientistas, a produtos completos desenvolvidos profissionalmente.

ALLEN, A. et al. Engineering academic software (dagstuhl perspectives workshop 16252). In: Dagstuhl Manifestos. [S.l.]: Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2017.

Modelos de desenvolvimento de software acadêmico

  • Software como serviço de suporte
  • Software para crédito acadêmico
    • Software Incidental
    • Prática de software paralela
    • Um subcampo de software

HOWISON, J.; HERBSLEB, J. D. Scientific software production: incentives and collaboration. In: Proceedings of the ACM 2011 conference on Computer supported cooperative work. [S.l.: s.n.], 2011.

Modelo de processo de software acadêmico

HOWISON, J. et al. Understanding the scientific software ecosystem and its impact: Current and future measures. Research Evaluation, v. 24, n. 4, p. 454–470, 2015.

Incentivos de reputação e práticas de software acadêmico

HOWISON, J.; HERBSLEB, J. D. Scientific software production: incentives and collaboration. In: Proceedings of the ACM 2011 conference on Computer supported cooperative work. [S.l.: s.n.], 2011.

Ecossistema de Software (Software Ecosystem) - SECO é interação entre diversos atores numa plataforma tecnológica comum, resultando em novas soluções de software ou novos serviços.

MANIKAS, K.; HANSEN, K. M. Software ecosystems–a systematic literature review. Journal of Systems and Software, Elsevier, v. 86, n. 5, p. 1294–1306, 2013.

56% dos pesquisadores de todas as áreas do Reino Unido desenvolvem software acadêmico. HETTRICK, S. et al. UK Research Software Survey 2014. 2014.

90% dos pesquisadores na astronomia desenvolvem suas próprias ferramentas de software. MOMCHEVA, I.; TOLLERUD, E. Software use in astronomy: an informal survey. arXiv preprint arXiv:1507.03989, 2015.

Muitas pesquisas não mencionam sequer o uso de software acadêmico em suas publicações. HOWISON, J.; BULLARD, J. Software in the scientific literature: Problems with seeing, finding, and using software mentioned in the biology literature. Journal of the Association for Information Science and Technology, v. 67, n. 9, p. 2137–2155, 2016.

Grande parte dos pesquisadores não sabem o quão confiável seus projetos de software são. MERALI, Z. Computational science: Error, why scientific programming does not compute. Nature, Nature Publishing Group, v. 467, n. 7317, p. 775–777, oct 2010.

O software acadêmico sofre de um fenômeno conhecido por Desordem Caótica Disfuncional (“dysfunctional chaotic churn”) - DCD.

HOWISON, J. et al. Understanding the scientific software ecosystem and its impact: Current and future measures. Research Evaluation, v. 24, n. 4, p. 454–470, 2015.

Desordem Caótica Disfuncional (DCD):

  1. Existência de muitos projetos com poucos usuários;
  2. Projetos com ciclos de vida curtos que se encerram junto ao financiamento inicial;
  3. Comunidades de usuários desconectadas e paralelas;
  4. Incompatibilidades entre os projetos de maneira persistente e imutável;
  5. Tentativas constantes e aparentemente não coordenadas de “reiniciar” tudo (re-boots).

Manifesto from Dagstuhl Perspectives Workshop 16252

Engineering Academic Software


“A qualidade e a sustentabilidade do software acadêmico deve ser avaliado tanto à priori quanto à posteriori.”

ALLEN, A. et al. Engineering academic software (dagstuhl perspectives workshop 16252). In: Dagstuhl Manifestos. [S.l.]: Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2017.

Sustentabilidade

individual - social - econômica - ambiental - técnica

BECKER, C. et al. The karlskrona manifesto for sustainability design. CoRR, abs/1410.6968, 2014.

Sustentabilidade técnica de software

A dimensão técnica diz respeito a capacidade do software de perdurar e de continuar sendo suportado ao longo do tempo, implicando em qualidades de longevidade e manutenção.

Como medir sustentabilidade de software?

Qual perspectiva usar?

VENTERS, C. C. et al. Software sustainability: The modern tower of babel. In: CEUR Workshop Proceedings. [S.l.: s.n.], 2014.

Questão de pesquisa

Como a DCD pode explicar a sustentabilidade técnica dos projetos do ecossistema de software acadêmico de análise estática em termos de publicização, reconhecimento e estágio de evolução?

Estratégia de pesquisa

Estudo de caso exploratório, características:

  • Foco num fenômeno, organização ou sistema em particular;
  • Baixo nível de generalização e alto realismo do contexto;
  • Sem intervenção do pesquisador no ambiente.

STOL, K.-J.; FITZGERALD, B. A holistic overview of software engineering research strategies. In: 3rd International Workshop on Conducting Empirical Studies in Industry. [S.l.: s.n.], 2015.

Estudo 1:

Publicização de software acadêmico de análise estática

Análise estática

Análise estática é a atividade de obter informações acerca de um programa a partir do seu código-fonte, tem suas origens nos estudos e desenvolvimentos de compiladores.

CRUZ, D. d.; HENRIQUES, P. R.; PINTO, J. S. Code analysis: Past and present. 2009.

Revisão de literatura nas conferências ASE e SCAM

Escopo

  • Publicações das conferências ASE e SCAM
  • Incluindo todas as ediçoes até 2015
    • 25 edições da conferência ASE
    • 15 edições da conferência SCAM

Triagem automática

Critério String
Menciona projeto tool ou framework
Disponibiliza download download ou available
Informa URL http, https ou ftp
Análise estática static analysis ou parser

Extração

Critério Explicação
Identificável É possível identificar software entre as contribuições do artigo?
Disponível Podemos encontrar menção a URL do software para download?

Resultados da revisão de literatura do estudo 1

61 artigos com publicação de 60 projetos de software acadêmico de análise estática.

✓ Nome, URL, Artigo, Conferência, Ano

✗ Descrição, Acesso, Distribuição, Licença, Código fonte

Caracterização dos 60 projetos em relação a disponibilidade de download.

Download Número Proporção
Disponível para download 36 60%
Indisponível para download 24 40%

Caracterização dos 36 projetos disponíveis para download em relação à disponibilidade de código fonte.

Código fonte Número Proporção
Disponibiliza código fonte 34 ~94%
Não disponibiliza código fonte 2 ~6%

Caracterização dos 34 projetos com código fonte disponível em relação ao uso de licenças de software livre.

Uso de licenças livres Número Proporção
Utiliza licença de software livre 21 ~62%
Não adota licença alguma 13 ~38%

Caracterização em relação à linguagem de programação.

Estudo 2:

Reconhecimento de software acadêmico de análise estática

Menção

O número e tipo de menção foi utilizado como proxy para medir o grau de reconhecimento ao software acadêmico.

Revisão de literatura nas bases ACM e IEEE

Busca

String de busca para o software s6
content.ftsec:(+civl +concurrency +intermediate +verification +language)
(‘concurrency intermediate verification’) AND CIVL

Triagem

Inspeção manual dos artigos em busca de ocorrências ao nome do projeto (menção) em todo o conteúdo.

Keywording

ID Artigo Anotação
s3 p250 Cita o software como exemplo de ferramenta para recomendação de API numa tabela comparativa.
s3 p546 Nenhuma referência ao nome do software encontrado no texto.
s3 p799 Cita o software como trabalho relacionado.

Extração

Cada menção foi classificada a partir do esquema para classificação de menções elaborado na fase de Keywording.

Tipo de menção Número Proporção
Mencionado apenas na publicação inicial 14 ~23%
Utilizado apenas na publicação inicial 16 ~27%
Utilizado em outros estudos 12 20%
Recebe contribuição de outros estudos 18 30%

Estudo 3:

Ciclo de vida de software acadêmico de análise estática

Ciclo de vida de software

CAPILUPPI, A. et al. Adapting the staged model for software evolution to free/libre/open source software. In: Ninth international workshop on Principles of software evolution: in conjunction with the 6th ESEC/FSE joint meeting. [S.l.: s.n.], 2007.

  • Número de lançamentos de cada projeto
  • Número de versão, data e URL para código fonte de cada lançamento
  • Download de todos(*) os lançamentos com código fonte disponível
    • (*) Apenas aqueles escritos em C, C++ ou Java


analizo.org

Terceiro, A. et al. Analizo: an extensible multi-language source code analysis and visualization toolkit. In: CBSOFT-Ferramentas. [S.l.: s.n.], 2010.

Projetos Estágio
Sem informação sobre lançamentos Desenvolvimento inicial
Com apenas um lançamento Desenvolvimento inicial
Indisponível para download Encerrado
Tornaram-se indisponíveis durante a realização da pesquisa Descontinuado

Os demais projetos com informações sobre lançamento e código fonte disponível foram analisados para coleta das seguintes métricas:

  • Número de módulos
  • Número de linhas de código fonte (eloc)
Estágio de evolução Número Proporção
Inicial, descontinuado ou encerrado 47 78%
Evolução ou manutenção 8 14%
Indícios de estágio inicial, evoluçao ou manutenção 5 8%

Síntese de resultados

O reconhecimento ao software acadêmico de análise estática vem crescendo

Os projetos com licenças de software livre possuem maior reconhecimento

O crescimento médio no número de módulos confirma a lei de “Crescimento Contínuo” do software

Questão: Como a desordem caótica disfuncional (DCD) pode explicar a sustentabilidade técnica dos projetos do ecossistema de software acadêmico de análise estática em termos de publicização, reconhecimento e estágio de evolução?

  • C1: Existência de muitos projetos com poucos usuários;
  • C2: Projetos com ciclos de vida curtos que se encerram junto ao financiamento inicial;
  • C3: Comunidades de usuários desconectadas e paralelas;
  • C4: Incompatibilidades entre os projetos de maneira persistente e imutável;
  • C5: Tentativas constantes e aparentemente não coordenadas de "reiniciar" tudo (re-boots).

DCD C1:

Existência de muitos projetos com poucos usuários

50% é mencionado ou utilizado apenas na publicação inicial.

DCD C2:

Projetos com ciclos de vida curtos que se encerram junto ao financiamento inicial

78% está em estágio inicial de desenvolvimento, descontinuado ou encerrado.

80 artigos apresentam fortes indícios de serem impossíveis de reproduzir uma vez que fazem menção (uso ou contribuição) a projetos em estágio Encerrado.


Better Software, Better Research


“Devemos reconhecer o software como instrumento experimental de primeira-classe na Ciência.”

GOBLE, C. Better software, better research. IEEE Internet Computing, IEEE, v. 18, n. 5, p. 4–8, 2014.

CodeIsScience.com

Software-Carpentry.org

Recomendações

  • Tornar o código fonte do software público o mais cedo possível
  • Fazer o software fácil de ser encontrado e citado fornecendo metadados
  • Adotar uma licença de software e respeitar as licenças dos outros projetos
  • Definir processos claros e transparentes de contribuição, governança e comunicação

JIMéNEZ, R. C. et al. Four simple recommendations to encourage best practices in research software. F1000Research, v. 6, p. 876, jun. 2017.

Trabalhos futuros

  • Incluir 2017 na revisão de literatura para seleção de projetos
  • Adicionar conferências ICSE, ICSME, SANER e SBES
  • Caracterizar dimensões do software na visão de engenheiros de software
  • Coletar dados dos jornais JOSS, JORS e SoftwareX

Obrigado!

joenio@joenio.me


Esta apresentação está disponível em:

http://joenio.me/sustentabilidade-software-academico

(código-fonte: http://github.com/joenio/joenio.me)

Licença Creative Commons

Histórico de apresentações

Onde e quando esta apresentação foi realizada

  • 19 Dezembro 2017, UFBA DCC, Salvador, defesa