120 likes | 289 Views
Métodos Formais. Desenvolvimento Formal de Software. Visão geral. Motivação Um Modelo para Desenvolvimento Formal de Software Estilos de Especificação Considerações Finais. Motivação. Crise de Software Na prática, o desenvolvimento é Ad hoc Não há um padrão para o processo
E N D
Métodos Formais Desenvolvimento Formal de Software
Visão geral • Motivação • Um Modelo para Desenvolvimento Formal de Software • Estilos de Especificação • Considerações Finais
Motivação • Crise de Software • Na prática, o desenvolvimento é Ad hoc • Não há um padrão para o processo • São necessários: teorias, técnicas, métodos, ferramentas,... • Profissionais incapazes de controlar • Custo • Tempo (duração do processo) • Qualidade do produto desenvolvido • Manutenção: 70-80% do esforço dedicado
Modelo de Desenvolvimento - Na Prática EspecificaçãoProjetoImplementaçãoManutenção • Especificação: informal • Projeto: informal ou estruturado, semi-formal • JSD, Yourdon, OMT, BON, UML, ... • Implementação: sem garantia de realizar o projeto • Verificação e validação são ignorados!
O que é um método formal emengenharia de software? Método de desenvolvimento de software através do qual se pode definir precisamente um sistema e desenvolver implementações garantidamente corretas em relação a esta definição.
Características de Métodos Formais • Delineamento preciso do processo de desenvolvimento • Baseado em linguagens de especificação e programação com semântica bem definida • Processo de desenvolvimento incremental, que possibilita expressão em vários níveis de abstração • Processo de desenvolvimento usualmente baseado em regras de transformação
Por que métodos formais? • Lançador Ariane • Explodiu 40s após lançamento em 1996 • Therac-25 • Entre 1985 e 1987, pelo menos 6 acidentes causaram mortes e ferimentos graves durante terapia de radiação • Dezenas de outros acidentes • Perda de controle do desenvolvimento e evolução de sistemas complexos
Alguns resultados práticos • CICS da IBM • Unidade de ponto flutuante (transputers) • Protocolos de comunicação • Aplicações espaciais e de aviação • Sistemas de controle de trens • Equipamentos médicos • Arquiteturas de hardware • Aplicações bancárias • Aplicações meteorológicas
Especificação Formal • Descrição Matemática Precisa • Não ambígua • Permite verificar propriedades (ex. consistência) • Usualmente abstratas e concisas • É a base para • Documento contratual • Documentação do produto • Referência para etapas seguintes • E aspectos como completude, corretude? • Especificação é apenas uma etapa!
Grau de formalismo no desenvolvimento • Informal ou Ad hoc • Pouca (ou nenhuma) regra pré-definida • Sistemático • Conjunto de regras pré-estabelecidas • Rigoroso • Regras de transformação estritas • Partes críticas desenvolvidas formalmente • Formal • Verificação formal de todo o processo
Um Modelo para Desenvolvimento Formal Modelo Contratual • Cada etapa do desenvolvimento é caracterizada por um contrato entre um cliente e um fornecedor. • Por exemplo, na fase de análise de requisitos, o cliente é o usuário final do sistema e o fornecedor é o analista. • Validação e verificação são realizadas