Computer Software
Print ISSN : 0289-6540
Current issue
Showing 1-10 articles out of 10 articles from the selected issue
  • [in Japanese]
    2021 Volume 38 Issue 2 Pages 2_1
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS
  • Eijiro SUMII
    2021 Volume 38 Issue 2 Pages 2_2-2_4
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS
  • Eijiro SUMII
    2021 Volume 38 Issue 2 Pages 2_5-2_13
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS
  • Kotaro MATSUMOTO, Yoshiaki TAKATA, Tomoharu UGAWA
    2021 Volume 38 Issue 2 Pages 2_14-2_19
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS

    Recently, non-volatile memory has arrived on the market. Non-volatile memory is a main memory device with an advantage that it preserves its contents across system power losses. To allow a natural use of it from managed languages, such as Java, researchers are developing managed heaps, which has a mechanism to persist objects automatically. In this research, we evaluated the overhead that the persisting mechanism may apply. We implemented a part of a persisting mechanism that involves accessing non-volatile memory on OpenJDK. As a result, we observed up to 510 % overhead to make all objects durable.

    Download PDF (598K)
  • Tsukasa GOTOH, Sosuke MORIGUCHI, Takuo WATANABE
    2021 Volume 38 Issue 2 Pages 2_20-2_26
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS

    Wireless Sensor and Actor Networks (WSANs) are distributed systems composed of multiple computers that observe and act on physical environments. Since WSANs contain actor nodes that control actuators or perform other local operations, complex inter-node coordination operations involving them are necessary. The lack of such coordination may result in the incorrect arrival order of messages between actor and sensor nodes. The problems are called hazards. For wireless sensor networks (WSNs), which do not have actor nodes, there is a method called macro-programming, which describes the behavior of the entire WSN as a single computing system. In macro-programming, inter-node cooperation for processing is derived from the overall behavior. In this study, we propose a macro-programming language for WSAN that incorporates a mechanism to derive cooperative actions to avoid hazards.

    Download PDF (510K)
  • Yoshiki IMAIZUMI, Isao SASANO
    2021 Volume 38 Issue 2 Pages 2_27-2_45
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS

    The C preprocessor (CPP) is a token-based macro processor for some programming languages such as C and C++. By using CPP, we can write programs with abstracting types, which typically appear in generic programming, in some programming languages like C that do not support type variables.
    However, the CPP replaces tokens without any consideration about the syntax of the programming languages. Misusing CPP macros may cause errors difficult to detect from the error messages. Moreover it is difficult to study the CPP by oneself, and studying preprocessing directives except for #include has lower priority for most people than studying syntax and standard libraries of the programming languages or studying some APIs. Hence CPP macros are rarely used correctly. Some CPP implementations provide the functionality of showing macro replacement steps, which helps us to learn the behavior of the macro replacement. However, these implementations conform to C99, so we cannot use them to learn new features introduced in newer specifications such as C++17.
    In this paper, we implement an interactive environment, named Messer, for evaluating C++17 CPP macros in order to help us to learn CPP. Furthermore, we report the detail of the implementation. Messer has the functionalities of showing macro replacement steps and completing user input with taking into account the context. For implementing Messer, we have also implmented the parser combinator named matcha2 and the line editing library named Linse. Matcha2 can take as its input a list of tokens. vspace*{-1 baselineskip}

    Download PDF (826K)
  • Shuji MORISAKI, Koyo KANAMORI
    2021 Volume 38 Issue 2 Pages 2_46-2_52
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS

    Game loops in the existing source code must be identified prior to updating, adding, or modifying game rules or game objects in games software. This paper proposes a static analysis method predicting game loop candidates with likelihood ranks by focusing on the characteristics of game loops. The proposed method is evaluated with ten publicly available games in Github. For eight of the games, actual game loops were predicted: five had an actual game loop listed at the top of the candidates, while the other three had an actual game loop within the top 11 results.

    Download PDF (361K)
  • Kazuya TAKAHASHI, Yasuhiko MINAMIDE
    2021 Volume 38 Issue 2 Pages 2_53-2_70
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS

    Regular expression matching often used for searching and replacing strings are mostly implemented with backtracking. This causes that matching may not be completed in linear time in the length of a string. Previous works developed analyses to detect such regular expressions based on ambiguity analysis of nondeterrministic finite automata and growth rate analysis of string-to-tree transducers. We incorporate the techniques developed in the previous works and extend the analysis for extended regular expressions including lookahead and back-reference. We have also improved the core part of the analysis and implemented our analysis tool in Scala. It is shown that our tool can analyze more regular expressions than the existing tool of Weideman et al.

    Download PDF (575K)
  • Masataka NAGURA, Hayato USUI, Shingo TAKADA
    2021 Volume 38 Issue 2 Pages 2_71-2_89
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS

    Android applications are event driven. Developers implement event handlers by inheriting and then coding callback methods that are defined in the Android API. If developers forget to implement relevant callback methods, the application may behave in an unexpected manner. In this paper, we propose an approach that detects methods that are currently unimplemented, but should be implemented. Detected methods are shown to developers for their consideration. We focus on callback methods that are frequently implemented, as well as pairs of methods that are frequently implemented together. Our approach first extracts such methods, method pairs and their frequencies from existing projects. Then, the extracted information is used to detect methods that are unimplemented but should be implemented, which are then shown to the developers. We implemented our approach as a plug-in for Android Studio. Our evaluation showed that our approach was able to detect more than half of the unimplemented methods that should be implemented within the top 15% of all unimplemented callback methods.

    Download PDF (1763K)
  • [in Japanese]
    2021 Volume 38 Issue 2 Pages 2_90-2_91
    Published: April 23, 2021
    Released: June 23, 2021
    JOURNALS FREE ACCESS
feedback
Top