Resumo
Este artigo apresenta um método formal para a especificação
de requisitos de software, o método SCR - Software Cost Reduction,
detalhando seu processo de utilização através de um
estudo de caso. É feita uma discussão dos pontos fortes e
dificuldades inerentes ao uso do método.
Palavras-chave: Especificação de Requisitos, Métodos Formais, Método SCR.
Abstract
This article presents and discusses a formal method for software
requirements specification, the SCR - Software Cost Reduction method, detailing
its utilization process by means of a case study. The strengthness and
difficulties of the method, and other concluding remarks, are pointed out.
Keywords: Requirements Specification, Formal Methods, SCR Method.
1. Introdução
A especificação de requisitos é uma etapa essencial
do processo de desenvolvimento de software, que compreende uma definição
completa do comportamento externo do sistema de software, tanto em termos
de requisitos funcionais quanto de requisitos não funcionais. Vários
estudos identificaram que a definição inadequada de requisitos
é responsável por uma parte significativa dos erros detectados
ao longo do processo de desenvolvimento de sistemas, principalmente no
caso de sistemas dedicados, de tempo real e críticos (Lutz [8]).
Outros estudos indicam que a eliminação de erros de especificação
torna-se cada vez mais difícil e dispendiosa à medida que
o sistema avança para etapas posteriores do seu ciclo de vida, como
projeto e implementação (Davis [3]).
O emprego de métodos formais é um meio efetivo de garantir a qualidade dos requisitos, uma vez que esses métodos produzem especificações precisas, que podem ser rigorosamente validadas. Várias experiências bem sucedidas sobre o uso de métodos formais de especificação, em ambientes industriais, são relatadas em Craigen [2], e incluem aplicações de controle de satélites, controle de tráfego, sistemas de automação de manufatura, sistemas de defesa, entre outros. Porém, a adoção de métodos formais ainda enfrenta barreiras, principalmente no ambiente das empresas. Uma delas é a idéia de que esses métodos são difíceis de serem utilizados e de serem entendidos, uma vez que muitos dos métodos formais baseiam-se em linguagens de especificação que empregam formalismos com forte base matemática e lógica.
O método SCR (Software Cost Reduction), enfocado nesse artigo, utiliza um formalismo de alto nível, sem empregar uma linguagem matemática complexa. Em sua versão atual, o SCR compreende a definição de um modelo de alto nível do sistema (chamado Modelo de Quatro Variáveis), e um modelo de representação tabular, apoiado por um conjunto de construções e definições (chamado Modelo Formal de Requisitos). Tais características tornam o método SCR mais fácil de ser entendido e utilizado por desenvolvedores que possuem uma formação e experiência normalmente encontrada entre os profissionais que especificam sistemas. O método SCR já vem sendo empregado, a nível internacional, em vários projetos reais, conforme é relatado em Bharadwaj [1] e Heitmeyer [6].
Este artigo tem por finalidade apresentar o método SCR, detalhando o seu processo de utilização através de um estudo de caso. A seção 2 descreve o método SCR; a seção 3 complementa a descrição do método, ilustrando sua utilização através da especificação de um exemplo de sistema; e a seção 4 contém as conclusões do artigo.
2. Apresentação do Método SCR
O método SCR foi inicialmente proposto por David Parnas, através
do documento de requisitos do sistema A-7 Operational Flight Program
(Heninger [7]; Parnas [9]). Esse documento contém a maioria das
características fundamentais do método, como, por exemplo,
a notação tabular empregada na criação do Modelo
Formal de Requisitos. Mais recentemente, outros pesquisadores, como Faulk
[4], Heitmeyer [5], e van Schouwen [10], estenderam e refinaram o método,
tornando-o adequado para especificar tanto requisitos de software quanto
requisitos do sistema como um todo. Essa versão mais atual é
a apresentada no presente artigo.
Um dos componentes básicos do método SCR é o Modelo de Quatro Variáveis, que permite representar a interação do sistema com o seu ambiente. Após a identificação das variáveis, é gerado um Modelo Formal de Requisitos, utilizando as construções e a notação tabular. As construções são utilizadas para representar os requisitos do sistema, que são capturados como relações entre variáveis monitoradas e controladas. A notação tabular é utilizada para representar as funções que especificam o comportamento do sistema.
2.1 Modelo de Quatro Variáveis
É um modelo abstrato que trata o comportamento do sistema como
um conjunto de relações matemáticas envolvendo quatro
variáveis: controladas, monitoradas, itens de dados de entrada
e itens de dados de saída. O Modelo de Quatro Variáveis
tem como propósito ser independente de implementação,
especificando apenas o comportamento externo requerido. Os componentes
desse modelo são descritos em seguida.
a) Variáveis
A identificação das variáveis deve ser feita observando-se,
além das necessidades dos usuários, as propriedades físicas
do sistema, incluindo valores capturados ou fornecidos através de
sensores ou displays. As variáveis presentes no Modelo de
Quatro Variáveis são descritas a seguir.
b) Relações
As seguintes relações podem ocorrer no contexto do funcionamento
do sistema: REQ, NAT, IN, OUT e SOFT. O comportamento do
sistema é dado pelas relações NAT e REQ.
A relação NAT define o conjunto de valores possíveis
e captura as necessidades impostas por leis físicas. A relação
REQ define o comportamento ideal do sistema, representando a relação
entre as variáveis monitoradas e controladas. A relação
IN define a precisão com a qual os dispositivos de entrada
capturam os valores monitorados ou define o relacionamento entre variáveis
monitoradas e itens de dados de entrada. A relação OUT
define a precisão com a qual os dispositivos de saída atualizam
as variáveis controladas ou define o relacionamento entre itens
de dados de saída e variáveis controladas. A relação
SOFT define a correspondência entre itens de dados e o software.
2.2 Modelo Formal de Requisitos
Enquanto o Modelo de Quatro Variáveis descreve alguns aspectos
do SCR, o Modelo Formal de Requisitos é menos abstrato e constitui
a base formal para a utilização do método. Nesse modelo,
é considerado apenas o comportamento ideal do sistema (omitindo
detalhes como precisão e tempo) e os requisitos são expressos
como conjuntos de funções sobre estados de variáveis.
A relação REQ do Modelo de Quatro Variáveis é
descrita pelo Modelo Formal de Requisitos, que utiliza para isso as construções
e a notação tabular, conforme apresentado nos itens abaixo.
a) Construções
As construções são utilizadas para representar
o relacionamento entre as variáveis identificadas no contexto do
sistema. As principais construções são descritas a
seguir.
b) Notação Tabular
A notação tabular tem o objetivo de estruturar e simplificar
os requisitos, possibilitando a análise e documentação
detalhada de partes da especificação. O método SCR
utiliza as seguintes tabelas:
3. Utilização do Método SCR
O propósito desta seção é detalhar o processo
de especificação de requisitos com o SCR, através
de um exemplo de sistema. A seqüência de atividades apresentada
visa facilitar a compreensão do método que, na prática,
pode não seguir uma ordem rígida.
3. 1 Exemplo de Sistema
O uso do método será ilustrado através da especificação
de um Sistema de Mistura de Líquidos, cujo objetivo é obter
uma mistura, a partir dos líquidos de dois reservatórios
(A e B). A mistura obtida é aquecida e depois engarrafada, conforme
ilustrado na Figura 1.
É importante destacar a existência de mecanismos manuais para o esvaziamento e reposição de líquido dos reservatórios. O Sistema de Mistura compreende 6 estágios de funcionamento, descritos na Tabela 1.
Os estágios Crítico da Mistura e Crítico da Vazão representam a ocorrência de uma situação que, se não for corrigida dentro de limites de tempo previamente estipulados, comprometerá o funcionamento do sistema. Um alarme será disparado quando o sistema entrar em um desses estágios.
As seguintes restrições devem ser obedecidas ao longo do funcionamento do sistema: (a) o tempo máximo de permanência em um estágio crítico é 100 segundos; (b) o sistema pode ser desativado a qualquer momento, através de uma chave; (c) a torneira do reservatório principal não deve estar aberta ao mesmo tempo que as torneiras A e B; (d) a densidade ideal da mistura é obtida a partir de volumes iguais dos líquidos A e B; (e) a troca de barril e a reposição de líquido nos reservatórios A e B são feitas por subsistemas cujo acionamento estará vinculado a valores de variáveis controladas do Sistema de Mistura.
3. 2 Especificação do Sistema de Mistura de Líquidos
a) Criação do Modelo de Quatro Variáveis
O Modelo de Quatro Variáveis contém uma representação
em alto nível do sistema, mostrando seu funcionamento geral e incluindo
as entradas e saídas. Todos os dispositivos físicos e valores
produzidos a partir desses são definidos pelo modelo.
A Figura 2 mostra o Modelo de Quatro Variáveis para o Sistema de Mistura de Líquidos.
b) Identificação da Classe de Modos
Os estágios apresentados na Tabela 1 serão representados
por modos da classe mcMistura. As classes de modos são importantes,
pois organizam a especificação em função de
um conjunto de modos. A Figura 3 apresenta um grafo de mcMistura
onde D é o modo inicial. Uma seta indica a possibilidade
de ocorrer uma transição e aponta para o modo destino. Esse
grafo irá auxiliar a construção da tabela de transição.
c) Definição de Tipos e Entidades
O método SCR suporta dois tipos base independentes da especificação:
inteiro e enumerado. Esses são empregados na definição
de tipos dependentes da especificação que está sendo
preparada. Por exemplo, na Tabela 2, Temp é um tipo relacionado
apenas com o Sistema de Mistura e suporta valores do tipo base inteiro
variando de -10 a 40. O tipo Temp está associado
com a unidade Celsius.
A Tabela 3 apresenta a definição de entidades do sistema. A palavra entidade, nesse contexto, faz referência a termos, constantes, variáveis monitoradas e controladas. Por exemplo: cTornA é uma variável controlada, definida por uma tabela de condição, do tipo Switch, possui valor inicial Off, e representa a torneira do reservatório A.
d) Construção do Diagrama de Dependências
A Figura 4 apresenta as dependências entre variáveis monitoradas
e controladas, termos e classes de modos. Uma seta indica o sentido da
dependência, por exemplo, a Figura 4 define que tVolResAB
depende de mVolResA e mVolResB.
e) Construção das Tabelas
Tabelas de Condições
As tabelas da Figura 5 definem as variáveis controladas e termos
do Sistema de Mistura. A tabela do item (d) determina que o novo valor
de cReporLiq - cReporLiq' - será True se tVolResAB
for False (o volume do reservatório A ou B é menor
ou igual ao mínimo) e False caso contrário.
A entrada True no lugar de uma condição determina
que a condição para atribuição do valor é
a classe de modos assumir como modo corrente um dos modos da respectiva
linha. A entrada False determina que não pode ser atribuído
o valor da coluna se a classe de modos assumir um dos modos da respectiva
linha. Por exemplo: a tabela do item (f) da Figura 5 especifica que sempre
que o modo corrente for Ms, cTornA' receberá o valor On
e em nenhuma situação Off.
Tabela de Transição de Modos
A diferença entre a avaliação de uma condição
e um evento é que a condição é avaliada em
um único estado enquanto que o evento é avaliado em dois
estados: antigo e novo. Assim, o evento @T(c) retorna True
se a condição c for False no estado antigo
e True no novo estado. O evento @F(c) eqüivale a @T(!(c)).
A clausula WHEN é utilizada em eventos condicionados, ou
seja, que dependem de uma condição. O evento @T(In(Modo,T))
retornará True quando Modo for o modo corrente por
no mínimo T unidades de tempo.
A Tabela 4 define a classe de modos mcMistura. Cada linha dessa
tabela é formada por um par de modos origem e destino extraídos
do grafo que representa a classe (ver Figura 3). Além dos modos,
cada linha faz uso de eventos. Por exemplo: na Tabela 4, se o modo corrente
da classe mcMistura for Ms e o evento @F(mChave) dessa
linha for True, a classe terá como novo modo corrente D.
4. Conclusões
A primeira dificuldade enfrentada na especificação do
Sistema de Mistura de Líquidos com o SCR, foi a criação
do Modelo de Quatro Variáveis, que exigiu um entendimento completo
do sistema para a definição das variáveis monitoradas
e controladas. Depois de criar o Modelo de Quatro Variáveis, foi
necessário identificar os modos, transições e eventos
do sistema, que permitiram a criação do Modelo Formal de
Requisitos. Para criar o Modelo de Quatro Variáveis é importante
ter um conhecimento detalhado do sistema que está sendo desenvolvido,
sendo fortemente indicada a participação de especialistas
da área da aplicação. Por outro lado, para criar o
Modelo Formal de Requisitos, é importante a experiência que
o desenvolvedor tem na utilização do método SCR. O
estudo de caso resultou em um entendimento detalhado do método,
possibilitando a identificação de uma série de pontos
fortes e dificuldades, relatadas a seguir.
Pontos Fortes:
Dificuldades:
Existem ferramentas de software que estão sendo desenvolvidas
para apoiar o método, como, por exemplo, o tool kit descrito
em Heitmeyer [5], e a ferramenta que está sendo implementada pelos
autores desse artigo. Este trabalho visou apresentar o Método SCR
de forma organizada, o que só foi possível após a
compilação da bibliografia, compreensão do método,
preparação de estudos de caso e implementação
parcial de uma ferramenta de software. Além disso, ao longo do estudo
de caso aqui relatado, sentiu-se a necessidade de apresentar didaticamente
certos detalhes do sistema, o que resultou em algumas adaptações
e extensões do método. Espera-se, assim, que o artigo funcione
como um ponto de partida para uso prático do método SCR e
para a realização de estudos mais aprofundados.
Referências
1. BHARADWAJ, R. & HEITMEYER, C. "Applying the SCR Requirements
Specification Method to Practical Systems: A Case Study." 21th Software
Engineering Workshop, Greenbelt MD, December 1996.
2. CRAIGEN, D., GERHART, S., and RALSTON, T. "Formal Methods Reality Check: Industrial Usage". IEEE Transactions on Software Engineering, Volume 21, Number 2, February 1995, pp. 90-98.
3. DAVIS, A.M. Software Requirements. Prentice Hall, Englewood Cliffs, New Jersey, 1993.
4. FAULK, S.R. et alii. "Experience applying the CoRE Method to the Lockheed C-130J." Proceedings of the 9th Annual Conference on Computer Assurance - COMPASS 94, Gaithersburg, MD, June 1994, pp. 3-8.
5. HEITMEYER, C., et alii. "SCR*: A Toolset for Specifying and Analyzing Requirements." Proceedings of the 10th Annual Conference on Computer Assurance - COMPASS 95, Gaithersburg, MD, June 1995, pp. 109-122.
6. HEITMEYER, C.L.; JEFFORDS, R.D.; LABAW B. "Automated Consistency Checking of Requirements Specifications." ACM Transactions on Software Engineering and Methodology, 5(3):231-261, Jul. 1996, pp. 231-261.
7. HENINGER, K.L. "Specifying Software Requirements for Complex Systems: New Techniques and Their Application." IEEE Transactions on Software Eng., Volume 6, Number 1, January 1980, pp. 2-12.
8. LUTZ, R.R. "Analyzing Software Requirements Errors in Safety-Critical Embedded Systems." Proceedings of the ACM SIGSOFT Symposium on the Foundations of Software Engineering, New York, NY, December 1993, pp. 126-133.
9. PARNAS, D.L., et alii. Software Requirements for the A-7 Aircraft. Technical Report 3876, Naval Research Laboratory, Washington DC, 1978.
10. van SCHOUWEN, A.J., PARNAS, D.L., and MADEY, J. "Documentation of Requirements for Computer Systems." Proceedings of the Requirements Engineering Symposium - RE 93, San Diego, CA, 1993, January 1993, pp. 198-207.