Executando verificação de segurança...
2

Linux Foundation anuncia o lançamento da TLA+ Foundation

A Linux Foundation, uma organização sem fins lucrativos que gerencia vários projetos de código aberto, anunciou o lançamento da TLA+ Foundation, uma organização dedicada a promover a adoção e o desenvolvimento da linguagem de especificação formal TLA+. A AWS, Oracle e Microsoft estão entre os membros fundadores da TLA+ Foundation.

Desenvolvida pela cientista da computação e matemática Leslie Lamport, a TLA+ é uma linguagem única que permite especificar um sistema, em vez de implementar software. Baseada em conceitos matemáticos, principalmente teoria dos conjuntos e lógica temporal, a TLA+ permite a expressão das propriedades de correção desejadas de um sistema de maneira formal e rigorosa.

A TLA+ inclui um verificador de modelo e um provador de teorema para verificar se a especificação de um sistema satisfaz suas propriedades desejadas. Isso ajuda os desenvolvedores a raciocinar sobre sistemas acima do nível do código, descobrindo e prevenindo falhas de projeto antes que evoluam para bugs durante os estágios posteriores da engenharia de software.

A TLA+ Foundation fornecerá recursos de educação e treinamento em torno do TLA+, financiará pesquisas e desenvolverá ferramentas para a linguagem. A Fundação também tomará decisões sobre aprimoramentos de linguagem, abordará o feedback do usuário e orientará a evolução da linguagem. Além disso, a fundação facilitará uma maior colaboração entre a indústria e a academia, avançando o estado da arte em métodos formais e pesquisa de sistemas simultâneos e distribuídos.

A missão da TLA+ Foundation é defender projetos de código aberto, garantindo que a TLA+ continue a evoluir e permaneça acessível à comunidade tecnológica mais ampla. Isso também promoverá sua adoção mais ampla na indústria de tecnologia. A TLA+ já foi usada com sucesso por grandes empresas de tecnologia como Amazon, Oracle e Microsoft para verificar e projetar sistemas em escala planetária.
Certamente, aqui está um exemplo simples de especificação de um sistema usando a linguagem TLA+:

Suponha que queremos especificar um sistema que permite que vários usuários possam compartilhar uma única impressora. Podemos descrever esse sistema em TLA+ usando as seguintes variáveis e ações:

------------------------------ MODULE Printer ------------------------------
EXTENDS Naturals, TLC

VARIABLES queue, printer_busy

Init == queue = <<>> /\ printer_busy = FALSE

Print(user) == queue' = Append(queue, user)

JobDone == printer_busy' = FALSE /\ 
           IF queue = <<>> THEN queue' = <<>> ELSE printer_busy' = TRUE /\ queue' = Tail(queue)

Next == JobDone \/ Print(1)

Spec == Init /\ [][Next]_<<queue, printer_busy>>

=============================================================================

Nesta especificação, temos duas variáveis: queue (fila de usuários) e printer_busy (indicador de impressora ocupada). A ação Init define o estado inicial do sistema, onde a fila está vazia e a impressora não está ocupada. A ação Print(user) adiciona um usuário à fila de impressão. A ação JobDone indica que a impressora terminou de imprimir um trabalho e está pronta para imprimir outro. A ação Next define a próxima ação possível do sistema, que pode ser ou JobDone ou Print(1).

A especificação completa do sistema é dada pela fórmula Spec, que combina o estado inicial Init com uma sequência de ações Next. A notação [][Next]_<<queue, printer_busy>> é uma fórmula de lógica temporal que significa que a ação Next é sempre possível a partir de qualquer estado, e que as variáveis queue e printer_busy devem ser rastreadas ao longo do tempo.

Essa é apenas uma visão geral muito básica da linguagem TLA+. Para especificações mais complexas, a sintaxe pode se tornar mais complicada, mas a ideia geral é a mesma: descrever o comportamento do sistema em termos de variáveis e ações, e definir uma sequência de ações possíveis a partir de qualquer estado inicial.

Carregando publicação patrocinada...