Towards Multi-Paradigm Software Development

Towards Multi-Paradigm Software Development

Towards Multi-Paradigm Software Development Valentino Vrani¶c Department of Computer Science and Engineering, Faculty of Electrical Engineering and Information Technology Slovak University of Technology in Bratislava, Slovakia Multi-paradigm software development is a possible an- multi-paradigm software development. swer to attempts of ¯nding the best paradigm. It was The move towards multi-paradigm software present in software development at the level of intuition and practiced as the \implementation detail" without a development can be felt not only in new software real support in design. Recently it is making a twofold development paradigms|e.g. aspect-oriented breakthrough: several recent programming paradigms are programming, which is bound to other para- encouraging it, while explicit multi-paradigm approaches digms from the ¯rst principles|it is present al- aim at its full-scale support. In order to demonstrate this, ready in object-oriented programming. It is even a survey of selected recent software development (pro- gramming) paradigms (aspect-oriented approaches and more notable at the language level. It is hard to generative programming) and multi-paradigm approaches ¯nd a language that is pure in the sense of pro- (multi-paradigm programming in Leda, multi-paradigm hibiting any other than its proclaimed paradigm design in C++, and intentional programming) is pre- to be used in it. sented. The survey is preceded and underpinned by the anal- What has been described is the implicit form ysis of the concept of paradigm in computer science in of multi-paradigm software development. There the context of software development, since there is no a are several approaches which make this idea ex- common agreement about the meaning of this term, de- plicit by enabling a developer not only to com- spite its wide use. The analysis showed that there are two meanings of paradigm: large-scale and small-scale. bine multiple paradigms, but also to choose the most appropriate one for the given feature of a system or family of systems. Keywords: software development, programming, The rest of this article is organized as follows. large-scale, small-scale paradigm; commonality, variabil- Section 2 explores the concept of paradigm in ity analysis; multi-paradigm, aspect-oriented, generative, computer science in the context of software de- Leda, intentional programming; metaparadigm. velopment. Section 3 is an overview of selected recent post-object-oriented paradigms, namely 1 Introduction aspect-oriented programming approaches and generative programming. Section 4 proceeds The way software is developed is changing. En- with recent post-object-oriented approaches that forced by the need for mass production of qual- exhibit explicitly the multi-paradigm character. ity software and enabled by the grown experi- Section 5 closes the article with conclusions and ence of the ¯eld, software development is mov- proposals for further work. ing towards industrialization. The question is no longer which single tool is the best one, but how to select the right tools for each task to be 2 The Concept of Paradigm in accomplished. Software Development This article maps the state of the art in the ¯eld of post-object-oriented software devel- Paradigm is a very often used|and even more opment. Most notably, it is devoted to the often abused|word in computer science in the promising concepts of aspect-oriented program- context of software development. Its importance ming, generative programming and, particularly, arose signi¯cantly with appearance of so-called 1 2 Towards Multi-Paradigm Software Development multi-paradigm approaches. Before discussing 2.1 Large-Scale Paradigms them, the concept of paradigm in software de- velopment requires a deeper examination. We The notion of paradigm in the context of soft- must consider both the well-established meaning ware development is used at two levels of granu- of paradigm in science and the actual meaning larity. Let us ¯rst discuss the large-scale mean- of the word in order to ¯nd out when its use in ing of paradigm, which, as it has already been computer science is justi¯ed, and also to gain a mentioned, denotes the essence of a software de- better understanding of the concept of paradigm velopment process. Coplien used the term large- itself. scale paradigm to denote programming para- digms in, as he said, a \popular" sense [Cop99a]. The term paradigm in science is strongly re- Besides software development paradigm and lated to Thomas Kuhn and his essay [Kuh70], software engineering paradigm, at least two more where it has been used to denote a consistent terms are used to refer to large-scale paradigm collection of methods and techniques accepted by of software development: programming paradigm the relevant scienti¯c community as a prevailing or, simply, programming. Although in common methodology of the speci¯c ¯eld. use (for historical reasons), one must be car- ful with these terms because of possible misun- In computer science, the term paradigm de- derstanding: programming sometimes stands for notes the essence of a software development pro- implementation only, as other phases of a soft- cess (often referred to as programming, see Sec- ware development process can also be referred to tion 2.1). Unfortunately, this is not the only pur- explicitly (e.g., object-oriented analysis, object- pose this term is used for. Probably no science oriented design, etc.). has accepted this term with such an enthusiasm The name of a paradigm reveals its most sig- as computer science did; there are a lot of meth- ni¯cant characteristic [Vra00]. Sometimes it is ods whose authors could not resist the tempta- derived from the central abstraction the para- tion to raise them to the level of paradigm (just digm deals with, as it is a function to functional try a keyword \paradigm" in some citing index paradigm, an object to object-oriented paradigm or digital library, e.g. [NEC]). Although not con- (according to [Mey97] it is not object but class tradictory to the original meaning of the word that is the central abstraction in object-oriented paradigm, such an overuse causes confusion. paradigm), etc. The basic meaning of paradigm is example, es- Lack of a general agreement on which name pecially a typical one, or pattern, which is in a di- denotes which paradigm is a potential source of rect connection to its etymology (Greek \to show confusion. For example, although the term func- side by side") [Mer]. The meaning and etymol- tional paradigm is usually used to denote a kind ogy pose no restriction to the extent of the exam- of application paradigm, as opposed to proce- ple or pattern it refers to. This is reflected in the dural paradigm, in [Mey97] it is used to denote common use of the word paradigm today: on the exactly the procedural paradigm. It is hard to one hand, it has the meaning of a whole philo- blame the author for misuse of the term know- sophical and theoretical framework of scienti¯c ing that the procedure is often being denoted as school (akin to Kuhn's interpretation), while on function. the other hand, it is simply an example as in lin- It must be distinguished between the software guistics where it has the meaning of an example development paradigm itself and the means used of conjugation or declension showing a word in to support its realization. Unfortunately, this is all its inflectional forms [Mer]. another source of confusion. For example, any paradigm can be visualized by means of a visual Computer science, being a science whose great environment and thus it makes no sense to speak part is devoted to a special kind of languages about the visual paradigm (as in [Bud95]). Mak- intended for programming, hosts well both of ing a complete classi¯cation and comparison of these two interpretations of paradigm covered in the software development paradigms is beyond a more detail in the following text. the scope of this text; see [N¶av96] for the com- Towards Multi-Paradigm Software Development 3 parison of selected programming paradigms re- the root in order to obtain di®erent forms of the garding the concepts of abstraction and general- word. ization. Scope, commonality and variability (SCV) A software development paradigm is con- analysis [CHW98] can be used to describe these stantly changing, improving, or better to say language level paradigms. Here are the de¯ni- re¯ning. The basic principles it lays on must tions of the three cornerstone terms in SCV anal- be preserved; otherwise it would evolve into an- ysis (instead of entities the word objects was used other paradigm. Consider, for example, the sim- in [CHW98], but this could lead to a confusion pli¯ed view on the evolution of object-oriented with objects in the sense of object-oriented pa- paradigm. First, there were commands (impera- radigm): tive programming). Then named groups of com- mands appeared, known as procedures (proce- Scope (S): a set of entities; dural programming). Finally, procedures were Commonality (C): an assumption held uni- incorporated into the data it operated on yield- formly across a given set of entities S; ing objects/classes (object-oriented paradigm). However, according to Kuhn, paradigms do Variability (V ): an assumption true for only not evolve, although it could seem so; it is the some elements of S. scienti¯c revolution that ends the old and starts SCV analysis of procedures paradigm illus- a new paradigm [Kuh70]. A paradigm is dom- trates the de¯nition (based on an example inant by de¯nition and thus there can be only from [CHW98]): one at a time in a given ¯eld of science unless the ¯eld is in an unstable state. According to S: a collection of similar code fragments, each this, simultaneous existence of several software to be replaced by a call to some new proce- development paradigms indicates that the ¯eld dure P ; of software development is either in an unstable state, or all these paradigms are parts of the one C: the code common to all fragments in S; not yet fully recognized nor explicitly named pa- V : the \uncommon" code in S; variabilities are radigm.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    16 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us