Metaprogramming and its relevance in Software Engineering

Slides:



Advertisements
Similar presentations
Message Passing Vs Distributed Objects
Advertisements

Model Driven Generative Programming Reza Azimi February 6, 2003 ECE1770: Trends in Middleware Systems.
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
LIFE CYCLE MODELS FORMAL TRANSFORMATION
Presented by: Thabet Kacem Spring Outline Contributions Introduction Proposed Approach Related Work Reconception of ADLs XTEAM Tool Chain Discussion.
Lab#1 (14/3/1431h) Introduction To java programming cs425
The road to reliable, autonomous distributed systems
DEVS-Based Simulation Web Services for Net-Centric T&E Saurabh Mittal, Ph.D. Jose L. Risco-Martin*, Ph.D. Bernard P. Zeigler, Ph.D. Arizona Center for.
Formal Structured Specification for Web Application Test School of Computer Science, Telecommunication and Information System DePaul University Xiaoping.
CS 290C: Formal Models for Web Software Lecture 6: Model Driven Development for Web Software with WebML Instructor: Tevfik Bultan.
Java Software Solutions Lewis and Loftus Chapter 2 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Software Concepts -- Introduction.
Principles of Computer Programming (using Java) Review Haidong Xue Summer 2011, at GSU.
Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II.
C++ Code Analysis: an Open Architecture for the Verification of Coding Rules Paolo Tonella ITC-irst, Centro per la Ricerca Scientifica e Tecnologica
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
Types for Programs and Proofs Lecture 1. What are types? int, float, char, …, arrays types of procedures, functions, references, records, objects,...
Parser-Driven Games Tool programming © Allan C. Milne Abertay University v
Computing with C# and the.NET Framework Chapter 1 An Introduction to Computing with C# ©2003, 2011 Art Gittleman.
CSCI 6962: Server-side Design and Programming Web Services.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
Geoinformatics 2006 A Virtual Data Product Toolkit Based on Geospatial Web Service Orchestration Peisheng Zhao, Liping Di, Yaxing Wei Center for Spatial.
International Telecommunication Union © ITU-T Study Group 17 Integrated Application of SDL Amardeo Sarma NEC Europe Ltd.
.NET Mobile Application Development XML Web Services.
Presented by: Sonali Pagade Nibha Dhagat paper1.pdf.
Introduction to Programming 1 1 2Introduction to Java.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
12. DISTRIBUTED WEB-BASED SYSTEMS Nov SUSMITHA KOTA KRANTHI KOYA LIANG YI.
FESA Overview Leandro Fernandez On behalf of the FESA Team 6/22/2010FESA Overview1.
Introduction to Algorithm. What is Algorithm? an algorithm is any well-defined computational procedure that takes some value, or set of values, as input.
Security analysis of COM with Alloy
Programming what is C++
Network Infrastructure Services Supporting WAP Clients
Passing from design to implementation
CS 325: Software Engineering
Introduction to Compiler Construction
Types for Programs and Proofs
The Development Process of Web Applications
PROGRAMMING LANGUAGES
CSCI-235 Micro-Computer Applications
Chapter No. : 1 Introduction to Java.
Microprocessor Systems Design I
Design Patterns Damian Gordon.
Chapter 1 Reasons to study concepts of PLs Programming Domains
Internet and Java Foundations, Programming and Practice
C# and the .NET Framework
Algorithm and Ambiguity
1.1 Reasons to study concepts of PLs
Chapter 1 Preliminaries.
Distributed web based systems
Web Ontology Language for Service (OWL-S)
Introduction Enosis Learning.
Designing Software for Ease of Extension and Contraction
Introduction Enosis Learning.
Chapter 9 Web Services: JAX-RPC, WSDL, XML Schema, and SOAP
Performance Optimization for Embedded Software
CS-0401 INTERMEDIATE PROGRAMMING USING JAVA
Week 6 Object-Oriented Programming (2): Polymorphism
Chapter 1: Computer Systems
Software Design Lecture : 14.
Language Processors Application Domain – ideas concerning the behavior of a software. Execution Domain – Ideas implemented in Computer System. Semantic.
Map of Human Computer Interaction
Principles of Programming Languages
(Computer fundamental Lab)
Social Abstractions for Information agents
Chap 1. Getting Started Objectives
Reasons To Study Programming Languages
Function of Operating Systems
Software Architecture & Design
Presentation transcript:

Metaprogramming and its relevance in Software Engineering (CSC 532 Term Paper) By, Sucharitha Rodda

INTRODUCTION Need for an evolution of Abstract Conceptual tools Metaprogramming is the art of programming programs that read, transform, or write other programs

Metaprogramming in everyday life Input -> Output 0 -> 0 : Normal program 1 -> 0 : Interpreter 0 -> 1 : Data Pre-Compiler 1 -> 1 : Automatic translator 2 -> 0 : Metainterpreter 2 -> 1 : Code walker 1 -> 2 : Phase splitter

Significance of Metaprogramming in Software Engineering Enables Software Reuseability Enforces Consistency Performs semi automatic programming Helps in inexpensive maintenance of software

Metaprogramming applied to Web Component Deployment «interface» Component +m1() +m2() MyComponent MyImpl

Architecture «interface» Component +m1() +m2() MyComponent MyImpl MyStub +handle() Skeleton MySkeleton

abstract class A { int i; A a; } interface B { } class C extends A { float f; B b; } class X extends C implements B { X x; } class Y extends X { boolean[] b; } class Z implements B { X x; } XMLSerializer: public static void serializeClassY(XMLSerializerStream s, Y o) { if(s.serializeReference(o)) return; o.serializeXML(s); // o may be of type Y or any // subtype thereof }

public void serializeXML(XMLSerializerStream s) { s.openingTag("<classY>"); serializeBodyClassY(s); s.closingTag("</classY>"); } protected final void serializeBodyClassY(XMLSerializerStream s) { serializeBodyClassX(s); // superclass data layout XMLSerializer.serializeArrayOfBoolean(s, this.b); // boolean[] b;

Implementation Analysis Transformation

Why are metaprogramming techniques not used commonly? Consist precisely in not using the studied language, but another language, through metaprograms Lack of a formal encoding Lack of a general approach Lack of a metaprogramming notation

Conclusion Computing today has to face two challenges, metaprogramming and the free availability of source code of software. Practitioners of computing arts should free themselves from slogans like multimedia, object-oriented, design-pattern, virtual machine, intelligent network, etc, and should rather adopt a scientific attitude.

References: http://www.erlang.org http://www.tunes.org http://java.sun.com/products/ XML 1.0. http://www.w3.org/TR/ Simple Object Access Protocol (SOAP) http://www.w3.org/TR/