Scl: A Simple, Uniform and Operational Language for Component-Oriented Programming in Smalltalk

Unanticipated connection of independently developed componentsis one of the key issues in component-oriented programming. While a variety of component-oriented languages have been proposed, none of them has achieved a breakthrough yet. In this paper, we present SCL a simple language dedicated to component-oriented programming. SCL integrates well-known features such as component class, component, interface, port or service. All these well-known features are presented, discussed and compared to existing approaches because they vary quite widely from one language to another. But, these features are not enough to build a component language. Indeed, most approaches use language primitives and shared interfaces to connect components. But shared interfaces are in contradiction with the philosophy of independently developed components. To this issue, SCL provides new features such as a uniform component composition model based on connectors. Connectors represent interactions between independently developed components. SCL also integrates component properties which enable connections based on component state changes with no requirements of specific code in components.

[1]  Satoshi Matsuoka,et al.  ECOOP'97 — Object-Oriented Programming , 1997, Lecture Notes in Computer Science.

[2]  Matthias Zenger,et al.  KERIS: evolving software with extensible modules , 2005, J. Softw. Maintenance Res. Pract..

[3]  John Vlissides,et al.  Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications , 2001, OOPSLA 2001.

[4]  Axel Uhl,et al.  Model-Driven Architecture , 2002, OOIS Workshops.

[5]  Mehmet Aksit,et al.  Software Architectures and Component Technology , 2001 .

[6]  David Garlan,et al.  A Formal Approach to Software Architectures , 1992, IFIP Congress.

[7]  Marvin Minsky,et al.  A framework for representing knowledge" in the psychology of computer vision , 1975 .

[8]  John Maloney,et al.  Back to the Future The Story of Squeak, A Practical Smalltalk Written in Itself , 1997 .

[9]  Mary Shaw Procedure Calls Are the Assembly Language of Software Interconnection: Connectors Deserve First-Class Status , 1993, ICSE Workshop on Studies of Software Design.

[10]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[11]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming, 2nd Edition , 2002, Addison-Wesley component software series.

[12]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[13]  E KrasnerGlenn,et al.  A cookbook for using the model-view controller user interface paradigm in Smalltalk-80 , 1988 .

[14]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[15]  Wim Vanderperren,et al.  JAsCo: an aspect-oriented approach tailored for component based software development , 2003, AOSD '03.

[16]  Oscar Nierstrasz,et al.  Object-oriented software composition , 1995 .

[17]  Wolfgang Weck,et al.  Compound types for Java , 1998, OOPSLA '98.

[18]  Michael Franz,et al.  Supporting software composition at the programming language level , 2005, Sci. Comput. Program..

[19]  Nenad Medvidovic,et al.  Towards a taxonomy of software connectors , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[20]  David Notkin,et al.  Language Support for Connector Abstractions , 2003, ECOOP.

[21]  Thierry Coupaye,et al.  An Open Component Model and Its Support in Java , 2004, CBSE.

[22]  Peter Tabeling,et al.  Component vs. component: why we need more than one definition [system component and software component] , 2005, 12th IEEE International Conference and Workshops on the Engineering of Computer-Based Systems (ECBS'05).

[23]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[24]  Marvin Minsky,et al.  A framework for representing knowledge , 1974 .

[25]  Matthias Zenger KERIS: evolving software with extensible modules: Research Articles , 2005 .

[26]  Michael Eichberg MDA and programming languages , 2002 .

[27]  Anne-Marie Kermarrec,et al.  The many faces of publish/subscribe , 2003, CSUR.

[28]  Johannes Sametinger,et al.  Software Engineering with Reusable Components , 1997, Springer Berlin Heidelberg.

[29]  Jørgen Lindskov Knudsen ECOOP 2001 — Object-Oriented Programming , 2001, Lecture Notes in Computer Science.

[30]  Luca Cardelli,et al.  ECOOP 2003 – Object-Oriented Programming , 2003, Lecture Notes in Computer Science.

[31]  Oscar Nierstrasz,et al.  APPLICATIONS = COMPONENTS + SCRIPTS A tour of Piccola , 2001 .

[32]  Raphaël Marvie Picolo : A Simple Python Framework for Introducing Component Principles , 2005 .

[33]  H. Conrad Cunningham,et al.  BoxScript: a component-oriented language for teaching , 2005, ACM-SE 43.

[34]  B. Randell,et al.  Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968, Brussels, Scientific Affairs Division, NATO , 1969 .

[35]  Stephen Travis Pope,et al.  A cookbook for using the model-view controller user interface paradigm in Smalltalk-80 , 1988 .

[36]  John Daniels,et al.  UML Components: A Simple Process for Specifying Component-Based Software , 2000 .

[37]  Matthias Zenger,et al.  Type-Safe Prototype-Based Component Evolution , 2002, ECOOP.

[38]  David Notkin,et al.  ArchJava: connecting software architecture to implementation , 2002, ICSE '02.

[39]  J. C. Wortmann,et al.  Development and Evolution of Software Architectures for Product Families , 1998, Lecture Notes in Computer Science.

[40]  George T. Heineman,et al.  Component-Based Software Engineering: Putting the Pieces Together , 2001 .

[41]  Lamtigui Abdelaziz,et al.  ECOLE DES MINES DE DOUAI , 2007 .

[42]  Elisa Bertino,et al.  ECOOP 2000 — Object-Oriented Programming , 2000, Lecture Notes in Computer Science.

[43]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[44]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[45]  João Costa Seco,et al.  A Basic Model of Typed Components , 2000, ECOOP.

[46]  Rob C. van Ommering Koala, a Component Model for Consumer Electronics Product Software , 1998, ESPRIT ARES Workshop.

[47]  Frantisek Plasil,et al.  Software Connectors and their Role in Component Deployment , 2001, DAIS.

[48]  Shi-Kuo Chang,et al.  Advances in Software Engineering and Knowledge Engineering , 1993, Series on Software Engineering and Knowledge Engineering.

[49]  Thierry Coupaye,et al.  A Model for Developing Component-Based and Aspect-Oriented Systems , 2006, SC@ETAPS.

[50]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[51]  Robert J. Allen A formal approach to software architecture , 1997 .

[52]  Boris Magnusson,et al.  ECOOP 2002 — Object-Oriented Programming , 2002, Lecture Notes in Computer Science.

[53]  Adele Goldberg,et al.  SmallTalk 80: The Language , 1989 .

[54]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[55]  Frantisek Plasil,et al.  Behavior Protocols for Software Components , 2002, IEEE Trans. Software Eng..

[56]  Oscar Nierstrasz,et al.  Component-oriented software technology , 1995 .

[57]  Manfred Broy,et al.  What characterizes a (software) component? , 1998, Softw. Concepts Tools.