16,297 research outputs found

    Identifying and improving reusability based on coupling patterns

    Get PDF
    Open Source Software (OSS) communities have not yet taken full advantage of reuse mechanisms. Typically many OSS projects which share the same application domain and topic, duplicate effort and code, without fully leveraging the vast amounts of available code. This study proposes the empirical evaluation of source code folders of OSS projects in order to determine their actual internal reuse and their potential as shareable, fine-grained and externally reusable software components by future projects. This paper empirically analyzes four OSS systems, identifies which components (in the form of folders) are currently being reused internally and studies their coupling characteristics. Stable components (i.e., those which act as service providers rather than service consumers) are shown to be more likely to be reusable. As a means of supporting replication of these successful instances of OSS reuse, source folders with similar patterns are extracted from the studied systems, and identified as externally reusable components

    Class movement and re-location: An empirical study of Java inheritance evolution

    Get PDF
    This is the post-print version of the final paper published in Journal of Systems and Software. The published article is available from the link below. Changes resulting from the publishing process, such as peer review, editing, corrections, structural formatting, and other quality control mechanisms may not be reflected in this document. Changes may have been made to this work since it was submitted for publication. Copyright @ 2009 Elsevier B.V.Inheritance is a fundamental feature of the Object-Oriented (OO) paradigm. It is used to promote extensibility and reuse in OO systems. Understanding how systems evolve, and specifically, trends in the movement and re-location of classes in OO hierarchies can help us understand and predict future maintenance effort. In this paper, we explore how and where new classes were added as well as where existing classes were deleted or moved across inheritance hierarchies from multiple versions of four Java systems. We observed first, that in one of the studied systems the same set of classes was continuously moved across the inheritance hierarchy. Second, in the same system, the most frequent changes were restricted to just one sub-part of the overall system. Third, that a maximum of three levels may be a threshold when using inheritance in a system; beyond this level very little activity was observed, supporting earlier theories that, beyond three levels, complexity becomes overwhelming. We also found evidence of ‘collapsing’ hierarchies to bring classes up to shallower levels. Finally, we found that larger classes and highly coupled classes were more frequently moved than smaller and less coupled classes. Statistical evidence supported the view that larger classes and highly coupled classes were less cohesive than smaller classes and lowly coupled classes and were thus more suitable candidates for being moved (within an hierarchy)

    Supporting 'design for reuse' with modular design

    Get PDF
    Engineering design reuse refers to the utilization of any knowledge gained from the design activity to support future design. As such, engineering design reuse approaches are concerned with the support, exploration, and enhancement of design knowledge prior, during, and after a design activity. Modular design is a product structuring principle whereby products are developed with distinct modules for rapid product development, efficient upgrades, and possible reuse (of the physical modules). The benefits of modular design center on a greater capacity for structuring component parts to better manage the relation between market requirements and the designed product. This study explores the capabilities of modular design principles to provide improved support for the engineering design reuse concept. The correlations between modular design and 'reuse' are highlighted, with the aim of identifying its potential to aid the little-supported process of design for reuse. In fulfilment of this objective the authors not only identify the requirements of design for reuse, but also propose how modular design principles can be extended to support design for reuse

    Energy-water-environment nexus underpinning future desalination sustainability

    Get PDF
    Energy-water-environment nexus is very important to attain COP21 goal, maintaining environment temperature increase below 2 °C, but unfortunately two third share of CO2 emission has already been used and the remaining will be exhausted by 2050. A number of technological developments in power and desalination sectors improved their efficiencies to save energy and carbon emission but still they are operating at 35% and 10% of their thermodynamic limits. Research in desalination processes contributing to fuel World population for their improved living standard and to reduce specific energy consumption and to protect environment. Recently developed highly efficient nature-inspired membranes (aquaporin & graphene) and trend in thermally driven cycle's hybridization could potentially lower then energy requirement for water purification. This paper presents a state of art review on energy, water and environment interconnection and future energy efficient desalination possibilities to save energy and protect environment

    Assessing architectural evolution: A case study

    Get PDF
    This is the post-print version of the Article. The official published can be accessed from the link below - Copyright @ 2011 SpringerThis paper proposes to use a historical perspective on generic laws, principles, and guidelines, like Lehman’s software evolution laws and Martin’s design principles, in order to achieve a multi-faceted process and structural assessment of a system’s architectural evolution. We present a simple structural model with associated historical metrics and visualizations that could form part of an architect’s dashboard. We perform such an assessment for the Eclipse SDK, as a case study of a large, complex, and long-lived system for which sustained effective architectural evolution is paramount. The twofold aim of checking generic principles on a well-know system is, on the one hand, to see whether there are certain lessons that could be learned for best practice of architectural evolution, and on the other hand to get more insights about the applicability of such principles. We find that while the Eclipse SDK does follow several of the laws and principles, there are some deviations, and we discuss areas of architectural improvement and limitations of the assessment approach

    Size Matters: Microservices Research and Applications

    Full text link
    In this chapter we offer an overview of microservices providing the introductory information that a reader should know before continuing reading this book. We introduce the idea of microservices and we discuss some of the current research challenges and real-life software applications where the microservice paradigm play a key role. We have identified a set of areas where both researcher and developer can propose new ideas and technical solutions.Comment: arXiv admin note: text overlap with arXiv:1706.0735
    corecore