ABSTRACT
This paper shows a methodology to evolve a library of functions to be with common patterns of usage, called idioms. In source programs written in C, it is commonly seen that library functions are combined in a certain pattern since functionalities required in application software are more abstract than those of the library functions. This means that using appropriate idioms for the purpose is one of the key issues in implementing functionalities of the software. Investigating idioms in the existing elaborate software in terms of control and data dependencies of library function-calls, it is observed that "good" idioms contribute to the reliability in developing and maintaining software. Based on this idea, we extract idioms from the existing open-source software in the form of FCDGs (Function Call Dependency Graphs). By categorising those idioms as a database of FCDG patterns, we propose evolved libraries where each library function is accompanied by the typical reliable patterns of usage. By exploiting an evolved library, we show how effectively potential defects that may lead to unexpected behaviour are resolved by checking the conformance to our idioms.
- N. Atsumi, S. Yamamoto, and K. Agusa. Using example of the library function with function call dependency graph. Collection of Paper in IPSJ JSSST 2001 18th Convention, 2001.Google Scholar
- J. M. B. and M. N. M. Program reusability through program transformation. IEEE Transactions on Software Engineering, SE-10(5):574-587, September 1984.Google ScholarDigital Library
- T. Biggerstaff and C. Richter. Reusability framework, assessment, and directions. IEEE Software, 4(2):41-49, March 1987.Google ScholarDigital Library
- J. O. Coplien. Advanced C++ Programming Styles and Idioms. Addison-Wesley Publishing Company, 1992. Google ScholarDigital Library
- S. Ducasse, M. Rieger, and S. Demeyer. A language independent approach for detecting duplicated code. In H. Yang and L. White, editors, Proceedings ICSM'99 (International Conference on Software Maintenance), pages 109-118. IEEE, 1999. Google ScholarDigital Library
- K. Frauf and A. Zeller. Software configuration management: State of the art, state of the practice.Google Scholar
- N. Fukuyasu, S. Yamamoto, and K. Agusa. An evolution framework based on fine grained repository. Proceedings of International Workshop on Principles of Software Evolution(IWPSE99), pages 43-47, 1999.Google Scholar
- J. K. Lehrstuhl. Identifying similar code with program dependence graphs.Google Scholar
- R. Miura, S. Yamamoto, and K. Agusa. Function call dependency graph for programming navigation. Separate Volume of IPSJ Computer Software, pages 17-26, December 2000.Google Scholar
Index Terms
- Library evolution for reliable software
Recommendations
Semantics of programming languages
A semantic specification of a programming language can be relevant for programmers to understand software written in the language, as well as for the implementers of a language to understand the intentions of its designers. In the early 1980s, Jan ...
Unanticipated reuse of large-scale software features
ICSE '06: Proceedings of the 28th international conference on Software engineeringSoftware reuse has been endorsed as a way to reduce development times and costs while increasing software quality and reliability. Techniques designed to encourage software reuse have concentrated on creating reusable software in the form of frameworks, ...
Exploration of modularity and reusability of domain-specific languages
Features for creating modular and reusable domain-specific languages are presented.These features are illustrated with a non-trivial expression DSL in MetaMod.A comparison between the implementation in MetaMod and in Jetbrains MPS is shown.The ...
Comments