An Integrated Data Model Verifier with Property Templates
|
|
|
- Abigail Morris
- 10 years ago
- Views:
Transcription
1 An Integrated Data Model Verifier with Property Templates Jaideep Nijjar Ivan Bocic Tevfik Bultan University of California, Santa Barbara {jaideepnijjar, bo, Abstract Most modern web applications are built using development frameworks based on the Model-View-Controller (MVC) pattern. In MVC-based web applications the data model specifies the types of objects used by the application and the relations among them. Since the data model forms the foundation of such applications, its correctness is crucial. In this paper we present a tool, IDAVER, that 1) automatically extracts a formal data model specification from applications implemented using the Ruby on Rails framework, 2) provides templates for specifying data model properties, 3) automatically translates the verification of properties specified using these templates to satisfiability queries in three different logics, and 4) uses automated decision procedures and theorem provers to identify which properties are satisfied by the data model, and 5) reports counterexample instances for the properties that fail. Our tool achieves scalable automated verification by exploiting the modularity in the MVC pattern. IDAVER does not require formal specifications to be written manually; thus, our tool enables automated verification and increases the usability by combining automated data model extraction with template-based property specification. I. INTRODUCTION Web applications have become ubiquitous. They are used for commerce, entertainment, social interaction, education and many other tasks. They are globally accessible not only from desktop computers, but from a plethora of mobile devices with network connectivity. Given the significant influence of web applications on modern society, improving their dependability is a critical and crucial problem. Modern web applications are typically built using development frameworks that are based on the Model-View-Controller (MVC) pattern [6]. MVC-based frameworks include Ruby on Rails (Rails for short), Zend for PHP, CakePHP, Django for Python, and Spring for J2EE. The MVC pattern facilitates the separation of the data model (Model) from the user interface logic (View) and the control flow (Controller). In this paper, we focus on dependability of data models in web applications. We present IDAVER, a tool for formal verification of data model properties. A data model specifies the types of objects, the relations among the objects and the constraints on the data model relations. MVC-based frameworks use an object-relational mapping (ORM) to map the object-oriented data representation of the web application to the back-end database. By using these ORM specifications to extract a formal data model, we do not require the user to specify a formal data model manually. Our tool targets web applications developed using the Rails framework. The front-end of our tool automatically extracts a formal data model from the ORM specification of the input application. Although the formal data model is extracted automatically, the user still has to specify the properties she desires to check about the data model. To facilitate this process, we developed a set of property templates. These templates characterize the most common properties we observed in our earlier research on data model verification [10], [11]. These templates can easily be instantiated for different classes and relations by the user. Our tool verifies properties (specified using property templates) on the automatically extracted formal data model by translating verification queries to satisfiability queries in a specified theory and then using a backend solver for that theory. Our tool combines three different variants of this framework. The first two are SAT-based bounded verification and Satisfiability Modula Theories (SMT)-based unbounded verification from our earlier work [10], [11]. In this paper, we add another unbounded verification approach based on First Order Logic (FOL) and a FOL theorem prover. Our tool integrates these three approaches and provides a unified framework for the verification of data models. Our contributions in this paper include 1) property templates that facilitate specification of data model properties, 2) a novel data model verification approach that translates verification queries to first order logic (FOL) and uses an automated FOL theorem prover to answer them, and 3) an integrated tool that combines SAT- SMT- and FOL-based data model verification approaches with property templates. The rest of the paper is organized as follows: Section 2 presents a running example and describes Rails data models. Section 3 defines the formal data model. Section 4 describes the data model property templates. Section 5 presents IDAVER, our tool for integrated data model verification. Section 6 presents a case study. Section 7 discusses the related work and Section 8 concludes the paper. II. DATA MODELS In this section we give an overview of Rails data modeling features using a running example. Figure 1 presents the simplified data model for a social networking application built on the Rails platform. In this application, there are users who create profiles. Photos and videos can be tagged and posted to a user s profile, and users can be attributed with various roles.
2 1 class User < ActiveRecord::Base 2 has_and_belongs_to_many :roles 3 has_one :profile, :dependent => :destroy 4 has_many :photos, :through => :profile 5 end 6 class Role < ActiveRecord::Base 7 has_and_belongs_to_many :users 8 end 9 class Profile < ActiveRecord::Base 10 belongs_to :user 11 has_many :photos, :dependent => :destroy 12 has_many :videos, :dependent => :destroy, 13 :conditions => "format= mp4 " 14 end 15 class Photo < ActiveRecord::Base 16 belongs_to :profile 17 has_many :tags, :as => :taggable 18 end 19 class Video < ActiveRecord::Base 21 belongs_to :profile 22 has_many :tags, :as => :taggable 23 end 24 class Tag < ActiveRecord::Base 25 belongs_to :taggable, :polymorphic => true 26 end A. The Basic Relationships Fig. 1: A data model example Rails allows the developer to declare three different types of relationships using the following association declarations in pairs: has_many, has_one, belongs_to and has_and_belongs_to_many. To declare a one-to-many relationship, the has_many and belongs_to declarations are used (e.g., lines 11 and 16 declare a one-to-many relationship between Profile and Photo). To declare a one to zero-or-one relationship, the has_one and belongs_to declarations are used (e.g., lines 3 and 10 declare that a User is associated with zero or one Profile objects). Finally, to declare a many-to-many relationship two has_and_belongs_to_many declarations are used (e.g., lines 2 and 7 to declare a many-to-many relation between User and Role). B. Extending the Basic Relationships Rails offers constructs to extend the basic relationship to express more complex relationships between objects. The first construct is the :through option, which can be set on either the has_one or has_many declaration. This option allows the developer to express transitive relationships. For example, lines 3, 10 and 11, 16 declare relationships between User and Profile, and between Profile and Photo. The :through option set on the association declaration on line 4 declares a relationship between User and Photo that is the composition of the ones between User and Profile, and Profile and Photo. The second option is the :conditions option which allows the developer to create a relation between one class and the subset of another class. For instance, on line 13 the :conditions option is set on the relation between Profile and Video, denoting that Profile objects are only associated with Video files that satisfy the condition "format= mp4 ". The third option is the :polymorphic option, which can is set on a :belongs_to declaration. This option creates a relation that multiple other classes can relate to, similar to the idea of interfaces in object-oriented programming. In the running example, line 25 sets up such a relation in the Tag Role Tag User Photo Taggable Profile Video f Fig. 2: The schema extracted from the data model in Figure 1. class. The Photo and Video classes both connect to this relation by using the corresponding :as option in lines 17 and 22 (which can be set on either the has_one or has_many). Finally, the :dependent option allows developers to model how to propagate the object deletion at the data model level. The :dependent option can be set to either :delete or :destroy, where :delete will propagate the delete to the associated objects, and no further, whereas :destroy will go into the class of the associated objects and propagate the delete further depending on the :dependent options set on its relations. On line 11 in Figure 1 we see that the :dependent option is set on the relationship between Profile and Photo. This means that when a Profile object is deleted, all associated Photo objects are also deleted. Since the :dependent option is set to :destroy, the delete will also be propagated to any relations in the Photo class with the :dependent option set. III. FORMALIZING DATA MODELS In this section, we describe how Rails data modeling constructs are formalized by our tool. A data model is formally defined as a tuple M = S, C, D where S is the data model schema identifying the sets and relations of the data model, C is a set of relational constraints, and D is a set of dependency constraints [10], [11]. The schema is a tuple S = O, R that is made up of the object classes O and the relations R in the data model. The relations in the schema are specified as tuple consisting of the domain class, the relation name, the relation type and the range class: R O N T O. For example, the schema S = O, R for the running example in Figure 1 consists of the object classes O = {User, Role, Profile, Photo, Video, Tag} and the object relations R contain seven tuples, one for each relation declared in Figure 1: User-Role, User-Profile, User-Photo, Profile-Photo, Profile-Video, Photo-Tag, Video-Tag. As an example, the tuple for the User-Photo relation is (User, User-Photo, (one, many, transitive, not-conditional, not-polymorphic), Photo). Figure 2 shows a visual representation of the schema for the running example (which is automatically generated by our tool IDAVER). The nodes are the object classes and the edges are the object relations, which are depicted according to the type of relation. In addition to the schema, a formal data model contains relational constraints, C that are imposed by their declarations. For example, lines 3 and 10 in Figure 1 declare a one to many relation between the Profile and Photo objects; this constraint
3 would be represented as a relational constraint in C. A formal data model also contains dependency constraints, D, required for modeling delete dependencies. Given the state of the data model before a delete operation, these constraints specify how the deletion of an object and the usage of the :dependent options constrains the state of the data model after the delete operation. Formalizing Verification Queries: In order to formalize verification queries, we define a data model instance as a tuple I = O, R where O = {o 1, o 2,... o no } is a set of object classes and R = {r 1, r 2,... r nr } is a set of object relations and for each r i R there exists o j, o k O such that r i o j o k. Given a data model instance I = O, R, we write R = C to denote that the relations in R satisfy the constraints in C. Similarly, given two instances I = O, R and I = O, R we write (R, R ) = D to denote that the relations in R and R satisfy the constraints in D. A data model instance I = O, R is an instance of the data model M = S, C, D, denoted by I = M, if and only if 1) the sets in O and the relations in R follow the schema S, and 2) R = C. Given a pair of data model instances I = O, R and I = O, R, (I, I ) is a behavior of the data model M = S, C, D, denoted by (I, I ) = M if and only if 1) O and R and O and R follow the schema S, 2) R = C and R = C, and 3) (R, R ) = D. Given a data model M = S, C, D, we define four types of properties: 1) state assertions (denoted by A S ): These are properties that we expect to hold for each instance of the data model. Formally, M = A S I = O, R, I = M R = A S, 2) behavior assertions (denoted by A B ): These are properties that we expect to hold for each pair of instances that form a behavior of the data model. Formally, M = A B I = O, R, I = O, R (I, I ) = M (R, R ) = A B, 3) state predicates (denoted by P S ): These are properties we expect to hold in some instance of the data model. Formally, M = P S I = O, R, I = M R = P S, 4) behavior predicates (denoted by P B ): These are properties we expect to hold in some pair of instances that form a behavior of the data model. Formally, M = P B I = O, R, I = O, R ), (I, I ) = M (R, R ) = P B. IV. PROPERTY TEMPLATES Manual specification of formal data model properties can be tedious and error-prone. Moreover, since our verification tool targets multiple theories for data model verification, manual specification of properties would require the user to learn the semantics and syntax of the input languages of all the solvers used by our tool, understand the specifications generated by our model extractor and translator, and then write the data model properties in the input language of the solver the user desires to use for verification. We believe that this would significantly reduce the usability of our tool. One of our contributions in this paper is to present a set of property templates that make the specification of data model properties easier. Since our tool integrates data model verification with different solvers in one framework, it can automatically translate the properties specified using these templates into the input language of the solver that the user chooses. We have a total of eight property templates available for the user. These templates can easily be instantiated by the user for different classes and relations by providing the names of the object classes and relations as input. We present the formal definitions of the eight property templates below. For the following, let M be the data model about which we are expressing the property. Let I = O, R, I = O, R be data model instances, o A, o B, o C O, o A, o B O, r A B, r B C, r A C R, and r A B, r B C R. Let I = M and (I, I ) = M. I. alwaysrelated is used to express that objects from one class are always related to objects of another class. We formally define this template as alwaysrelated(o A, o B, r A B ) a o A, b o B, (a, b) r A B For example we can express the following property on the data model in Figure 1: alwaysrelated(profile, User). This is saying that a Profile object should always be associated with a User object. II. multiplerelated expresses the property that it is possible for the objects of one class to be related to more than one object of another class. Formally, multiplerelated(o A, o B, r A B ) a o A, b 1, b 2 o B, b 1 b 2 (a, b 1) r A B (a, b 2) r A B In the running example, we can specify multiplerelated(photo, Tag) to state that a Photo may be associated with more than one Tag. III. someunrelated is used to express that it is possible for an object of one class to not be related to any objects of another class. This template is defined formally as someunrelated(o A, o B, r A B ) a o A, b o B, (a, b) r A B For example, the property someunrelated(user, Photo) means that it is possible to have a User without any Photos. IV. transitive is the template used to express that one relation is the composition of two others. Formally, transitive(o A, o B, o C, r A B, r B C, r A C) a o A, c o C, (a, c) r A C b o B, (a, b) r A B (b, c) r B C For the running example, the property transitive(user, Profile, Photo) states that the relation between User and Photo is the composition of the relation between User and Profile, and User and Photo. V. noorphans applies to situations where objects can potentially be orphaned. This occurs when a class, o B, has only one relation, i.e. it is connected to the schema graph via exactly one relation, r A B. In this case, when an element of class o A is deleted it is possible that its associated elements in o B may
4 be orphaned left without any connections to other objects. This property template is used to check for such scenarios. Formally, noorphans(o A, o B, r A B ) a o A, b o B a o A = a o A, (a, b ) r A B As an example, we may desire to check noorphans(video, Tag) to make sure there are no orphaned Tags once a Video has been deleted. VI. nodangling is the template used to express that when an object of one class is deleted, there are no objects of another class that are left with a dangling reference to this deleted object. Defined formally, nodangling(o A, o B, r A B ) a, a o A, b o B a o A = ((a, b ) r A B = a o A) For example, nodangling(profile, Photo) expresses that when a Profile object is deleted, there are no Photo objects that have a dangling reference to a Profile object, i.e. no Photo object is related to a deleted Profile object. VII. deletepropagates template is about making sure that when an object of one class is deleted, related objects in another class are also deleted. This template is formally defined as: deletepropagates(o A, o B, r A B ) a o A, b o B a o A = ((a, b) r A B = b o B) For instance, we can say deletepropagates(profile, Video), meaning that when a Profile object is deleted then the delete is propagated to all associated Video objects. VIII. nodeletepropagation is the template used to express that when an object of one class is deleted, its associated objects from another class are NOT deleted. Formally, nodeletepropagation(o A, o B, r A B) a o A, b o B a o A = ((a, b) r A B = b o B) For example, nodeletepropagation(user, Role) means that when a User is deleted, the associated Role should not be deleted. V. IDAVER: AN INTEGRATED DATA MODEL VERIFIER IDAVER (Integrated DAta model VERifier) takes as input a set of model files from a Ruby on Rails 2.0 application and a set of properties in the form of templates (discussed in Section IV). The user can choose one of three verification options: 1) bounded verification with Alloy Analyzer 4, 2) unbounded verification with the SMT Solver Z3 4.3, and 3) unbounded verification with the first order logic theorem prover Spass 3.5. IDAVER extracts a formal data model (discussed in Section III) from the Rails data model files, which is then translated into a specification in the language of the chosen solver. The properties specified (using templates) are also translated into the modeling language of the chosen solver and appended to the specification. Then the specification is fed into the solver, and the output of the solver is interpreted by IDAVER and shown back to the user. In cases where the output contains a satisfying or violating instance, IDAVER translates the output of the solver to an instance of the data model (in terms of sets and relations of the data model) before presenting it to the user. A. Bounded Verification with Alloy For bounded verification, IDAVER translates the formal data model it extracts into the Alloy language. To demonstrate how this translation works, consider the following Rails data model excerpt: class User < ActiveRecord::Base has_one :profile end class Profile < ActiveRecord::Base belongs_to :user end This excerpt specifies a one to zero-or-one relation between User and Profile objects. Its translation to Alloy is given below: sig Profile {} sig User {} one sig State { profiles: set Profile, users: set User, relation: Profile lone -> one User } The keyword sig is used in Alloy to define a set of objects. Thus, a sig is created for each class in the input Rails data model. In this example, a sig is declared for the Profile and User classes. We also create a State sig, which we use to define the state of a data model instance. Since we only need to instantiate exactly one State object when checking properties, we prepend the sig declaration with a multiplicity of one. The State sig contains fields to hold the set of all objects and related object pairs. In this example, the State sig contains three fields. The first is named profiles and is a binary relation between State and Profile objects. The field uses the multiplicity operator set, meaning zero or more. In other words, the state of a data model instance may contain zero or more Profile objects. The State sig contains a similar field for User objects. Finally, the one to zero-orone relation between Profile and User objects is translated as another field in the State sig. Named relation, it is defined to be a mapping between Profile and User objects. It uses the multiplicity operators lone and one to constrain the mapping to be between zero or one Profile and exactly one User object, respectively. The translation of all Rails data modeling constructs into Alloy is discussed in [10]. After IDAVER automatically translates the input data model and property template into an Alloy specification, it sends the specification to the Alloy Analyzer. Alloy Analyzer [5] is a bounded verification tool that converts verification queries to Boolean SAT problems and uses a SATsolver to determine the result. IDAVER interprets this result and reports back to the user whether the data model property failed or verified. IDAVER also outputs satisfying instances for predicate properties that verify and counterexample instances for failing assertion properties.
5 B. Unbounded Verification with an SMT Solver IDAVER can also be used to perform unbounded verification. It gives two options to do so: a Satisfiability Modulo Theories (SMT) solver or a First Order Logic (FOL) theorem prover. If the SMT solver is chosen to perform verification, IDAVER translates the formal data model into an SMT- LIB specification. The generated SMT-LIB specification is a formula in the theory of uninterpreted functions. For example, the translation of the data model excerpt (given earlier) is: (declare-sort User 0) (declare-sort Profile 0) (declare-fun relation (Profile) User) (assert (forall ((p1 Profile)(p2 Profile)) (=> (not (= p1 p2)) (not (= (relation p1) (relation p2) )) ) )) Types in SMT-LIB are declared using the declare-sort command. We use this command to declare types for User and Profile, as shown above. The relation is translated as an uninterpreted function. Uninterpreted functions are created in SMT-LIB using the declare-fun command. We use this command to declare an uninterpreted function name relation whose domain is Profile and range is User. Since functions can map multiple elements in the domain to the same element in the range, and we instead have a one to zero-or-one relation, we constrain the function to be one-to-one to obtain the desired semantics. This constraint is expressed using the assert command, above. Details for the complete translation of the all data modeling constructs in Rails are provided in [11]. Once the formal data model and property are automatically translated into SMT-LIB, IDAVER uses the SMT solver Z3 to determine the satisfiability of the generated formula. Based on the output of the SMT solver, IDAVER reports whether the property holds or fails. For failing assertions it also reports a data model instance as a counterexample, or a satisfying instance for predicate properties that verify. In addition to returning unsatisfiable or satisfiable, an SMT solver may also return unknown or it may timeout since the quantified theory of uninterpreted functions is known to be undecidable [1]. In such cases IDAVER reports a timeout. C. Unbounded Verification with a FOL Theorem Prover Finally, IDAVER also performs unbounded verification using a FOL theorem prover. When this option is chosen, IDAVER translates the formal data model into first order logic axiom formulas. Next, it translates the property that is to be verified into a conjecture. Then the FOL theorem prover Spass is used to determine whether the property holds by checking if the axiom formulas imply the property. To demonstrate how the translation is done to first order logic, we use the data model excerpt provided earlier. The result of its translation is given below: 1 list_of_symbols. 2 predicates[(relation, 2)]. 3 sorts[profile, User]. 4 end_of_list. 5 list_of_formulae(axioms). 6 formula(forall([profile(a)], not(user(a)))). 7 formula(forall([user(a)], not(profile(a)))). 8 formula(forall([a, b], implies( relation(a, b), and(profile(a), User(b))))). 9 formula(forall([a, b1, b2], implies( and(relation(b1,a), relation(b2,a)), equal(b1,b2)))). 10 formula(forall([a, b1, b2], implies( and(relation(a,b1), relation(a,b2)), equal(b1,b2)))). 11 formula(forall( [Profile(a)], exists([b], relation(a, b)) )). 12 end_of_list. Class types are translated into unary predicates (line 3); those denoting classes not related by inheritance are specified to be mutually exclusive (lines 6 and 7). Each relation is translated into a binary predicate (line 2) that can only be true if both elements satisfy their corresponding class type predicate (line 8). The cardinality of relations is translated into additional axiom formulas. For example, the constraint that each User object is related to at most one Profile object is translated into the formula on line 9. For the constraint that each Profile object is associated with exactly one User object, we add two formulas: one similar to that on line 9 and one that says each Profile is related to at lease one User (lines 10 and 11, respectively). There are additional data modeling constructs that are not covered in this example but are automatically translated by IDAVER. Polymorphic relations are translated like nonpolymorphic relations, except that the elements are restricted to multiple types. A transitive relation between objects a and c, of classes A and C that goes through class B is defined as: formula(forall( [a, c], implies(and(a(a), B(b)), equiv( through_relation(a, c), exists( [b], and(b(b), subrelation1(a, b), subrelation2(b, c))) ) ))). For conditional relations we introduce a unary predicate that represents that the condition holds, and add a formula that forces this predicate to hold on each object on the target side of the relation. Delete dependencies introduce additional complexity to this basic translation. Two unary predicates are added: Is_Deleted and Is_Destroyed. They mark objects as deleted or destroyed, respectfully. A formula is added that states, for all objects for which Is_Destroyed is true, Is_Deleted is true by implication. In addition, all destroyed objects propagate the deleted or destroyed status to related objects, as defined by the dependencies in the Rails data model. After the translation IDAVER calls the FOL theorem prover Spass. Since FOL is undecidable, it is possible that the theorem prover may not return a result. In such a case, IDAVER timeouts after the specified time limit. Otherwise, it interprets the results and reports whether the property is verified or not. VI. A CASE STUDY We present a case study on an open source Rails application called LovdByLess. This is a social networking application with the usual features of users creating profiles, making friends, and leaving messages for friends. It also includes a
6 forum where users can post and discuss topics. IDAVER takes as input the path of the directory containing the Rails data model files, and the name of the file containing the data model property(ies). The properties are expressed using the property templates discussed is Section IV. To make entry of properties as easy as possible, the templates only require the class names as input and the relations are inferred by IDAVER. To start, let us say the user desires to verify the data model of the LovdByLess application by ensuring the property alwaysrelated[photo, Profile] holds, meaning a Photo object is always associated with some Profile object. The user chooses to perform unbounded verification using Spass, the FOL theorem prover. Running IDAVER on these inputs gives the following result: according to experiments we have done, Z3 formulates counterexample instances and satisfying instances (as in this example), which theorem provers are not designed to do. In addition to unbounded verification, IDAVER can also perform bounded verification using Alloy Analyzer. Specifying bounded verification and using the default bound of twenty (meaning up to twenty objects of each class will be instantiated to check the property), we input the property deletepropagates[profile, Photo] to check that when a Profile object is deleted, all associated Photo objects will also be deleted. IDAVER gives the following output 1 : IDAVER outputs the name of the property being verified, the verification technique and solver used, the total time spent to obtain the result (including the taken to perform the translation into the input language of the solver), the time spent by the solver to perform the verification, and the size of the formula in terms of the number of variables and clauses in the specification. The formula size is solver-dependent: for SMT- LIB and Spass, variables are the number of types, functions, and quantified variables in the specification, and clauses are the number of asserts, quantifiers and operations; for Alloy this is the number of variables and clauses generated in the boolean formula generated for the SAT-solver used by Alloy. Finally, IDAVER outputs the result of the verification, which in this case is that the property holds on the data model. Next, let us change the solver to the SMT solver Z3, and verify a different property. someunrelated[forumtopic, ForumPost] checks that it is possible to have topics in a forum that does not have any posts. IDAVER outputs the following when run on these parameters 1 : This scenario demonstrates a benefit gained by using Z3 over Spass as the unbounded verification solver: although Spass tends to timeout less and be slightly faster than Z3 1 The instances produced by the solvers were simplified to save space. Like Z3, Alloy also produces instances. IDAVER interprets the instances provided and translates them to a languageneutral and easy-to-understand form consisting of sets of objects and related object pairs. In the above example, IDAVER informs us that the property failed verification and provides us with a counterexample in the format just described. Since the user expected the property to hold, the counterexample is useful for understanding the cause of the error. In this example, investigation into the application code reveals that all data related to a user, including Photos, should be deleted once a user s Profile is deleted. This can be enforced in the data model using the :dependent option in the Profile class on its relation with Photo, but currently this option is not set. Running the application demonstrates that this failing property does not manifest as an application error since the user interface of the application currently does not allow Profiles to be deleted, only to be deactivated. Thus this failing property is an example of a data model error (an error in the design of the data model) that does not show up as an application error because it is enforced in other parts of the application code. Even though we performed bounded verification for this property, we were able to determine that the property failed. However this may not always be the case. In fact, the main disadvantage of bounded verification is that its results are not sound for verified assertions and failing predicates. For example, checking the alwaysrelated[photo, Profile] property with Alloy Analyzer (which we checked earlier with Spass) gives the following result:
7 Notice that IDAVER outputs that the property may hold since no counterexample was found within the bound. In this case unbounded verification gives a stronger verification result. However, bounded verification has its own benefits. Recall from the previous section that unbounded solvers may timeout since satisfiability of FOL formulas and formulas in the theory of uninterpreted functions with quantification are known to be undecidable. This is the main benefit of having a tool that integrates both bounded and unbounded verification: in cases where unbounded solvers are unable to prove or disprove a property, IDAVER provides the user with the option to perform bounded verification to obtain an answer for the verification query with in a given bound. Let us look at one final example. To check that deleting a Blog entry does not cause any Comment objects to have a dangling reference, we check the nodangling[blog, Comment] property. Using Z3 to do unbounded verification, IDAVER returns that this property does not hold on the data model and provides a counterexample to help the user pinpoint the error. When the user runs the application and deletes a Blog entry, we see that in the database the associated Comments are left with a dangling reference to the deleted Blog entry. In the application, the user s main page contains a list of recent activity. This includes when someone has commented on that user s blog entry. The application sees there is a comment made for this user, but it cannot find the referenced blog entry. The application tries to make up for this error by returning an empty string. An application error occurs nonetheless since this empty string is displayed on the screen where text is expected. Using IDAVER, the user discovers a bug that can now be fixed in the data model by setting the :dependent option on the relation to Comment in the Blog class, so that all Comments are deleted when a Blog entry is deleted. This example demonstrates the importance of verifying data models and using the data modeling constructs available in Rails to enforce properties of data models. Using other parts of the application to enforce properties that should and can be upheld by the data model may lead to errors, such as this one. VII. RELATED WORK Alloy Analyzer has been used for bounded verification of data models by others [2], [13]. However, translation to Alloy is not automated in these earlier works. Rubicon [8] is a tool based on Alloy that targets the verification of the Controller component in Ruby on Rails applications, whereas our work focuses on data model verification. Furthermore, these approaches focus only on bounded verification whereas our tool also supports unbounded verification. There has been some recent work on unbounded verification of Alloy specifications using SMT solvers [4], but to the best of our knowledge this approach has not been implemented. There has been recent work on the specification and analysis of conceptual data models [12], [7]. These efforts follow the model-driven development approach whereas our approach is a reverse-engineering approach that extracts the model of an existing application and analyzes it to find errors. The data model property inference and repair techniques presented in [9] are complementary to the contributions we present in this paper. In this paper, rather than trying to automatically synthesize the data model properties, we are focusing on providing templates that enable users to specify the data model properties at a high level. The idea of using patterns to facilitate formal property specification was first proposed for temporal logic properties [3]. The property templates we present in this paper are not temporal and they are specific to data model analysis. VIII. CONCLUSION We presented a tool (IDAVER) for verifying data models of web applications written using the Rails framework. IDAVER integrates bounded and unbounded verification techniques, and supports property templates that simplify the task of property specification. IDAVER is applied directly on application code and does not require users to be familiar with any specialized modeling language or formal notation. We presented a case study demonstrating that IDAVER can be used on real-world web applications, and it can help developers in identifying errors in the web application data models. REFERENCES [1] R. E. Bryant, S. M. German, and M. N. Velev. Exploiting positive equality in a logic of equality with uninterpreted functions. In Proc. CAV, pages , [2] A. Cunha and H. Pacheco. Mapping between Alloy specifications and database implementations. In Proc. SEFM, pages , [3] M. B. Dwyer, G. S. Avrunin, and J. C. Corbett. Patterns in property specifications for finite-state verification. In Proc. International Conference on Software Engineering (ICSE), pages , [4] A. A. E. Ghazi and M. Taghdiri. Relational reasoning via SMT solving. In Proc. FM, pages , [5] D. Jackson. Software Abstractions: Logic, Language, and Analysis. The MIT Press, Cambridge, Massachusetts, [6] G. E. Krasner and S. T. Pope. A cookbook for using the model-view controller user interface paradigm in smalltalk-80. Jour. Object-Orient. Program., 1(3):26 49, [7] M. J. McGill, L. K. Dillon, and R. E. K. Stirewalt. Scalable analysis of conceptual data models. In Proc. ISSTA, pages 56 66, [8] J. P. Near and D. Jackson. Rubicon: bounded verification of web applications. In 20th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE-20), page 60, [9] J. Nijjar and T. Bultan. Data model property inference and repair (under submission). bultan/publications/nb13submitted.pdf. [10] J. Nijjar and T. Bultan. Bounded verification of Ruby on Rails data models. In Proc. ISSTA, pages 67 77, [11] J. Nijjar and T. Bultan. Unbounded data model verification using smt solvers. In Proc. 27th IEEE/ACM Int. Conf. Automated Software Engineering (ASE), [12] Y. Smaragdakis, C. Csallner, and R. Subramanian. Scalable satisfiability checking and test data generation from modeling diagrams. Autom. Softw. Eng., 16(1):73 99, [13] L. Wang, G. Dobbie, J. Sun, and L. Groves. Validating ORA-SS data models using Alloy. In Proc. ASWEC, pages , 2006.
Ruby on Rails Tutorial - Bounded Verification of Data Models
Bounded Verification of Ruby on Rails Data Models Jaideep Nijjar and Tevfik Bultan University of California, Santa Barbara {jaideepnijjar, [email protected] ABSTRACT The use of scripting languages to
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
Regression Verification: Status Report
Regression Verification: Status Report Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung 2013-12-11 1/22 Introduction How to prevent regressions in software
Data Modeling Basics
Information Technology Standard Commonwealth of Pennsylvania Governor's Office of Administration/Office for Information Technology STD Number: STD-INF003B STD Title: Data Modeling Basics Issued by: Deputy
The Relational Model. Ramakrishnan&Gehrke, Chapter 3 CS4320 1
The Relational Model Ramakrishnan&Gehrke, Chapter 3 CS4320 1 Why Study the Relational Model? Most widely used model. Vendors: IBM, Informix, Microsoft, Oracle, Sybase, etc. Legacy systems in older models
Automatic Generation of Consistency-Preserving Edit Operations for MDE Tools
Automatic Generation of Consistency-Preserving Edit Operations for MDE Tools Michaela Rindt, Timo Kehrer, Udo Kelter Software Engineering Group University of Siegen {mrindt,kehrer,kelter}@informatik.uni-siegen.de
µ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
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
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
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
Artificial Intelligence
Artificial Intelligence ICS461 Fall 2010 1 Lecture #12B More Representations Outline Logics Rules Frames Nancy E. Reed [email protected] 2 Representation Agents deal with knowledge (data) Facts (believe
The Relational Model. Why Study the Relational Model? Relational Database: Definitions. Chapter 3
The Relational Model Chapter 3 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Why Study the Relational Model? Most widely used model. Vendors: IBM, Informix, Microsoft, Oracle, Sybase,
Ruby on Rails is a web application framework written in Ruby, a dynamically typed programming language The amazing productivity claims of Rails is
Chris Panayiotou Ruby on Rails is a web application framework written in Ruby, a dynamically typed programming language The amazing productivity claims of Rails is the current buzz in the web development
Automated Theorem Proving - summary of lecture 1
Automated Theorem Proving - summary of lecture 1 1 Introduction Automated Theorem Proving (ATP) deals with the development of computer programs that show that some statement is a logical consequence of
Data Modeling. Database Systems: The Complete Book Ch. 4.1-4.5, 7.1-7.4
Data Modeling Database Systems: The Complete Book Ch. 4.1-4.5, 7.1-7.4 Data Modeling Schema: The structure of the data Structured Data: Relational, XML-DTD, etc Unstructured Data: CSV, JSON But where does
Outline. Data Modeling. Conceptual Design. ER Model Basics: Entities. ER Model Basics: Relationships. Ternary Relationships. Yanlei Diao UMass Amherst
Outline Data Modeling Yanlei Diao UMass Amherst v Conceptual Design: ER Model v Relational Model v Logical Design: from ER to Relational Slides Courtesy of R. Ramakrishnan and J. Gehrke 1 2 Conceptual
Relational model. Relational model - practice. Relational Database Definitions 9/27/11. Relational model. Relational Database: Terminology
COS 597A: Principles of Database and Information Systems elational model elational model A formal (mathematical) model to represent objects (data/information), relationships between objects Constraints
Lecture 6. SQL, Logical DB Design
Lecture 6 SQL, Logical DB Design Relational Query Languages A major strength of the relational model: supports simple, powerful querying of data. Queries can be written intuitively, and the DBMS is responsible
Query-aware Test Generation Using a Relational Constraint Solver
Query-aware Test Generation Using a Relational Constraint Solver Shadi Abdul Khalek Bassem Elkarablieh Yai O. Laleye Sarfraz Khurshid The University of Texas at Austin {sabdulkhalek, elkarabl, lalaye,
Scalable Automated Symbolic Analysis of Administrative Role-Based Access Control Policies by SMT solving
Scalable Automated Symbolic Analysis of Administrative Role-Based Access Control Policies by SMT solving Alessandro Armando 1,2 and Silvio Ranise 2, 1 DIST, Università degli Studi di Genova, Italia 2 Security
Jedd: A BDD-based Relational Extension of Java
Jedd: A BDD-based Relational Extension of Java Ondřej Lhoták Laurie Hendren Sable Research Group, School of Computer Science McGill University, Montreal, Canada {olhotak,hendren}@sable.mcgill.ca ABSTRACT
The Relational Model. Why Study the Relational Model? Relational Database: Definitions
The Relational Model Database Management Systems, R. Ramakrishnan and J. Gehrke 1 Why Study the Relational Model? Most widely used model. Vendors: IBM, Microsoft, Oracle, Sybase, etc. Legacy systems in
A first step towards modeling semistructured data in hybrid multimodal logic
A first step towards modeling semistructured data in hybrid multimodal logic Nicole Bidoit * Serenella Cerrito ** Virginie Thion * * LRI UMR CNRS 8623, Université Paris 11, Centre d Orsay. ** LaMI UMR
Introducing Formal Methods. Software Engineering and Formal Methods
Introducing Formal Methods Formal Methods for Software Specification and Analysis: An Overview 1 Software Engineering and Formal Methods Every Software engineering methodology is based on a recommended
Model Driven Security: Foundations, Tools, and Practice
Model Driven Security: Foundations, Tools, and Practice David Basin, Manuel Clavel, and ETH Zurich, IMDEA Software Institute Thursday 1st, 2011 Outline I 1 Models Analysis. Types. 2 The Object Constraint
An Interface from YAWL to OpenERP
An Interface from YAWL to OpenERP Joerg Evermann Faculty of Business Administration, Memorial University of Newfoundland, Canada [email protected] Abstract. The paper describes an interface from the YAWL
The Relational Model. Why Study the Relational Model?
The Relational Model Chapter 3 Instructor: Vladimir Zadorozhny [email protected] Information Science Program School of Information Sciences, University of Pittsburgh 1 Why Study the Relational Model?
Optimizing Database-Backed Applications with Query Synthesis
Optimizing Database-Backed Applications with Query Synthesis Alvin Cheung Armando Solar-Lezama Samuel Madden MIT CSAIL {akcheung, asolar, madden}@csail.mit.edu Abstract Object-relational mapping libraries
Generating Test Cases With High Branch Coverage for Web Applications
Generating Test Cases With High Branch Coverage for Web Applications Andrey Zakonov and Anatoly Shalyto National Research University of Information Technologies, Mechanics and Optics, Saint-Petersburg,
Authoring for System Center 2012 Operations Manager
Authoring for System Center 2012 Operations Manager Microsoft Corporation Published: November 1, 2013 Authors Byron Ricks Applies To System Center 2012 Operations Manager System Center 2012 Service Pack
Reverse Engineering of Relational Databases to Ontologies: An Approach Based on an Analysis of HTML Forms
Reverse Engineering of Relational Databases to Ontologies: An Approach Based on an Analysis of HTML Forms Irina Astrova 1, Bela Stantic 2 1 Tallinn University of Technology, Ehitajate tee 5, 19086 Tallinn,
Review Entity-Relationship Diagrams and the Relational Model. Data Models. Review. Why Study the Relational Model? Steps in Database Design
Review Entity-Relationship Diagrams and the Relational Model CS 186, Fall 2007, Lecture 2 R & G, Chaps. 2&3 Why use a DBMS? OS provides RAM and disk A relationship, I think, is like a shark, you know?
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.
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
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
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
Neighborhood Data and Database Security
Neighborhood Data and Database Security Kioumars Yazdanian, FrkdCric Cuppens e-mail: yaz@ tls-cs.cert.fr - cuppens@ tls-cs.cert.fr CERT / ONERA, Dept. of Computer Science 2 avenue E. Belin, B.P. 4025,31055
Database Design Overview. Conceptual Design ER Model. Entities and Entity Sets. Entity Set Representation. Keys
Database Design Overview Conceptual Design. The Entity-Relationship (ER) Model CS430/630 Lecture 12 Conceptual design The Entity-Relationship (ER) Model, UML High-level, close to human thinking Semantic
! " # The Logic of Descriptions. Logics for Data and Knowledge Representation. Terminology. Overview. Three Basic Features. Some History on DLs
,!0((,.+#$),%$(-&.& *,2(-$)%&2.'3&%!&, Logics for Data and Knowledge Representation Alessandro Agostini [email protected] University of Trento Fausto Giunchiglia [email protected] The Logic of Descriptions!$%&'()*$#)
Monitoring Metric First-order Temporal Properties
Monitoring Metric First-order Temporal Properties DAVID BASIN, FELIX KLAEDTKE, SAMUEL MÜLLER, and EUGEN ZĂLINESCU, ETH Zurich Runtime monitoring is a general approach to verifying system properties at
ML for the Working Programmer
ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming
SQL Server An Overview
SQL Server An Overview SQL Server Microsoft SQL Server is designed to work effectively in a number of environments: As a two-tier or multi-tier client/server database system As a desktop database system
An Approach for Generating Concrete Test Cases Utilizing Formal Specifications of Web Applications
An Approach for Generating Concrete Test Cases Utilizing Formal Specifications of Web Applications Khusbu Bubna RC Junit concrete test cases suitable for execution on the implementation. The remainder
Supporting Software Development Process Using Evolution Analysis : a Brief Survey
Supporting Software Development Process Using Evolution Analysis : a Brief Survey Samaneh Bayat Department of Computing Science, University of Alberta, Edmonton, Canada [email protected] Abstract During
StaRVOOrS: A Tool for Combined Static and Runtime Verification of Java
StaRVOOrS: A Tool for Combined Static and Runtime Verification of Java Jesús Mauricio Chimento 1, Wolfgang Ahrendt 1, Gordon J. Pace 2, and Gerardo Schneider 3 1 Chalmers University of Technology, Sweden.
ON FUNCTIONAL SYMBOL-FREE LOGIC PROGRAMS
PROCEEDINGS OF THE YEREVAN STATE UNIVERSITY Physical and Mathematical Sciences 2012 1 p. 43 48 ON FUNCTIONAL SYMBOL-FREE LOGIC PROGRAMS I nf or m at i cs L. A. HAYKAZYAN * Chair of Programming and Information
Extending Semantic Resolution via Automated Model Building: applications
Extending Semantic Resolution via Automated Model Building: applications Ricardo Caferra Nicolas Peltier LIFIA-IMAG L1F1A-IMAG 46, Avenue Felix Viallet 46, Avenue Felix Viallei 38031 Grenoble Cedex FRANCE
Satisfiability Checking
Satisfiability Checking SAT-Solving Prof. Dr. Erika Ábrahám Theory of Hybrid Systems Informatik 2 WS 10/11 Prof. Dr. Erika Ábrahám - Satisfiability Checking 1 / 40 A basic SAT algorithm Assume the CNF
10CS73:Web Programming
10CS73:Web Programming Question Bank Fundamentals of Web: 1.What is WWW? 2. What are domain names? Explain domain name conversion with diagram 3.What are the difference between web browser and web server
virtual class local mappings semantically equivalent local classes ... Schema Integration
Data Integration Techniques based on Data Quality Aspects Michael Gertz Department of Computer Science University of California, Davis One Shields Avenue Davis, CA 95616, USA [email protected] Ingo
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
Mining various patterns in sequential data in an SQL-like manner *
Mining various patterns in sequential data in an SQL-like manner * Marek Wojciechowski Poznan University of Technology, Institute of Computing Science, ul. Piotrowo 3a, 60-965 Poznan, Poland [email protected]
Submit: An Online Submission Platform for Computer Science Courses
Submit: An Online Submission Platform for Computer Science Courses Nolan Burfield Hardy Thrower Brandon Worl Sergiu M. Dascalu Frederick C. Harris, Jr. Department of Computer Science University of Nevada,
Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification
Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5 Outline More Complex SQL Retrieval Queries
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
Exercise 1: Relational Model
Exercise 1: Relational Model 1. Consider the relational database of next relational schema with 3 relations. What are the best possible primary keys in each relation? employ(person_name, street, city)
Predicate Logic Review
Predicate Logic Review UC Berkeley, Philosophy 142, Spring 2016 John MacFarlane 1 Grammar A term is an individual constant or a variable. An individual constant is a lowercase letter from the beginning
An ER-based Framework for Declarative Web Programming
c Springer-Verlag In Proc. of the 12th International Symposium on Practical Aspects of Declarative Languages, PADL 2010. Springer LNCS 5937, pp. 201-216, 2010 The original publication is available at www.springerlink.com
The Entity-Relationship Model
The Entity-Relationship Model 221 After completing this chapter, you should be able to explain the three phases of database design, Why are multiple phases useful? evaluate the significance of the Entity-Relationship
Syntax Check of Embedded SQL in C++ with Proto
Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 383 390. Syntax Check of Embedded SQL in C++ with Proto Zalán Szűgyi, Zoltán Porkoláb
Policy Modeling and Compliance Verification in Enterprise Software Systems: a Survey
Policy Modeling and Compliance Verification in Enterprise Software Systems: a Survey George Chatzikonstantinou, Kostas Kontogiannis National Technical University of Athens September 24, 2012 MESOCA 12,
Meta Model Based Integration of Role-Based and Discretionary Access Control Using Path Expressions
Meta Model Based Integration of Role-Based and Discretionary Access Control Using Path Expressions Kathrin Lehmann, Florian Matthes Chair for Software Engineering for Business Information Systems Technische
GameTime: A Toolkit for Timing Analysis of Software
GameTime: A Toolkit for Timing Analysis of Software Sanjit A. Seshia and Jonathan Kotker EECS Department, UC Berkeley {sseshia,jamhoot}@eecs.berkeley.edu Abstract. Timing analysis is a key step in the
So today we shall continue our discussion on the search engines and web crawlers. (Refer Slide Time: 01:02)
Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #39 Search Engines and Web Crawler :: Part 2 So today we
Web Development Frameworks
COMS E6125 Web-enHanced Information Management (WHIM) Web Development Frameworks Swapneel Sheth [email protected] @swapneel Spring 2012 1 Topic 1 History and Background of Web Application Development
University of Potsdam Faculty of Computer Science. Clause Learning in SAT Seminar Automatic Problem Solving WS 2005/06
University of Potsdam Faculty of Computer Science Clause Learning in SAT Seminar Automatic Problem Solving WS 2005/06 Authors: Richard Tichy, Thomas Glase Date: 25th April 2006 Contents 1 Introduction
DEVELOPMENT OF HASH TABLE BASED WEB-READY DATA MINING ENGINE
DEVELOPMENT OF HASH TABLE BASED WEB-READY DATA MINING ENGINE SK MD OBAIDULLAH Department of Computer Science & Engineering, Aliah University, Saltlake, Sector-V, Kol-900091, West Bengal, India [email protected]
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
Source Code Translation
Source Code Translation Everyone who writes computer software eventually faces the requirement of converting a large code base from one programming language to another. That requirement is sometimes driven
High Integrity Software Conference, Albuquerque, New Mexico, October 1997.
Meta-Amphion: Scaling up High-Assurance Deductive Program Synthesis Steve Roach Recom Technologies NASA Ames Research Center Code IC, MS 269-2 Moffett Field, CA 94035 [email protected] Jeff Van
Unit 2.1. Data Analysis 1 - V2.0 1. Data Analysis 1. Dr Gordon Russell, Copyright @ Napier University
Data Analysis 1 Unit 2.1 Data Analysis 1 - V2.0 1 Entity Relationship Modelling Overview Database Analysis Life Cycle Components of an Entity Relationship Diagram What is a relationship? Entities, attributes,
Semantic Errors in SQL Queries: A Quite Complete List
Semantic Errors in SQL Queries: A Quite Complete List Christian Goldberg, Stefan Brass Martin-Luther-Universität Halle-Wittenberg {goldberg,brass}@informatik.uni-halle.de Abstract We investigate classes
Performance Evaluation of Natural and Surrogate Key Database Architectures
Performance Evaluation of Natural and Surrogate Key Database Architectures Sebastian Link 1, Ivan Luković 2, Pavle ogin *)1 1 Victoria University of Wellington, Wellington, P.O. Box 600, New Zealand [email protected]
Lecture 16 : Relations and Functions DRAFT
CS/Math 240: Introduction to Discrete Mathematics 3/29/2011 Lecture 16 : Relations and Functions Instructor: Dieter van Melkebeek Scribe: Dalibor Zelený DRAFT In Lecture 3, we described a correspondence
Firewall Verification and Redundancy Checking are Equivalent
Firewall Verification and Redundancy Checking are Equivalent H. B. Acharya University of Texas at Austin [email protected] M. G. Gouda National Science Foundation University of Texas at Austin [email protected]
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,
FoREnSiC An Automatic Debugging Environment for C Programs
FoREnSiC An Automatic Debugging Environment for C Programs Roderick Bloem 1, Rolf Drechsler 2, Görschwin Fey 2, Alexander Finder 2, Georg Hofferek 1, Robert Könighofer 1, Jaan Raik 3, Urmas Repinski 3,
Model Transformation by Graph Transformation: A Comparative Study
Model Transformation by Graph Transformation: A Comparative Study Gabriele Taentzer 1, Karsten Ehrig 1, Esther Guerra 2, Juan de Lara 3, Laszlo Lengyel 4, Tihamer Levendovszky 4, Ulrike Prange 1, Daniel
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
MapReduce. MapReduce and SQL Injections. CS 3200 Final Lecture. Introduction. MapReduce. Programming Model. Example
MapReduce MapReduce and SQL Injections CS 3200 Final Lecture Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. OSDI'04: Sixth Symposium on Operating System Design
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/
Formal Engineering for Industrial Software Development
Shaoying Liu Formal Engineering for Industrial Software Development Using the SOFL Method With 90 Figures and 30 Tables Springer Contents Introduction 1 1.1 Software Life Cycle... 2 1.2 The Problem 4 1.3
Proceedings of the International MultiConference of Engineers and Computer Scientists 2013 Vol I, IMECS 2013, March 13-15, 2013, Hong Kong
, March 13-15, 2013, Hong Kong Risk Assessment for Relational Database Schema-based Constraint Using Machine Diagram Kanjana Eiamsaard 1, Nakornthip Prompoon 2 Abstract Information is a critical asset
Complexities of Simulating a Hybrid Agent-Landscape Model Using Multi-Formalism
Complexities of Simulating a Hybrid Agent-Landscape Model Using Multi-Formalism Composability Gary R. Mayer [email protected] Hessam S. Sarjoughian [email protected] Arizona Center for Integrative Modeling
Multilingual and Localization Support for Ontologies
Multilingual and Localization Support for Ontologies Mauricio Espinoza, Asunción Gómez-Pérez and Elena Montiel-Ponsoda UPM, Laboratorio de Inteligencia Artificial, 28660 Boadilla del Monte, Spain {jespinoza,
(LMCS, p. 317) V.1. First Order Logic. This is the most powerful, most expressive logic that we will examine.
(LMCS, p. 317) V.1 First Order Logic This is the most powerful, most expressive logic that we will examine. Our version of first-order logic will use the following symbols: variables connectives (,,,,
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS
THE IMPACT OF INHERITANCE ON SECURITY IN OBJECT-ORIENTED DATABASE SYSTEMS David L. Spooner Computer Science Department Rensselaer Polytechnic Institute Troy, New York 12180 The object-oriented programming
Silect Software s MP Author
Silect MP Author for Microsoft System Center Operations Manager Silect Software s MP Author User Guide September 2, 2015 Disclaimer The information in this document is furnished for informational use only,
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
TECH. Requirements. Why are requirements important? The Requirements Process REQUIREMENTS ELICITATION AND ANALYSIS. Requirements vs.
CH04 Capturing the Requirements Understanding what the customers and users expect the system to do * The Requirements Process * Types of Requirements * Characteristics of Requirements * How to Express
Object Oriented Programming. Risk Management
Section V: Object Oriented Programming Risk Management In theory, there is no difference between theory and practice. But, in practice, there is. - Jan van de Snepscheut 427 Chapter 21: Unified Modeling
