Towards Multi-Paradigm Software Development Valentino Vranić Department of Computer Science and Engineering Faculty of Electrical Engineering.

Slides:



Advertisements
Similar presentations
Programming Paradigms Introduction. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1:
Advertisements

Aspect Oriented Programming. AOP Contents 1 Overview 2 Terminology 3 The Problem 4 The Solution 4 Join point models 5 Implementation 6 Terminology Review.
Domain Engineering Arie van Deursen May Software Product Line  Group of products  sharing a common, managed set of features  to satisfy the.
Each design pattern is designed to facilitate one kind of change, i.e. changes in one dimension. However, software evolution can happen in multiple dimensions.
1 DiSTiL : A Transformation Library for Data Structures Yannis Smaragdakis.
OOP - Object Oriented Programming Object Oriented Programming is an approach to programming that was developed to make large programs easier to manage.
OBJECT ORIENTED PROGRAMMING M Taimoor Khan
Classes & Objects Computer Science I Last updated 9/30/10.
SMM5101 (ADVANCED MULTIMEDIA PROGRAMMING) Review of Multimedia Programming.
1 ) Definition 2) Note on structured and modular programming, and information hiding 3) Example imperative languages 4) Features of imperative languages.
Programming Languages Structure
Methodologies for Web Information System Design
Software Engineering Principles and C++ Classes
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
Generative Programming. Generic vs Generative Generic Programming focuses on representing families of domain concepts Generic Programming focuses on representing.
C++ fundamentals.
Deriving AO Software Architectures using the AO-ADL Tool Suite Luis Fernández, Lidia Fuentes, Mónica Pinto, Juan A. Valenzuela Universidad de Málaga
 A set of objectives or student learning outcomes for a course or a set of courses.  Specifies the set of concepts and skills that the student must.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Bridging the chasm between MDE and the world of compilation Nondini Das 1.
PZ01A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ01A -- Introduction Programming Language Design and.
Outline Introduction Problem Statement Object-Oriented Design Aspect-Oriented Design Conclusion Demo.
CS 355 – Programming Languages
Software Product Families. Generative Programming Main text: Ian Sommerville, Software Engineering, 8 th edition, chapter 18 Additional readings: K. Czarnecki.
V. Vranić — AspectJ Paradigm Model — GCSE 2001 AspectJ Paradigm Model A Basis for Multi-Paradigm Design for AspectJ Valentino Vranić
Aspect Oriented Programming Razieh Asadi University of Science & Technology Mazandran Babol Aspect Component Based Software Engineering (ACBSE)
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Reviewing Recent ICSE Proceedings For:.  Defining and Continuous Checking of Structural Program Dependencies  Automatic Inference of Structural Changes.
1 Introduction Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Sections
Model-Driven Analysis Frameworks for Embedded Systems George Edwards USC Center for Systems and Software Engineering
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Reasons for Studying Concepts of Programming Languages Increased ability to express ideas Improved.
Generative Programming. Automated Assembly Lines.
Relation Type Theory Foundations & Applications. Overview Introduction Type Theory Object Type Theory – Critique of Object Type Theory – Patches for Object.
AOP-1 Aspect Oriented Programming. AOP-2 Aspects of AOP and Related Tools Limitation of OO Separation of Concerns Aspect Oriented programming AspectJ.
Data Structures Using C++1 Chapter 1 Software Engineering Principles and C++ Classes.
OBJECT-ORIENTED PROGRAMMING (OOP) WITH C++ Instructor: Dr. Hany H. Ammar Dept. of Electrical and Computer Engineering, WVU.
Unified Modeling Language. Object Oriented Methods ► What are object-oriented (OO) methods?  OO methods provide a set of techniques for analyzing, decomposing,
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
Introducing Allors Applications, Tools & Platform.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
Difference between Structured Analysis and Object Oriented Analysis? Structured Analysis and Object Oriented Analysis are different techniques of developing.
Data Structures Using C++ 2E
Software Engineering Lecture 6 Vladimir Safonov, Professor, head of laboratory St. Petersburg University WWW:
Java Fundamentals Usman Ependi UBD
Basic Concepts of Object Orientation Object-Oriented Analysis CIM2566 Bavy LI.
Object-Oriented Programming © 2013 Goodrich, Tamassia, Goldwasser1Object-Oriented Programming.
The Interpreter Pattern (Behavioral) ©SoftMoore ConsultingSlide 1.
Developing Product Line Components Jan Bosch Professor of Software Engineering University of Groningen, Netherlands
OO in Context Lecture 13: Dolores Zage. Confused about OO Not alone, there is much confusion about OO many programs are claimed to be OO but are not really.
Advanced Software Development Karl Lieberherr CSG 260 Fall Semester
R R R A Brief Introduction to Aspect-Oriented Programming.
IWFST'2005, Shanghai Testing Aspect-Oriented Programs: Challenges and Opportunities Jianjun Zhao Department of Computer Science and Engineering Shanghai.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
2000 Research Overview Dr. Kim Mens Programming Technology Lab Vrije Universiteit Brussel.
1 Good Object-Oriented Design Dr. Radu Marinescu Lecture 4 Introduction to Design Patterns.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Aspect-oriented Code Generation Approaches Abid Mehmood & Dayang N. A. Jawawi Department of Software Engineering Faculty of Computer Science and Information.
Postgraduate stud. Al-Ahnomi Montaser Don State Technical University Department “Computer-aided design" Theme:- "development and research of intelligent.
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
Programming paradigms
About the Presentations
Object-Orientated Programming
OBJECT ORIENTED PROGRAMMING overview
Programming Languages 2nd edition Tucker and Noonan
Overview of Programming Paradigms
Presentation transcript:

Towards Multi-Paradigm Software Development Valentino Vranić Department of Computer Science and Engineering Faculty of Electrical Engineering and Information Technology Slovak University of Technology in Bratislava

1 Overview Several new approaches to software development have a multi-paradigm character Some are explicit with this (e.g. multi-paradigm design for C++) And some are implicit (e.g. aspect-oriented programming) The main points of this presentation:  Use of the term paradigm regarding software development  Multi-paradigm approaches to software development

2 The Meaning of Paradigm Introduced in science by Thomas Kuhn: –a consistent collection of methods and techniques accepted by the relevant scientific community as a prevailing methodology of the specific field Widely used (and abused) in computer science Used at two levels: –large-scale paradigms –small-scale paradigms Multi-paradigm –the application of multiple paradigms Metaparadigm –a paradigm of paradigms: shows how to select and combine paradigms

3 Large-Scale Paradigms The essence of the software development process Refer to all the phases of the software development A change of paradigm: evolution or revolution A change of a paradigm in science is taking part through the scientific revolution A paradigm is dominant in its field, i.e. there can be only one

4 Large-Scale Paradigms (contd.) But there are several software development paradigms currently existing (imperative, procedural, object-oriented, functional, logic…) Some paradigms seem to evolve: Imperative programming Procedural programming Object-oriented programming

5 Small-Scale Paradigms The other use of the term paradigm: to denote programming language mechanisms Scope, commonality and variability (SCV) analysis Example: procedures –S: a collection of similar code fragments –C: the code common to all fragments in S –V: the “uncommon” code in S; variabilities handled by the procedure parameters and/or the code before or after the procedure call Some other small-scale paradigms: templates, objects, inheritance… Large-scale paradigms consist of the small- scale paradigms

6 Aspect-Oriented Programming Aims at modularization of the crosscutting concerns (resulting in the tangled code) Main AOP approaches (next slide) build upon the OOP AOP is not OOP bound — it is also applicable to procedural or functional programming Another paradigm is needed to which AOP is to be applied

7 Generative Programming Composition Filters Demeter/Adaptive Programming Subject-Oriented Programming Generic Programming Domain-Specific Languages Aspect-Oriented Programming Generative Programming Aims at automatic software manufacture Has to be tailored to a particular domain yielding a paradigm  GP is a metaparadigm Xerox PARC Aspect-Oriented Programming Object-Oriented Programming

8 Multi-Paradigm Programming in Leda Leda was created as a multi-paradigm language — in terms of the large-scale paradigms Enables combination of the procedural, object- oriented, functional and logic programming Problems: –extension to other paradigms –no support in selecting and combining paradigms

9 Multi-Paradigm Design for C++ Intended for C++, but can be tailored to any richly expressive language Makes an explicit use of the small-scale paradigm concept Two analyses, commonality and variability, performed both on application and solution domain Lining up yields which paradigm is to be used for which feature

10 Intentional Programming Programming abstractions are limited by the fixed syntax programming languages IP: a program represented by the AST (called intentional tree) Requires special programming environment Binary format for the program files MPD would contribute to more regularized use of the IP IP enables creation of the new intentions — small-scale paradigms

11 Conclusions The need to distinguish between large- and small-scale paradigms Multi-paradigm software development is a growing concept Widely present at implementation level Has to be “legalized” at design level MPD — a possible basis for future multi- paradigm software development MPD requires further improvement: –extended notation –method incorporating traditional approaches into MPD –the connection with design patterns