UML: Uma Linguagem De Especificação De Requisitos Não Funcionais
Artigos Científicos: UML: Uma Linguagem De Especificação De Requisitos Não Funcionais. Pesquise 862.000+ trabalhos acadêmicosPor: jair ferreira • 6/11/2013 • 8.509 Palavras (35 Páginas) • 559 Visualizações
Resumo
Especificação formal de programas tem sido uma prática muito comum na engenharia de
software, uma vez que um software bem especificado resulta em um produto com menos falhas e
ambigüidades. Existem linguagens para especificação de programas que permitem que
desenvolvedores especifiquem o comportamento de seus programas. Muitas dessas linguagens
fazem uso do paradigma Projeto por Contrato (Design by Contract), em que um componente de
software garante que o resultado das operações seja correto, se as restrições impostas por ele
forem obedecidas. São exemplos desse tipo de linguagem, JML (Java Modeling Language), para
aplicativos Java, e DBC for C (Design by Contract para C), para aplicativos C.
Contudo, assegurar a corretude de programas escritos na linguagem de programação C é
uma tarefa muito difícil, pois C permite referências a endereços de memória, deixando para o
programador, quase sempre, a responsabilidade pela corretude do software. Em contrapartida, os
requisitos não funcionais, como tempo de processamento, consumo de energia, tamanho do
código fonte, etc., são preocupações típicas de programadores C e, em muitas situações, as
principais justificativas para o uso de C como linguagem de desenvolvimento.
Em detrimento disso, este trabalho apresenta a linguagem CML (C Modeling Language),
que tem como propósito prover um meio de especificar requisitos não funcionais em programas
desenvolvidos na linguagem de programação C, utilizando ferramentas externas para verificação
desses requisitos.
ii
ESCOLA POLITÉCNICA
DE PERNAMBUCO
Abstract
Formal specification has been a common practice in software engineering, therefore a wellspecified
software results in a product with less failures and ambiguities. There are some
specification languages that provide developers a way to specify the behavior of their softwares.
Many of these languages use the Design by Contract paradigm, where a software component
ensures the right results of operations, if the constraints imposed by it can be met. Examples of
such a kind of languages are JML (Java Modeling Language) for Java applications, and DBC for
C (Design by Contract for C) for C applications.
However, to ensure correctness of applications developed in the C programming language
is a very hard task because C allows memory address references, leaving to programmers, almost
always, the responsibility for the software correctness. On the other hand, non-functional
requirements, like processing time, power consumption, code size, are typical concerns of C
programmers and, in many cases, the main reason for choosing C as development language.
For all these reasons, this work presents the language CML (C Modeling Language),
which its purpose is to provide a way to specify non-functional requirements in applications
developed in C programming language, using external tools to verify these requirements.
iii
ESCOLA POLITÉCNICA
DE PERNAMBUCO
Sumário
Índice de Figuras v
Índice de Tabelas vii
Tabela de Símbolos e Siglas viii
1 Introdução 10
1.1 Motivação 10
1.2 Objetivos 11
1.3 Contribuições 11
1.4 Roteiro 12
2 Trabalhos Relacionados e Fundamentação Teórica 13
2.1 Trabalhos Relacionados 14
2.1.1 Projeto por Contrato 14
2.1.2 JML 16
2.1.3 DBC for C 19
2.2 Ferramentas externas de análise 19
2.2.1 Ferramenta para análise de consumo de energia 20
2.2.2 Ferramenta para análise de restrições temporais 20
2.3 Resumo 27
3 Implementação 29
3.1 Modelagem 29
3.2 Compilador da linguagem CML 32
3.2.1 Processo de Compilação 32
3.2.2 JavaCC 33
3.2.3 Gramática da linguagem CML 34
3.3 Integração com ferramentas de análise 38
3.3.1 Módulos da ferramenta de análise de restrições temporais 39
3.3.2 Ambiente CML 39
3.4 Resumo 41
4 Validação da Proposta 42
4.1 Semáforo 43
4.2 Sistema de monitoramento de veículos 45
4.3 Resumo 50
5 Conclusões e Trabalhos Futuros 51
5.1 Contribuições 51
5.2 Dificuldades e Limitações 52
5.3 Trabalhos Futuros 52
Apêndice A 54
iv
ESCOLA POLITÉCNICA
...