Instance generation from meta-models (for model transformation testing)

Size: px
Start display at page:

Download "Instance generation from meta-models (for model transformation testing)"

Transcription

1 Instance generation from meta-models (for model transformation testing) Robbe De Jongh University of Antwerp Abstract Testing model transformations is a tedious job. One needs to make a representative set out of the possibly infinite set of input models, run the transformation on it, and confirm that the output is the expected one. Generating input models automatically seems to be a good first step in automating the entire process. In this paper we discuss the model fragment strategy of this generation (Brottier et al. (2006)) and we try our hands on making an algorithm to generate instance models for the RPG in metadepth. This algorithm in no way can be used as a general approach to solve this problem however, as it highly depends on knowledge about the requirements and the designed meta model. Keywords: testing Meta Modelling, Instance generation, Model transformation 1. Introduction. Model Driven Engineering is widely spreading as the next best thing in making software. But a vital part of making software, is being able to ensure it will do what you want it to do. To be able to claim and validate that it does, we need to test everything about it. As model transformations are a key part in MDE, testing model transformations is very important. You might say: We already know how to test software, we did all that for Object-Oriented programs, I m sure we can do the same here. Baudry et al. (2009) discussed why it is not trivial to use known testing techniques to test model transformations as well as some possible solutions on how to solve the issues. In short, address: robbe.dejongh@student.ua.ac.be (Robbe De Jongh) Preprint submitted to Elsevier January 20, 2013

2 those issues come down to the complexity of the input and output (models in stead of strings, note how models can be represented in various ways), the lack of tool support, which is a consequence of the rather new approach of course, and the heterogeneity of transformations and techniques. (As we saw in the MoSIS ( course, a different situation/problem calls for a different modelling language).. We don t have to reinvent everything either, though, as testing a model transformation comes down to giving it input, and checking if the output is the desired output for the input model. This is black box testing, we don t know or care how the transformation happens, we just give it input and see what comes out. The first non trivial part of that strategy is giving the transformation input. Manually making instances that conform to some meta model is not a fun job to do, and it only gets worse when you think of the properties your input cases should have to make a good test bench. Therefore, we try to automate the generation of instance models to hand off to our model transformation. This article is about a few strategies on how to accomplish that. We also try to implement some of it to test our model transformation/simulation we made in the MDE ( course. More precisely we will try to generate instance models in Metadepth for the meta model created for assignment 1. In the following section we discuss some background information about the whole topic of model transformations, modelling and meta modelling. In section 3 we will discuss various strategies to generate models from a meta model, in section 4 we will elaborate on our experiment, related work will be discussed in section 5 and we will conclude and talk about future work in section Background. The goal in searching for different programming paradigms or designs is mostly the ease of use for the programmer, or even to eliminate the need of a programmer and to enable domain specific experts to use their knowledge without needing to know how to program. In many cases, big changes in the style of making software meant more abstraction. From machine code to assembler code. From assembler code to high level programming languages. From programming languages to... modelling languages. Expressing yourself and understanding things u see is a lot easier if those things are not plain 2

3 text. So making models is easier to do and easier to understand in many cases for those involved, as domain knowledge leads to a great understanding of the model, without the need to know what a pointer is.. How should we then make models? When making program code, you have a syntax and semantics to stick too if you want the code to do when you want and expect it to do. When modelling, you want your model to conform to a meta model in the same way. You want to be able to give a precise meaning to a circle, without necessarily describing the details of the circle. You want to be able to give a precise meaning to a for-loop, without describing what the body of the loop will do. This is what the meta model is for. It describes what kind of structures you can use in your model and how they can be connected or related. In most cases, this meta model again has its own meta model, called the meta meta model, describing the structure of the meta model. This meta meta model in most cases is a UML Class diagram, which can be seen as its own meta model as well.. We have models, but what can be do with them? There are various uses of models. Some modelling languages enable you to verify properties of your design, and afterwards can be transformed into different models to check different properties. Some models are transformed to program code and executed or simulated. This transformation to program code can be seen as the equivalent of a compiler, from program code, to assembler or machine code. After decades of using and optimizing compilers, we all feel like a compiler will create us a program that when executed will do what we coded it to do (most of the time, this will not be 100 percent what we thought it would be though...). This trust has yet to be reached in model transformations, as the ways to test the transformations is harder, and newer than the compiler. It is however a key issue in making modelling and model transformation a viable component of software engineering. To be able to get this validation of our transformation, we need ways to test it, and we need ways to show that those tests suffice in making sure that the transformation is correct. There are various testing techniques, like white-box testing, where one knows the implementation of the system under study and black-box testing, where one does not know. With white-box testing, it is possible to choose test cases that cover the whole implementation (think of the implementation as program code, possibly transformed/compiled from a model). In black-box testing, this is not possible. The only thing you can do, is to make instance models, 3

4 that span as many as possible variations that are allowed while conforming to the meta model. The set of allowed instance models might be infinite, so generating all instance models is not an option. You have to generate instance models, and preferably not a huge amount, but still enough to be able to say that u covered all possibilities. So you need something to be able to say how much of the meta model you cover with the instance models. Another big part of the transformation testing, is the oracle or the expected output for each model. Both of those last two things mentioned are out of the scope of this article. We will focus on simply generating instance models, although we keep in mind that we want to be able to use them for testing the transformation. 3. Generation Strategy 3.1. Model Fragments Brottier et al. (2006) propose a three-step way of going from a meta model to input models. They propose a partitioning of simple types from the meta model to create equivalence classes of simply typed attributes and association cardinalities. Those equivalence classes are then used to create model fragments, which correspond with the test objectives of the transformation. The last step is generating input models based on the model fragments. The meta model they start with is a meta model, with addition of extra constraints if necessary to make the possible input set of the transformation equal to the set of models that conform to the meta model. Category-Partition testing is a known technique in software engineering, which consists of making equivalence classes and using a value in each class as a test case. This technique is adapted to fit model transformations. The authors propose two partitioning strategies, namely default partitioning and knowledge-based partitioning. Default partitioning consists of defining a partition for each type or structure. A string type for example would lead to the partitioning: {{null}, { }, {s with length(s) larger than 0}}. Knowledge-based partitioning uses values provided by the tester or knowledge extracted from the model transformation to get representative values. To test a model transformation, one needs interesting instance models. Interesting models require interesting object structures. These interesting object structures are called model fragments and consist of multiple object fragments. An object fragment specifies a partial instance of a class. It relates equivalence classes with properties. It is a 4

5 set of property constraints, that associate a property of a class to an equivalence class. A model fragment comes down to a list of partitions with a specifically chosen value. To generate actual instance models from the model fragments, they provide an algorithm in pseudo code. The algorithm has various points where one can choose a different strategy, thereby changing the generated output Algorithm input : set of model fragments S, meta-model MM output : set of models L conformed to MM while there are uncovered model fragments in S do { create an empty model M while the model size limit is not reached (1) and M still can grow do { choose an uncovered model fragment MF in S for each object fragment OF in MF do { find an object O which is instance of the class partially specified by OF (3) for each constraint CT defined in OF on the property P do { if P is an attribute (value partition case) then choose a value and set it to P in O (5) else (multiplicity partition case) { choose a cardinality N according to CT (5) if the type of P is a class then find N objects with a P type and set them to P in O (3) else find N values in the partition of P and set them to P in O (5) }} add O to M completion of M until it is conformed to MM (2, 4) }} mark MF as covered add M to L} The numbers between brackets stand of those strategy options. The following list shows what they mean and what the different options are at each point. 1: Size of Models: max objects number, min model fragments number. 5

6 2: Model Completion: naive, path. 3: Object Choice (during model fragment coverage): always create, reuse whenever possible, new object for each OF. 4: Object Choice (during model completion): always create, reuse whenever possible. 5: EC choice in partition and value choice in EC: default, limits, cycle. (EC = Equivalent Class). Sen et al. (2008) introduce a tool called Cartier in which meta models and all of the necessary additions can be transformed to a constraint language, namely Alloy. Those additions to the meta model consist of transformation preconditions (OCL constraints) and test objectives, or model fragments (also in the form of OCL constraints). The meta models they work with are Ecore class diagrams, with additional OCL constraints. The Alloy model is then transformed into a boolean formula in conjunctive normal form, which is then solved by a satisfiability solver. This solution is then transformed back to its representation in the syntax of the meta model.. Sen et al. (2009) then go on to use the Cartier tool to test various strategies of which info to give the system. They then use mutation analysis to see how much of the input set of the transformation they covered. They did a random or unguided generation and a model fragment based generation. 4. Experiment: Generating Instance Models for RPG in Metadepth. For this experiment, we created an eol operation that adds objects to an initially empty metadepth model. The amount of objects of each class we have is a random number chosen between a minimum and maximum value. These values are hard-coded into the operation, but they could be derived from the meta model constraints, or the tester/ developer could provide good values that make sense for the transformation. Some of these values depend on the randomly chosen value of previous classes. The algorithm is highly dependant on knowledge of the meta model, and the requirements for defining meaningfull or interesting values for the minima and maxima. This knowledge is also critical in defining the order of making objects, and how to properly link them. Due to the time limits of this experiment, we 6

7 were not able to implement the generation of doors, as this leads to a lot more difficulties than any other tiles due to the fact that one needs information about multiple scenes. But this does not mean we can not make valid models that can test a big part of the transformation. If we only make one scene (by setting the minimum and maximum amount of scenes to one), there is no need for doors (there can not be a door as it must be a portal to a different scene), and we can test everything except for the movement of villains in different scenes, the actual travelling through doors and the key system for doors.. The algorithm puts serious limitations on the input domain of the transformation, partially by the values we chose for interesting models, as well as the simplicity or structure of the algorithm, an example of this is the scene layout. All scenes are rectangles, as this is very easy to do in two nested for loops (looping over the width and height). Another example of this is that the hero always gets placed on the first regular tile that is made. While this might be the most logical place to put it when u manually make a model, the meta model does not make a constraint that this must happen, while our generated instances will be like that. But the transformation, that we had already implemented, does not require this. So it is not a constraint coming from the meta model or the model transformation, it is our design choice when making the algorithm. But as one would like to have a general algorithm for any meta model, this is not good practice. Again, as we had a time limit, the ease of designing it so beats the overall goal to have a general algorithm for any meta model (for now).. Eol and metadepth unfortunately did not allow me to simply store the generated instance as a metadepth model that i could load again at a later time. The metadepth command dump does show all the objects created though, so one could use that information to make a file that contains that specific model, which would still be easier than thinking of a model myself though, as I could just see what was created by the generator and put the equivalent in a.mdepth file. 5. Related Work. The previously mentioned studies (Brottier et al. (2006), Sen et al. (2008), Sen et al. (2009) and Baudry et al. (2009)) seem to be the main researchers studying the issue of generating instance models from a meta model with the 7

8 purpose of testing model transformations. Wu et al. (2012) did a research on the topic of generating instance models from a meta model in general and found four main uses for the instance generation, one of which is model transformation testing. Ehrig et al. (2008) propose a graph grammar that generates instance models from meta models automatically. 6. Conclusion and future work As Baudry et al. (2009) show, there are plenty of things that need to or should be worked on if we want fully automated instance generation from a meta model. My own experiences give me the idea that the glaring needs are standardization of meta models, and the additional constraints both on the meta model and the transformation, which might already exist but never really showed up in the papers I read. Another need is a stand alone mechanism in stead of a system like Alloy, that is made for the purpose of testing model transformations. Like Sen et al. (2009) said that it is their goal or plan to eventually replace the translation to Alloy with a translation to a stand alone language that is made with the purpose of helping in the generation of instance models. Another need, or maybe better to call it a nice addition, would be a single tool, rather than the tool chain used. This would make things a lot easier and faster, as a developer only needs to learn or conform to one tool rather than using output of one tool as input for the next. This topic has gradually increased my interest in testing model transformations automatically, as well as generating instance models automatically, in a kind of software factory way, as our algorithm in the experiment can automatically generate a lot of similar, but still different enough playing fields that could be seen as different games or levels. As I do not have a master thesis topic yet, I will explore if this topic is possible to advance in, as I already have a small background of information, as well as a good memory of how much of a burden it is to manually make instance models. References Baudry, B., Ghosh, S., Fleurey, F., France, R., Traon, Y. L., Mottu, J.-M., Barriers to systematic model transformation testing. Brottier, E., Fleurey, F., Steel, J., Baudry, B., Traon, Y. L., Metamodel-based test generation for model transformations: an algorithm and a tool. 8

9 Ehrig, K., Kster, J. M., Taentzer, G., Winkelmann, J., Generating instance models from meta models. Sen, S., Baudry, B., Mottu, J.-M., On combining multi-formalism knowledge to select models for model transformation testing. Sen, S., Baudry, B., Mottu, J.-M., Automatic model generation strategies for model transformation testing. Wu, H., Monahan, R., Power, J. F., Metamodel instance generation: a systematic literature review. 9

DSM model-to-text generation: from MetaDepth to Android with EGL

DSM model-to-text generation: from MetaDepth to Android with EGL DSM model-to-text generation: from MetaDepth to Android with EGL Rafael Ugaz Antwerp University (Belgium), rafaelugaz@gmail.com Abstract This article describes the process of a specific model-to-text transformation

More information

Reading part: Design-Space Exploration with Alloy

Reading part: Design-Space Exploration with Alloy Reading part: Design-Space Exploration with Alloy Ing. Ken Vanherpen Abstract In the growing world of MDE many tools are offered to describe a (part of a) system, constrain it, and check some properties

More information

Metamodel-based Test Generation for Model Transformations: an Algorithm and a Tool

Metamodel-based Test Generation for Model Transformations: an Algorithm and a Tool Metamodel-based Test Generation for Model Transformations: an Algorithm and a Tool Erwan Brottier 1, Franck Fleurey 2, Jim Steel 2, Benoit Baudry 2, Yves Le Traon 1 1 France Télécom R&D 2, av. Pierre Marzin

More information

Rule Chains Coverage for Testing QVT-Relations Transformations

Rule Chains Coverage for Testing QVT-Relations Transformations Rule Chains Coverage for Testing QVT-Relations Transformations Daniel Calegari and Andrea Delgado Instituto de Computación, Facultad de Ingeniería, Universidad de la República, 11300 Montevideo, Uruguay

More information

If Statements, For Loops, Functions

If Statements, For Loops, Functions Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements

More information

Welfare Navigation Using Genetic Algorithm

Welfare Navigation Using Genetic Algorithm Welfare Navigation Using Genetic Algorithm David Erukhimovich and Yoel Zeldes Hebrew University of Jerusalem AI course final project Abstract Using standard navigation algorithms and applications (such

More information

An aside. Lecture 14: Last time

An aside. Lecture 14: Last time An aside Lecture 14: Recall from last time that aggregate() allowed us to combine data that referred to the same building; it is possible to implement this with lower-level tools in R Similarly, our dance

More information

Model Transformation Testing Challenges

Model Transformation Testing Challenges Model Transformation Testing Challenges Benoit Baudry 1, Trung Dinh-Trong 2, Jean-Marie Mottu 1, Devon Simmonds 2, Robert France 2, Sudipto Ghosh 2, Franck Fleurey 1, Yves Le Traon 3 1 IRISA, Campus Beaulieu,

More information

CS61A Notes Week 1A: Basics, order of evaluation, special forms, recursion

CS61A Notes Week 1A: Basics, order of evaluation, special forms, recursion CS61A Notes Week 1A: Basics, order of evaluation, special forms, recursion Assorted Scheme Basics 1. The ( is the most important character in Scheme. If you have coded in other languages such as C or Java,

More information

Plan. Language engineering and Domain Specific Languages. Language designer defines syntax. How to define language

Plan. Language engineering and Domain Specific Languages. Language designer defines syntax. How to define language Plan Language engineering and Domain Specific Languages Perdita Stevens School of Informatics University of Edinburgh 1. Defining languages 2. General purpose languages vs domain specific languages 3.

More information

Lecture 1: Overview

Lecture 1: Overview 15-150 Lecture 1: Overview Lecture by Stefan Muller May 21, 2018 Welcome to 15-150! Today s lecture was an overview that showed the highlights of everything you re learning this semester, which also meant

More information

Why You Should Not Use Arch

Why You Should Not Use Arch Why You Should Not Use Arch A new users guide to highly personalized, low maintenance operating system. Artur Frącek CC BY-NC-ND 4.0 1 Intro Arch is a very good Linux distribution so it is not a surprise

More information

Azon Master Class. By Ryan Stevenson Guidebook #5 WordPress Usage

Azon Master Class. By Ryan Stevenson   Guidebook #5 WordPress Usage Azon Master Class By Ryan Stevenson https://ryanstevensonplugins.com/ Guidebook #5 WordPress Usage Table of Contents 1. Widget Setup & Usage 2. WordPress Menu System 3. Categories, Posts & Tags 4. WordPress

More information

10 C Language Tips for Hardware Engineers

10 C Language Tips for Hardware Engineers 10 C Language Tips for Hardware Engineers Jacob Beningo - March 05, 2013 On its own, the software development process has numerous hazards and obstacles that require navigation in order to successfully

More information

Two Basic Correctness Properties for ATL Transformations: Executability and Coverage

Two Basic Correctness Properties for ATL Transformations: Executability and Coverage Two Basic Correctness Properties for ATL Transformations: Executability and Coverage Elena Planas 1, Jordi Cabot 2, and Cristina Gómez 3 1 Universitat Oberta de Catalunya (Spain), eplanash@uoc.edu 2 École

More information

Model Transformation Testing: The State of the Art

Model Transformation Testing: The State of the Art Model Transformation Testing: The State of the Art Gehan M. K. Selim School of Computing, Queen s University Kingston, ON, Canada gehan@cs.queensu.ca James R. Cordy School of Computing, Queen s University

More information

Model Driven Engineering (MDE)

Model Driven Engineering (MDE) Model Driven Engineering (MDE) Yngve Lamo 1 1 Faculty of Engineering, Bergen University College, Norway 26 April 2011 Ålesund Outline Background Software Engineering History, SE Model Driven Engineering

More information

CPSC 320 Sample Solution, Playing with Graphs!

CPSC 320 Sample Solution, Playing with Graphs! CPSC 320 Sample Solution, Playing with Graphs! September 23, 2017 Today we practice reasoning about graphs by playing with two new terms. These terms/concepts are useful in themselves but not tremendously

More information

A Traceability-Driven Approach to Model Transformation Testing

A Traceability-Driven Approach to Model Transformation Testing A Traceability-Driven Approach to Transformation Testing Nicholas D. Matragkas, Dimitrios S. Kolovos, Richard F. Paige, and Athanasios Zolotas Department of Computer Science, University of York, Deramore

More information

Chapter 9. Software Testing

Chapter 9. Software Testing Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of

More information

News and information! Review: Java Programs! Feedback after Lecture 2! Dead-lines for the first two lab assignment have been posted.!

News and information! Review: Java Programs! Feedback after Lecture 2! Dead-lines for the first two lab assignment have been posted.! True object-oriented programming: Dynamic Objects Reference Variables D0010E Object-Oriented Programming and Design Lecture 3 Static Object-Oriented Programming UML" knows-about Eckel: 30-31, 41-46, 107-111,

More information

Become a Champion Data Modeler with SQL Developer Data Modeler 3.0

Become a Champion Data Modeler with SQL Developer Data Modeler 3.0 Become a Champion Data Modeler with SQL Developer Data Modeler 3.0 Marc de Oliveira, Simplify Systems Introduction This presentation will show you how I think good data models are made, and how SQL Developer

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

Language engineering and Domain Specific Languages

Language engineering and Domain Specific Languages Language engineering and Domain Specific Languages Perdita Stevens School of Informatics University of Edinburgh Plan 1. Defining languages 2. General purpose languages vs domain specific languages 3.

More information

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below.

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below. Graphing in Excel featuring Excel 2007 1 A spreadsheet can be a powerful tool for analyzing and graphing data, but it works completely differently from the graphing calculator that you re used to. If you

More information

Criteria B Developing Ideas

Criteria B Developing Ideas INTERACTIVE TOURISM INFORMATION ON INDONESIA SCRATCH Criteria B Developing Ideas DESIGN SPECIFICATION As mentioned in the design brief, my creation will be called JTI, which stands for Journey to Indonesia.

More information

Supplemental Handout: Exceptions CS 1070, Spring 2012 Thursday, 23 Feb 2012

Supplemental Handout: Exceptions CS 1070, Spring 2012 Thursday, 23 Feb 2012 Supplemental Handout: Exceptions CS 1070, Spring 2012 Thursday, 23 Feb 2012 1 Objective To understand why exceptions are useful and why Visual Basic has them To gain experience with exceptions and exception

More information

the NXT-G programming environment

the NXT-G programming environment 2 the NXT-G programming environment This chapter takes a close look at the NXT-G programming environment and presents a few simple programs. The NXT-G programming environment is fairly complex, with lots

More information

On Combining Multi-formalism Knowledge to Select Models for Model Transformation Testing

On Combining Multi-formalism Knowledge to Select Models for Model Transformation Testing On Combining Multi-formalism Knowledge to Select Models for Model Transformation Testing Sagar Sen, Benoit Baudry, Jean-Marie Mottu To cite this version: Sagar Sen, Benoit Baudry, Jean-Marie Mottu. On

More information

+ Inheritance. Sometimes we need to create new more specialized types that are similar to types we have already created.

+ Inheritance. Sometimes we need to create new more specialized types that are similar to types we have already created. + Inheritance + Inheritance Classes that we design in Java can be used to model some concept in our program. For example: Pokemon a = new Pokemon(); Pokemon b = new Pokemon() Sometimes we need to create

More information

Generation of Functional Mock-up Units from Causal Block Diagrams

Generation of Functional Mock-up Units from Causal Block Diagrams Generation of Functional Mock-up Units from Causal Block Diagrams Bavo Vander Henst University of Antwerp Model Driven Engineering Bavo.VanderHenst@student.uantwerpen.be Abstract The purpose of this paper

More information

Software Engineering Testing and Debugging Testing

Software Engineering Testing and Debugging Testing Software Engineering Testing and Debugging Testing Prof. Dr. Peter Thiemann Universitt Freiburg 08.06.2011 Recap Testing detect the presence of bugs by observing failures Debugging find the bug causing

More information

(Refer Slide Time 6:48)

(Refer Slide Time 6:48) Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 8 Karnaugh Map Minimization using Maxterms We have been taking about

More information

Programming in C ++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C ++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C ++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture 27 Copy Constructor and Copy Assignment Operator (Contd.) Welcome

More information

(Refer Slide Time: 02.06)

(Refer Slide Time: 02.06) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 27 Depth First Search (DFS) Today we are going to be talking

More information

Data Structure Series

Data Structure Series Data Structure Series This series is actually something I started back when I was part of the Sweet.Oblivion staff, but then some things happened and I was no longer able to complete it. So now, after

More information

Artificial Intelligence Prof. Deepak Khemani Department of Computer Science and Engineering Indian Institute of Technology, Madras

Artificial Intelligence Prof. Deepak Khemani Department of Computer Science and Engineering Indian Institute of Technology, Madras Artificial Intelligence Prof. Deepak Khemani Department of Computer Science and Engineering Indian Institute of Technology, Madras (Refer Slide Time: 00:17) Lecture No - 10 Hill Climbing So, we were looking

More information

COMP 105 Homework: Type Systems

COMP 105 Homework: Type Systems Due Tuesday, March 29, at 11:59 PM (updated) The purpose of this assignment is to help you learn about type systems. Setup Make a clone of the book code: git clone linux.cs.tufts.edu:/comp/105/build-prove-compare

More information

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Lecture - 04 Introduction to Programming Language Concepts

More information

6.001 Notes: Section 6.1

6.001 Notes: Section 6.1 6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of

More information

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to A PROGRAM IS A SEQUENCE of instructions that a computer can execute to perform some task. A simple enough idea, but for the computer to make any use of the instructions, they must be written in a form

More information

Control Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur

Control Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur Control Structures Code can be purely arithmetic assignments At some point we will need some kind of control or decision making process to occur C uses the if keyword as part of it s control structure

More information

(Refer Slide Time: 1:27)

(Refer Slide Time: 1:27) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 1 Introduction to Data Structures and Algorithms Welcome to data

More information

Depth First Search A B C D E F G A B C 5 D E F 3 2 G 2 3

Depth First Search A B C D E F G A B C 5 D E F 3 2 G 2 3 Depth First Search A B C D E F G A 4 3 2 B 4 5 4 3 C 5 D 3 4 2 E 2 2 3 F 3 2 G 2 3 Minimum (Weight) Spanning Trees Let G be a graph with weights on the edges. We define the weight of any subgraph of G

More information

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change

Chapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change Chapter01.fm Page 1 Monday, August 23, 2004 1:52 PM Part I The Mechanics of Change The Mechanics of Change Chapter01.fm Page 2 Monday, August 23, 2004 1:52 PM Chapter01.fm Page 3 Monday, August 23, 2004

More information

Web Hosting. Important features to consider

Web Hosting. Important features to consider Web Hosting Important features to consider Amount of Storage When choosing your web hosting, one of your primary concerns will obviously be How much data can I store? For most small and medium web sites,

More information

On the Web sun.com/aboutsun/comm_invest STAROFFICE 8 DRAW

On the Web sun.com/aboutsun/comm_invest STAROFFICE 8 DRAW STAROFFICE 8 DRAW Graphics They say a picture is worth a thousand words. Pictures are often used along with our words for good reason. They help communicate our thoughts. They give extra information that

More information

Lab 1 Implementing a Simon Says Game

Lab 1 Implementing a Simon Says Game ECE2049 Embedded Computing in Engineering Design Lab 1 Implementing a Simon Says Game In the late 1970s and early 1980s, one of the first and most popular electronic games was Simon by Milton Bradley.

More information

Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5

Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5 Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5 [talking head] Formal Methods of Software Engineering means the use of mathematics as an aid to writing programs. Before we can

More information

UML big picture. Perdita Stevens. School of Informatics University of Edinburgh

UML big picture. Perdita Stevens. School of Informatics University of Edinburgh UML big picture Perdita Stevens School of Informatics University of Edinburgh Plan Whence UML? Parts of UML How it all fits together UML as a language Consistency: what does it mean, do we need it? Defining

More information

Lab 1 Implementing a Simon Says Game

Lab 1 Implementing a Simon Says Game ECE2049 Embedded Computing in Engineering Design Lab 1 Implementing a Simon Says Game In the late 1970s and early 1980s, one of the first and most popular electronic games was Simon by Milton Bradley.

More information

Computational Complexity and Implications for Security DRAFT Notes on Infeasible Computation for MA/CS 109 Leo Reyzin with the help of Nick Benes

Computational Complexity and Implications for Security DRAFT Notes on Infeasible Computation for MA/CS 109 Leo Reyzin with the help of Nick Benes Computational Complexity and Implications for Security DRAFT Notes on Infeasible Computation for MA/CS 109 Leo Reyzin with the help of Nick Benes The Study of Computational Complexity Let s summarize what

More information

BACKING UP LINUX AND OTHER UNIX(- LIKE) SYSTEMS

BACKING UP LINUX AND OTHER UNIX(- LIKE) SYSTEMS BACKING UP LINUX AND OTHER UNIX(- LIKE) SYSTEMS There are two kinds of people: those who do regular backups and those who never had a hard drive failure Unknown. 1. Introduction The topic of doing backups

More information

developer.* The Independent Magazine for Software Professionals

developer.* The Independent Magazine for Software Professionals developer.* The Independent Magazine for Software Professionals Improving Developer Productivity With Domain-Specific Modeling Languages by Steven Kelly, PhD According to Software Productivity Research,

More information

Heuristic Evaluation of Covalence

Heuristic Evaluation of Covalence Heuristic Evaluation of Covalence Evaluator #A: Selina Her Evaluator #B: Ben-han Sung Evaluator #C: Giordano Jacuzzi 1. Problem Covalence is a concept-mapping tool that links images, text, and ideas to

More information

Model Driven Engineering. Individual Project: Meta-Modeling for a Role-Playing Formalism in arkitect

Model Driven Engineering. Individual Project: Meta-Modeling for a Role-Playing Formalism in arkitect Model Driven Engineering Individual Project: Meta-Modeling for a Role-Playing Formalism in arkitect Bojan Arnaudovski University of Antwerpen, January 2014 Table of Contents Abstract 2 Introduction 2 Abstract

More information

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5 Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5 [talking head] This lecture we study theory design and implementation. Programmers have two roles to play here. In one role, they

More information

Excel Basics: Working with Spreadsheets

Excel Basics: Working with Spreadsheets Excel Basics: Working with Spreadsheets E 890 / 1 Unravel the Mysteries of Cells, Rows, Ranges, Formulas and More Spreadsheets are all about numbers: they help us keep track of figures and make calculations.

More information

Animations involving numbers

Animations involving numbers 136 Chapter 8 Animations involving numbers 8.1 Model and view The examples of Chapter 6 all compute the next picture in the animation from the previous picture. This turns out to be a rather restrictive

More information

[ the academy_of_code] Senior Beginners

[ the academy_of_code] Senior Beginners [ the academy_of_code] Senior Beginners 1 Drawing Circles First step open Processing Open Processing by clicking on the Processing icon (that s the white P on the blue background your teacher will tell

More information

D Programming Language

D Programming Language Group 14 Muazam Ali Anil Ozdemir D Programming Language Introduction and Why D? It doesn t come with a religion this is written somewhere along the overview of D programming language. If you actually take

More information

MITOCW watch?v=0jljzrnhwoi

MITOCW watch?v=0jljzrnhwoi MITOCW watch?v=0jljzrnhwoi The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To

More information

Metamodeling with Metamodels. Using. UML/MOF including OCL

Metamodeling with Metamodels. Using. UML/MOF including OCL Metamodeling with Metamodels Using UML/MOF including OCL Introducing Metamodels (Wikipedia) A metamodel is a model of a model An instantiation of metamodel gives a model Metamodeling is the process of

More information

Evaluation of Visual Fabrique (VF)

Evaluation of Visual Fabrique (VF) Evaluation of Visual Fabrique (VF) Dr Peter Lappo www.smr.co.uk Scope and Method This is a review of Visual Fabrique (VF) V1.0.371 EAP Release. In order to conduct this evaluation I followed the tutorial

More information

Bases de Dades: introduction and organization

Bases de Dades: introduction and organization Andrew D. Bagdanov bagdanov@cvc.uab.es Departamento de Ciencias de la Computación Universidad Autónoma de Barcelona Fall, 2010 Outline 1 2 3 4 5 Contact information Professor Database systems Important

More information

CS112 Lecture: Defining Instantiable Classes

CS112 Lecture: Defining Instantiable Classes CS112 Lecture: Defining Instantiable Classes Last revised 2/3/05 Objectives: 1. To describe the process of defining an instantiable class 2. To discuss public and private visibility modifiers. Materials:

More information

Topics in Software Testing

Topics in Software Testing Dependable Software Systems Topics in Software Testing Material drawn from [Beizer, Sommerville] Software Testing Software testing is a critical element of software quality assurance and represents the

More information

CS2112 Fall Assignment 4 Parsing and Fault Injection. Due: March 18, 2014 Overview draft due: March 14, 2014

CS2112 Fall Assignment 4 Parsing and Fault Injection. Due: March 18, 2014 Overview draft due: March 14, 2014 CS2112 Fall 2014 Assignment 4 Parsing and Fault Injection Due: March 18, 2014 Overview draft due: March 14, 2014 Compilers and bug-finding systems operate on source code to produce compiled code and lists

More information

How To Make 3-50 Times The Profits From Your Traffic

How To Make 3-50 Times The Profits From Your Traffic 1 How To Make 3-50 Times The Profits From Your Traffic by Chris Munch of Munchweb.com Copyright Munchweb.com. All Right Reserved. This work cannot be copied, re-published, or re-distributed. No re-sell

More information

CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018

CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018 CS450: Structure of Higher Level Languages Spring 2018 Assignment 7 Due: Wednesday, April 18, 2018 Taken from assignments by Profs. Carl Offner and Ethan Bolker Part 1 - Modifying The Metacircular Evaluator

More information

Algorithms and Flowcharts

Algorithms and Flowcharts UNIT 2 Chapter 1 Algorithms and Flowcharts After studying this lesson, the students will be able to understand the need of Algorithm and Flowcharts; solve problems by using algorithms and flowcharts; get

More information

Automatic Model Generation Strategies for Model Transformation Testing

Automatic Model Generation Strategies for Model Transformation Testing Automatic Model Generation Strategies for Model Transformation Testing Sagar Sen 1, Benoit Baudry 1, and Jean-Marie Mottu 1 INRIA, Centre Rennes - Bretagne Atlantique, Campus universitaire de beaulieu,

More information

AXIOMS OF AN IMPERATIVE LANGUAGE PARTIAL CORRECTNESS WEAK AND STRONG CONDITIONS. THE AXIOM FOR nop

AXIOMS OF AN IMPERATIVE LANGUAGE PARTIAL CORRECTNESS WEAK AND STRONG CONDITIONS. THE AXIOM FOR nop AXIOMS OF AN IMPERATIVE LANGUAGE We will use the same language, with the same abstract syntax that we used for operational semantics. However, we will only be concerned with the commands, since the language

More information

Contents. Slide Set 1. About these slides. Outline of Slide Set 1. Typographical conventions: Italics. Typographical conventions. About these slides

Contents. Slide Set 1. About these slides. Outline of Slide Set 1. Typographical conventions: Italics. Typographical conventions. About these slides Slide Set 1 for ENCM 369 Winter 2014 Lecture Section 01 Steve Norman, PhD, PEng Electrical & Computer Engineering Schulich School of Engineering University of Calgary Winter Term, 2014 ENCM 369 W14 Section

More information

On the Way to the Semantic Web

On the Way to the Semantic Web On the Way to the Semantic Web Presented on 1 Fórum W3C Brasil, by Klaus Birkenbihl, Coordinator World Offices, W3C based on a slide set mostly created by Ivan Herman, Semantic Web Activity Lead, W3C Sept.

More information

CS 4349 Lecture October 18th, 2017

CS 4349 Lecture October 18th, 2017 CS 4349 Lecture October 18th, 2017 Main topics for #lecture include #minimum_spanning_trees. Prelude Homework 6 due today. Homework 7 due Wednesday, October 25th. Homework 7 has one normal homework problem.

More information

How To Get Your Word Document. Ready For Your Editor

How To Get Your Word Document. Ready For Your Editor How To Get Your Word Document Ready For Your Editor When your document is ready to send to your editor you ll want to have it set out to look as professional as possible. This isn t just to make it look

More information

Automatic Generation of Graph Models for Model Checking

Automatic Generation of Graph Models for Model Checking Automatic Generation of Graph Models for Model Checking E.J. Smulders University of Twente edwin.smulders@gmail.com ABSTRACT There exist many methods to prove the correctness of applications and verify

More information

WENDIA ITSM EXPERT TALK

WENDIA ITSM EXPERT TALK WENDIA ITSM EXPERT TALK What to consider when implementing a Self Service Portal A WHITE PAPER BY MEXON TECHNOLOGY 1. Introduction The world of Service Management is, as ever rapidly changing. The IT Service

More information

Clickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1

Clickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1 Presents A case study by Devin Zander A look into how absolutely easy internet marketing is. Money Mindset Page 1 Hey guys! Quick into I m Devin Zander and today I ve got something everybody loves! Me

More information

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L 2 0 1 5 Introduction At this point, you are ready to beginning programming at a lower level How do you actually write your

More information

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming Intro to Programming Unit 7 Intro to Programming 1 What is Programming? 1. Programming Languages 2. Markup vs. Programming 1. Introduction 2. Print Statement 3. Strings 4. Types and Values 5. Math Externals

More information

It is written in plain language: no jargon, nor formality. Information gets across faster when it s written in words that our users actually use.

It is written in plain language: no jargon, nor formality. Information gets across faster when it s written in words that our users actually use. Web Style Guide A style guide for use for writing on Tufts Library Websites and LibGuides. Contents: 1. Web style guides for online content 2. LibGuides 2-specific style guide 3. Tisch s website-specific

More information

1 of 5 3/28/2010 8:01 AM Unit Testing Notes Home Class Info Links Lectures Newsgroup Assignmen [Jump to Writing Clear Tests, What about Private Functions?] Testing The typical approach to testing code

More information

Metamodeling. Janos Sztipanovits ISIS, Vanderbilt University

Metamodeling. Janos Sztipanovits ISIS, Vanderbilt University Metamodeling Janos ISIS, Vanderbilt University janos.sztipanovits@vanderbilt.edusztipanovits@vanderbilt edu Content Overview of Metamodeling Abstract Syntax Metamodeling Concepts Metamodeling languages

More information

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook?

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook? 04 537598 Ch01.qxd 9/2/03 9:46 AM Page 11 Chapter 1 Fundamental Features: How Did You Ever Do without Outlook? In This Chapter Reading e-mail Answering e-mail Creating new e-mail Entering an appointment

More information

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Sorting lower bound and Linear-time sorting Date: 9/19/17

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Sorting lower bound and Linear-time sorting Date: 9/19/17 601.433/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Sorting lower bound and Linear-time sorting Date: 9/19/17 5.1 Introduction You should all know a few ways of sorting in O(n log n)

More information

Computer Science 210: Data Structures

Computer Science 210: Data Structures Computer Science 210: Data Structures Welcome to Data Structures! Data structures are fundamental building blocks of algorithms and programs Csci 210 is a study of data structures design efficiency implementation

More information

2/28/2018. Let s Talk About Testing the Nonogram Code. ECE 220: Computer Systems & Programming. Example Nonogram Code Solution

2/28/2018. Let s Talk About Testing the Nonogram Code. ECE 220: Computer Systems & Programming. Example Nonogram Code Solution University of Illinois at Urbana-Champaign Dept. of Electrical and Computer Engineering ECE 220: Computer Systems & Programming Testing the Nonogram Code Let s Talk About Testing the Nonogram Code What

More information

Process Book - Project 2 Cause Social Networking Site

Process Book - Project 2 Cause Social Networking Site Process Book - Project 2 Cause Social Networking Site brittany Hampton art 341 Process Book - Project 2 Cause Social Networking Site section 1 competitive research Competitive Research - 1.1 Cause Social

More information

Heuristic Evaluation of igetyou

Heuristic Evaluation of igetyou Heuristic Evaluation of igetyou 1. Problem i get you is a social platform for people to share their own, or read and respond to others stories, with the goal of creating more understanding about living

More information

PyPy - How to not write Virtual Machines for Dynamic Languages

PyPy - How to not write Virtual Machines for Dynamic Languages PyPy - How to not write Virtual Machines for Dynamic Languages Institut für Informatik Heinrich-Heine-Universität Düsseldorf ESUG 2007 Scope This talk is about: implementing dynamic languages (with a focus

More information

1 SEO Synergy. Mark Bishop 2014

1 SEO Synergy. Mark Bishop 2014 1 SEO Synergy 2 SEO Synergy Table of Contents Disclaimer... 3 Introduction... 3 Keywords:... 3 Google Keyword Planner:... 3 Do This First... 4 Step 1... 5 Step 2... 5 Step 3... 6 Finding Great Keywords...

More information

On-Chip Variation (OCV) Kunal Ghosh

On-Chip Variation (OCV) Kunal Ghosh On-Chip Variation (OCV) Kunal Ghosh Ever thought what s an interviewer s favorite questions to rip you off all my previous ebooks. And On-Chip Variation (OCV) is one of them, specifically for Static Timing

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 08 Constants and Inline Functions Welcome to module 6 of Programming

More information

Azon Master Class. By Ryan Stevenson Guidebook #6 Site Construction 1/3

Azon Master Class. By Ryan Stevenson   Guidebook #6 Site Construction 1/3 Azon Master Class By Ryan Stevenson https://ryanstevensonplugins.com/ Guidebook #6 Site Construction 1/3 Table of Contents 1. Content Writing 2. SEO Writing 3. Creation of Site Content Content Writing

More information

Recap: Functions as first-class values

Recap: Functions as first-class values Recap: Functions as first-class values Arguments, return values, bindings What are the benefits? Parameterized, similar functions (e.g. Testers) Creating, (Returning) Functions Iterator, Accumul, Reuse

More information

Red-Black trees are usually described as obeying the following rules :

Red-Black trees are usually described as obeying the following rules : Red-Black Trees As we have seen, the ideal Binary Search Tree has height approximately equal to log n, where n is the number of values stored in the tree. Such a BST guarantees that the maximum time for

More information

This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units.

This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units. This course supports the assessment for Scripting and Programming Applications. The course covers 4 competencies and represents 4 competency units. Introduction Overview Advancements in technology are

More information

Program development plan

Program development plan Appendix A Program development plan If you are spending a lot of time debugging, it is probably because you do not have an effective program development plan. A typical, bad program development plan goes

More information