Verifying LTL Properties of Bytecode with Symbolic Execution 1
|
|
|
- Elvin Casey
- 10 years ago
- Views:
Transcription
1 Replace this file with prentcsmacro.sty for your meeting, or with entcsmacro.sty for your meeting. Both can be found at the ENTCS Macro Home Page. Verifying LTL Properties of Bytecode with Symbolic Execution 1 Pietro Braione, Giovanni Denaro 2,3 Dipartimento di Informatica Sistemistica e Comunicazione (DISCO) Università degli Studi di Milano-Bicocca, Milano, Italy Mauro Pezzè 4 Dipartimento di Informatica Sistemistica e Comunicazione (DISCO) Università degli Studi di Milano-Bicocca, Milano, Italy and Facoltà di Scienze Informatiche Università della Svizzera Italiana, Lugano, Switzerland Bohuslav Křena 5 Faculty of Information Technology (FIT) Brno University of Technology, Brno, Czech Republic Abstract Bytecode languages are at a very desirable degree of abstraction for performing formal analysis of programs, but at the same time pose new challenges when compared with traditional languages. This paper proposes a methodology for bytecode analysis which harmonizes two well-known formal verification techniques, model checking and symbolic execution. Model checking is a property-guided exploration of the system state space until the property is proved or disproved, producing in the latter case a counterexample execution trace. Symbolic execution emulates program execution by replacing concrete variable values with symbolic ones, so that the symbolic execution along a path represents the potentially infinite numeric executions that may occur along that path. We propose an approach where symbolic execution is used for building a possibly partial model of the program state space, and on-the-fly model checking is exploited for verifying temporal properties on it. The synergy of the two techniques yields considerable potential advantages: symbolic execution allows for modeling the state space of infinite-state software systems, limits the state explosion, and fosters modular verification; model checking provides fully automated verification of reachability properties of a program. To assess these potential advantages, we report our preliminary experience with the analysis of a safety-critical software system. Keywords: Symbolic execution, code-based model checking of software. 1 This work has been partially supported by the European Union through the Research Training Network SeGraVis, by the Czech Ministry of Education under the project Security-Oriented Research in Information Technology, contract CEZ MSM , and by the Czech Science Foundation under the contracts 102/07/0322 and 102/06/P [email protected] 3 [email protected] 4 [email protected] 5 [email protected] c 2008 Published by Elsevier Science B. V.
2 1 Introduction One of the long-standing challenges of the software industry is ensuring that a software system does not contain fatal errors after it is shipped. To this end, software industry is considering formal software verification techniques (e.g. [2]). Formal verification aims to prove that a software artifact is compliant with userprovided specifications of correct behaviour, and can thus complement testing in increasing confidence in the software operation. The success of bytecode languages opens new opportunities for the practical applicability of formal software verification techniques. Bytecode languages are at a very desirable degree of abstraction for formal analysis. Bytecode is unaware of the diverse, semantically rich constructs that high-level programming languages offer to developers, allowing their analysis by means of a common simpler language. Bytecode can be formally analyzed even in the partial or total absence of source code when third-party libraries and COTS are used. Yet, it is at a sufficiently high level of abstraction to avoid issues like memory management and pointers that complicate analysis at the binary level. Additionally, all the well known benefits of platform- and language-independence apply to bytecode analysis. Analysis tools based on bytecode allow to verify the correctness of programs written in different programming languages for different platforms. In this paper we propose a formal analysis methodology for Java bytecode which harmonizes two well-known techniques, model checking and symbolic execution. Model checking is an automatic approach for verifying temporal properties on finite state systems which does a property-guided exploration of the system state space until the property is proved or disproved, producing in the latter case a counterexample execution trace. Symbolic execution executes the program replacing concrete variable values with symbolic ones, and builds a representation of the state space suitable for analysis. We propose an approach that uses symbolic execution for building a model of the program state space, and model checking for verifying temporal properties on it. To reduce the portion of the state space model explored by the checker, we build it on-the-fly as model checking of the temporal property proceeds. The synergy of the two techniques brings considerable advantages [14]. Model checking provides an expressive language for specifying software properties, and efficient algorithms for verifying them automatically. Symbolic execution brings two key advantages. First, it produces a compact representation of the program state space where large set of numeric values are represented by symbols, potentially limiting state explosion during analysis. Second, by initializing software modules with symbolic values, it allows to analyze them in isolation, thus fostering modular verification. However, while recently there has been a renewed interest in using symbolic execution for software verification [14,21,1,8,19], we are not aware of previous research works on this issue in the context of LTL verification based on symbolic execution. The original contribution reported in this paper are: A framework for the analysis of temporal formula with arbitrary predicates on program variables; 2
3 A technology demonstrator composed by an on-the-fly LTL model checker and a prototype virtual machine which does symbolic execution of bytecode without relying on code translation or instrumentation; A preliminary investigation of the computational impact of the proposed analysis by applying our demonstrator to the analysis of a safety-critical software system. Our research is grounded on previous research performed by some of the authors on symbolic execution based software verification [6]. The paper is organized as follows. Section 2 describes the overall framework for symbolically executing bytecode. Section 3 describes how to adapt model checking to bytecode verification. Section 4 reports the architecture of the technology demonstrator used for assessing the proposed approach and some preliminary experience on the verification of the TCAS aircraft collision avoidance system. Section 5 grounds our research effort in the current literature. Section 6 concludes the paper with some final remarks and an overview of our current and future research endeavours. 2 Symbolic execution for bytecode analysis Symbolic execution [15,5] is a well known technique to execute programs with symbolic input values. The execution state stores a predicate, called path condition, that keeps track of the constraints on symbolic values and determines the control flow path yielding the state. For example, when a conditional jump instruction is executed, a decision procedure is invoked to determine if the jump condition and its negation are satisfiable under the current path condition. If both are satisfiable, the current state is split into two next states, and the path condition of each is augmented with the clause determining which branch is executed. Symbolic execution has been traditionally applied to languages with numeric types. When considering languages that allow references and dynamic memory, symbolic execution can be extended with lazy initialization [14]. Lazy initialization calculates the possible initial values of a symbolic reference only when it is first used during execution, then it creates a state for each possible concrete value: null, a reference to a fresh object (assumed to be initially available in the heap but not yet used), a reference to each type-compatible object introduced by previous lazy initialization of other symbolic references. Considering all possible values on first use may generate a high number of states in later phases of the symbolic execution, thus variants have been proposed to further delay the set of values to be considered in order to reduce state explosion [9]. Intuitively, symbolically executing a method is a way to analyze the method invocation from a generic execution state. The initial state of symbolic execution represents the assumptions on the context of the method invocation. In our approach, the least assumption is an initial state containing only the root object, i.e., the receiver (this) of the method invocation, with all fields and method invocation parameters initialized to symbolic values and the path condition set to true. Preconditions on scalar variables, if any, are included in the path condition as predicates on scalar symbols. Preconditions on references are represented by adding 3
4 objects to the heap and replacing symbolic references with concrete ones. The symbolic initialization of static class members requires particular care. According to the Java Virtual Machine specification, initialization of static class members occurs when classes are first loaded, and causes the execution of the class static initializer. As a consequence, the initial state of symbolic execution depends on the assumption on whether or not each class is already loaded. By default we assume all classes as pre-loaded (i.e., we assume that static members have already been initialized and potentially modified before the current symbolic execution), which leads to conservatively initialize static members to fresh symbolic values. Users may configure the set of classes that must not be assumed as pre-loaded: such classes will be loaded on the first use, and their static class initializer will be then executed. For the sake of consistency, we always assume that the classes of the objects initially present in the heap are pre-loaded. Our symbolic execution resolves symbolic references by lazy initialization when they are loaded on the operand stack. To ensure soundness, our implementation of lazy initialization resolves a symbolic reference only with type-compatible concrete references, and enforces the exclusion of non pre-loaded classes. Our symbolic executor offers full support to a generic verification procedure 6 for exploring the symbolic state space in an arbitrary visiting order, and for evaluating user-specified predicates on the explored states. 3 Verifying LTL Properties Temporal logics have been widely used for specifying properties of reactive systems for model checking [4,12]. Linear-time temporal logic (LTL [17]) is generally recommended for model checking frameworks based on explicit exploration of the state space. In this paper, we use LTL to specify properties of Java programs. Informally, an LTL formula is built up from atomic propositions (which evaluate to either true or false in a given state), logic connectives (,,, ), and temporal operators (X for next, U for until, R for release, F for eventually, G for globally). Temporal operators model relations between states of a linear temporal sequence (aka a path). A system satisfies a property described as an LTL formula if the property holds for all possible paths in the system. The full semantics of LTL is out of the scope of this paper; the interested reader is referred to [17] for details. Here we only notice that checking an LTL formula by incrementally evaluating its sub-formulae is possible, but it is more convenient to translate the formula to an automaton (namely a Büchi automaton) that is then used as an operational model to check whether the paths in the state space satisfy the formula [20]. To deal with symbolic states we must adapt traditional model checking algorithms. While evaluating atomic propositions in concrete states always results in either true or f alse, evaluating atomic propositions in symbolic states may lead to ambiguity, since symbolic states can stand for sets of concrete states including states with different evaluations. Le us consider for instance the evaluation of the atomic proposition x > 5 in the symbolic state characterized by the path condition 6 not necessarily a model checker 4
5 x > 0. Without further information x > 0 does not lead to a single truth value for x > 5, which can be either false or true for different states represented by the path condition. To deal with this case, we split the symbolic states according to the atomic propositions incorporated in the formula under verification: with reference to the above example, x > 5 evaluates to false for the states 0 < x 5, while it evaluates to true for x > 5. Splitting symbolic states assigns a unique truth value to atomic propositions in each new symbolic state, albeit increasing the size of symbolic state spaces. Our on-the-fly model checker translates all LTL properties to corresponding Büchi automata, extracts the set of atomic propositions of the properties, configures the symbolic execution engine to split states according to these propositions, and then it starts the symbolic execution. The symbolic execution engine notifies changes in the evaluation of the atomic propositions that occur while traversing the program state space. Based on the notifications, the model checker checks on-thefly compliance with the property automaton, guides the symbolic execution engine through the states to be explored, and terminates when either identifies a counterexample (the property is refuted) or explores the whole state space (the property is proved). Model checking based on symbolic execution needs to determine the equivalence of symbolic states, which is an undecidable problem. We overcome this problem by avoiding state matching, and producing tree-shaped state spaces. In this way, we simplify model checking, but we introduce multiple computations of the same symbolic states (as many times as they are reached), and we may produce infinite state spaces in presence of loops. We avoid infinite state spaces by limiting the depth of the tree to be explored, thus admitting unsound verification (that is, property violations cannot be excluded even if the analysis terminates without producing a counterexample). Repeating model checking of a property with increasing depth of explored state space until the examined property is refuted or proved, would eliminate unsoundness but would not guarantee that the model checking process terminates. We notice that, in absence of state matching, we can only check a subset of LTL, which includes safety properties, but does not include liveness properties [20]. Visser et al. propose subsumption checking to compare symbolic states regardless of the general undecidability of their equivalence [21]. 4 Preliminary Evaluation We evaluated the approach with a prototype tool that analyzes temporal properties on Java programs. Here we draft the architecture of the prototype and report some preliminary experience. 4.1 Prototype Figure 1 illustrates the logical structure of the prototype, which consists of three software modules: a symbolic executor for Java bytecode, a linear temporal logic translator, and a model checker. 5
6 Fig. 1. The logical structure of the prototype The Java Bytecode Symbolic Executor (JBSE from hence) implements the Java Virtual Machine Specification v.2. JBSE supports symbolic values without the need to instrument the source code. It can be customized to explore the symbolic state space with different visiting orders (currently we use depth-first visit), and can backtrack to a previous saved state. Users can provide assumptions to drive symbolic execution, and can specify the concrete classes that must be used to lazily initialize symbolic references by means of regular expressions. JBSE relies on external decision procedures to decide the satisfiability of the path condition and prune unfeasible states (currently the prototype supports CVC3 and the Sicstus CLP environment). Among the features for supporting formal bytecode verification, JBSE offers a special don t care value, which is always expanded to both true and false each time it is evaluated, and can be used to model nondeterminism. JBSE offers methods to set backtrack points at any time of the execution, to register listeners to variable value changes, and to directly access the execution state and observe all the variables. Translation from LTL formulae to Büchi automata is a well studied problem and several translators are available. We exploit the SPIN model checker v [12] run with the option -f or -F and the LTL2BA v. 1.1 tool [10]. Both tools produce Büchi automata described in Promela language as the so-called never claim. We implemented a compiler which translates never claims to suitable Java classes by using the JavaCC v. 4.0 compiler generator. The model checking engine executes the non-deterministic Büchi automaton guiding the on-the-fly symbolic state space generation performed by the symbolic executor. The current implementation of JBSE does not directly support the definition of arbitrary user-defined predicates, which must be implemented as variables in the source code of the program under analysis These variables can be observed by the state observation mechanisms provided by JBSE. 6
7 4.2 TCAS TCAS is an on-board aircraft conflict detection and resolution system used by US commercial aircraft [18], which has been widely studied in academia as a benchmark for safety critical applications [3,16,6]. The experimental work described in this section focuses on the component of TCAS that is responsible for finding the best Resolution Advisory (RA) suggesting to the pilot to either climb or descend, according to the relative position and speed of a nearby aircraft. The component, originally written in C, has been the subject of previous software engineering experiments [13,6]. Aimed at validating our approach to bytecode analysis, we considered the Java equivalent of such component and replicated the analysis of the properties referred in [6]. Our analysis of TCAS considered the safety properties described in [6], and which we fully report in Appendix A. All the properties state some desirable features of the verified TCAS component in terms of the possible occurrence of a maneuver action under some conditions on the input data. As an example, we consider the first property described in [6] stating that, whenever one maneuver does not provide adequate separation and the other does, the former is never selected. The model checker has been fed on the negation of this property, which we will indicate as PN1 (see Figure A.2). This formula is composed by two subformulas, stating the occurrence of an erroneous descend (PN1.1) or climb (PN1.2) maneuver. Both subformulas, in turn, share a common structure where a precondition (left subexpression) is conjoined with a temporal formula stating the eventual execution of the program statement performing a climb or descend maneuver 7. The temporal part has been kept intentionally similar to the original formulation in [6]. All the safety properties are identically structured and differ only for the precondition parts. In the PN1 formula the elementary predicates UPSEPADQ and DOWNSEPADQ state that the separation resulting from, respectively, climbing or descending are adequate. The remaining predicates state that the symbolic execution is at the beginning of the escape maneuver computation ( ATASTEN), at the point where a climb maneuver is selected ( ATASTUPRA), or at the point where a descend maneuver is selected ( ATASTDOWNRA). Since none of the variables in TCAS express any of these predicates, they have been implemented in TCAS as observable boolean variables, one for each predicate, and are evaluated in all the program points where they may change their truth value. The most critical predicates are UPSEPADQ and DOWNSEPADQ, whose evaluation requires state splitting. 4.3 Results We analyzed TCAS to estimate the potential saving of the combination of symbolic execution with model checking in terms of number of traversed states. We verified the five safety properties for TCAS proposed in [6]. The TCAS code that we analyzed does not contain loops, thus symbolic execution built a finite representation of the state space. We analyzed each property both with classic symbolic execution and with symbolic execution combined with model checking. When analyzing 7 A LTL formula Fp states that a state is reachable where the p predicate is true. 7
8 Number of states Property Outcome Classic symbolic execution tion driven by Symbolic execu- (#SESt) Model checking (#MCSt) #MCSt #SESt PN1 True % PN2 True % PN3 False % PN4 False % PN5 True % Table 1 Number of traversed states for TCAS verification the property with classic symbolic execution we inserted assertions in the code, to check if the property is verified, when analyzing the property with the combination of symbolic execution and model checking, we verified the LTL property as discussed in this paper. Table 1 reports the results of our experiments for each property. The first column indicates the property, described in the appendix. The second column shows the verification result on the implementation of TCAS considered in our experiments 8. The third and fourth columns give the number of states traversed when analyzing the property with symbolic execution only and with a combination of symbolic execution and model checking, respectively. The fifth column quantifies the advantages of the combination of symbolic execution and model checking over classic symbolic execution as the ratio between the number of states explored in the two cases, that represents the portion of the symbolic space state that must be explored by the model checker to prove or disprove the property. As we can see, on-the-fly model checking explores a subset of the state space. The saving is higher when properties are not verified (properties PN2 and PN3), since the model checker stops early with a counterexample; it is lower when the properties are verified (properties PN1, PN4 and PN5). When properties are not verified the model checker explored less than 10% of the state space, when properties are verified, the model checker explores between 26% and 66.9%, still with a relevant saving. 5 Related Work Automatic verification of programs is currently the subject of several research efforts. This section reports on related work distinguishing, for presentation purposes, between approaches that rely on symbolic execution to model the execution of a program, and approaches that extract finite models from source code and then rely 8 In [6] the property P3 was incorrectly reported as verified for TCAS. 8
9 on techniques for finite state verification. Symbolic execution-based verification Several research prototypes for testing and verification of Java programs use symbolic execution to explore program state spaces, for different purposes: JPF-SE checks program states against logic assertions and can generate test cases for the traversed paths [14,21,1]. Bogor/Kiasan checks class methods against JML specifications [8]. Tomb, Brat and Visser s prototype checks for occurrence of unhandled runtime exceptions [19]. None of the above prototypes symbolically executes bytecode directly. They either translate bytecode to some checkable language (for instance, Bogor/Kiasan translates bytecode to BIR, which is then symbolically executed), or rely on the user to handle symbolic values and heap analysis at the source code level (as in JPF-SE). Our prototype executes the bytecode through a suitable JVM that provides native support for symbolic values and heap analysis at the bytecode level. Thus, our approach does not face any semantic mismatch that may derive from translation between non semantically equivalent languages, and avoids the burden on programmers of instrumenting the code and handling lazy initializations. Extraction of finite state models from source code The Bandera toolkit supports LTL model checking of Java programs [7]. Bandera provides a set of analysis and transformation components that extract finite state models from the program source code, leverages finite-state model checkers (such as Spin and SMV) to perform LTL verification on the models, and maps the results back to the original source code. The main disadvantage of Bandera comes from the semantic gap between the modeling languages of the model checkers and the Java programming language, which in several cases hinders the possibility of automatically extracting the finite state models. Henzinger et al. and Ball and Rajamani describe approaches to verifying temporal properties of programs by exploiting predicate abstractions of programs [11,2]. Predicate abstraction works very well for abstracting program control flows and can deal with infinite paths better than symbolic execution. However, there is not a really convenient abstraction that accounts for all possible dependencies between program references and heap structures. Symbolic execution in combination with lazy initialization allows for a thorough analysis of the dependencies between the heap and the program state space, which are extremely important when analyzing bytecode. 6 Conclusions Model checking can provide formal analysis of critical properties of programs, and successfully complement program testing for systems with high quality software requirements. Model checking of programs is challenging because programs are usually defined over infinite input domains, which cannot be directly dealt by traditional model checking procedures for finite state systems. Symbolic execution has the 9
10 potential to contrast this problem by providing finite representations of potentially infinite sets of the numeric executions of a program. In this paper, we have presented our approach to LTL model checking of Java programs based on symbolically executing the programs at the bytecode level. We see clear advantages in addressing the analysis at the bytecode level: bytecode provides a nicer level of abstraction than both source and binary code, is available even in partial absence of source code, and brings in the well known advantages of platform- and language-independency. We have described a prototype that implements our approach, and we have reported the results of a preliminary experience with the analysis of a safety-critical application. The initial results support our belief that the interplay of model checking and symbolic execution can provide suitable tradeoffs for the portion of program state space that needs to be explored to analyze LTL properties. Our approach differs from the other existing approaches that address verification by means of the combination of model checking and symbolic execution. First, the other approaches that we are aware of, do not target verification of LTL properties: they either target generic properties (such as absence of runtime exceptions), or verify pre- and post-conditions at the boundaries of program modules. LTL allows for specifying and checking interprocedural relations between modules that involve relations on the program variables, and thus can capture the critical properties that are specific to a software system. Furthermore, most existing approaches do not symbolically execute bytecode directly: they either rely on translations to checkingoriented languages (which can be the source of semantic mismatches) or require the manual instrumentation of symbolic values and lazy initialization in the source code (which can be burdensome and error prone). Our future research agenda includes several still open issues. Coping with infinity that arise from loop unfolding and from recursive data structures is a classical problem for symbolic execution, and strategies must be defined so that in most practical cases the analysis is able to produce an answer. Issues of analysis costs deserve further investigation: compared to other abstractions, symbolic execution builds a very precise model of the state space, but leads to techniques with higher computational cost than methods that analyze abstractions of the state space. Finally, the presence of symbolic values mandates the use of automatic decision procedures whose impact needs to be further assessed. Our long-term goal is gaining a better understanding on the assumptions and tradeoffs on the above issues, such as to devise a practical methodology based on the approach proposed in this paper. References [1] Anand, S., C. S. Pasareanu and W. Visser, JPF-SE: A symbolic execution extension to java pathfinder, in: Proceedings of the 13th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2007), Lecture Notes in Computer Science 4424 (2007), pp [2] Ball, T. and S. K. Rajamani, Automatically validating temporal safety properties of interfaces, Lecture Notes in Computer Science 2057 (2001), pp [3] Chan, W., R. Anderson, P. Beame, S. Burns, F. Modugno, D. Notkin and J. Reese, Model checking large software specifications, ACM SIGSOFT Software Engineering Notes 21 (1996), pp
11 [4] Clarke, E. N., E. A. Emerson and A. P. Sistla, Automatic verification of finite-state concurrent systems using temporal logic specifications, ACM Transactions on Programming Languages and Systems 8 (1986), pp [5] Clarke, L., A system to generate test data and symbolically execute programs, IEEE Transactions on Software Engineering 2 (1976), pp [6] Coen-Porisini, A., G. Denaro, C. Ghezzi and M. Pezzè, Using symbolic execution for verifying safetycritical systems, in: Proceedings of the Joint European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE 2001), 2001, pp [7] Corbett, J. C., M. B. Dwyer, J. Hatcliff, S. Laubach, C. S. Pasareanu, Robby and H. Zheng, Bandera: extracting finite-state models from java source code, in: Proceedings of the 22nd International Conference on Software Engineering (ICSE 00), 2000, pp [8] Deng, X., J. Lee and Robby, Bogor/Kiasan: A k-bounded symbolic execution for checking strong heap properties of open systems, in: Proceedings of the 21st International Conference on Automated Software Engineering (ASE 2006), 2006, pp [9] Deng, X., Robby and J. Hatcliff, Towards a case-optimal symbolic execution algorithm for analyzing strong properties of object-oriented programs, in: 5th IEEE International Conference on Software Engineering and Formal Methods (SEFM 2007), 2007, pp [10] Gastin, P. and D. Oddoux, Fast LTL to Büchi automata translation, in: G. Berry, H. Comon and A. Finkel, editors, Proceedings of the 13th International Conference on Computer Aided Verification (CAV 01), Lecture Notes in Computer Science 2102 (2001), pp URL [11] Henzinger, T. A., R. Jhala, R. Majumdar and G. Sutre, Lazy abstraction, in: 29th ACM SIGPLAN- SIGACT Symposium on Principles of Programming Languages (POPL 2002) (2002), pp [12] Holzmann, G. J., The model checker spin, IEEE Transactions on Software Engineering 23 (1997), pp [13] Hutchins, M., H. Foster, T. Goradia and T. Ostrand, Experiments on the effectiveness of dataflowand controlflow-based test adequacy criteria, in: Proceedings of the 16th International Conference on Software Engineering, Sorrento, Italy, 1994, pp [14] Khurshid, S., C. S. Pasareanu and W. Visser, Generalized symbolic execution for model checking and testing, in: Proceedings of the 9th International Conference on Tools and Algorithms for Construction and Analysis of Systems (TACAS 2003), Lecture Notes in Computer Science 2619 (2003), pp [15] King, J., Symbolic execution and program testing, Communications of the ACM 19 (1976), pp [16] Leveson, N., M. Heimdahl, H. Hildreth and J. Reese, Requirements specification for process-control systems, IEEE Transactions on Software Engineering 20 (1994), pp [17] Pnueli, A., The temporal logic of programs, in: FOCS, 1977, pp [18] RTCA, Minimum operational performance standards for traffic alert and collision avoidance system (TCAS) airborne equipment, Technical Report DO-185, Radio Technical Commission for Aeronautics (1990). [19] Tomb, A., G. P. Brat and W. Visser, Variably interprocedural program analysis for runtime error detection, in: Proceedings of the International Symposium on Software Testing and Analysis (ISSTA 2007) (2007). [20] Vardi, M. Y., An automata-theoretic approach to linear temporal logic, in: Proceedings of the VIII Banff Higher order workshop conference on Logics for concurrency : structure versus automata (1996), pp [21] Visser, W., C. S. Pasareanu and R. Pelanek, Test input generation for java containers using state matching, in: Proceedings of the International symposium on Software testing and analysis (ISSTA 2006) (2006), pp
12 A TCAS proprerties A.1 The TCAS code Braione, Denaro, Křena, Pezzè The experimental work focuses on the component of TCAS that is responsible for finding the best RA. The component, which consists of 120 lines of code, comes from a set of programs used by Hutchins et al. in a previous experiment [13]. Figure A.1 shows the code of procedure alt sep test(), which is referred to in all the LTL properties taken into account. public int alt_sep_test() { boolean enabled, tcas_equipped, intent_not_known; boolean need_upward_ra, need_downward_ra; int alt_sep; ASTBeg: enabled = High_Confidence && (Own_Tracked_Alt_Rate <= OLEV) && (Cur_Vertical_Sep > MAXALTDIFF); tcas_equipped = (Other_Capability == TCAS_TA); intent_not_known = Two_of_Three_Reports_Valid && (Other_RAC == NO_INTENT); alt_sep = UNRESOLVED; if ( enabled && ((tcas_equipped && intent_not_known)!tcas_equipped)) { ASTEn: need_upward_ra = Non_Crossing_Biased_Climb() && Own_Below_Threat(); need_downward_ra = Non_Crossing_Biased_Descend() && Own_Above_Threat(); if (need_upward_ra) ASTUpRA: alt_sep = UPWARD_RA; else if (need_downward_ra) ASTDownRA: alt_sep = DOWNWARD_RA; else ASTUnresRA: alt_sep = UNRESOLVED; } } return alt_sep; Fig. A.1. The code of alt sep test() The vertical separation between the two airplanes is represented by the global variable Cur Vertical Sep, while Up Separation and Down Separation represent the estimated vertical separation after a climbing maneuver and a descending maneuver, respectively. Own Tracked Alt and Other Tracked Alt represent the altitudes of the airplanes. These variables can be regarded as input data for the analyzed sub-system. The vertical separation at the closest point of approach is considered to be adequate if it is greater than a threshold value (Positive RA Alt Thresh), which can be viewed as a system constant. The code contains the following five labels: ASTBeg, which identifies the beginning of the code; ASTEn, which identifies the first statement used for compute the best escape maneuver; ASTUpRA, which identifies the statement where a climbing RA is selected; ASTDownRA, which identifies the statement where descending RA is selected; ASTUnresRA, which identifies the statement where no RA is selected. 12
13 A.2 Atomic predicates This subsection defines the atomic predicates necessary for defining the LTL verification formulas. ATASTEN: the next statement is ASTBeg; ASTUPRA: the next statement is ASTUpRA; ASTDOWNRA: the next statement is ASTDownRA; UPSEPADQ def = (Up Separation >= Positive RA Alt Thresh): Up Separation is adequate; DOWNSEPADQ def = (Down Separation >= Positive RA Alt Thresh): Down Separation is adequate; UPSEPBEST def = (Up Separation > Down Separation): the estimated separation for a climbing maneuver is better than that for a descend maneuver; DOWNSEPBEST def = (Up Separation < Down Separation): the estimated separation for a descend maneuver is better than that for a climb maneuver; OWNOVER def = (Own Tracked Alt > Other Tracked Alt): the maneuvering aircraft is above the approaching aircraft; OTHEROVER def = (Own Tracked Alt < Other Tracked Alt): the maneuvering aircraft is below the approaching aircraft. A.3 Verified properties This section reports the five TCAS safety properties and the associated LTL formulas used for checking them. Property 1: Safe Advisory Selection Meaning of the property: If one maneuver produces adequate separation and the other does not, then the RA corresponding to the maneuver that does not produce adequate separation is not issued. Checked by LTL formula PN1. ( UPSEPADQ DOWNSEPADQ) F( ATASTEN F ATASTDOWNRA) (PN1.1) ( UPSEPADQ DOWNSEPADQ) F( ATASTEN F ATASTUPRA) (PN1.2) Fig. A.2. PN1 and its subformulas Property 2: Best Advisory Selection Meaning of the property: Let neither climb nor descent maneuvers produce adequate separation. Then, the RA corresponding to the maneuver that produces less separation is never issued. Checked by LTL formula PN2. 13
14 ( UPSEPADQ DOWNSEPADQ UPSEPBEST) ( UPSEPADQ DOWNSEPADQ DOWNSEPBEST) F( ATASTEN F ATASTDOWNRA) (PN2.1) F( ATASTEN F ATASTUPRA) (PN2.2) Fig. A.3. PN2 and its subformulas Property 3: Avoid Unnecessary Crossing Meaning of the property: If both climbing and descending produce adequate separation, then a crossing RA is never issued. Checked by LTL formula PN3. ( UPSEPADQ DOWNSEPADQ OWNOVER) F( ATASTEN F ATASTDOWNRA) (PN3.1) ( UPSEPADQ DOWNSEPADQ OTHEROVER) F( ATASTEN F ATASTUPRA) (PN3.2) Fig. A.4. PN3 and its subformulas Property 4: No Crossing Advisory Selection Meaning of the property: A crossing RA is never issued. Checked by LTL formula PN4. ( OWNOVER) F( ATASTEN F ATASTDOWNRA) (PN4.1) ( OTHEROVER) F( ATASTEN F ATASTUPRA) (PN4.2) Fig. A.5. PN4 and its subformulas Property 5: Optimal Advisory Selection Meaning of the property: The RA that produces less separation is never issued. Checked by LTL formula PN5. ( UPSEPBEST) F( ATASTEN F ATASTDOWNRA) (PN5.1) ( DOWNSEPBEST) F( ATASTEN F ATASTUPRA) (PN5.2) Fig. A.6. PN5 and its subformulas 14
Verifying LTL Properties of Bytecode with Symbolic Execution 1
Replace this le with prentcsmacro.sty for your meeting, or with entcsmacro.sty for your meeting. Both can be found at the ENTCS Macro Home Page. Verifying LTL Properties of Bytecode with Symbolic Execution
Formal Verification by Model Checking
Formal Verification by Model Checking Natasha Sharygina Carnegie Mellon University Guest Lectures at the Analysis of Software Artifacts Class, Spring 2005 1 Outline Lecture 1: Overview of Model Checking
Testing LTL Formula Translation into Büchi Automata
Testing LTL Formula Translation into Büchi Automata Heikki Tauriainen and Keijo Heljanko Helsinki University of Technology, Laboratory for Theoretical Computer Science, P. O. Box 5400, FIN-02015 HUT, Finland
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder Matt Department of Computer Science and Engineering University of Minnesota [email protected] Abstract We present
Model Checking of Software
Model Checking of Software Patrice Godefroid Bell Laboratories, Lucent Technologies SpecNCheck Page 1 August 2001 A Brief History of Model Checking Prehistory: transformational programs and theorem proving
Model Checking: An Introduction
Announcements Model Checking: An Introduction Meeting 2 Office hours M 1:30pm-2:30pm W 5:30pm-6:30pm (after class) and by appointment ECOT 621 Moodle problems? Fundamentals of Programming Languages CSCI
Model Checking II Temporal Logic Model Checking
1/32 Model Checking II Temporal Logic Model Checking Edmund M Clarke, Jr School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 2/32 Temporal Logic Model Checking Specification Language:
The Model Checker SPIN
The Model Checker SPIN Author: Gerard J. Holzmann Presented By: Maulik Patel Outline Introduction Structure Foundation Algorithms Memory management Example/Demo SPIN-Introduction Introduction SPIN (Simple(
Software Engineering using Formal Methods
Software Engineering using Formal Methods Model Checking with Temporal Logic Wolfgang Ahrendt 24th September 2013 SEFM: Model Checking with Temporal Logic /GU 130924 1 / 33 Model Checking with Spin model
Specification and Analysis of Contracts Lecture 1 Introduction
Specification and Analysis of Contracts Lecture 1 Introduction Gerardo Schneider [email protected] http://folk.uio.no/gerardo/ Department of Informatics, University of Oslo SEFM School, Oct. 27 - Nov.
Trace Server: A Tool for Storing, Querying and Analyzing Execution Traces
Trace Server: A Tool for Storing, Querying and Analyzing Execution Traces Igor Andjelkovic University of Belgrade Belgrade, Serbia [email protected] Cyrille Artho RCIS/AIST, Tsukuba, Japan [email protected]
Algorithmic Software Verification
Algorithmic Software Verification (LTL Model Checking) Azadeh Farzan What is Verification Anyway? Proving (in a formal way) that program satisfies a specification written in a logical language. Formal
Today s Agenda. Automata and Logic. Quiz 4 Temporal Logic. Introduction Buchi Automata Linear Time Logic Summary
Today s Agenda Quiz 4 Temporal Logic Formal Methods in Software Engineering 1 Automata and Logic Introduction Buchi Automata Linear Time Logic Summary Formal Methods in Software Engineering 2 1 Buchi Automata
T-79.186 Reactive Systems: Introduction and Finite State Automata
T-79.186 Reactive Systems: Introduction and Finite State Automata Timo Latvala 14.1.2004 Reactive Systems: Introduction and Finite State Automata 1-1 Reactive Systems Reactive systems are a class of software
Formal Verification of Software
Formal Verification of Software Sabine Broda Department of Computer Science/FCUP 12 de Novembro de 2014 Sabine Broda (DCC-FCUP) Formal Verification of Software 12 de Novembro de 2014 1 / 26 Formal Verification
Using Patterns and Composite Propositions to Automate the Generation of Complex LTL
University of Texas at El Paso DigitalCommons@UTEP Departmental Technical Reports (CS) Department of Computer Science 8-1-2007 Using Patterns and Composite Propositions to Automate the Generation of Complex
Formal Verification Coverage: Computing the Coverage Gap between Temporal Specifications
Formal Verification Coverage: Computing the Coverage Gap between Temporal Specifications Sayantan Das Prasenjit Basu Ansuman Banerjee Pallab Dasgupta P.P. Chakrabarti Department of Computer Science & Engineering
AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS
TKK Reports in Information and Computer Science Espoo 2009 TKK-ICS-R26 AUTOMATED TEST GENERATION FOR SOFTWARE COMPONENTS Kari Kähkönen ABTEKNILLINEN KORKEAKOULU TEKNISKA HÖGSKOLAN HELSINKI UNIVERSITY OF
Validated Templates for Specification of Complex LTL Formulas
Validated Templates for Specification of Complex LTL Formulas Salamah Salamah Department of Electrical, computer, Software, and Systems Engineering Embry Riddle Aeronautical University 600 S. Clyde Morris
Software Modeling and Verification
Software Modeling and Verification Alessandro Aldini DiSBeF - Sezione STI University of Urbino Carlo Bo Italy 3-4 February 2015 Algorithmic verification Correctness problem Is the software/hardware system
Software safety - DEF-STAN 00-55
Software safety - DEF-STAN 00-55 Where safety is dependent on the safety related software (SRS) fully meeting its requirements, demonstrating safety is equivalent to demonstrating correctness with respect
Fundamentals of Software Engineering
Fundamentals of Software Engineering Model Checking with Temporal Logic Ina Schaefer Institute for Software Systems Engineering TU Braunschweig, Germany Slides by Wolfgang Ahrendt, Richard Bubel, Reiner
Development of dynamically evolving and self-adaptive software. 1. Background
Development of dynamically evolving and self-adaptive software 1. Background LASER 2013 Isola d Elba, September 2013 Carlo Ghezzi Politecnico di Milano Deep-SE Group @ DEIB 1 Requirements Functional requirements
Component visualization methods for large legacy software in C/C++
Annales Mathematicae et Informaticae 44 (2015) pp. 23 33 http://ami.ektf.hu Component visualization methods for large legacy software in C/C++ Máté Cserép a, Dániel Krupp b a Eötvös Loránd University [email protected]
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
Runtime Verification - Monitor-oriented Programming - Monitor-based Runtime Reflection
Runtime Verification - Monitor-oriented Programming - Monitor-based Runtime Reflection Martin Leucker Technische Universität München (joint work with Andreas Bauer, Christian Schallhart et. al) FLACOS
logic language, static/dynamic models SAT solvers Verified Software Systems 1 How can we model check of a program or system?
5. LTL, CTL Last part: Alloy logic language, static/dynamic models SAT solvers Today: Temporal Logic (LTL, CTL) Verified Software Systems 1 Overview How can we model check of a program or system? Modeling
Software Verification: Infinite-State Model Checking and Static Program
Software Verification: Infinite-State Model Checking and Static Program Analysis Dagstuhl Seminar 06081 February 19 24, 2006 Parosh Abdulla 1, Ahmed Bouajjani 2, and Markus Müller-Olm 3 1 Uppsala Universitet,
MetaGame: An Animation Tool for Model-Checking Games
MetaGame: An Animation Tool for Model-Checking Games Markus Müller-Olm 1 and Haiseung Yoo 2 1 FernUniversität in Hagen, Fachbereich Informatik, LG PI 5 Universitätsstr. 1, 58097 Hagen, Germany [email protected]
Software Verification and Testing. Lecture Notes: Temporal Logics
Software Verification and Testing Lecture Notes: Temporal Logics Motivation traditional programs (whether terminating or non-terminating) can be modelled as relations are analysed wrt their input/output
Automata-Based Verification of Temporal Properties on Running Programs Dimitra Giannakopoulou Klaus Havelund
Automata-Based Verification of Temporal Properties on Running Programs Dimitra Giannakopoulou Klaus Havelund RIACS Technical Report 01.21 August 2001 Presented at the 16 th IEEE International Conference
Feature Specification and Automated Conflict Detection
Feature Specification and Automated Conflict Detection AMY P. FELTY University of Ottawa and KEDAR S. NAMJOSHI Bell Laboratories Large software systems, especially in the telecommunications field, are
Tool Support for Model Checking of Web application designs *
Tool Support for Model Checking of Web application designs * Marco Brambilla 1, Jordi Cabot 2 and Nathalie Moreno 3 1 Dipartimento di Elettronica e Informazione, Politecnico di Milano Piazza L. Da Vinci,
Static Program Transformations for Efficient Software Model Checking
Static Program Transformations for Efficient Software Model Checking Shobha Vasudevan Jacob Abraham The University of Texas at Austin Dependable Systems Large and complex systems Software faults are major
Software Model Checking: Theory and Practice
Software Model Checking: Theory and Practice Lecture: Specification Checking - LTL Model Checking Copyright 2004, Matt Dwyer, John Hatcliff, and Robby. The syllabus and all lectures for this course are
INF5140: Specification and Verification of Parallel Systems
INF5140: Specification and Verification of Parallel Systems Lecture 7 LTL into Automata and Introduction to Promela Gerardo Schneider Department of Informatics University of Oslo INF5140, Spring 2007 Gerardo
Formal Verification and Linear-time Model Checking
Formal Verification and Linear-time Model Checking Paul Jackson University of Edinburgh Automated Reasoning 21st and 24th October 2013 Why Automated Reasoning? Intellectually stimulating and challenging
The Course. http://www.cse.unsw.edu.au/~cs3153/
The Course http://www.cse.unsw.edu.au/~cs3153/ Lecturers Dr Peter Höfner NICTA L5 building Prof Rob van Glabbeek NICTA L5 building Dr Ralf Huuck NICTA ATP building 2 Plan/Schedule (1) Where and When Tuesday,
Formal Verification Toolkit for Requirements and Early Design Stages
Formal Verification Toolkit for Requirements and Early Design Stages Julia M. Badger 1 and Sheena Judson Miller 2 1 NASA Johnson Space Center, Houston, TX 77058, USA 2 Barrios Technology, Houston, TX 77058,
Model Checking LTL Properties over C Programs with Bounded Traces
Noname manuscript No. (will be inserted by the editor) Model Checking LTL Properties over C Programs with Bounded Traces Jeremy Morse 1, Lucas Cordeiro 2, Denis Nicole 1, Bernd Fischer 1,3 1 Electronics
Formal Specification and Verification of Avionics Software
Formal Specification and Verification of Avionics Software June 7th, 2006 Outline 1 Introduction Software in the avionics domain Certification requirements Object-oriented technologies 2 Specification
http://aejm.ca Journal of Mathematics http://rema.ca Volume 1, Number 1, Summer 2006 pp. 69 86
Atlantic Electronic http://aejm.ca Journal of Mathematics http://rema.ca Volume 1, Number 1, Summer 2006 pp. 69 86 AUTOMATED RECOGNITION OF STUTTER INVARIANCE OF LTL FORMULAS Jeffrey Dallien 1 and Wendy
ONLINE EXERCISE SYSTEM A Web-Based Tool for Administration and Automatic Correction of Exercises
ONLINE EXERCISE SYSTEM A Web-Based Tool for Administration and Automatic Correction of Exercises Daniel Baudisch, Manuel Gesell and Klaus Schneider Embedded Systems Group, University of Kaiserslautern,
Software testing. Objectives
Software testing cmsc435-1 Objectives To discuss the distinctions between validation testing and defect testing To describe the principles of system and component testing To describe strategies for generating
A Scala DSL for Rete-based Runtime Verification
A Scala DSL for Rete-based Runtime Verification Klaus Havelund Jet Propulsion Laboratory California Institute of Technology, California, USA Abstract. Runtime verification (RV) consists in part of checking
Fabio Massacci Ida Siahaan
Inline-Reference Monitor Optimization using Automata Modulo Theory (AMT) Fabio Massacci Ida Siahaan 2009-09-24 STM09 - UNITN - Siahaan 1 Inlined Reference Monitors Security Policy Original Application
Checking Access to Protected Members in the Java Virtual Machine
Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/
[Refer Slide Time: 05:10]
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture
VDM vs. Programming Language Extensions or their Integration
VDM vs. Programming Language Extensions or their Integration Alexander A. Koptelov and Alexander K. Petrenko Institute for System Programming of Russian Academy of Sciences (ISPRAS), B. Communisticheskaya,
Introduction to Formal Methods. Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm
Introduction to Formal Methods Các Phương Pháp Hình Thức Cho Phát Triển Phần Mềm Outline Introduction Formal Specification Formal Verification Model Checking Theorem Proving Introduction Good papers to
SERENITY Pattern-based Software Development Life-Cycle
SERENITY Pattern-based Software Development Life-Cycle Francisco Sanchez-Cid, Antonio Maña Computer Science Department University of Malaga. Spain {cid, amg}@lcc.uma.es Abstract Most of current methodologies
Safety Verification of the Small Aircraft Transportation System Concept of Operations
Safety Verification of the Small Aircraft Transportation System Concept of Operations Victor Carreño 1 NASA Langley Research Center, Hampton, Virginia, 23681 César Muñoz 2 National Institute of Aerospace,
Software Model Checking: Theory and Practice
Software Model Checking: Theory and Practice Lecture: Secification Checking - Temoral Logic Coyright 2004, Matt Dwyer, John Hatcliff, and Robby. The syllabus and all lectures for this course are coyrighted
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Model Checking based Software Verification
Model Checking based Software Verification 18.5-2006 Keijo Heljanko [email protected] Department of Computer Science and Engineering Helsinki University of Technology http://www.tcs.tkk.fi/~kepa/ 1/24
Model checking test models. Author: Kevin de Berk Supervisors: Prof. dr. Wan Fokkink, dr. ir. Machiel van der Bijl
Model checking test models Author: Kevin de Berk Supervisors: Prof. dr. Wan Fokkink, dr. ir. Machiel van der Bijl February 14, 2014 Abstract This thesis is about model checking testing models. These testing
µz An Efficient Engine for Fixed points with Constraints
µz An Efficient Engine for Fixed points with Constraints Kryštof Hoder, Nikolaj Bjørner, and Leonardo de Moura Manchester University and Microsoft Research Abstract. The µz tool is a scalable, efficient
The ProB Animator and Model Checker for B
The ProB Animator and Model Checker for B A Tool Description Michael Leuschel and Michael Butler Department of Electronics and Computer Science University of Southampton Highfield, Southampton, SO17 1BJ,
On the Modeling and Verification of Security-Aware and Process-Aware Information Systems
On the Modeling and Verification of Security-Aware and Process-Aware Information Systems 29 August 2011 What are workflows to us? Plans or schedules that map users or resources to tasks Such mappings may
Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair
Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair Martin Monperrus, Benoit Baudry Dagstuhl Preprint, Seminar #13061, 2013. Link to the latest version Abstract In this paper, we
Automated Program Behavior Analysis
Automated Program Behavior Analysis Stacy Prowell [email protected] March 2005 SQRL / SEI Motivation: Semantics Development: Most engineering designs are subjected to extensive analysis; software is
Probabilistic Model Checking at Runtime for the Provisioning of Cloud Resources
Probabilistic Model Checking at Runtime for the Provisioning of Cloud Resources Athanasios Naskos, Emmanouela Stachtiari, Panagiotis Katsaros, and Anastasios Gounaris Aristotle University of Thessaloniki,
Data Model Bugs. Ivan Bocić and Tevfik Bultan
Data Model Bugs Ivan Bocić and Tevfik Bultan Department of Computer Science University of California, Santa Barbara, USA [email protected] [email protected] Abstract. In today s internet-centric world, web
Automata-based Verification - I
CS3172: Advanced Algorithms Automata-based Verification - I Howard Barringer Room KB2.20: email: [email protected] March 2006 Supporting and Background Material Copies of key slides (already
CHAPTER 7 GENERAL PROOF SYSTEMS
CHAPTER 7 GENERAL PROOF SYSTEMS 1 Introduction Proof systems are built to prove statements. They can be thought as an inference machine with special statements, called provable statements, or sometimes
Demonstration of an Automated Integrated Test Environment for Web-based Applications
Demonstration of an Automated Integrated Test Environment for Web-based Applications Tiziana Margaria 1,2, Oliver Niese 2, and Bernhard Steffen 2 1 METAFrame Technologies GmbH, Dortmund, Germany [email protected]
Enforcing Security Policies. Rahul Gera
Enforcing Security Policies Rahul Gera Brief overview Security policies and Execution Monitoring. Policies that can be enforced using EM. An automata based formalism for specifying those security policies.
Intrusion Detection via Static Analysis
Intrusion Detection via Static Analysis IEEE Symposium on Security & Privacy 01 David Wagner Drew Dean Presented by Yongjian Hu Outline Introduction Motivation Models Trivial model Callgraph model Abstract
UML-based Test Generation and Execution
UML-based Test Generation and Execution Jean Hartmann, Marlon Vieira, Herb Foster, Axel Ruder Siemens Corporate Research, Inc. 755 College Road East Princeton NJ 08540, USA [email protected] ABSTRACT
MonitorExplorer: A State Exploration-Based Approach to Testing Java Monitors
Department of Computer Science and Engineering University of Texas at Arlington Arlington, TX 76019 MonitorExplorer: A State Exploration-Based Approach to Testing Java Monitors Y. Lei, R. Carver, D. Kung,
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
Monitoring Programs using Rewriting
Monitoring Programs using Rewriting Klaus Havelund Kestrel Technology http://ase.arc.nasa.gov/havelund NASA Ames Research Center Moffett Field, CA, 94035 Grigore Roşu Research Institute for Advanced Computer
Formal verification of contracts for synchronous software components using NuSMV
Formal verification of contracts for synchronous software components using NuSMV Tobias Polzer Lehrstuhl für Informatik 8 Bachelorarbeit 13.05.2014 1 / 19 Problem description and goals Problem description
Optimizing Generation of Object Graphs in Java PathFinder
Optimizing Generation of Object Graphs in Java PathFinder Milos Gligoric, Tihomir Gvero, Steven Lauterburg, Darko Marinov, Sarfraz Khurshid JPF Workshop 1.5.8 Bugs Six Decades Ago 1947: Harvard Mark II
MODEL DRIVEN DEVELOPMENT OF BUSINESS PROCESS MONITORING AND CONTROL SYSTEMS
MODEL DRIVEN DEVELOPMENT OF BUSINESS PROCESS MONITORING AND CONTROL SYSTEMS Tao Yu Department of Computer Science, University of California at Irvine, USA Email: [email protected] Jun-Jang Jeng IBM T.J. Watson
Verifying Semantic of System Composition for an Aspect-Oriented Approach
2012 International Conference on System Engineering and Modeling (ICSEM 2012) IPCSIT vol. 34 (2012) (2012) IACSIT Press, Singapore Verifying Semantic of System Composition for an Aspect-Oriented Approach
Software Engineering Reference Framework
Software Engineering Reference Framework Michel Chaudron, Jan Friso Groote, Kees van Hee, Kees Hemerik, Lou Somers, Tom Verhoeff. Department of Mathematics and Computer Science Eindhoven University of
Stylianos Basagiannis
Interlocking control by Distributed Signal Boxes Technical Report (TR) 4 Stylianos Basagiannis Supervisors: Dr Andrew Pombortsis, Dr Panagiotis Katsaros Aristotle University of Thessaloniki Department
Temporal Logics. Computation Tree Logic
Temporal Logics CTL: definition, relationship between operators, adequate sets, specifying properties, safety/liveness/fairness Modeling: sequential, concurrent systems; maximum parallelism/interleaving
Standard for Software Component Testing
Standard for Software Component Testing Working Draft 3.4 Date: 27 April 2001 produced by the British Computer Society Specialist Interest Group in Software Testing (BCS SIGIST) Copyright Notice This document
Lumousoft Visual Programming Language and its IDE
Lumousoft Visual Programming Language and its IDE Xianliang Lu Lumousoft Inc. Waterloo Ontario Canada Abstract - This paper presents a new high-level graphical programming language and its IDE (Integration
