Utilizing a Common Language as a Generative Software Reuse Tool
|
|
- Chad Ramsey
- 5 years ago
- Views:
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
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 informationElement: 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 informationXVCL: 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 informationInternet 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 Case Study: Improving Web Search using Metadata Peter Mika, Yahoo! Research, Spain November 2008 Presenting compelling search results depends critically on understanding
More informationDevelopment 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 informationChapter 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 informationTechnology 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 informationCSCI 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 informationXML: 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 informationchallenges 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 informationAdvanced 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 informationDocument 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 informationTechno 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 informationSoftware 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 informationCHAPTER 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 informationDesign 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 informationSpemmet - 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 informationPHP 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 informationXML: 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 informationInheritance (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 informationIntroduction 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 informationTopics 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 informationSri 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
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 informationSearch 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 informationIntroduction 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 informationAvailable 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)
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 informationThe 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 informationCode 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 informationLecture 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 informationSmallworld 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 informationAutomating 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 informationWHITE 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 informationAPPLICATION 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 informationLearning 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 informationAn 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 informationModern 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 informationSSC - 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 informationLecture 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 informationSoftware 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 informationThe 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 informationChallenges 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 informationWeek - 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 informationChapter 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 informationScheme 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 informationA 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 informationApplication 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 informationThe 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 informationSo 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 informationPONDICHERRY 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 informationApplication 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 informationApplication 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 informationAn 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 informationDICOM 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 informationA 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 informationFuture 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 informationXVIII. 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 informationEmploying 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 informationOne 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 informationA 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 informationCh04 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 informationTrees. 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 informationA 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 informationUC 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 informationChapter 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 informationFreedom 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 informationPROGRAMMING 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 informationObject-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 informationTRAP/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 informationINFORMATION 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 information5. 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 informationHi 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 informationLecture 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 information5/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 informationChemistry 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 informationAppendix 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 informationThe 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 informationImplementation 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 informationF5 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 informationCategorizing 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 informationChapter 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 informationNotes 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 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 informationPHP + 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 informationA 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 informationIntroduction 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 informationOperating- 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 informationStarting 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 informationDefining 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 informationA 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 informationA 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 informationHandout 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 informationJSish. 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 informationCISC-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 informationJAVASCRIPT - 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 informationPattern 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 informationA 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 informationS1 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