Publicação
Lightweight trustworthy high-level software design
| Resumo: | A modelação e análise formal de software é essencial para obter um projecto de software confiável antes da implementação. O Alloy, uma linguagem de especificação com uma ferramenta de análise automática, é uma abordagem popular para esta tarefa. Frequentemente, um projecto de software inclui muitas variantes com grande partilha de código. Em vez de considerar cada variante individualmente, o desenvolvimento de software orientado à funcionalidade procura desenvolver em conjunto toda a família de variantes, também designada por linha de produtos de software (LPS). Aspectos em comum são organizados em funcionalidades, implementando cada variante um sub-conjunto das mesmas. Existem duas abordagens típicas para implementação de uma LPS: abordagens composicionais, onde cada funcionalidade é implementada num módulo distinto, e abordagens anotativas, onde o código específico de cada funcionalidade é assinalado com uma anotação. A primeira é melhor para adicionar grandes blocos de código a uma funcionalidade, por exemplo uma nova classe, enquanto que a segunda suporta melhor pequenas extensões, tais como adicionar uma instrução a um método. O primeiro objectivo desta tese é propor uma extensão anotativa para o Alloy, para suportar a concepção formal de software orientada à funcionalidade. A ideia é suportar pequenas extensões a um modelo mas sem os problemas de compreensão que derivam das típicas anotações #ifdef usadas na implementação de uma LPS. Para tal, permitimos cores de fundo para identificar os fragmentos associados com cada funcionalidade, dando origem à linguagem Colorful Alloy. Também propusemos uma técnica de análise amalgamada para verificar toda uma família de variantes de uma só vez. O segundo objectivo é propor uma técnica para migração de um conjunto de variantes, possivelmente desenvolvidos com a abordagem clone-and-own, para um único modelo em Colorful Alloy. Para tal, propusemos um catálogo de refatorações e mostramos como podem ser usadas para iterativamente migrar modelos Alloy clonados para um único modelo “colorido”. Também desenvolvemos uma técnica de migração que automatiza todo este processo. Este trabalho foi avaliado com recurso a vários casos de estudo de LPSs, desenvolvidos quer pro-activamente com Colorful Alloy, quer com a abordagem clone-and-own com Alloy normal. Esta avaliação mostrou que a técnica de análise amalgamada pode aumentar consideravelmente a eficiência da verificação de uma família de variantes, quando comparada com a análise variante a variante. Também mostrou que a técnica de migração (incluindo a completamente automática) pode reduzir significativamente a quantidade de código clonado, o que em princípio permitirá simplificar a compreensão de um projecto de uma LPS. |
|---|---|
| Autores principais: | Liu, Chong |
| Assunto: | Concepção formal de software Alloy Linhas de produtos de software Variabilidade Refatoração Clone-and-own Formal software design Software product lines Variability Refactoring Ciências Naturais::Ciências da Computação e da Informação |
| Ano: | 2021 |
| País: | Portugal |
| Tipo de documento: | tese de doutoramento |
| Tipo de acesso: | acesso aberto |
| Instituição associada: | Universidade do Minho |
| Idioma: | inglês |
| Origem: | RepositóriUM - Universidade do Minho |
| Resumo: | A modelação e análise formal de software é essencial para obter um projecto de software confiável antes da implementação. O Alloy, uma linguagem de especificação com uma ferramenta de análise automática, é uma abordagem popular para esta tarefa. Frequentemente, um projecto de software inclui muitas variantes com grande partilha de código. Em vez de considerar cada variante individualmente, o desenvolvimento de software orientado à funcionalidade procura desenvolver em conjunto toda a família de variantes, também designada por linha de produtos de software (LPS). Aspectos em comum são organizados em funcionalidades, implementando cada variante um sub-conjunto das mesmas. Existem duas abordagens típicas para implementação de uma LPS: abordagens composicionais, onde cada funcionalidade é implementada num módulo distinto, e abordagens anotativas, onde o código específico de cada funcionalidade é assinalado com uma anotação. A primeira é melhor para adicionar grandes blocos de código a uma funcionalidade, por exemplo uma nova classe, enquanto que a segunda suporta melhor pequenas extensões, tais como adicionar uma instrução a um método. O primeiro objectivo desta tese é propor uma extensão anotativa para o Alloy, para suportar a concepção formal de software orientada à funcionalidade. A ideia é suportar pequenas extensões a um modelo mas sem os problemas de compreensão que derivam das típicas anotações #ifdef usadas na implementação de uma LPS. Para tal, permitimos cores de fundo para identificar os fragmentos associados com cada funcionalidade, dando origem à linguagem Colorful Alloy. Também propusemos uma técnica de análise amalgamada para verificar toda uma família de variantes de uma só vez. O segundo objectivo é propor uma técnica para migração de um conjunto de variantes, possivelmente desenvolvidos com a abordagem clone-and-own, para um único modelo em Colorful Alloy. Para tal, propusemos um catálogo de refatorações e mostramos como podem ser usadas para iterativamente migrar modelos Alloy clonados para um único modelo “colorido”. Também desenvolvemos uma técnica de migração que automatiza todo este processo. Este trabalho foi avaliado com recurso a vários casos de estudo de LPSs, desenvolvidos quer pro-activamente com Colorful Alloy, quer com a abordagem clone-and-own com Alloy normal. Esta avaliação mostrou que a técnica de análise amalgamada pode aumentar consideravelmente a eficiência da verificação de uma família de variantes, quando comparada com a análise variante a variante. Também mostrou que a técnica de migração (incluindo a completamente automática) pode reduzir significativamente a quantidade de código clonado, o que em princípio permitirá simplificar a compreensão de um projecto de uma LPS. |
|---|