In Chapter 19, Software Architecture in the Future , of the textbook [BCK98] architecture migration technology is mentioned. Our paper is a first step towards this migration technology of the future, and to our knowledge this is a new subject. Of course, parts of the subject of architecture transformations already exist. To mention a few efforts to analyse software architectures: Rigi [SWM97], The Software Bookshelf [FHK+97], Dali [KC99], and efforts at Philips Research Labs [Kri97,KPZ99]. A lot of work has been done on code level; we mention Sneed's Reengineering Workbench [Sne98], the TAMPR system [BHW96], TXL [CHHP91], REFINE [Rea92], COSMOS [Eme98], RainCode [Rai98], the ASF+SDF Meta-Environment [Kli93], Elegant [Aug93,Phi93].
The combination of architecture analysis tools and tools that work on the code level is an issue that gained attention at SEI under the name of CORUM [WOL+98,KWC98]. This effort aims at the interoperation of tools by a common format. Our approach differs from theirs in that we do not focus on interoperability, like sharing a parser both for architecture impact analysis and for code transformations. Instead of reusing parser output, we focus on reusing the source code of the parser, so that we can change the parser into a parser appropriate for reengineering [SV99a].
Our approach is more in line with the COSMOS approach for solving the Y2K problem. After analysis, COSMOS returns a prescription of what needs to be done to the code. This prescription can be carried out by hand, or in some cases it can be executed automatically. A difference is that we focus on the transformation's impact on the architecture, which is mostly not the case with Y2K repair engines.
In the impact phase (phase one) we adapt our RPA model in order to evaluate the effect of modifications of the architecture beforehand. This is comparable to the Software Architecture Analysis Method or SAAM [BCK98, Ch. 9]. The mathematical foundations of RPA [FO94,FKO98,FO99,FK99] are similar to the mathematical foundations of [Hol98].
7 Conclusions
The process for software architecture improvement that we have proposed in this paper is completely implementation-independent. The techniques that we combine still leave room for other possibilities. We have chosen Relation Partition Algebra as an abstract model of the software because we have had good experiences with the model and its usefulness in many applications. Related work as in [Hol98] can also be used. The architecture transformations are implementation-independent themselves. Only at the lowest level they are expressed in small programming-language-specific transformations. Any kind of compiler technology can be used for the implementation of these programming-language-specific transformations. We named a few in Section 6. We have chosen the software factory technology with its assembly lines because it comes close to our views on decomposable transformations.
We have shown that the process for software architecture improvement is flexible in experimenting with new metrics and changes, in order to find those best suited for the systems we investigate. By forming ideas and trying them out in the model we can perform an early impact analysis. The changes made in the model are submitted as recipes containing high-level architecture transformations, which themselves consist of basic and composite transformations.
The process for software architecture improvement separates architecture impact analysis from architecture transformations, which presents the following advantages from making changes in the software directly.
During idea generation there is no interference with the daily work of the software developers.
Impact analysis is performed on an abstract view of the system, which greatly reduces the amount of information. We can gain the insight we need, without being distracted by the details of the software.
Making changes in a model gives us the opportunity to backtrack in the flow of ideas.
The feedback of the changes is almost immediate.
Last but not least, the process is open to future research results relating to finding appropriate architectural metrics and changes.
The feasibility of the approach has already been proven in [Bro99] for clone elimination. In our future work we intend to test and implement this process for software architecture improvement. Our work will comprise the following steps.
Development of an impact analysis system on top of existing RPA functionality.
Implementation of a framework for logging and backtracking changes.
Definition of proper basic architecture transformations.
Implementation the basic architecture transformations.
Evaluation of the process for a real-world system.
References
Aug93
L. Augusteijn.
Functional Programming, Program Transformations and Compiler Construction.
PhD thesis, Eindhoven University of Technology, 1993.
BCK98
L. Bass, P. Clements, and R. Kazman.
Software Architecture in Practice.
Addison-Wesley Publishing Company, 1998.
BD99
J. Brunekreef and B. Diertens.
Towards a User-controlled Software Renovation Factory.
In P. Nesi and C. Verhoef, editors, Proceedings of the Third European Conference on Maintenance and Reengineering, pages 83-90, 1999.
BHW96
J.M. Boyle, T.J. Harmer, and V.L. Winter.
The TAMPR Program Transformation System: Design and Applications.
In The SciTools'96 Electronic Proceedings, 1996.
http://www.oslo.sintef.no/SciTools96/Contrib/boyle/
scitlpap.912.ps.
BKV96
M.G.J. van den Brand, P. Klint, and C. Verhoef.
Core Technologies for System Renovation.
In K.G. Jeffery, J. Král, and M. Bartosek, editors, SOFSEM'96: Theory and Practice of Informatics, volume 1175 of LNCS, pages 235-255. Springer-Verlag, 1996.
Available at: http://adam.wins.uva.nl/~x/sofsem/sofsem.html.
BKV98
M.G.J. van den Brand, P. Klint, and C. Verhoef.
Term Rewriting for Sale.
In C. Kirchner and H. Kirchner, editors, Second International Workshop on Rewriting Logic and its Applications, Electronic Notes in Theoretical Computer Science. Springer-Verlag, 1998.
Available at: http://adam.wins.uva.nl/~x/sale/sale.html.
Bro99
J.W. Brook.
Design and Implementation of a Tool for Re-clustering.
Master's thesis, Eindhoven University of Technology, department of Mathematics and Computer Science, 1999.
BSV97
M.G.J. van den Brand, M.P.A. Sellink, and C. Verhoef.
Generation of Components for Software Renovation Factories from Context-free Grammars.
In I.D. Baxter, A. Quilici, and C. Verhoef, editors, Proceedings of the Fourth Working Conference on Reverse Engineering, pages 144-153, 1997.
Available at http://adam.wins.uva.nl/~x/trans/trans.html.
CC90
E. Chikofsky and J. Cross.
Reverse Engineering and Design Recovery: A taxonomy.
IEEE Software, pages 13-17, January 1990.
CHHP91
J.R. Cordy, C.D. Halpern-Hamu, and E. Promislow.
TXL: A Rapid Prototyping System for Programming Language Dialects.
Computer Languages, 16(1):97-107, 1991.
DKV99
A. van Deursen, P. Klint, and C. Verhoef.
Research Issues in the Renovation of Legacy Systems.
In J.-P. Finance, editor, Fundamental Approaches to Software Engineering, LNCS. Springer-Verlag, 1999.
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |