Titulo Estágio
Qualidade de Software Autónomo
Áreas de especialidade
Engenharia de Software
Local do Estágio
DEI-FCTUC
Enquadramento
Esta proposta de tese aborda a qualidade do software desenvolvido nas áreas de inteligência artificial e de machine learning. Muitas organizações estão a desenvolver veículos totalmente autónomos (por exemplo, self-driving cars) e nesse contexto surge a necessidade de garantir que o software seja seguro, esteja correto e seja robusto.
Pretende-se aplicar princípios bem estabelecidos da engenharia de software ao domínio da inteligência artificial. Em particular, focar-se-á em software de machine learning que esteja destinado a desempenhar funções críticas em domínios tais como veículos autónomos ou robôs.
Para tal, o ponto de partida será um conjunto de bibliotecas e programas existentes na linguagem de programação Python, aos quais se irá aplicar técnicas de qualidade e confiabilidade de software. O objetivo geral é garantir a segurança e a robustez de sistemas nos quais alguns dos componentes de software possuam inteligência artificial. Este objetivo é dividido em três tarefas: (i) avaliação de atributos de qualidade; (ii) treino de algoritmos para a detetar e compensar avarias de outros componentes; (iii) obtenção de diversidade de software através de machine learning.
A primeira tarefa consiste em avaliar a robustez de software de machine learning, mesmo quando este não tenha sido especificamente treinado para ser robusto. É sabido que os algoritmos de machine learning possuem alguma robustez interente e são capazes de filtrar e compensar erros nos dados. No entanto, é necessário medir e quantificar esta robustez quando se pretende fazer uso destes algoritmos em ambientes em que a segurança é crítica. Para este efeito, será usada a ferramenta ucXception (https://ucxception.dei.uc.pt) desenvolvida no DEI para colocar o software em condições inesperadas de falha, e avaliar a capacidade do software para lidar com essas condições.
A segunda tarefa consiste no treino específico dos algoritmos de machine learning para detetar situações anómalas de outros componentes de software. Um sistema contém tipicamente vários componentes de software, sendo que apenas alguns deles fazem uso de machine learning. Estes podem ser treinados para detetar e compensar avarias de outros componentes no sistema. Tal como na tarefa anterior, a segurança e robustez obtidas será avaliada usando a ferramenta ucXception.
A terceira tarefa está ligada ao princípio da diversidade na engenharia de software. Se duplicarmos um componente de um sistema e compararmos os resultados produzidos, então poderemos detetar erros se as duas versões do componente forem distintas. Assim, é usual em aplicações críticas desenvolver duas ou mais versões diferentes do mesmo software, e comparar os resultados internos antes de produzir um resultado visível externamente. Desta forma, pretende-se usar algoritmos da inteligência artificial para obter diversidade de software logo no momento do treino dos algoritmos.
Espera-se que o resultado final tenha os mais elevados padrões científicos e contribua para a aplicação de técnicas de engenharia de software ao domínio da inteligência artificial.
Objetivo
O objetivo principal desta tese é a aplicação de técnicas de engenharia de software para a construção de sistemas autónomos baseados em inteligência artificial. Se, por um lado, estes sistemas são particularmente difíceis de verificar por terem complexidade elevada, por outro lado há várias oportunidades que podem ser exploradas para garantir a qualidade do software resultante. Pretende-se para isso atingir os seguintes objetivos:
- Avaliar a robustez e a qualidade de software de machine learning, colocando esse software a desempenhar a sua função sob o efeito de falhas e eventos inesperados. Para tal, usar-se-á a ferramenta ucXception (https://ucxception.dei.uc.pt) juntamente com outras que permitam analisar o comportamento de componentes de software.
- Mesmo que um software de machine learning não seja especificamente treinado para filtrar ou compensar erros, é habitual encontrar alguma robustez inerente aos próprios algoritmos usados. Assim, pode colocar-se a hipótese deste software ser mais robusto do que outros tipos de software mais clássicos. Um dos objetivos desta tese é estudar esta hipótese.
- Um sistema autónomo tipicamente inclui componentes de software com inteligência artificial a funcionar em conjunto com componentes de software que usam técnicas de programação mais standardizadas. Coloca-se assim como objetivo estudar formas de treinar os algoritmos de machine learning para detetar situações anómalas de outros componentes de software bem como do sistema como um todo.
- Pretende-se usar algoritmos da inteligência artificial para obter diversidade de software durante o treino dos algoritmos. Em aplicações críticas, tais como self-driving cars, é usual desenvolver-se duas ou mais versões diferentes do mesmo software, e comparar os resultados internos antes de produzir um resultado visível externamente. Para que haja diversidade, e as diferentes versões não falhem em simultâneo, pretende-se treinar versões diferentes dos algoritmos de machine learning.
- Todas as propostas serão rigorosamente avaliadas no contexto de datasets existentes, que permitirão realizar o treino e a medição dos resultados obtidos. Em particular, sugere-se a utilização dos datasets públicos de Shuttle Landing Control Data Set (http://archive.ics.uci.edu/ml/datasets/Shuttle+Landing+Control), 3D Road Network (North Jutland, Denmark) Data Set (http://archive.ics.uci.edu/ml/datasets/3D+Road+Network+%28North+Jutland%2C+Denmark%29) e Mobile Robots Data Set (http://archive.ics.uci.edu/ml/datasets/Mobile+Robots).
Plano de Trabalhos - Semestre 1
Mês 1 - Estudo do estado da arte e levantamento dos requisitos
A primeira tarefa consistirá em tomar contacto com tecnologias de machine learning, bem como a familiarização com os desafios de construir software fiável e com a qualidade necessária para ambientes críticos. Isto resultará numa clara formulação dos objectivos a alcançar por parte do estagiário.
Meses 2 e 3 - Preparação do ambiente de testes
Juntamente com o estudo do estado da arte, pretende-se configurar e adaptar um conjunto de 2 a 4 problemas de machine learning, usando bibliotecas existentes em Python. A intenção é construir um ambiente que simule uma situação real de utilização de algoritmos de machine learning.
Mês 4 - Avaliação da robustez de software de machine learning
Pretende-se colocar o software de machine learning a funcionar sob o efeito de falhas e eventos inesperados. Para tal, usar-se-á a ferramenta ucXception desenvolvida no DEI.
Mês 5 - Escrita da tese intermédia
Deve-se apresentar as tarefas efetuadas durante o primeiro semestre e descrever o trabalho a realizar no segundo semestre, escrevendo para esse efeito um relatório intermédio e preparando uma apresentação pública para discussão. O estado da arte, estudado na primeira tarefa do planeamento, deverá ficar especialmente cuidado no que toca à qualidade de software.
Plano de Trabalhos - Semestre 2
Mês 6 - Robustez de software de machine learning
Nesta tarefa irá estudar-se a hipótese de o software de machine learning ser mais robusto do que outros tipos de software mais clássicos. Esta tarefa será levada a cabo no ambiente de testes construído no primeiro semestre.
Mês 7 - Treino de algoritmos de machine learning para a qualidade
Pretende-se estudar formas de treinar os algoritmos de machine learning para detetar situações anómalas de outros componentes de software bem como do sistema como um todo.
Mês 8 - Geração de versões diversas do mesmo software
Nesta tarefa pretende-se usar algoritmos de machine learning para obter diversidade de software durante o treino dos algoritmos. Em aplicações críticas, tais como self-driving cars, é usual desenvolver-se duas ou mais versões diferentes do mesmo software, e comparar os resultados internos antes de produzir um resultado visível externamente.
Mês 9 - Escrita da tese
O estagiário deve apresentar todo o trabalho levado a cabo no decorrer do estágio. Para tal, deverá escrever uma tese descrevendo o problema e a sua solução, bem como preparar a sua apresentação e discussão pública.
Condições
O trabalho irá ser realizado no Departamento de Engenharia Informática da Universidade de Coimbra e será facultado o acesso a equipamento informático bem como aos laboratórios do DEI. Estão em curso candidaturas a projetos que, caso venham a ter sucesso, conduzirão à abertura de uma bolsa à qual o aluno se poderá candidatar.
Observações
Nada a acrescentar.
Orientador
Raul Barbosa, Ernesto Costa
rbarbosa@dei.uc.pt 📩