Por ANTONIO MENDES DA SILVA FILHO

Professor do DIN/UEM. Doutor em Ciência da Computação

 

O Papel da Especificação Formal no Desenvolvimento de Sistemas de Software

 

O rápido avanço da tecnologia requer, cada vez mais, formas mais rápidas e confiáveis de desenvolver sistemas de software a fim de atender aos requisitos de usuários e sistema. É, portanto, essencial a esses desenvolvedores utilizar técnicas de especificação que ofereçam suporte, ao que costumo denominar de 5 C’s, isto é: corretude, completude, consistência, concisão e clareza. Concomitante a isto, é ainda de suma importância que a técnica de especificação possua um conjunto de conceitos bem definidos e base matemática de modo a permitir a construção e uso de ferramentas computacionais para analisar e simular especificações, bem como verificar a conformidade de implementações com as respectivas especificações.

Neste sentido, uma técnica de especificação formal, fazendo uso de conceitos bem definidos e modelo matemático, é usada para representar propriedades significativas de um sistema. O uso de formalismo durante a especificação permite a eliminação de ambigüidades, inconsistências às quais apenas seriam detectadas mais tarde durante fases de implementação e testes do ciclo de desenvolvimento de um sistema. A correção da especificação num estágio preliminar do desenvolvimento evita que erros sejam corrigidos tardiamente e, portanto, resultem em ser mais onerosos. Agora, o leitor pode questionar: Em que situações a especificação formal poderia ser utilizada?

Neste contexto, um dos principais desafios com o qual desenvolvedores de software se deparam é o de assegurar a confiabilidade de sistemas projetados. Esse objetivo torna-se ainda mais imperativo quando software é empregado em sistemas cuja falha operacional podem ocasionar perdas humanas, econômicas ou causar degradação na prestação de serviços. Em ambientes críticos envolvendo sistemas de controle de tráfego aéreo ou de comando e controle de aeronaves, há uma necessidade preeminente de que os requisitos do sistema sejam precisamente especificados, objetivando implementar corretamente o projeto. Situação similar ocorre em sistemas sujeitos a sofrer degradação no nível de prestação de serviços quando operando em situação de falha. Exemplos de tais sistemas compreendem os sistemas de telecomunicações e sistemas de bancos com caixa de auto-atendimento. Tais sistemas enquadram-se dentro da categoria de sistemas reativos e compreende os sistemas para os quais as técnicas de especificação formal apresentadas podem ser empregadas.

Cabe ainda salientar que, em geral, uma especificação engloba diversos aspectos de sistema como, por exemplo, requisitos comportamentais, não comportamentais, consumo de energia, dimensões física, dentre outros. Dentro desse conjunto, os requisitos comportamentais de sistemas são de suma importância para a classe de sistemas reativos e várias técnicas de especificação formal, como Statecharts e SDL (Specification and Description Language) podem ser empregadas na especificação desses sistemas. A especificação de um sistema compreende várias informações, devendo cada uma delas ser expressa numa linguagem ou técnica apropriada. Embora a linguagem natural constitua uma alternativa para descrever objetivos, metas e requisitos, ela não consegue capturar precisamente e sem ambigüidades os requisitos de um sistema. Consequentemente, técnicas de especificação formal têm sido empregadas para especificar sistemas complexos.

Adicionalmente, para que engenharia de software possa ser considerada uma disciplina de engenharia de fato, torna-se necessário a adoção de técnicas de especificação formal a fim de empreender mais rigor e precisão na especificação de sistemas, objetivando minimizar ao máximo ou, quiçá, eliminar totalmente erros existentes. Satisfazer este objetivo é imperativo em sistemas como, por exemplo, controle de tráfego aéreo, telecomunicações e caixas de auto atendimento de bancos. Note que se algum desses sistemas falhar ou deixar de operar, isto pode implicar em degradação da qualidade de serviços oferecidos, prejuízos financeiros e até perdas humanas (no caso de sistemas críticos). Portanto, assegurar a corretude de funcionamento de um sistema, significa garantir disponibilidade de serviços e confiabilidade operacional.

Concluindo, as técnicas de especificação formal estão cada vez mais se consolidando como ferramenta essencial para a produção de software. Utilizando a base matemática de uma técnica de especificação formal, torna-se possível explorar o projeto de modo mais preciso e rigoroso bem como permite verificar propriedades das especificações e projeto, e ainda analisar de maneira sistemática o comportamento do sistema de software antes de produzi-lo.

Informações complementares e links relevantes é apresentado ao leitor no site http://www.comlab.ox.ac.uk/archive/formal-methods.html

 

 

clique e acesse todos os artigos publicados...

http://www.espacoacademico.com.br - Copyright © 2001-2004 - Todos os direitos reservados