Classboxes – Controlling Visibility of Class Extensions (Classboxes – Kontrollierte Sichtbarkeit von Klassenerweiterungen)

2007 ◽  
Vol 49 (4) ◽  
Author(s):  
Alexandre Bergel

SummaryUnanticipated changes to complex software systems can introduce anomalies such as duplicated code, suboptimal inheritance relationships and a proliferation of run-time downcasts. Refactoring to eliminate these anomalies may not be an option, at least in certain stages of software evolution. A class extension is a method that is defined in a module, but whose class is defined elsewhere. Class extensions offer a convenient way to incrementally modify existing classes when subclassing is inappropriate. Unfortunately existing approaches suffer from various limitations. Either class extensions have a global impact, with possibly negative effects for unexpected clients, or they have a purely local impact, with negative results for collaborating clients. Furthermore, conflicting class extensions are either disallowed, or resolved by linearization, with subsequent negative effects. To solve these problems we present classboxes, a module system for object-oriented languages that provides for behavior refinement (i. e. method addition and replacement). Moreover, the changes made by a classbox are only visible to that classbox (or classboxes that import it), a feature we call local rebinding. We present an experimental validation in which we apply the classbox model to both dynamically and statically typed programming languages. We used classboxes to refactor part of the Java Swing library, and we show two extensions built on top of classboxes which are (i) runtime adaptation with dynamically classboxes and (ii) expressing crosscutting changes.

Author(s):  
GERARDO CANFORA ◽  
FILIPPO LANUBILE ◽  
GIUSEPPE VISAGGIO

Software evolution has no common paradigm which practitioners can adhere to. On the contrary, there is a wide range of models, methods, techniques, and tools which are selected according to the specific task, the application domain, the professional experience, and the organizational culture. We argue that different approaches and technologies may be combined into a unique platform to satisfy the needs of software systems which evolve over long periods of time. This paper presents the Integrated Environment for Software Evolution Management (IESEM) which includes software repositories, reverse engineering tools, rationale capture tools, software measurement tools, and a user-friendly interface. It can manage heterogeneous systems characterized by various design methods and programming languages. IESEM is based on a central repository which stores software engineering artifacts, program code, design, and implementation decisions in the form of a traceability graph. The repository stores also software measures computed both from programs and external CASE repositories. Measures are used to control software degradation during its evolution and to support decisions based on quality factors. The key concepts of IESEM, its design, and implementation are presented. The use of IESEM during development and maintenance is discussed. A case study shows IESEM's effectiveness in performing maintenance tasks.


Author(s):  
Liliana María Favre

This chapter summarizes the main results described in this book and challenges and strategic directions in MDA reverse engineering. Reverse engineering is the process of analyzing software systems to extract software artifacts at a higher level of abstraction. Nowadays, software and system engineering industry evolves to manage new platform technologies, design techniques and processes. Architectural framework for information integration and tool interoperation, such as MDA, had created the need to develop new analysis tools and specific techniques. MDA is not itself a technology specification but it represents an evolving plan to achieve cohesive model-driven technology specifications. The original inspiration around the definition of MDA had to do with the middleware integration problem in internet. Beyond interoperability reasons, there are other good benefits to use MDA such as to improve the productivity, process quality and maintenance costs. The outstanding ideas behind MDA are separating the specification of the system functionality from its implementation on specific platforms, managing the software evolution from abstract models to implementations increasing the degree of automation and achieving interoperability with multiple platforms, programming languages and formal languages.


2021 ◽  
Vol 11 (12) ◽  
pp. 5690
Author(s):  
Mamdouh Alenezi

The evolution of software is necessary for the success of software systems. Studying the evolution of software and understanding it is a vocal topic of study in software engineering. One of the primary concepts of software evolution is that the internal quality of a software system declines when it evolves. In this paper, the method of evolution of the internal quality of object-oriented open-source software systems has been examined by applying a software metric approach. More specifically, we analyze how software systems evolve over versions regarding size and the relationship between size and different internal quality metrics. The results and observations of this research include: (i) there is a significant difference between different systems concerning the LOC variable (ii) there is a significant correlation between all pairwise comparisons of internal quality metrics, and (iii) the effect of complexity and inheritance on the LOC was positive and significant, while the effect of Coupling and Cohesion was not significant.


2000 ◽  
Vol 10 (3) ◽  
pp. 269-303 ◽  
Author(s):  
XAVIER LEROY

A simple implementation of an SML-like module system is presented as a module parameterized by a base language and its type-checker. This implementation is useful both as a detailed tutorial on the Harper–Lillibridge–Leroy module system and its implementation, and as a constructive demonstration of the applicability of that module system to a wide range of programming languages.


Author(s):  
LUCA CERNUZZI ◽  
AMBRA MOLESINI ◽  
ANDREA OMICINI ◽  
FRANCO ZAMBONELLI

Changes and adaptations are always necessary after the deployment of a multi-agent system (MAS), as well as of any other type of software systems. Some of these changes may be simply perfective and have local impact only. However, adaptive changes to meet new situations in the operational environment of the MAS may impact globally on the overall design. More specifically, those changes usually affect the organizational structure of the MAS. In this paper we analyze the issue of design change/adaptation in a MAS organization, and the specific problem of how to properly model/design a MAS so as to make it ready for adaptation. Special attention is paid to the Gaia methodology, whose suitability in dealing with adaptable MAS organizations is also discussed with the help of an illustrative application example.


2014 ◽  
Vol 10 (2) ◽  
pp. 135-154 ◽  
Author(s):  
Ifigeneia Douvitsa ◽  
Demosthenis Kassavetis

Purpose – The aim of this article is to investigate the organization of water cooperatives in Greece for the first time, as promoted by a spontaneous social mobilization called Initiative 136. The above attempt appears as an alternative proposition as opposed to the state-driven full privatization of EYATH S.A. Design/methodology/approach – This article presents previous work on water cooperatives and the negative effects of water privatization worldwide, relating it to water privatization in Greek reality through the prism of the current recession. Findings – While full privatization under the pressure of the economic crisis is very likely to yield significantly negative results, a transformation into a water cooperative might provide a viable solution. Research limitations/implications – Water cooperatives provide a solution for water distribution that is friendly for the consumer, the society and the environment. Practical implications – Application of a cooperative method of water provision in Greece could be a springboard for the use of the model in other areas. Originality/value – The article evaluates the privatization and cooperativization attempt of EYATH S.A. based on previous related research and considering Greece ' s current conditions.


Author(s):  
Hiba Al Sghaier

Software engineering is one of computer science branches, it comprises of building and developing software systems and applications. Software engineering is a discipline that has a constant growth in research in aim to identify new technologies and adopt it in different areas; there is a considerable investment on software engineering trends at the current time due to the availability of mobile technologies. With millions of billions of smart devices that are connected to the internet, all industries around the world are rapidly becoming a technology driven industries. Software engineers are aware of programming languages that are employed to develop software systems, by applying engineering principles to development process; they can design customized software systems for individual or organizational customers. The new trends in software engineering are numerous, Cloud Computing, machine learning, deep learning, big Data, mobile Computing. Nevertheless, there are many more other research trends in software engineering's field that have been intensively explored and implemented in many different industries. In this paper, authors try to summarize the most fields that are integrated with software engineering recently.


Author(s):  
Reyes Delgado Paola Yuritzy ◽  
Mora Tavarez José Manuel ◽  
Duran-Limon Hector Alejandro ◽  
Rodríguez-Martínez Laura Cecilia ◽  
Mendoza González Ricardo ◽  
...  

The design Software Architecture (SA) is an essential activity in the modern development software systems. This SA design activity defines its core components, the interrelationships among them, and a set of essential attributes expected for the final software. While this design is realized in a high level of abstraction, missing this activity or a wrong conduction of it will have negative effects in further software development phases, and lately in the final software. Thus, SA design methods are relevant to be studied and applied. In this article, we review the SA design methods that are (explicitly or implicitly) included in five well-known Software Development Methodologies (SDMs). We report: (1) a brief description of the five SDMs; (2) a substantial description of the SA design methods used in each SDM; and (3) a comparative analysis among them using an evaluation template posited by well-recognized experts in this topic. Our results suggest that SA design methods, while sharing a similar design purpose and some activities, they also present a varied structured and nomenclature.


Author(s):  
Liliana María Favre

This chapter discusses software evolution, challenges and strategic directions in the context of MDA. Various authors agreed that it is difficult to define completely software and then, software evolution. Software is certainly more that bits stored in a file, it is an abstract idea that encompasses the concepts, algorithms embodied in the implementation as well as all its associated artifacts and processes. Research seems to confirm that computer software and process software have much in common. Osterweil (2003) assures that software processes are software too. In other paper (Osterweil, 2007), he suggests analyzing the nature of software and proposes to define taxonomies for exploring characteristics and approaches to the development, verification of qualities and software evolution. The exploration of these questions is an important current of software engineering research. On the other hand, evolution is defined as a process of gradual change and development from fewer and simpler forms to higher, more complex, or better ones. In biology, evolution is related to develop over time often many generations, into forms that are better adapted to survive changes in their environment. Thus, evolution captures the notion of something improving and changes occur in species in successive generations, i.e. individuals get old and species evolve. Jazayeri (2005) analyzes the definition of software evolution. The concept of “specie” in software may be associated to meta-levels describing families (species) of software systems. These meta-levels or architectures are created as improvements to previous existing ones and describe evolved families of software systems.


Sign in / Sign up

Export Citation Format

Share Document