An approach for choosing a programming specification methodology

Author(s):  
P. Teplitzky
Author(s):  
JONATHAN LEE ◽  
JOHN YEN

Several methodologies have been developed to enhance the software life cycle of knowledge-based systems by emphasizing on the use of both prototypes and specifications. However, these methodologies focus on the development phase of knowledge-based systems. The roles of prototypes and specifications in the maintenance phase has not been fully explored. Because a suitable problem specification for a knowledge-based system is often difficult to acquire, validating changes to non-executable solution specification during the maintenance phase can be a problem. To address this, we propose an alternative paradigm in which the prototype complements the specification throughout the life cycle. The traceability between them is facilitated by organizing both types of artifacts using a common functional decomposition structure. Based on our task-based specification methodology (TBSM), we have also developed a knowledge engineering tool (called TAME) to facilitate the acquisition and the organization of the specification and the prototype. The proposed methodology and the tool together can thus enhance the verification, validation, and the maintenance of knowledge-based systems through their life cycles.


1986 ◽  
Vol 16 (11) ◽  
pp. 1003-1030 ◽  
Author(s):  
Ali Mili ◽  
Wang Xiao-Yang ◽  
Yu Qing

2021 ◽  
Vol 5 (OOPSLA) ◽  
pp. 1-30
Author(s):  
Christian Bräm ◽  
Marco Eilers ◽  
Peter Müller ◽  
Robin Sierra ◽  
Alexander J. Summers

Smart contracts are programs that execute in blockchains such as Ethereum to manipulate digital assets. Since bugs in smart contracts may lead to substantial financial losses, there is considerable interest in formally proving their correctness. However, the specification and verification of smart contracts faces challenges that rarely arise in other application domains. Smart contracts frequently interact with unverified, potentially adversarial outside code, which substantially weakens the assumptions that formal analyses can (soundly) make. Moreover, the core functionality of smart contracts is to manipulate and transfer resources; describing this functionality concisely requires dedicated specification support. Current reasoning techniques do not fully address these challenges, being restricted in their scope or expressiveness (in particular, in the presence of re-entrant calls), and offering limited means of expressing the resource transfers a contract performs. In this paper, we present a novel specification methodology tailored to the domain of smart contracts. Our specifications and associated reasoning technique are the first to enable: (1) sound and precise reasoning in the presence of unverified code and arbitrary re-entrancy, (2) modular reasoning about collaborating smart contracts, and (3) domain-specific specifications for resources and resource transfers, expressing a contract's behaviour in intuitive and concise ways and excluding typical errors by default. We have implemented our approach in 2vyper, an SMT-based automated verification tool for Ethereum smart contracts written in Vyper, and demonstrated its effectiveness for verifying strong correctness guarantees for real-world contracts.


Sign in / Sign up

Export Citation Format

Share Document