Context: object-oriented programming design patterns are well-known in the industry and taught in universities as part of software engineering curricula. Many primary studies exist on the impact of design patterns on ...
详细信息
Context: object-oriented programming design patterns are well-known in the industry and taught in universities as part of software engineering curricula. Many primary studies exist on the impact of design patterns on software, in addition to secondary studies summarizing these publications. Some primary studies have proposed new language features and used them to re-implement design patterns as a way to show improvements. While secondary studies exist, they mainly focus on measuring the impact of design patterns on software. objectives: We performed a systematic mapping study to catalogue language features in the literature claiming to improve object-oriented design patterns implementations, as well as how primary studies measure these improvements. Methods: We performed a search in three databases, yielding a total of 874 papers, from which we obtained 34 relevant papers. We extracted and studied data about the language features claiming to improve design patterns implementations, the most often cited design patterns, the measures used to assess the improvements, and the case studies and experiments with which these improvements were studied. Results: Using the results, we catalogue 18 language features claimed in the literature to improve design patterns and categorize them into paradigms. We find that some design patterns are more prevalent than others, such as Observer and Visitor. Measures related to code size, code scattering and understandability are preferred. Case studies are done in-vitro, and experiments are rare. Conclusion: This catalogue is useful to identify trends and create a road map for research on language features to improve object-oriented design patterns. Considering the prevalence of design patterns, improving their implementation and adding language features to better solve their underlying concerns is an efficient way to improve object-oriented programming. We intend in the future to use this as a basis to research specific language feature
Context: MATLAB is a programming language vastly used in scientific and engineering domains by engineers, scientists, and researchers. Still, MATLAB seems to be perceived as being used mainly by non-professional progr...
详细信息
Context: MATLAB is a programming language vastly used in scientific and engineering domains by engineers, scientists, and researchers. Still, MATLAB seems to be perceived as being used mainly by non-professional programmers, not taking full advantage of MATLAB's features (e.g., OOP-support). The current state of the art does not seem to verify these ***: Our goal was to fill the gap in the characteristics of the MATLAB community and its users, how proficient they are with the MATLAB, and what is their satisfaction level. Methods: We performed a survey with 212 valid responses, aiming to characterize the community of MATLAB users and clone languages. The survey was published on several platforms, including Reddit, Linkedin, and MATLAB ***: There is a balanced distribution across different levels of experience in the community. (12.74%) of our sample uses MATLAB only through the command window. The more users expect other people to use their programs, the more effort they will put into making the code easy to understand, maintain and reuse. The use of OOP is not widespread (22%). The majority of MATLAB users are satisfied with its modularity ***: Our study provides insights into MATLAB's use patterns that are potentially useful for entities responsible for MATLAB's future evolution.
Test suite reduction methods are a current research topic. In particular, continuous practices and regression testing demand minimizing the number of test cases. Recently, many smart contracts have been deployed in bl...
详细信息
Test suite reduction methods are a current research topic. In particular, continuous practices and regression testing demand minimizing the number of test cases. Recently, many smart contracts have been deployed in blockchain implementations. Due to their immutability, tests play an even more important role in smart contract development. The SmarTS package implements the k+1 test suite reduction method. The developed software generates and runs a minimal set of test cases for the smart contract. The layered construction of the package ensures the ability to test any smart contract whose implementation follows a specific design pattern.
Micro patterns are similar to design patterns, except that micro patterns stand at a lower. closer to the implementation, level of abstraction. Micro patterns are also unique in that they are mechanically recognizable...
详细信息
Micro patterns are similar to design patterns, except that micro patterns stand at a lower. closer to the implementation, level of abstraction. Micro patterns are also unique in that they are mechanically recognizable, since each such pattern can be expressed as a formal condition on the structure of a class. This paper presents a catalog of 27 micro-patterns defined on JAVA classes and interfaces. The catalog captures a wide spectrum of common programming practices, including a particular and (intentionally restricted) use of inheritance, immutability I data management and wrapping, restricted creation, and emulation of procedural-, modular-, and even functional- programming paradigms with objectoriented constructs. Together, the patterns present a set of prototypes after which a large portion Of all JAVA classes and interfaces are modeled. We provide empirical indication that this portion is as high as 75%. A statistical analysis of occurrences of micro patterns in a large software corpus, spanning some 70,000 JAVA classes drawn from a rich set of application domains, shows, with high confidence level that the use of these patterns is not random. These results indicate consciousness and discernible design decisions, which are sustained in the software evolution. With high confidence level, we can also show that the use of these patterns is tied to the specification, or the purpose, that the software realizes. The traceability, abundance and the statistical significance of micro pattern occurrence raise the hope of using the classification of software into these patterns for a more founded appreciation of its design and code quality.
These notes have the status of letters written to ourselves: we wrote them down because, without doing so, we found ourselves making up new arguments over and over again. So began the abstract of our earlier paper Not...
详细信息
These notes have the status of letters written to ourselves: we wrote them down because, without doing so, we found ourselves making up new arguments over and over again. So began the abstract of our earlier paper Notes on Postmodern programming. We now revisit the issue of postmodern programming, and attempt to address some of the questions raised by our exposition. To illustrate the nature of postmodernism we do not do this directly, but instead present a series of snapshots, parodies, and imagined conversations that we hope will help. What do you think of the abstract so far? Self-reference and a irreverent approach are part of this topic, so it's important to chill out and let things flow. We claim that computer science and software design grew up amid the unquestioned landscape of modernism, and that too often we cling to the otherwise ungrounded values, even as modernism itself is ever more compromised.
A program will become obsolete or less effective in solving domain problems due to many reasons. One of the main reasons can be the fact that the program does not fit its context. The context of a program is defined a...
详细信息
A program will become obsolete or less effective in solving domain problems due to many reasons. One of the main reasons can be the fact that the program does not fit its context. The context of a program is defined as a collection of functionalities that support the program to solve domain problems, e.g., runtime environmental supports, meta-strategies, architectural supports, etc. Unfitness phenomena exist in many software systems, which lead the systems prematurely end their life cycles, or decrease their performance and accuracy in solving problems. In existing programming systems, from the perspective of language expressivity, little attention has been paid to this unfitness problem. Granule-orientedprogramming is an evolutionary metaphor in which programs are ground into code granules in order to localize their unfitness parts as explicitly as possible, and then the code granules are compounded into the target program, in which a code granulation space, one to express program in a well-formed and multi-layered framework, is formed. In this paper, we propose and briefly describe the notion of granule-orientedprogramming.
Vibration characteristic is one of the most important properties for structures and mechanical systems. Transfer matrix method for linear multibody systems (linear MSTMM) is an efficient approach to computing the vibr...
详细信息
Vibration characteristic is one of the most important properties for structures and mechanical systems. Transfer matrix method for linear multibody systems (linear MSTMM) is an efficient approach to computing the vibration characteristics of such systems due to its following features: easy to formulate, high programming, and low-order matrix without system global dynamic equations. In this work, a vibration characteristic solver based on linear MSTMM is developed by adopting object-oriented programming (OOP) technique. Binary tree is employed to describe multibody system topology. Then, a novel approach combining sequence and chain storage structures is proposed to store the element data and topology of multibody system. A recursive formula is proposed to derive the overall transfer matrix of multibody system, and its automatic deduction and computation by computer are achieved. The object-oriented framework of the solver is developed to realize the vibration characteristic computation. Furthermore, the numerical study for a Stewart parallel mechanism as well as the practical engineering example of an ultra-precision fly cutting machine tool are performed to validate the solver.
We present pyMDO, an object-oriented framework that facilitates the usage and development of algorithms for multidisciplinary optimization (MDO). The resulting implementation of the MDO methods is efficient and portab...
详细信息
We present pyMDO, an object-oriented framework that facilitates the usage and development of algorithms for multidisciplinary optimization (MDO). The resulting implementation of the MDO methods is efficient and portable. The main advantage of the proposed framework is that it is flexible, with a strong emphasis on object-oriented classes and operator overloading, and it is therefore useful for the rapid development and evaluation of new MDO methods. The top layer interface is programmed in Python and it allows for the layers below the interface to be programmed in C, C++, Fortran, and other languages. We describe an implementation of pyMDO and demonstrate that we can take advantage of object-oriented programming to obtain intuitive, easy-to-read, and easy-to-develop codes that are at the same time efficient. This allows developers to focus on the new algorithms they are developing and testing, rather than on implementation details. Examples demonstrate the user interface and the corresponding results show that the various MDO methods yield the correct solutions.
In the conventional object model, encapsulated objects interact by messages that result in method invocations on the destination object. A message is delivered directly at the destination object. As a result of the di...
详细信息
In the conventional object model, encapsulated objects interact by messages that result in method invocations on the destination object. A message is delivered directly at the destination object. As a result of the direct deliveries, the message control code performing intermediate message manipulations cannot be abstracted out separately from the message processing code in the destination object without sacrificing the transparency of the intermediate message control. We propose the filtered delivery model of message passing for object-oriented languages to provide the separation of message control from message processing in a transparent manner. An interclass relationship, called a filter relationship, is introduced. As a consequence, a filter object can intercept and manipulate messages sent to another object called its client,ia filter member functions. A filter member function in a filter object can intercept a particular member function invocation on its client object. The filtered delivery model supports both upward and downward filtering mechanisms, facilitating interception of an upward message and its return message value. Filter objects can be plugged or unplugged at runtime. Binding of filter member functions to corresponding member functions in the client is selective and dynamic. The filtered delivery model is developed for the C++ object-oriented language;its applications are described and implementation is discussed. (C) 1997 by John Wiley & Sons, Ltd.
In this paper, we present a Matlab object-oriented implementation of the variable-node extended finite element method (XFEM), which is enhanced by local mesh refinement technique, for modeling strong and weak disconti...
详细信息
In this paper, we present a Matlab object-oriented implementation of the variable-node extended finite element method (XFEM), which is enhanced by local mesh refinement technique, for modeling strong and weak discontinuities such as cracks, inclusions, and voids. An easy-to-use local mesh refinement scheme is thus proposed, in which the variable-node elements play an important role as they are integrated into the model for the purpose of connecting/linking different scale meshes. For efficiency, the fine-scale mesh is generated near discontinuities, and the refinement is controlled by three parameters: the number of extension layers, the number of subdivision scales, and the number of refinement levels. We detail the implementation of integrating the variable-node elements into the local mesh refinement XFEM codes in a seamless way. The concept of object-oriented programming (OOP) and strategy design pattern promote the extensibility of computer codes. We consider several numerical examples to show the applicability and accuracy of the current computer codes for mutiple crack growths, crack-hole interactions, multiple inclusions, and a rock slope with one interface and two faults.
暂无评论