Instance generation from meta-models (for model transformation testing)
|
|
- Collin Marshall Harris
- 5 years ago
- Views:
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 Rafael Ugaz Antwerp University (Belgium), rafaelugaz@gmail.com Abstract This article describes the process of a specific model-to-text transformation
More informationReading 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 informationMetamodel-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 informationRule 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 informationIf 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 informationWelfare 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 informationAn 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 informationModel 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 informationCS61A 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 informationPlan. 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 informationLecture 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 informationWhy 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 informationAzon 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 information10 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 informationTwo 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 informationModel 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 informationModel 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 informationCPSC 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 informationA 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 informationChapter 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 informationNews 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 informationBecome 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 informationIntro. 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 informationLanguage 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 informationThe 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 informationCriteria 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 informationSupplemental 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 informationthe 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 informationOn 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 + 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 informationGeneration 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 informationSoftware 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)
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 informationProgramming 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)
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 informationData 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 informationArtificial 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 informationCOMP 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 informationProblem 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 information6.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 informationA 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 informationControl 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)
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 informationDepth 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 informationChapter01.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 informationWeb 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 informationOn 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 informationLab 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 informationFormal 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 informationUML 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 informationLab 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 informationComputational 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 informationBACKING 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 informationdeveloper.* 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 informationHeuristic 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 informationModel 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 informationFormal 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 informationExcel 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 informationAnimations 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 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 informationD 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 informationMITOCW 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 informationMetamodeling 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 informationEvaluation 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 informationBases 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 informationCS112 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 informationTopics 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 informationCS2112 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 informationHow 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 informationCS450: 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 informationAlgorithms 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 informationAutomatic 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 informationAXIOMS 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 informationContents. 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 informationOn 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 informationCS 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 informationHow 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 informationAutomatic 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 informationWENDIA 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 informationClickbank 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 informationCS 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 informationIntro 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 informationIt 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 information1 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 informationMetamodeling. 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 informationOutlook 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
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 informationComputer 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 information2/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 informationProcess 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 informationHeuristic 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 informationPyPy - 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 information1 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 informationOn-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 informationProgramming 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 informationAzon 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 informationRecap: 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 informationRed-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 informationThis 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 informationProgram 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