Utilizing a Common Language as a Generative Software Reuse Tool

Size: px
Start display at page:

Download "Utilizing a Common Language as a Generative Software Reuse Tool"

Transcription

1 Utilizing a Common Language as a Generative Software Reuse Tool Chris Henry and Stanislaw Jarzabek Department of Computer Science School of Computing, National University of Singapore 3 Science Drive, Singapore Abstract Generative techniques manipulate programs written in conventional programming languages to achieve goals of improved adaptability, maintainability, and reusability; helping us better manage complex software during development and maintenance. In this project, we focus on XML-based Variant Configuration Language (XVCL). We attack the following problem: can we implement generative mechanisms in a conventional language? We started with JET2 but quickly realized its limitations in supporting generative mechanisms. Then, we formulated a successful solution with PHP and implemented full XVCL capabilities in a system called PHP+. Practical contribution of the project includes giving PHP users reuse tool without learning a new language. On the fundamental ground, it provides insights into essences of meta-level mechanisms and their relations to conventional languages. 1. INTRODUCTION With increasing computational power, space, and demands, software complexity follows an ever increasing trends. While several decades ago, software codes measured at thousands lines of assembly codes, with the emergence of higher level languages, programmers and software developers are able to write more lines while keeping them fairly maintainable. As software becomes more complex, there is an increasing demands for reusability and maintainability. Complex software usually contains a high degree of similarity. Jarzabek described the usage of generative programming technique using XML, to extract similar components in codes, reducing the amount of code to be maintained (Jarzabek, 2007). The drawback is that developers need to learn a new XML-based language, called XML-based Variant Configuration Language (XVCL), while also learning similarity component extraction techniques. In this project, we choose to work on the following problem: could we implement generative mechanisms in a conventional language? Furthermore, we are interested to determine the essence of such implementation so that in the future, we can implement such techniques in a generic, conventional language; albeit, perhaps, one that satisfy certain constraints. 2. XML-BASED VARIANT CONFIGURATION LANGUAGE (XVCL) XVCL is a generative language working at meta-level (Jarzabek & Zhang, 2001). Programmers extract clones (code repetitions within a program) into generative templates that may Student Supervisor 1

2 be adapted differently depending on their parameters. XVCL may partition software into generic, adaptable meta-components. Meta-level partitioning crosscuts modular decomposition along class/method dimensions in arbitrary ways. XVCL reduces the amount of code maintained, increasing the reuse potentials and maintainability. Since XVCL was developed specifically to tackle the problem of software reuse and maintenance, it becomes a good reference language to build upon in this project. Readers who are interested in more thorough treatment of XVCL may visit XVCL website at (Note: In this report, we describe XVCL and later PHP+ commands with the notation <command>.) 2.1. XVCL Processor and x-frame XVCL processor processes a meta-level program representation called an x-framework, generating entire software codes in target language with the correct variant features included. The processor processes the x-frameworks based on a specification file provided by developer. The basic unit of XVCL meta-level program decomposition is called an x-frame. All XVCL codes and codes written in the target programming language(s) are enclosed in the x-frames. It provides a logical separation of codes and assist in controlling the generation process. A typical x-frame includes codes in the target programming language to be generated and XVCL commands. In specification x-frame (SPC), the XVCL commands guides the generation process and provide variant parameters. The template x-frame contains the template of the code to be generated, annotated with the variation points Unique Features Generation Control: <adapt>, <break>, and <insert> <adapt> processes another x-frame. The processing is recursive the processing of the current x-frame will resume only after the child x-frame is completely processed; any <adapt> in child x-frame will be processed according to this rule. <adapt> allows the processing output to be emitted to a file. <adapt> also provides mechanism for applying different variant features to the target x-frame. <insert> is used together with <adapt>. <insert> inserts the snippets to all variation points, marked with <break>s with matching name, in the x-frame being adapted by the <adapt> statement. Three different <insert> commands are provided: <insert-before>, <insert>, and <insert-after>, each of them inserts before, at, and after the respective <break>. Multiple <insert>s are allowed and they will be processed in order of insertions. The inserted snippets will only be processed when the corresponding <break> is processed Top-down Variant Configuration: <set>, <value-of>, and <remove> Variant features may also be introduced by means of variables. Users may set a variable to a value in the x-frame, this value will become available to the current x-frame and all the descendent x-frames adapted by the current x-frame after its declared. Note that a variable with the same name set in higher x-frame (the ancestor x-frame) will override the value set in the current x-frame. This top-down feature is important as it allows developers to modify the variant features at the highest level possible instead of searching through the x-frames for the most local variable declaration. The <set> command sets a variable to a value while <value-of> retrieves the variable value. The <remove> command removes declared variable with the specified name. While 2

3 <set> will not override variable declared in the parent x-frame, it will replace the variable if it is declared in the same x-frame Key Supporting Features Some further key supporting features in XVCL includes: <while> loops through multi-valued variable set using a <set-multi> keywords. At each iteration, one value will take the place of the multi-valued variable; <select>/<option> provides a conditional code execution path based on the value of a given variable; <ifdef> and <ifndef> executes code block if a given variable is defined or undefined respectively; <message> allow developers to print debugging messages. 3. INITIAL STUDY: ENHANCED JAVA EMITTER TEMPLATE (JET2) JET2 is a code generator. It uses template files as code templates, control files as generator flow control, and parameter files to specify variations during generation. A successful implementation of generative framework in JET2 will appeal directly to developers who have coded in JET2 before. JET2 also closely resembles Java Server Pages (JSP) syntax, a popular web scripting language, making it easier for developers well-versed in JSP to pick up the language and experiment with generative reuse techniques Advantages & Limitations While we successfully implemented basic <adapt>, we were stumped by JET2 flat structure. When a template includes another template, the included template will become part of the first template; it is as if we wrote both template files as one. This prohibits us from having a fine-grained top-down control during setting up of variant parameters. One of the problem caused by this flat structure was described at the end of the previous section. JET2 is not Turing-complete. It is missing important functionalities available in languages such as C, Java, or PHP. For example, t is missing general purpose loops; resulting in our inability to manipulate generation flow without complicated workaround Evaluation To determine the efficacy of JET2 generative technique, we attempted to wrap Java Buffer Library (Jarzabek & Li, 2006). We were able to implement a simpler group of similar classes but encountered difficulties with harder examples that require top-down variant mechanisms. Our experience reinforces our knowledge and intuition in writing reusable templates. The findings from this effort led us to consider a wider range of language for our purposes. We need the flexibility of a Turing-complete language to implement key features of a generative framework. We also note the need to be able to separate the meta-level language from the target language. This leads us to consider a class of languages called meta-languages, which are able to naturally provide separation of control code and the code for the target programming language to be generated. (We do realize that natural meta-languages are not a necessity, but rather a major convenience. We may use string construct to contain the target language, essentially mimicking meta-languages.) 3

4 4. PHP+: A GENERATIVE REUSE TOOL FOR PHP 4.1. Motivation PHP: Hypertext Processor (PHP) is a widely-adopted meta-language. PHP is capable to produce HTML codes using templates in the form of PHP-embedded HTML codes. In PHP web applications, developers already use PHP to introduce variation such as data retrieved from database. Coupled with the widespread knowledge of PHP programming among web developers, PHP is a promising language to build our generative framework Implementations To implement the generative framework, we choose to focus on writing a PHP library that implements the framework. We call the library PHP+. PHP is usually used in tandem with a web server. The server will executes a PHP interpreter. In our case, this is not convenient. We need to invoke the interpreters in many PHP files during <adapt> process. Furthermore, instead of tunneling the output of the interpreter to the web server, we need to have it written to a file. To overcome these difficulties, we use a rare usage form of PHP interpreter: the Command Line Interface (CLI). This is equivalent to running a shell script in UNIX systems. As many PHP systems resided in UNIX boxes, we found it convenient to utilize UNIX redirection in our implementation PHP+ Frames We divide the generation templates into one of the two frame types: 1. Specification frame containing the variant parameters used to generate the code and control statements controlling the flow of the generation. There may be multiple SPCs in the entire project. An SPC may adapt other specification frames or template frames. As a convention, we give SPC.spec.php file extension. 2. Template frame provides an actual code template used to generate codes in the target languages. It contains codes in the target language and PHP+ tags used to specify variant features. A template frame usually adapts only other template frames. As a convention, we give template frame.pp file extension Key Features: <adapt>/<insert>/<break> The <adapt> command runs another instance of PHP CLI on the file to be adapted. We pass all variant information (such as symbol tables and inserted snippets) down to the child instance. When an output file is specified, the output of the <adapt>ed frame is redirected to the specified output file. Otherwise, the output will be written to the same file as the parent frame. As PHP functions may only accept values and arrays as parameters, we implement <insert> by means of an Inserter class (this is a simple wrapper over a two-level associative array). Users may create an Inserter object and store insertion snippets for each <break> in the object. Users pass the object during a call to <adapt>, which subsequently passed this information to child CLI process. To keep the implementation simple, each CLI instance will hold a main Inserter object that merges all insertion information available thus far. When invoking a child CLI process 4

5 during <adapt>, we pass this object along with user-defined object to the child CLI. During initialization process, the child process will merge the two objects into one main Inserter. <break> simply requests the main Inserter object to <adapt> all insertions with the same name as the <break> (the procedure writes each insertion into a temporary frame and <adapt> that frame). <break> function also passes a user-defined default insertion to be used if the Inserter object does not have any insertion snippet for the <break> (<insert-before> and <insert-after> does not affect the default insertion) Key Features: Top-down variant variables As with XVCL, variables declared in ancestor frames will override variables declared in the current frame. We also need to make sure that a variable declared in the current frame will be able to override the same variable declared earlier in the same frame. To ensure this behaviour, we rely on a two-tiered symbol table to hold the (key, value) pair of variable name and its value. PHP associative array provides natural implementation of the table. We keep two associative arrays, one to keep variables declared in ancestors frames (that means variables passed down to the CLI process), another to keep variables declared in the current frame. Thus, we are able to follow the said behaviour exactly Convenient Features PHP is far more flexible and less rigid as compared to XVCL or JET2. Most convenient features, such as <while>, <select>/<option>, and multi-values variable may be implemented by utilizing built-in PHP constructs such as loops, conditionals, and arrays. Thus, we need not implement any of the convenient features of XVCL. 5. EVALUATION 5.1. Case Study: Java Buffer Library To evaluate PHP+, we translates the XVCL solution for Java Buffer Library (Jarzabek & Li, 2006) into PHP+ to assess whether it is possible translate XVCL constructs into PHP+. The translation from XVCL to PHP+ is straightforward and mechanical, we took less than 4 hours to hand-translate the entire XVCL Java Buffer Library (that generates a total of 71 Java classes) into PHP+. Frame types Buffer Library in XVCL Buffer Library in PHP+ Specification frames Template frames All frames Table 1. LOCs comparison between Java Buffer Library in XVCL and in PHP+. We assess the quantitative performance of PHP+ in terms of lines of codes (LOCs) in comparison to XVCL-based solution. The LOC count includes meta-commands, target language, and comments (discarding all blank lines). We further subdivide the comparison into two: one for specification frames and another for template frames. Our results show insignificant difference between the two implementations, with PHP+ being slightly shorter. This result confirms that PHP+ is at least as efficient as XVCL in terms of code economy. 5

6 5.2. The Essentials of a Generative Framework Through our implementation of PHP+, we discover several key implementation techniques that forms the essence of the implementation. These insights may be used to implement generative framework in other conventional languages: Processing separation on <adapt>: we need to separate information defined in ancestors frames and those defined in the current frame. The current frame may not modify parent frames information so that the parent frames can continue its processing predictably. Two-tiered symbol table is needed to implement the top-down variable overriding. Inserter objects: most languages do not have an easy mechanisms to pass the insertions to an <adapt> function directly. Thus, we may use suitable objects to do this. For a language that implements meta-level, generative framework to be feasible in day-today usage, we found that it needs to be either a tag-based language or a language supporting multi-line strings. Tags and multi-line strings tremendously improve codes readability. 6. CONCLUSION PHP+ reduces the learning curve associated with learning the language construct and conventions of XVCL. By using a common language to implement essentially the same reuse capabilities as XVCL, we hope that more developers will be enticed to adopt the generative reuse techniques in day-to-day software development process. This will benefit developers and maintainers. Furthermore, our studies have revealed the theoretical requirements and techniques for implementing generative framework in generic common languages. We believe that the same techniques may be adapted to other languages as well. While not all languages are suitable for such usage, we may soon find such framework implemented in more languages. As for PHP+, we plan to further develop the PHP+ Library and prepare it for community testing and adoption. We seek to continuously improve the API of PHP+ to make it easier to use while making the implementation more efficient. 7. REFERENCES [1] Jarzabek, S. (2007). Effective software maintenance and evolution: A reuse-based approach. Boca Raton, FL, USA: Auerbach Publications. [2] Jarzabek, S., & Li, S. (2006). Unifying clones with a generative programming technique: a case study. Journal of Software Maintenance and Evolution: Research and Practice, 18 (4), July, 2006, [3] Jarzabek, S., & Zhang, H. (2001). XML-based method and tool for handling variant requirements in domain models. 5th IEEE International Symposium on Requirements Engineering (pp ), Toronto, Canada, August,

1) What is the first step of the system development life cycle (SDLC)? A) Design B) Analysis C) Problem and Opportunity Identification D) Development

1) What is the first step of the system development life cycle (SDLC)? A) Design B) Analysis C) Problem and Opportunity Identification D) Development Technology In Action, Complete, 14e (Evans et al.) Chapter 10 Behind the Scenes: Software Programming 1) What is the first step of the system development life cycle (SDLC)? A) Design B) Analysis C) Problem

More information

Element: Relations: Topology: no constraints.

Element: Relations: Topology: no constraints. The Module Viewtype The Module Viewtype Element: Elements, Relations and Properties for the Module Viewtype Simple Styles Call-and-Return Systems Decomposition Style Uses Style Generalization Style Object-Oriented

More information

XVCL: a mechanism for handling variants in software product lines

XVCL: a mechanism for handling variants in software product lines Science of Computer Programming 53 (2004) 381 407 www.elsevier.com/locate/scico XVCL: a mechanism for handling variants in software product lines Hongyu Zhang a,, Stan Jarzabek b a School of Computer Science

More information

Internet Application Developer

Internet Application Developer Internet Application Developer SUN-Java Programmer Certification Building a Web Presence with XHTML & XML 5 days or 12 evenings $2,199 CBIT 081 J A V A P R O G R A M M E R Fundamentals of Java and Object

More information

> Semantic Web Use Cases and Case Studies

> Semantic Web Use Cases and Case Studies > Semantic Web Use Cases and Case Studies Case Study: Improving Web Search using Metadata Peter Mika, Yahoo! Research, Spain November 2008 Presenting compelling search results depends critically on understanding

More information

Development of E-Institute Management System Based on Integrated SSH Framework

Development of E-Institute Management System Based on Integrated SSH Framework Development of E-Institute Management System Based on Integrated SSH Framework ABSTRACT The J2EE platform is a multi-tiered framework that provides system level services to facilitate application development.

More information

Chapter 8: Creating Your Own Type Classes

Chapter 8: Creating Your Own Type Classes Chapter 8: Creating Your Own Type Classes What we will learn: Object-oriented programming What is a class How to create a class Assigning values to a class What you need to know before: Data types Methods

More information

Technology in Action. Chapter Topics. Scope creep occurs when: 3/20/2013. Information Systems include all EXCEPT the following:

Technology in Action. Chapter Topics. Scope creep occurs when: 3/20/2013. Information Systems include all EXCEPT the following: Technology in Action Technology in Action Alan Evans Kendall Martin Mary Anne Poatsy Chapter 10 Behind the Scenes: Software Programming Ninth Edition Chapter Topics Understanding software programming Life

More information

CSCI S-Q Lecture #12 7/29/98 Data Structures and I/O

CSCI S-Q Lecture #12 7/29/98 Data Structures and I/O CSCI S-Q Lecture #12 7/29/98 Data Structures and I/O Introduction The WRITE and READ ADT Operations Case Studies: Arrays Strings Binary Trees Binary Search Trees Unordered Search Trees Page 1 Introduction

More information

XML: Extensible Markup Language

XML: Extensible Markup Language XML: Extensible Markup Language CSC 375, Fall 2015 XML is a classic political compromise: it balances the needs of man and machine by being equally unreadable to both. Matthew Might Slides slightly modified

More information

challenges in domain-specific modeling raphaël mannadiar august 27, 2009

challenges in domain-specific modeling raphaël mannadiar august 27, 2009 challenges in domain-specific modeling raphaël mannadiar august 27, 2009 raphaël mannadiar challenges in domain-specific modeling 1/59 outline 1 introduction 2 approaches 3 debugging and simulation 4 differencing

More information

Advanced Automated Administration with Windows PowerShell (MS-10962)

Advanced Automated Administration with Windows PowerShell (MS-10962) Advanced Automated Administration with Windows PowerShell (MS-10962) Modality: Virtual Classroom Duration: 3 Days SATV Value: 3 Days SUBSCRIPTION: Master, Master Plus About this Course: The course will

More information

Document Generation using ASIS Tools

Document Generation using ASIS Tools Document Generation using ASIS Tools Steven V. Hovater 1 Rational Software Lexington, Massachusetts, USA svh@rational.com Abstract. The Ada Semantic Interface Specification offers a unique capability to

More information

Techno Expert Solutions An institute for specialized studies! Introduction to Advance QTP course Content

Techno Expert Solutions An institute for specialized studies! Introduction to Advance QTP course Content Introduction to Advance QTP course Content NTRODUCTION TO AUTOMATION Automation Testing Benefits of Automation Testing Automation Testing Vs Manual Testing Automation Test Tools Tool selection criteria

More information

Software Quality Improvement using Design Patterns

Software Quality Improvement using Design Patterns Volume 5, No. 6, July-August 2014 International Journal of Advanced Research in Computer Science RESEARCH PAPER Available Online at www.ijarcs.info Software Quality Improvement using Design Patterns Ms.

More information

CHAPTER 5 GENERAL OOP CONCEPTS

CHAPTER 5 GENERAL OOP CONCEPTS CHAPTER 5 GENERAL OOP CONCEPTS EVOLUTION OF SOFTWARE A PROGRAMMING LANGUAGE SHOULD SERVE 2 RELATED PURPOSES : 1. It should provide a vehicle for programmer to specify actions to be executed. 2. It should

More information

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1 What is a Design Pattern? Each pattern Describes a problem which occurs over and over again in our environment,and then describes the core of the problem Novelists, playwrights and other writers rarely

More information

Spemmet - A Tool for Modeling Software Processes with SPEM

Spemmet - A Tool for Modeling Software Processes with SPEM Spemmet - A Tool for Modeling Software Processes with SPEM Tuomas Mäkilä tuomas.makila@it.utu.fi Antero Järvi antero.jarvi@it.utu.fi Abstract: The software development process has many unique attributes

More information

PHP Hypertext Preprocessor: Tools for Webpage Management. Michael Watson ICTN

PHP Hypertext Preprocessor: Tools for Webpage Management. Michael Watson ICTN PHP Hypertext Preprocessor: Tools for Webpage Management Michael Watson ICTN 4040-001 Michael Watson Page 1 4/17/2006 In today s use of the Internet, webpage design is an interest for both businesses and

More information

XML: Managing with the Java Platform

XML: Managing with the Java Platform In order to learn which questions have been answered correctly: 1. Print these pages. 2. Answer the questions. 3. Send this assessment with the answers via: a. FAX to (212) 967-3498. Or b. Mail the answers

More information

Inheritance (Chapter 7)

Inheritance (Chapter 7) Inheritance (Chapter 7) Prof. Dr. Wolfgang Pree Department of Computer Science University of Salzburg cs.uni-salzburg.at Inheritance the soup of the day?! Inheritance combines three aspects: inheritance

More information

Introduction to PHP. Handling Html Form With Php. Decisions and loop. Function. String. Array

Introduction to PHP. Handling Html Form With Php. Decisions and loop. Function. String. Array Introduction to PHP Evaluation of Php Basic Syntax Defining variable and constant Php Data type Operator and Expression Handling Html Form With Php Capturing Form Data Dealing with Multi-value filed Generating

More information

Topics in Object-Oriented Design Patterns

Topics in Object-Oriented Design Patterns Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;

More information

Sri Vidya College of Engineering & Technology

Sri Vidya College of Engineering & Technology UNIT I INTRODUCTION TO OOP AND FUNDAMENTALS OF JAVA 1. Define OOP. Part A Object-Oriented Programming (OOP) is a methodology or paradigm to design a program using classes and objects. It simplifies the

More information

(p t y) lt d. 1995/04149/07. Course List 2018

(p t y) lt d. 1995/04149/07. Course List 2018 JAVA Java Programming Java is one of the most popular programming languages in the world, and is used by thousands of companies. This course will teach you the fundamentals of the Java language, so that

More information

Search Interface for Z39.50 Compliant Online Catalogs Over The Internet

Search Interface for Z39.50 Compliant Online Catalogs Over The Internet Search Interface for Z39.50 Compliant Online Catalogs Over The Internet Danny C.C. POO Teck Kang TOH School of Computing National University of Singapore Lower Kent Ridge Road, Singapore 119260 dpoo@comp.nus.edu.sg

More information

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #17. Loops: Break Statement

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #17. Loops: Break Statement Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #17 Loops: Break Statement (Refer Slide Time: 00:07) In this session we will see one more feature that is present

More information

Available online at ScienceDirect. Procedia Computer Science 96 (2016 )

Available online at  ScienceDirect. Procedia Computer Science 96 (2016 ) Available online at www.sciencedirect.com ScienceDirect Procedia Computer Science 96 (2016 ) 946 950 20th International Conference on Knowledge Based and Intelligent Information and Engineering Systems

More information

(Refer Slide Time: 01:12)

(Refer Slide Time: 01:12) Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #22 PERL Part II We continue with our discussion on the Perl

More information

The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet.

The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet. 1 2 3 The Extensible Markup Language (XML) and Java technology are natural partners in helping developers exchange data and programs across the Internet. That's because XML has emerged as the standard

More information

Code Structure Visualization

Code Structure Visualization TECHNISCHE UNIVERSITEIT EINDHOVEN Department of Mathematics and Computer Science MASTER S THESIS Code Structure Visualization by G.L.P.M. Lommerse Supervisor: Dr. Ir. A.C. Telea (TUE) Eindhoven, August

More information

Lecture 5: The Halting Problem. Michael Beeson

Lecture 5: The Halting Problem. Michael Beeson Lecture 5: The Halting Problem Michael Beeson Historical situation in 1930 The diagonal method appears to offer a way to extend just about any definition of computable. It appeared in the 1920s that it

More information

Smallworld Core Spatial Technology 4 Smallworld MAGIK : The object oriented language for an object oriented world

Smallworld Core Spatial Technology 4 Smallworld MAGIK : The object oriented language for an object oriented world Smallworld Core Spatial Technology 4 Smallworld MAGIK : The object oriented language for an object oriented world 2004 General Electric Company. All Rights Reserved GER-4235 (09/04) Abstract In the late

More information

Automating Administration with Windows PowerShell 2.0

Automating Administration with Windows PowerShell 2.0 Automating Administration with Windows PowerShell 2.0 Course No. 10325 5 Days Instructor-led, Hands-on Introduction This course provides students with the knowledge and skills to utilize Windows PowerShell

More information

WHITE PAPER. SCORM 2.0: Assessment Framework. Business Area Data Representation and Interfaces

WHITE PAPER. SCORM 2.0: Assessment Framework. Business Area Data Representation and Interfaces Introduction Page 1 WHITE PAPER SCORM 2.0: Assessment Framework Business Area Data Representation and Interfaces Dr. Fanny Klett, Lead Business Area Data Representation and Interfaces Fraunhofer IDMT Ehrenbergstraße

More information

APPLICATION OF A METASYSTEM IN UNIVERSITY INFORMATION SYSTEM DEVELOPMENT

APPLICATION OF A METASYSTEM IN UNIVERSITY INFORMATION SYSTEM DEVELOPMENT APPLICATION OF A METASYSTEM IN UNIVERSITY INFORMATION SYSTEM DEVELOPMENT Petr Smolík, Tomáš Hruška Department of Computer Science and Engineering, Faculty of Computer Science and Engineering, Brno University

More information

Learning Objectives. C++ For Artists 2003 Rick Miller All Rights Reserved xli

Learning Objectives. C++ For Artists 2003 Rick Miller All Rights Reserved xli Identify and overcome the difficulties encountered by students when learning how to program List and explain the software development roles played by students List and explain the phases of the tight spiral

More information

An Interactive Web based Expert System Degree Planner

An Interactive Web based Expert System Degree Planner An Interactive Web based Expert System Degree Planner Neil Dunstan School of Science and Technology University of New England Australia ph: +61 2 67732350 fax: +61 2 67735011 neil@cs.une.edu.au ABSTRACT

More information

Modern and Responsive Mobile-enabled Web Applications

Modern and Responsive Mobile-enabled Web Applications Available online at www.sciencedirect.com ScienceDirect Procedia Computer Science 110 (2017) 410 415 The 12th International Conference on Future Networks and Communications (FNC-2017) Modern and Responsive

More information

SSC - Web development Model-View-Controller for Java Servlet

SSC - Web development Model-View-Controller for Java Servlet SSC - Web development Model-View-Controller for Java Servlet Shan He School for Computational Science University of Birmingham Module 06-19321: SSC Outline Outline of Topics Java Server Pages (JSP) Model-View-Controller

More information

Lecture 26. Introduction to Trees. Trees

Lecture 26. Introduction to Trees. Trees Lecture 26 Introduction to Trees Trees Trees are the name given to a versatile group of data structures. They can be used to implement a number of abstract interfaces including the List, but those applications

More information

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D. Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice

More information

The Unified Segment Tree and its Application to the Rectangle Intersection Problem

The Unified Segment Tree and its Application to the Rectangle Intersection Problem CCCG 2013, Waterloo, Ontario, August 10, 2013 The Unified Segment Tree and its Application to the Rectangle Intersection Problem David P. Wagner Abstract In this paper we introduce a variation on the multidimensional

More information

Challenges of Analyzing Parametric CFD Results. White Paper Published: January

Challenges of Analyzing Parametric CFD Results. White Paper Published: January Challenges of Analyzing Parametric CFD Results White Paper Published: January 2011 www.tecplot.com Contents Introduction... 3 Parametric CFD Analysis: A Methodology Poised for Growth... 4 Challenges of

More information

Week - 01 Lecture - 04 Downloading and installing Python

Week - 01 Lecture - 04 Downloading and installing Python Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 04 Downloading and

More information

Chapter 2 Operating-System Structures

Chapter 2 Operating-System Structures This chapter will discuss the following concepts: 2.1 Operating System Services 2.2 User Operating System Interface 2.3 System Calls 2.4 System Programs 2.5 Operating System Design and Implementation 2.6

More information

Scheme of work Cambridge International AS & A Level Computing (9691)

Scheme of work Cambridge International AS & A Level Computing (9691) Scheme of work Cambridge International AS & A Level Computing (9691) Unit 2: Practical programming techniques Recommended prior knowledge Students beginning this course are not expected to have studied

More information

A state-based 3-way batch merge algorithm for models serialized in XMI

A state-based 3-way batch merge algorithm for models serialized in XMI A state-based 3-way batch merge algorithm for models serialized in XMI Aron Lidé Supervisor: Lars Bendix Department of Computer Science Faculty of Engineering Lund University November 2011 Abstract With

More information

Application Design and Development: October 30

Application Design and Development: October 30 M149: Database Systems Winter 2018 Lecturer: Panagiotis Liakos Application Design and Development: October 30 1 Applications Programs and User Interfaces very few people use a query language to interact

More information

The Boost.Build System

The Boost.Build System The Boost.Build System Vladimir Prus Computer Systems Laboratory Moscow State University, CS department Moscow, Russia vladimir.prus@gmail.com arxiv:1208.6264v1 [cs.se] 30 Aug 2012 Abstract Boost.Build

More information

So on the survey, someone mentioned they wanted to work on heaps, and someone else mentioned they wanted to work on balanced binary search trees.

So on the survey, someone mentioned they wanted to work on heaps, and someone else mentioned they wanted to work on balanced binary search trees. So on the survey, someone mentioned they wanted to work on heaps, and someone else mentioned they wanted to work on balanced binary search trees. According to the 161 schedule, heaps were last week, hashing

More information

PONDICHERRY UNIVERSITY PLACEMENT CELL

PONDICHERRY UNIVERSITY PLACEMENT CELL PONDICHERRY UNIVERSITY PLACEMENT CELL S.K.V. Jayakumar, M.E(CSE)., LMISTE., LCSI., (Ph.D)., Kalapet Placement Co-ordinator Puducherry 605014 Ref. No: PU / PCell / Faculty Sabbatical @ Cognizant / August

More information

Application to Library: Re-Architecting a Large Monolithic TCL Application

Application to Library: Re-Architecting a Large Monolithic TCL Application Application to Library: Re-Architecting a Large Monolithic TCL Application William H. Duquette Jet Propulsion Laboratory, California Institute of Technology William.H.Duquette@jpl.nasa.gov Abstract The

More information

Application Servers in E-Commerce Applications

Application Servers in E-Commerce Applications Application Servers in E-Commerce Applications Péter Mileff 1, Károly Nehéz 2 1 PhD student, 2 PhD, Department of Information Engineering, University of Miskolc Abstract Nowadays there is a growing demand

More information

An Eclipse Plug-In for Generating Database Access Documentation in Java Code

An Eclipse Plug-In for Generating Database Access Documentation in Java Code An Eclipse Plug-In for Generating Database Access Documentation in Java Code Paul L. Bergstein and Aditya Gade Dept. of Computer and Information Science, University of Massachusetts Dartmouth, Dartmouth,

More information

DICOM Structured Reporting: Implementation Experience

DICOM Structured Reporting: Implementation Experience DICOM Structured Reporting: Implementation Experience David Clunie, MD. Director of Healthcare Information Systems ComView Corporation Design Goals Cardiology image reporting system Multi-modality: Angio

More information

A tutorial report for SENG Agent Based Software Engineering. Course Instructor: Dr. Behrouz H. Far. XML Tutorial.

A tutorial report for SENG Agent Based Software Engineering. Course Instructor: Dr. Behrouz H. Far. XML Tutorial. A tutorial report for SENG 609.22 Agent Based Software Engineering Course Instructor: Dr. Behrouz H. Far XML Tutorial Yanan Zhang Department of Electrical and Computer Engineering University of Calgary

More information

Future Directions in Simulation Modeling. C. Dennis Pegden

Future Directions in Simulation Modeling. C. Dennis Pegden Future Directions in Simulation Modeling C. Dennis Pegden Outline A half century of progress. Where do we need to go from here? How do we get there? Simulation: A Compelling Technology See the future Visualize

More information

XVIII. Software Architectures

XVIII. Software Architectures XVIII. Software Architectures Software Architectures UML Packages Client-Server vs Peer-to-Peer 3-Tier and 4-Tier Architectures Horizontal Layers and Vertical Partitions The Model-View-Controller Architecture

More information

Employing Query Technologies for Crosscutting Concern Comprehension

Employing Query Technologies for Crosscutting Concern Comprehension Employing Query Technologies for Crosscutting Concern Comprehension Marius Marin Accenture The Netherlands Marius.Marin@accenture.com Abstract Common techniques for improving comprehensibility of software

More information

One of the main selling points of a database engine is the ability to make declarative queries---like SQL---that specify what should be done while

One of the main selling points of a database engine is the ability to make declarative queries---like SQL---that specify what should be done while 1 One of the main selling points of a database engine is the ability to make declarative queries---like SQL---that specify what should be done while leaving the engine to choose the best way of fulfilling

More information

A Reconnaissance on Design Patterns

A Reconnaissance on Design Patterns A Reconnaissance on Design Patterns M.Chaithanya Varma Student of computer science engineering, Sree Vidhyanikethan Engineering college, Tirupati, India ABSTRACT: In past decade, design patterns have been

More information

Ch04 JavaServer Pages (JSP)

Ch04 JavaServer Pages (JSP) Ch04 JavaServer Pages (JSP) Introduce concepts of JSP Web components Compare JSP with Servlets Discuss JSP syntax, EL (expression language) Discuss the integrations with JSP Discuss the Standard Tag Library,

More information

Trees. Carlos Moreno uwaterloo.ca EIT https://ece.uwaterloo.ca/~cmoreno/ece250

Trees. Carlos Moreno uwaterloo.ca EIT https://ece.uwaterloo.ca/~cmoreno/ece250 Carlos Moreno cmoreno @ uwaterloo.ca EIT-4103 https://ece.uwaterloo.ca/~cmoreno/ece250 Standard reminder to set phones to silent/vibrate mode, please! Announcements Part of assignment 3 posted additional

More information

A Survey Of Different Text Mining Techniques Varsha C. Pande 1 and Dr. A.S. Khandelwal 2

A Survey Of Different Text Mining Techniques Varsha C. Pande 1 and Dr. A.S. Khandelwal 2 A Survey Of Different Text Mining Techniques Varsha C. Pande 1 and Dr. A.S. Khandelwal 2 1 Department of Electronics & Comp. Sc, RTMNU, Nagpur, India 2 Department of Computer Science, Hislop College, Nagpur,

More information

UC Irvine UC Irvine Previously Published Works

UC Irvine UC Irvine Previously Published Works UC Irvine UC Irvine Previously Published Works Title Differencing and merging within an evolving product line architecture Permalink https://escholarship.org/uc/item/0k73r951 Authors Chen, Ping H Critchlow,

More information

Chapter 7. Modular Refactoring. 7.1 Introduction to Modular Refactoring

Chapter 7. Modular Refactoring. 7.1 Introduction to Modular Refactoring Chapter 7 Modular Refactoring I n this chapter, the role of Unified Modeling Language (UML) diagrams and Object Constraint Language (OCL) expressions in modular refactoring have been explained. It has

More information

Freedom of Choice: Using Object Code Completion in the IDE

Freedom of Choice: Using Object Code Completion in the IDE Freedom of Choice: Using Object Code Completion in the IDE By Nick Decker O bject-oriented syntax brings a great deal of power to BBx with a certain amount of complexity. Mastering the power requires learning

More information

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING JAN BARTONÍČEK This paper's goal is to briefly explain the basic theory behind programming languages and their history

More information

Object-Oriented Programming

Object-Oriented Programming Object-Oriented Programming 3/18/14 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser, Wiley, 2014 Object-Oriented

More information

TRAP/J v2.1: An improvement for Transparent Adaptation

TRAP/J v2.1: An improvement for Transparent Adaptation TRAP/J v2.1: An improvement for Transparent Adaptation Technical Report FIU-SCIS-2007-09-01 May 2007 S. Masoud Sadjadi, Luis Atencio, and Tatiana Soldo Autonomic and Grid Computing Research Laboratory

More information

INFORMATION TECHNOLOGY COURSE OBJECTIVE AND OUTCOME

INFORMATION TECHNOLOGY COURSE OBJECTIVE AND OUTCOME INFORMATION TECHNOLOGY COURSE OBJECTIVE AND OUTCOME CO-1 Programming fundamental using C The purpose of this course is to introduce to students to the field of programming using C language. The students

More information

5. Application Layer. Introduction

5. Application Layer. Introduction Book Preview This is a sample chapter of Professional PHP - Building maintainable and secure applications. The book starts with a few theory chapters and after that it is structured as a tutorial. The

More information

Hi everyone. I hope everyone had a good Fourth of July. Today we're going to be covering graph search. Now, whenever we bring up graph algorithms, we

Hi everyone. I hope everyone had a good Fourth of July. Today we're going to be covering graph search. Now, whenever we bring up graph algorithms, we Hi everyone. I hope everyone had a good Fourth of July. Today we're going to be covering graph search. Now, whenever we bring up graph algorithms, we have to talk about the way in which we represent the

More information

Lecture Notes on Contracts

Lecture Notes on Contracts Lecture Notes on Contracts 15-122: Principles of Imperative Computation Frank Pfenning Lecture 2 August 30, 2012 1 Introduction For an overview the course goals and the mechanics and schedule of the course,

More information

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered Topics covered Chapter 6 Architectural Design Architectural design decisions Architectural views Architectural patterns Application architectures Lecture 1 1 2 Software architecture The design process

More information

Chemistry Studio. B.Tech Project. Ashish Gupta (Y8140) Akshay Mittal (Y8056)

Chemistry Studio. B.Tech Project. Ashish Gupta (Y8140) Akshay Mittal (Y8056) Chemistry Studio An Intelligent Tutoring System: Problem Solving B.Tech Project Ashish Gupta (Y8140) Akshay Mittal (Y8056) Mentored By: Prof. Amey Karkare, IIT Kanpur Dr. Sumit Gulwani, MSR Redmond Dr.

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

The Frame API s baseline requirements

The Frame API s baseline requirements LASER INTERFEROMETER GRAVITATIONAL WAVE OBSERVATORY - LIGO - CALIFORNIA INSTITUTE OF TECHNOLOGY MASSACHUSETTS INSTITUTE OF TECHNOLOGY Document Type LIGO-T980117-00- E 12/4/1998 The Frame API s baseline

More information

Implementation of Customized FindBugs Detectors

Implementation of Customized FindBugs Detectors Implementation of Customized FindBugs Detectors Jerry Zhang Department of Computer Science University of British Columbia jezhang@cs.ubc.ca ABSTRACT There are a lot of static code analysis tools to automatically

More information

F5 BIG-IQ Centralized Management: Local Traffic & Network Implementations. Version 5.4

F5 BIG-IQ Centralized Management: Local Traffic & Network Implementations. Version 5.4 F5 BIG-IQ Centralized Management: Local Traffic & Network Implementations Version 5.4 Table of Contents Table of Contents Managing Local Traffic Profiles...7 How do I manage LTM profiles in BIG-IQ?...7

More information

Categorizing Migrations

Categorizing Migrations What to Migrate? Categorizing Migrations A version control repository contains two distinct types of data. The first type of data is the actual content of the directories and files themselves which are

More information

Chapter 11 Program Development and Programming Languages

Chapter 11 Program Development and Programming Languages Chapter 11 Program Development and Programming Languages permitted in a license distributed with a certain product or service or otherwise on a password-protected website for classroom use. Programming

More information

Notes to Instructors Concerning the BLITZ Projects

Notes to Instructors Concerning the BLITZ Projects Overview Notes to Instructors Concerning the BLITZ Projects Harry H. Porter III, Ph.D. Department of Computer Science Portland State University April 14, 2006 Revised: September 17, 2007 The BLITZ System

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

PHP + ANGULAR4 CURRICULUM 6 WEEKS

PHP + ANGULAR4 CURRICULUM 6 WEEKS PHP + ANGULAR4 CURRICULUM 6 WEEKS Hands-On Training In this course, you develop PHP scripts to perform a variety to takes, culminating in the development of a full database-driven Web page. Exercises include:

More information

A Rapid Development Method of Virtual Assembly Experiments Based on 3D Game Engine Wenfeng Hu 1, a, Xin Zhang 2,b

A Rapid Development Method of Virtual Assembly Experiments Based on 3D Game Engine Wenfeng Hu 1, a, Xin Zhang 2,b A Rapid Development Method of Virtual Assembly Experiments Based on 3D Game Engine Wenfeng Hu 1, a, Xin Zhang 2,b 1 School of Computer Science, Communication University of China, Beijing, China 2 School

More information

Introduction to Programming

Introduction to Programming Introduction to Programming Computers and Programs Python Programming, 1/e 1 The Universal Machine What is a computer program? A detailed, step-by-step set of instructions telling a computer what to do.

More information

Operating- System Structures

Operating- System Structures Operating- System Structures 2 CHAPTER Practice Exercises 2.1 What is the purpose of system calls? Answer: System calls allow user-level processes to request services of the operating system. 2.2 What

More information

Starting to Program in C++ (Basics & I/O)

Starting to Program in C++ (Basics & I/O) Copyright by Bruce A. Draper. 2017, All Rights Reserved. Starting to Program in C++ (Basics & I/O) On Tuesday of this week, we started learning C++ by example. We gave you both the Complex class code and

More information

Defining Domain-Specific Modeling Languages

Defining Domain-Specific Modeling Languages Defining Domain-Specific Modeling Languages 1 st Oct 2008 Juha-Pekka Tolvanen MetaCase 1 Relevant language classifications to start with General-Purpose / Domain-Specific Narrow area of interest Often

More information

A web application serving queries on renewable energy sources and energy management topics database, built on JSP technology

A web application serving queries on renewable energy sources and energy management topics database, built on JSP technology International Workshop on Energy Performance and Environmental 1 A web application serving queries on renewable energy sources and energy management topics database, built on JSP technology P.N. Christias

More information

A UML 2 Profile for Variability Models and their Dependency to Business Processes

A UML 2 Profile for Variability Models and their Dependency to Business Processes A UML 2 Profile for Variability Models and their Dependency to Business Processes Birgit Korherr and Beate List Women s Postgraduate College for Internet Technologies Institute of Software Technology and

More information

Handout 9: Imperative Programs and State

Handout 9: Imperative Programs and State 06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 9: Imperative Programs and State Imperative

More information

JSish. Ryan Grasell. June For my senior project, I implemented Professor Keen s JSish spec in C++. JSish

JSish. Ryan Grasell. June For my senior project, I implemented Professor Keen s JSish spec in C++. JSish JSish Ryan Grasell June 2015 1 Introduction For my senior project, I implemented Professor Keen s JSish spec in C++. JSish is a subset of Javascript with support for execution from the command line and

More information

CISC-124. Casting. // this would fail because we can t assign a double value to an int // variable

CISC-124. Casting. // this would fail because we can t assign a double value to an int // variable CISC-124 20180122 Today we looked at casting, conditionals and loops. Casting Casting is a simple method for converting one type of number to another, when the original type cannot be simply assigned to

More information

JAVASCRIPT - CREATING A TOC

JAVASCRIPT - CREATING A TOC JAVASCRIPT - CREATING A TOC Problem specification - Adding a Table of Contents. The aim is to be able to show a complete novice to HTML, how to add a Table of Contents (TOC) to a page inside a pair of

More information

Pattern composition in graph transformation rules

Pattern composition in graph transformation rules Pattern composition in graph transformation rules András Balogh and Dániel Varró Department of Measurement and Information Systems Budapest University of Technology and Economics H-1117 Magyar tudosok

More information

A World of Difference

A World of Difference A World of Difference Why you need an XML change control solution www.deltaxml.com XML Europe 2003, London ABSTRACT Change Control for XML: Do It Right How do you manage changes to your XML data? In XML,

More information

S1 Informatic Engineering

S1 Informatic Engineering S1 Informatic Engineering Advanced Software Engineering WebE Design By: Egia Rosi Subhiyakto, M.Kom, M.CS Informatic Engineering Department egia@dsn.dinus.ac.id +6285640392988 SYLLABUS 8. Web App. Process

More information