We present Seismo-VLAB (SVL), a new open-source, object-oriented finite element software designed to optimize meso-scale simulations in the context of structural and geotechnical engineering. To this end, state-of-the...
详细信息
We present Seismo-VLAB (SVL), a new open-source, object-oriented finite element software designed to optimize meso-scale simulations in the context of structural and geotechnical engineering. To this end, state-of-the-art tools and parallel computing capabilities required for efficient modeling of soil- structure interaction and wave propagation in heterogeneous half-spaces are included. For example, perfectly matched layer, domain reduction method, dynamic nonlinear solvers, cutting edge parallel linear system solvers, domain decomposition method, and a series of plasticity models are some of the features available in SVL. In this work, we present the numerical implementation and software structure so enthusiastic developers can contribute to this open-source project and showcase some software capabilities using an illustrative example. (c) 2022 The Authors. Published by Elsevier B.V.
Design patterns are applied frequently during software evolution in order to make the software more flexible and amenable to extension. One little-studied aspect of design patterns is their propensity to increase run-...
详细信息
Design patterns are applied frequently during software evolution in order to make the software more flexible and amenable to extension. One little-studied aspect of design patterns is their propensity to increase run-time energy consumption due to the indirection and additional structure they introduce. In this paper we study the impact of the Visitor pattern on energy efficiency. The Visitor pattern separates an algorithm from the objects it acts upon and improves maintainability by placing each algorithm within a single visitor class. This is at the cost of increased indirection due to the double dispatch required when the algorithm is invoked. We experimentally investigate the energy impact of varying the implementation of this pattern, and of removing the pattern entirely from software written in Java and C++. In our results we observe energy consumption reductions greater than 7% in a Java-based textbook example when the pattern is implemented using reflective dispatch, and reductions of over 10% when experimenting with an open source Java project, JavaParser. The complete removal of the pattern yields more complex results, with little impact in the textbook example but reductions of over 7% in the JavaParser study. To explore the generalisability of our findings, we subsequently apply the same transformations to the C++ based CppParser. Total pattern removal here sees energy consumption reductions of over 66% while the reflective dispatch approach increases energy consumption by up to 2012%. Our results highlight the energy savings that can be achieved when the Visitor pattern is removed both in Java and C++ implementations, and also show that some language specific features can allow for further energy savings when the implementation of the pattern is varied.
The present work demonstrates the mechanisms, programming design choices and paradigms of developing an Android-hacked online turn-based social game application. Each step of the programming process is detailed, and t...
详细信息
ISBN:
(纸本)9781538644447
The present work demonstrates the mechanisms, programming design choices and paradigms of developing an Android-hacked online turn-based social game application. Each step of the programming process is detailed, and the underlying implemented concepts and reasonings for the different modules are explained using the Model View Controller architectural pattern. Software engineering design choices are compared and exemplified at each stage of the development phases, giving suggestions for improving the logic behind such a distributed service. This paper also shortly presents insights on the usage of an online cloud database (Firebase, from Google) in order to handle player data in real-time using JSON format.
In object-oriented programming languages, objects with polymorphic attributes can negatively impact performance and hinder static analysis. These attributes require dynamic dispatch, which is slower than static bindin...
详细信息
ISBN:
(纸本)9798400708688
In object-oriented programming languages, objects with polymorphic attributes can negatively impact performance and hinder static analysis. These attributes require dynamic dispatch, which is slower than static binding, and complicate the analysis process. We propose a novel algorithm for object specialization that addresses this issue by replacing polymorphic attributes with monomorphic ones, resulting in improved performance and simplified static analysis. Our algorithm is a new approach compared to existing function specialization algorithms. We provide a proof of the algorithm’s soundness and correctness, and present an implementation of the algorithm as a software tool. Empirical evaluation shows that our approach achieves significant improvements in performance and simplifies the static analysis process. Our algorithm can be applied to a variety of object-oriented languages such as Java and Python.
Context. Features and styles inspired by functional programming have grown in popularity in the world of object-oriented programming. Immutability is a core concept of functional programming, which brings advantages t...
详细信息
ISBN:
(纸本)9798400700408
Context. Features and styles inspired by functional programming have grown in popularity in the world of object-oriented programming. Immutability is a core concept of functional programming, which brings advantages to software development. However, introducing immutability in object-oriented programming presents some challenges. Problem. One of these challenges is method overriding. When inheriting non-destructive mutators (methods used on immutable objects which return a new object instead of modifying the receiver), a naive approach generates code duplication and has scalability issues. Contribution. We analyse an example of this overriding problem and propose a solution in a new design pattern based on the factory method pattern. We also discuss the advantages and limitations of this pattern, as well as implementations in Clojure, Java, and Kotlin. We also identify and discuss the language features that mostly affect the implementation of this pattern. Conclusion. Our proposed design pattern helps mitigate some of the code duplication and scalability problems of a naive approach. However, the inclusion of a functional updating language feature is required to completely remove the scalability issues.
Despite enduring criticisms spanning several decades, jump statements such as goto, break, continue, and return remain prevalent in imperative programming languages, including but not limited to C++, Java, and Python....
详细信息
ISBN:
(纸本)9798400708688
Despite enduring criticisms spanning several decades, jump statements such as goto, break, continue, and return remain prevalent in imperative programming languages, including but not limited to C++, Java, and Python. The academic community has yet to reach a consensus regarding whether the refactoring of source code in these languages to eliminate such statements can indeed enhance code readability. Nevertheless, it is evident that automated program analysis would derive substantial benefits from this refactoring, given that structured code analysis is more straightforward than analyzing code that exhibits capricious alterations in its control flow. While algorithms tailored for this refactoring process have been proposed for certain imperative languages, we introduce a congruent algorithm, specifically designed for a dataflow programming language. It’s important to note that although dataflow languages lack jump statements, they might incorporate jump-objects (in object-oriented contexts) or jump-functions (within functional paradigms). Our algorithm has been instantiated as a command-line tool tailored for refactoring EO, an object-oriented dataflow language. Preliminary tests with several EO programs have validated the tool’s efficacy. Leveraging φ -calculas, we provide a formal proof underscoring the validity of every transformation encompassed within our algorithm.
The use of electronic technology in on-line learning is increasing, that is facilitating teaching and learning for both teacher and students. Nowadays the traditional object-oriented programming teaching does not adap...
详细信息
The use of electronic technology in on-line learning is increasing, that is facilitating teaching and learning for both teacher and students. Nowadays the traditional object-oriented programming teaching does not adapt to the needs of teaching and learning. So we construct the on-line platform of object-oriented programming to meet the needs of on-line tutoring, the assessment and examination paper analysis for teaching, at the same time helping the students' on-line learning and testing. It is a reference model for teaching and learning on the Internet.
This paper is dedicated to the features of the software component of the memory test setup based on the object-oriented approach in LabVIEW environment. The specificities of the software development for test setups us...
详细信息
ISBN:
(纸本)9781728185040
This paper is dedicated to the features of the software component of the memory test setup based on the object-oriented approach in LabVIEW environment. The specificities of the software development for test setups used for the control of the electronics device's parameters are described. The paper concerns the advantages and disadvantages of the object-oriented approach in the software development process in LabVIEW and the challenges which may arise during the remodeling of the program written in the procedure programming paradigm using the object-oriented methodology. The actor model is described as well as its modification made for use in the developed software solution. Reasons that necessitated modification of the standard actor model are discussed. The specific features of the architecture of the developed software are described. Solutions aimed at building a universal program project are presented;they ensure that minimal adaptation is needed to perform functional and parametric control of any memory device. Among these solutions are the universal interface between the program executed on PC and the program responsible for the high-speed input and output executed on programmable logic device (PLD). For various architectures of the program executed on PLD there was conducted a comparison of the hardware resources used and a compilation time.
In the field of ecoinformatics, synthetic ecologies approach intends to reproduce in silico the architecture and functioning of a real domain 'as it works'. When the systems to be represented are complex, bioi...
详细信息
ISBN:
(纸本)9789897585289
In the field of ecoinformatics, synthetic ecologies approach intends to reproduce in silico the architecture and functioning of a real domain 'as it works'. When the systems to be represented are complex, bioinspiration is proposed as a relevant approach to develop robust modelling. This study aims to develop, using basic object-oriented paradigms, and in collaboration with biologists, a comprehensive synthetic ecology about a given application domain: wild rodents' population dynamics. To address the complexity of the field, the architecture is gradually grown and shaped from integration of successive and diverse case studies modelling in the application domain. Developed for more than ten years, the same model has made it possible to represent historical, cellular and/or ecological processes at the scales of a country, a region, a city or a laboratory as well as a diversity of interacting living beings. Results present how principles such as composition, aggregation, inheritance, generalization have been used to elaborate a synthetic ecology. These paradigms altogether constitute a rich, and improvable, toolbox offering a varied set of possible uses to formalize bioinspired landscape or ecologies.
Detecting programming errors and vulnerabilities in software is increasingly important, and building tools that help developers with this task is a crucial area of investigation on which the industry depends. In objec...
详细信息
ISBN:
(纸本)9783030781415;9783030781422
Detecting programming errors and vulnerabilities in software is increasingly important, and building tools that help developers with this task is a crucial area of investigation on which the industry depends. In object-oriented languages, one naturally defines stateful objects where the safe use of methods depends on their internal state;the correct use of objects according to their protocols is then enforced at compile-time by an analysis based on behavioral types. We present Java Typestate Checker (JATYC), a tool based on the Checker Framework that verifies Java programs with respect to typestates. These define the object's states, the methods that can be called in each state, and the states resulting from the calls. The tool offers the following strong guarantees: sequences of method calls obey to object's protocols;completion of objects' protocols;detection of null-pointer exceptions;and control of the sharing of resources through access permissions. To the best of our knowledge, there are no research or industrial tools that offer all these features. In particular, the implementation of sharing control in a typestate-based tool seems to be novel, and has an important impact on programming flexibility, since, for most programs, the linear discipline imposed by behavioral types is too strict. Sharing of objects is enabled by means of an assertion language incorporating fractional permissions;to lift from programmers the burden of writing the assertions, JATYC infers all of these by building a constraint system and solving it with Z3, producing general assertions sufficient to accept the code, if these exist.
暂无评论