A code clone is a code fragment that has identical or similar code fragments to it in the source code. It is generally said that the presence of code clones makes software development and maintenance more difficult. This paper describes several refactoring patterns that are suitable for removing code clones and introduces several research efforts related to code clone refactoring.
DNS is an only successful distributed database that is widely and universally used on the Internet. Thus, to create a universally distributed database at a lower cost, it is better to utilize DNS rather than to construct a new database for querying and storing information. Nowadays, new applications that use DNS as a backend system are being proposed. For example, ENUM maps telephone numbers on DNS tree, and adds information that are related to the phone numbers in autonomously distributed manners. As utilizations of DNS have increased, access control to the information stored in DNS has become necessary. Thus, TSIG protocol extension was proposed to add access controls on DNS. With the extension, it became possible to authenticate each DNS session. However, TSIG is a standard placed on the protocol itself, and it does not consider about building a system that cooperates with other authentication databases. Therefore, this paper proposes a DNS system that can flexible access control with TSIG key mechanism for each DNS updates. A prototype was implemented based on the proposal, and evaluation was made on the prototype. With the system proposed in this research, we achieved flexible and practical operation of DNS access control.
Parametric Anonymous Clause (PAC) is introduced into Prolog based on the standard semantics of Prolog, and is implemented on SWI-Prolog. PAC is an extension of λ term. PAC uses the unification of Prolog, and free variables can be passed to PAC. Static PAC is expanded at compile time, so that it runs as efficient as the standard named predicates. Dynamic PAC is interpreted at runtime in a seamless way. The experimental use of PAC shows that PAC significantly enhances expressive power of Prolog. A package of PAC is made for the Prolog library.
AAA (Authentication, Authorization, and Accounting) is one of the important functions indispensable for providing services on the Internet. Diameter Base Protocol was standardized in IETF as a successor of RADIUS, which is a widely used AAA protocol in the current Internet. Diameter solves the problems that RADIUS has such as support of multiple realms, reliable and secure message transport, and failover. There are several open source implementations of Diameter Base Protocol. However, none of them completely conforms to the specification. The first contribution of freeDiameter is that it is an open source of Diameter Base Protocol that completely conforms to the specification. It is written in C and based on a BSD-like license. In the Diameter architecture, a particular service on Diameter Base Protocol is defined as a Diameter application such as Diameter EAP application for WiFi network access control. The second contribution of freeDiameter is that the software architecture of freeDiameter makes it easy to implement Diameter applications as additional plug-ins. freeDiameter has already been distributed through our home page. freeDiameter with Diameter EAP application has been used in our laboratory for WiFi network access. It was also used for network control in the WIDE camp held in September 2010 for four days in which approximately 200 researchers attended. There was no problem on freeDiameter. This is good evidence of the stability of freeDiameter.
We have developed a system for image-based rendering of real-world objects on web-browsers. The light field of the object is reconstructed from uncalibrated images using structure-from-motion techniques. The reconstructed model is then rendered on web-browsers using our algorithm of approximated perspective transformation, which allows a user to browse the object interactively from virtual viewpoints. Compared to existing approaches to Web3D, our method (1) does not rely on geometry reconstruction of the object, (2) achieves photorealistic image synthesis, and (3) allows a user to view the data on standard web browsers without any add-on. Created 3D data is provided as a standard HTML page and can be embedded into other websites, which enables the existing services to have 3D graphics capability by simply replacing 2D images with our 3D grahpics components.
Model checking is a verification technique based on the exhaustive search of erroneous behaviors of state transition systems, which is attracting growing interest. The LMNtal language allows us to represent state transition systems using hierarchical graph rewriting, and its runtime system, SLIM, has recently evolved into an explicit-state model checker. Hierarchical graphs are a powerful data structure that features a builtin symmetry reduction mechanism that plays a key role in state space search. However, model checking is still prone to state space explosion and has called for time- and space-efficient methods for state management. To address this problem and make our model checker more useful, we have extended the SLIM runtime further to a parallel model checker to run on shared-memory multiprocessors and developed various optimization techniques of state management. These two enhancements drastically improved the scale of problems the LMNtal model checker can handle as well as its performance.
This paper presents a software platform for LEGO Mindstorms NXT, named ATON (ASP+TECS On NXT), which is based on a component system for embedded systems, TECS. ATON uses TECS so that memory usage can be optimized by detaching unused device drivers, and also application developers can write their programs smoothly from software models. In order to achieve such features, ATON includes TECS components such as tasks and semaphores which is provided by a Real-Time OS, and device drivers for devices of NXT. A case study on line trace robot development demonstrates effectiveness of ATON.
Many new attacks targeting web applications have been showing up one after another. However, when implementing a new vulnerability detection technique, the existing vulnerability scanners impose a burdensome task of modifying source code and installing many auxiliary functions. In this paper, we introduce the design of Amberate; a web vulnerability scanner that alleviates the burden of them and makes it easier to develop a new vulnerability detection technique.
We propose novel search system that uses both hyperlinks and social links and thus combines the merits of searching and social communication. A user can quickly search for not only web pages but also for other users currently accessing those pages. Each URL on the search engine results page is annotated with the number of real-time users. By using these links, a user can communicate with other real-time users who may have more knowledge about the topic of the linked page. All linked pages provide a window for sending queries in real time and for communicating with other real-time users. The window also shows a log of previous communications through that page, enabling a user to see if a similar query was previously sent and answered, which would obviate the need to send it again. In this paper, we describe the design and algorithm of our proposed system for the implementation of those functions.
Many research projects and applications for ubiquitous computing have appeared recently. These systems require not only various special devices (e.g., sensors and actuators), but also displays and GUI (Graphical User Interface) just like desktop environment in many cases. In these situations, users often have difficulties to develop applications since classical GUI components and GUI design tools on IDEs (Integrated Development Environment) do not support various I/O devices other than keyboards and mice, and the development process tends to be complex. We propose a novel development method for ubicomp applications through our practical experiences. The main feature of our method is reducing dependences of GUI and devices using middleware called “device server”. Our approach can promote efficiency of “parallel” implementation of GUI and devices. In this paper, we introduce practical techniques for developing ubicomp applications including toolkits, frameworks, know-hows, and challenges.
There are several name resolution proposals such as SRV-RR and mDNS, which provide application layer identifiers to describe service resources in the Internet. However, ordinary network applications can't leverage the identifiers offered by these approaches. The reason simply comes from the fact that almost every network softwares are constructed using ordinary DNS resolver interface. Therefore, it is necessary to develop network softwares for each dedicated name resolver to use these identifiers. So, we propose a design and implementation of distributed name resolution system which uses DTUN newtork. Further, we develop PRISON/CAGE system to provide application layer identifier called “service name” that can be used by ordinary network software. Since the source code is distributed under BSD license on the Internet, anyone can use and modify it freely.
In this paper, we discuss the design and evolution of the software architecture for source code inspection tools. Since there are a variety of demands on software quality improvement through source code inspection techniques, a tool for code inspection is required to be flexible enough to keep up with various needs of various users. We have developed JCI (Java Code Inspector): a source code inspection tool for Java, through a three-year-long joint industry-university project which we call OJL (On the Job Learning). In this project, we have designed the software architecture of JCI using the GoF design patterns to realize analyzability, changeability, testability and efficiency. In this paper, we discuss the validity of our software architecture design as a foundation on which we can develop and evolve source code inspection tools, through several types of changes which have been carried out to deal with changing requirements of users.
The realizability is a well known property for reactive system specification, and it shows that there exists a system which reacts properly against any environment following the specification. In system development process, we can reduce reversions if realizability for specification is verified before implementation of system. However, the verification cost is too high to verify the realizability of a real scale system specification. On the other hand, stepwise satisfiability which is a necessary condition for the realizability has been proposed. Its verification cost is less than that of realizability, and verification of the property is useful to find the incompleteness of specification. Even if the verification of stepwise satisfiability, the required cost is too high. In order to overcome this problem, this paper proposes methods of implementing the stepwise satisfiability checker using a distributed object technology on the parallel distributed environment. Then, we implement the stepwise satisfiability checker in Java based on our methods, and confirm the effectiveness of our methods by experiments. In this paper, we present our ideas and methods of the implementations for three parts of our checker. The first is how our checker compose a tableau graph on the parallel distributed environment. The second is the implementation method to determinize the distributed graph. The third is the dead end checking method for the deterministic distributed graph.
In this paper, we survey first-order equational theorem proving technologies from both theoretical and practical viewpoints. Bottom-up theorem proving is a quite appropriate framework for first-order equational reasoning, so we show some underlying theories of advanced inference calculi and review several technologies of state-of-the-art automated equational theorem proving systems. Moreover, we discuss some recent progress of top-down equational theorem proving.
Program assertion increases correctness, usability, and reusability of the software. Recently dynamic generation of such assertions attracts attention. The dynamic approach consumes less time and memory. However, the quality of generated assertions depends on the quality of the test-cases. The authors have proposed a method to generate test-cases for the dynamic generation of assertions, which uses notion of invariant coverage and model checking techniques. The paper reports experimental results of the quality of generated assertions based on our technique. The results show improvement of the quality of the assertions.
We already know that a total solar eclipse show at July 22th 2009 will be one of the most-watched events in our lifetime. There were some kinds of event and trials of video transmission for the total solar eclipse. We were involved in joint research for IP network transmission experimentation of a whole sky 4K Ultra High Definition image between NAIST (Nara Institute of Science and Technology) and ABC (Asahi Broadcasting Corporation). In this paper, we propose the transmission technique based on IP network Layer 3 of the non-linear whole sky 4K Ultra High Definition image and report results of the experimentation. In this experimentation, we could achieve to transmit a liveliness of a location for occurring the total eclipse as possible in ours experiment by using the whole sky 4K as the first in the world. Finally we consider the effectiveness of our proposal.
There are many studies about the influence of network structure on phenomena taking place on the network. Most of such the studies focus on relationships between global statistics of the network structure and characteristic properties of those phenomena, even though local structure has a significant effect on the dynamics of some phenomena. In addition, there is little research that directly addresses the local operations which can easily change the local structure even when it is difficult to modify the global statistics. In this paper, we study a relationship between the convergence time in the consensus problem which induced from a synchronization process in a complex network and the change of local network structure. The local structure is changed by means of exchange of two edges with maintaining the degree distribution. First, we introduce the product of two betweenness centralities calculated at both ends of an edge as a new index which represents the change in local structure. Several relationships between the index and the convergence time are found. And then, we show the possibility that the network in which the convergence time is controllable can be generated.
We provide a framework that enables systematic proofs of the undecidability for type-related problems of λ∃ (minimal logic with negation, conjunction and 2nd order existential types) from the corresponding undecidability results for those of λ2 (polymorphic lambda-calculus). This framework is applicable to various styles of the system λ∃, e.g., Church, domain-free, type-free, and Curry styles. The framework essentially relies on two properties: (1) the commutativity of type-forgetful (type-erasing) mappings and translations between λ2 and λ∃; and (2) the lifting of terms to increasingly well-defined terms having the proper type information. The translations are called CPS-translations, and the definitions are lifted to derivations from terms. Based on this approach, the following problems of λ∃ are shown to be undecidable: (i) the typability problem in the (full) Church style, (ii) the typability and type checking problems in the type-free style, and (iii) the type checking problem in the Curry style. Finally, we observe an interesting correspondence to CPS-translated semi-unification problems.
As well as understanding the architecture of a platform, knowledge about the features of the platform is required in the programming with the platform. In this paper, we present a method to support learning the knowledge about features. The knowledge is generally dispersed in multiple knowledge sources hence we organize and systematize the knowledge sources by a unit named learning items. Learner hereby obtains knowledge for learning items in just proportion. Next we propose a method to automatically extract an appropriate amount of the learning items for one study using filtration of sample application. Knowledge is enforced with facts found in the application. In the feasibility study, we organized the knowledge of the Google Android software platform for cellular phones, to 328 learning items for 94 kinds of major APIs. We developed a prototype platform-learning support system based on our method and applied it to seven sample applications of Android. In the result, an amount of files in each document are reduced to about 3.5%.
In editing source code of a program on modern integrated development environments, automated recording of editing operations has become popular. These operations enable past program modifications to be investigated in detail. However, such investigation of enormous amount of operations is troublesome for a human. Moreover, each of the recorded operations does not indicate what code changes were totally done. To address these problems, this paper proposes OperationReplayer, which replays recorded operations in chronological order and arbitrarily restores past snapshots of source code. It employs a plug-in mechanism that allows its user to flexibly highlight particular operations in their visualization. This mechanism provides the user with various overviews of vast operations and alleviates burden on his/her investigation. Three case examples of useful highlights are also shown in the paper.
Source Lines of Code (SLOC) is a most basic and widely-used program size measure in software project management and/or quality assurance although it greatly depends on a programmer who implemented the program. To build a programmer-independent program size measure, this paper analyzed 9 independently-built C programs of a same functional specification, and found that 3 base measures (the number of tokens, tokens of code clones, and function parameters) are useful to eliminate programmer-dependent aspects of SLOC. A new size measure called Adjusted Length of Code (ALOC) built upon these 3 base measures showed that variations of size in ALOC was at most 1.22 times difference among 9 programs while SLOC showed 3.16 times difference. Furthermore, ALOC showed at most 1.60 times difference among another 6 independently-built programs of an alternative specification while SLOC showed 4.66 times difference among these programs. These results suggest that the new measure ALOC can reduce the programmer-dependent aspects of program size and can be used as a better size measure in project management.