The software project start developing from different methodologies. For the development of the projects different models are being selected according to the project’s goal and aim. Methodologies decide the time period of any software... more
The software project start developing from different methodologies. For the development of the projects different models are being selected according to the project’s goal and aim. Methodologies decide the time period of any software project without any suitable model software cannot survive in this competitive environment in software market. Every organization have their own effective and efficient software development model. The important stages of any software development life cycle are: Requirement Elicitation, Designing, Coding, Testing, Install/Deploy and Maintenance. Software process model explain the workflow of the project. The making process of software best decide the execution of product. The research paper explains different methodologies life-cycle waterfall, agile, iterative model, spiral model, V-model with their advantages and disadvantages. [8] This paper also explains the best fit SDLC for different software applications.
Propositional bounded model checking has been applied successfully to verify embedded software but is limited by the increasing propositional formula size and the loss of structure during the translation. These limitations can be reduced... more
Propositional bounded model checking has been applied successfully to verify embedded software but is limited by the increasing propositional formula size and the loss of structure during the translation. These limitations can be reduced by encoding word-level information in theories richer than propositional logic and using SMT solvers for the generated verification conditions. Here, we investigate the application of different SMT solvers to the verification of embedded software written in ANSI-C. We have extended the encodings from previous SMT-based bounded model checkers to provide more accurate support for finite variables, bit-vector operations, arrays, structures, unions and pointers. We have integrated the CVC3, Boolector, and Z3 solvers with the CBMC front-end and evaluated them using both standard software model checking benchmarks and typical embedded applications from telecommunications, control systems and medical devices. The experiments show that our approach can analyze larger problems and substantially reduce the verification time.
Resumen En este artículo describimos una herramienta puramente fun-cional para la verificación simbólica de sistemas, la cual utiliza la técnica llamada model checking (o verificación de modelos) para determinar la verdad de propiedades... more
Resumen En este artículo describimos una herramienta puramente fun-cional para la verificación simbólica de sistemas, la cual utiliza la técnica llamada model checking (o verificación de modelos) para determinar la verdad de propiedades lógicas sobre descripciones de sistemas. Nuestro principal objetivo es utilizar esta herramienta para la resolución de acerti-jos lógicos, a la vez que también se permite la verificación de propiedades complejas sobre sistemas de computación. La herramienta desarrollada es puramente funcional ya que utiliza librerías de Diagramas Binarios de Decisión implementados integramente en Haskell.
Predicate abstraction is an automatic technique that can be used to find abstract models of large or infinite-state systems. In tools like Slam, where predicate abstraction is applied to software model checking, a number of heuristic... more
Predicate abstraction is an automatic technique that can be used to find abstract models of large or infinite-state systems. In tools like Slam, where predicate abstraction is applied to software model checking, a number of heuristic approximations must be used to improve the performance of computing an abstraction from a set of predicates. For this reason, Slam can sometimes reach a state in which it is not able to further refine the abstraction. In this paper we report on an application of Das & Dill’s algorithm for predicate abstraction refinement. Slam now uses this strategy lazily to recover precision in cases where the abstractions generated are too coarse. We describe how we have extended Das & Dill’s original algorithm for use in software model checking. Our extension supports procedures, threads, and potential pointer aliasing. We also present results from experiments with Slam on device driver sources from the Windows operating system.
The underlying model of computation for PROMELA is based on interacting processes with asynchronous communication, and hence SPIN has been mainly used as a verification engine for concurrent software systems. On the other hand, hardware... more
The underlying model of computation for PROMELA is based on interacting processes with asynchronous communication, and hence SPIN has been mainly used as a verification engine for concurrent software systems. On the other hand, hardware verification has mostly focused on clock synchronous register-transfer level (RTL) models. As a result, verification tools such as SMV which are based on synchronous state machine models have been used more frequently for hardware verification. However, as levels of abstractions are being ...
Abstract. Craig interpolation is an active research topic and has become a powerful technique in verification. We present SMTInterpol, an interpolating SMT solver for the quantifier free fragment of the combination of the theory of... more
Abstract. Craig interpolation is an active research topic and has become a powerful technique in verification. We present SMTInterpol, an interpolating SMT solver for the quantifier free fragment of the combination of the theory of uninterpreted functions and the theory of linear arithmetic over integers and reals. A core feature of SMTInterpol is the computation of an inductive sequence of interpolants from a single proof of unsatisfiability. SMTInterpol is SMTLIB 2 compliant and available under an open source software license. 1
We consider the model checking problem for probabilistic pushdown automata (pPDA) and properties expressible in various probabilistic logics. We start with properties that can be formulated as instances of a generalized random walk... more
We consider the model checking problem for probabilistic pushdown automata (pPDA) and properties expressible in various probabilistic logics. We start with properties that can be formulated as instances of a generalized random walk problem. We prove that both qualitative and quantitative model checking for this class of properties and pPDA is decidable. Then we show that model checking for the qualitative fragment of the logic PCTL and pPDA is also decidable. Moreover, we develop an error-tolerant model checking algorithm for general PCTL and the subclass of stateless pPDA. Finally, we consider the class of properties definable by deterministic B uchi automata, and show that both qualitative and quantitative model checking for pPDA is decidable. 1.
Compositional verification and abstraction are the key tech- niques to address the state explosion problem associated with model checking of concurrent software. A promising compositional approach is to prove properties of a system by... more
Compositional verification and abstraction are the key tech- niques to address the state explosion problem associated with model checking of concurrent software. A promising compositional approach is to prove properties of a system by checking properties of its compo- nents in an assume-guarantee style. This article proposes a framework for performing abstraction and assume-guarantee reasoning of concurrent C code in an incremental and fully automated fashion. The framework uses predicate abstraction to extract and refine finite state models of software and it uses an automata learning algorithm to incrementally construct as- sumptions for the compositional verification of the abstract models. The framework can be instantiated with dierent assume-guarantee rules. We have implemented our approach in the ComFoRT reasoning framework and we show how ComFoRT out-performs several previous software model checking approaches when checking safety properties of non-trivial concurrent programs.
The use of assertions to express correctness properties of programs is growing in practice. Assertions provide a form of lightweight checkable specification that can be very effective in finding defects in programs and in guiding... more
The use of assertions to express correctness properties of programs is growing in practice. Assertions provide a form of lightweight checkable specification that can be very effective in finding defects in programs and in guiding developers to the cause of a problem. A wide variety of assertion languages and associated validation techniques have been developed, but run-time monitoring is commonly thought to be the only practical solution. In this paper, we describe how specifications written in the Java Modeling Language (JML), a general purpose behavioral specification and assertional language for Java, can be validated using a customized model checker built on top of the Bogor model checking framework. Our experience illustrates the need for customized state-space representations and reduction strategies in model checking frameworks in order to effectively check the kind of strong behavioral specifications that can be written in JML. We discuss the advantages and tradeoffs of model checking relative to other specification validation techniques and present data that suggest that the cost of model checking strong specifications is practical for several real programs.
The use of assertions to express correctness properties of programs is growing in practice. Assertions provide a form of checkable redundancy that can be very effective in finding defects in programs and in guiding developers to the cause... more
The use of assertions to express correctness properties of programs is growing in practice. Assertions provide a form of checkable redundancy that can be very effective in finding defects in programs and in guiding developers to the cause of a defect. A wide variety of assertion languages and associated validation techniques have been developed, but run-time monitoring is commonly thought to be the only practical solution. In this paper, we describe how specifications written in the Java Modeling Language (JML), a general purpose behavioral specification language for Java, can be validated using a customized model checking framework. Our experience illustrates the need for customized state-space representations and reduction strategies in model checking frameworks in order to effectively check the kind of strong behavioral specifications that can be written in JML. We discuss the advantages of model checking relative to other specification validation techniques and present data that suggest that the cost of model checking strong program specifications is practical for several real programs.
Partial order reduction is a very succesful technique for avoidingthe state explosion problem that is inherent to explicit state modelchecking of asynchronous concurrent systems. It exploits the commutativityof concurrently executed... more
Partial order reduction is a very succesful technique for avoidingthe state explosion problem that is inherent to explicit state modelchecking of asynchronous concurrent systems. It exploits the commutativityof concurrently executed transitions in interleaved system runsin order to reduce the size of the explored state space. Directed modelchecking on the other hand addresses the state explosion problem byusing guided search techniques