In Model-driven engineering (MDE), metamodels provide some sort of typing system on top of models, and provide a precise, regular and strong support for representations of systems by models. As we have already briefly introduced in the previous article, metamodels are further typed by metametamodels and, together with models that are typed by metamodels, they constitute three level structure. In this article, we not only provide a formal definition of this structure, but also show that they are uniformly treated as abstract models. Although metamodels play the important roles mentioned above, they do not have enough power to reason or more generally to act upon these representations. Therefore, model transformation as another important notion is necessary. In MDE, it is usually suggested to take constructive approach that uses model transformations as main operations on models, rather than directly update models themselves. This approach has advantages such as enhancing interoperability between different tools. Moreover, in MDE, model transformation program is considered itself as a model, to be integrated into the unified treatment mentioned above. This article explains this unication where MDE can be considered to show its true worth, and several model management applications based on the constructive approach.
Industrial companies are demanding the ability to work actively to students of information technology. In order to the demand, we have been providing education of embedded system technology for grad students by OJL(On the Job Learning) method that is evolved from PBL. On OJL, students learn experience learning about how to progress the software development by use of the real theme of a company not the virtual study theme. In 2013, we got positive message from the 96 percents of OJL students, and an opinion that OJL was actually useful after employment is also acquired. This paper shows the contents of OJL education and the current status.
We propose a demand-driven scalar replacement (DDSR) that is essentially an extension of partial redundancy elimination (PRE), which is an optimization technique that removes partially redundant expressions. PRE removes redundant expressions within a single iteration for a loop, while DDSR can additionally remove redundant array references over several iterations, resulting in scalar replacement. DDSR traverses a control flow graph in topological sort order, and once an array reference is visited, DDSR backwardly propagates the query to determine if the reference is redundant. Once the query is propagated to the definition of the induction variable used for the inquiry's array reference index, the variable is replaced with the right-hand side of the denition, to check for redundancy in other iterations. We give a practical approach combining the query propagation with the loop unrolling. The approach restricts the region of query propagation to just two iterations by unrolling a loop in advance, so that the replacement of the induction variable is applied just once, which contributes to an efficient query propagation. We have implemented our approach on a practical compiler, and evaluated it using SPEC benchmarks. The experimental results demonstrate that our approach can improve the execution efficiency of the objective code about 2.3% in the best case in comparison with a traditional scalar replacement technique.
We have developed a COBOL symbolic execution system for generating unit test data from source code. One of the main feature of the system is, based on a bit-vector logic, to deal with symbolic values for byte data in memory. This makes it possible to generate test data for programs that manipulate bit and byte data directly. The resulting symbolic execution system is useful for unit testing, specially in legacy migration projects, where many problems are often caused by the difference in byte data representation and bit/byte manipulation between existing legacy system and new systems.
A large number of bugs are reported to a large-scale open source software (OSS) project. Since it is very difficult to fix all the bugs, a manager in the project needs to know time to fix bugs to decide which bugs should be fixed before the next release. In this paper we focus on social relationships between assignors and assignees and construct prediction models based on a random forest method and logistic regression, in order to predict the time to fix bugs. As a result of our experiment, we show that our model predicts more accurately whether a bug is fixed within a day or not, compared with the existing prediction model.