Abstract
Refactoring is a new name for a transformational approach to iterative software development. Originally focused on class diagrams, it is now commonly associated with object-oriented programming languages like Java. In this article, we trace some of the conceptual roots and the ideas behind refactoring, and sketch its relation to other techniques, such as behavioral and structural refinement or compiler optimization. Based on these observations, we argue that improved and adapted refactoring techniques will belong to the methodical tool set of tomorrow’s software engineers.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
B.W. Boehm. A spiral model of software development and enhancement. Software Engineering Notes, 11 (4), 1994.
M. Broy. The specification of system components by state transition diagrams. Technical Report TUM-I9729, Institut für Informatik, TU München, 1997.
K. Beck. Extreme Programming Explained: Embrace Change. Addison Wesley, 1999.
F.L. Bauer, R. Berghammer, M. Broy, W. Dosch, F. Geiselbrechtinger, R. Gnatz, E. Hangel, W. Hesse, B. Krieg-Bruckner, A. Laut, T. Matzner, B. Möller, F. Nicki, H. Partsch, P. Pepper, K. Samelson, M. Wirsing, and H. Wössner. The Munich Project CIP, Vol 1: The Wide Spectrum Language CIP-L. LNCS 183. Springer-Verlag, 1985.
M. Broy, F. Dederichs, C. Dendorfer, M. Fuchs, T.F. Gritzner, and R. Weber. The Design of Distributed Systems — An Introduction to FOCUS. Technical Report SFB 342/2/92 A, Technische Universität München, 1993. http://www4.informatik.tumuenchen.de/reports/TUM-I9202.ps.gz.
M. Broy, C. Facchi, R. Grosu, R. Hettler, H. Hußmann, D. Nazareth, F. Regensburger, O. Slotosch, and K. Stolen. The Requirement and Design Specification Language SPECTRUM, An Informal Introduction, Version 1.0, Part 1. Technical Report TUM-I9312, Technische Universität München, 1993.
M. Breitling and J. Philipps. Step by step to histories. In AMAST 2000, LNCS 1816, 2000.
BR2001] J. Brant and D. Roberts. Refactoring browser tool. http://st-www. cs. uiuc. edu/-hrant, 2001.
M. Broy and K. Stolen. Specification and Development of Interactive Systems. Springer, 2001.
R.-J. Back and J. von Wright. Refinement Calculus. Springer, 1998.
F. L. Bauer and H. Wössner. Algorithmic Language and Program Development. Springer, 1982.
E.W. Dijkstra. Notes on structured programming. In C.A.R. Hoare O. Dahl, E.W. Dijkstra, editor, Structured Programming. Academic Press, 1971.
J. Dieudonne. Mathematics — The Music of Reason. Springer, 1992.
M. Fowler. Refactoring. Improving the Design of Existing Code. Addison-Wesley, 1999.
K. Futatsugi, J. Goguen, J.-P. Jouannaud, and J. Meseguer. Principles of OBJ2. In B. Reid, editor, Proceedings of 12th ACM Symposium on Principles of Programming Languages, Association for Computing Machinery, pages 52–66, 1985.
G1999] J. Goguen. Hidden algebra for software engineering. In Conference on Discrete Mathematics and Theoretical Computer Science,volume 21 of Australian Computer Science Communications,pages 35–59. Springer, 1999.
G2001] UML Group. Unified Modeling Language. Version 1.4, Object Management Group (OMG), www.omg.org, 2001.
J. Gosling, B. Joy, and G. Steele. The Java Language Specification. Addison-Wesley, 1996.
D. Harel. Statecharts: a visual formalism for complex systems. Science of Computer Programming, 8: 231–274, 1987.
M. Jackson. Software Requirements and Specifications — a lexicon of practice, principles and prejudices. Addison Wesley, 1995.
S.L. Peyton Jones and A. Santos. A transformation-based optimiser for Haskell. Science of Computer Programming, 32 (1–3): 3–47, September 1998.
H. Kilov. Business Models: A Guide for Business and IT. Prentice Hall, 2002.
C. E. Leiserson and J. B. Saxe. Retiming synchronous circuitry. Algorithmica,6(1):5–35, August 1991.
N. A. Lynch and M. R. Tuttle. An introduction to input/output au-tomata. CWI Quarterly, 3 (2): 219–246, 1989.
W. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, University of Illinois at Urbana-Champaign, 1992.
D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15: 1053–1058, 1972.
A. Pretschner and H. Lötzbeyer. Model Based Testing with Constraint Logic Programming: First Results and Challenges. In 2nd ICSE Intl. Workshop on Automated Program Analysis, Testing, and Verification (WAPATV’01), 2001.
A. Pretschner, H. Lötzbeyer, and J. Philipps. Model Based Testing in Evolutionary Software Development. In Proc. 11th IEEE Intl. Workshop on Rapid System Prototyping (RSP’01), 2001.
J. Philipps and B. Rumpe. Refinement of information flow architectures. In M. Hinchey, editor, ICFEM’97. IEEE CS Press, 1997.
J. Philipps and B. Rumpe. Refinement of pipe and filter architectures. In FM’99, LNCS 1708, pages 96–115, 1999.
J. Philipps and B. Rumpe. Roots of Refactoring. In K. Baclayski and H. Kilov, editors, Tenth OOPSLA Workshop on Behavioral Semantics. Tampa Bay, Florida, USA. Northeastern University, 2001.
B. Rumpe. Formale Methodik des Entwurfs verteilter objektorientierter Systeme. PhD thesis, Technische Universität München, 1996.
B. Rumpe. A Note on Semantics (with an Emphasis on UML). In B. Rumpe H. Kilov, editor, Second ECOOP Workshop on Precise Behavioral Semantics, I9813. Technische Universität München, June 1998.
B. Rumpe and V. Thurner. Refining Business Processes. In Ian Simmonds H. Kilov, B. Rumpe, editor, Seventh OOPSLA Workshop on Precise Behavioral Semantics, I9820. Technische Universität München, June 1998.
P. Scholz. Design of Reactive Systems and their Distributed Implementation with Statecharts. PhD thesis, Technische Universität München, 1998.
M. Shaw and D. Garlan. Software Architecture. Prentice Hall, 1996.
N. Wirth. Program development by stepwise refinement. Communications of the ACM, 14: 221–227, 1971.
J. Warmer and A. Kleppe. The Object Constraint Language. Addison Wesley, Reading, Mass., 1998.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer Science+Business Media Dordrecht
About this chapter
Cite this chapter
Philipps, J., Rumpe, B. (2003). Refactoring of Programs and Specifications. In: Kilov, H., Baclawski, K. (eds) Practical Foundations of Business System Specifications. Springer, Dordrecht. https://doi.org/10.1007/978-94-017-2740-2_15
Download citation
DOI: https://doi.org/10.1007/978-94-017-2740-2_15
Publisher Name: Springer, Dordrecht
Print ISBN: 978-90-481-6367-0
Online ISBN: 978-94-017-2740-2
eBook Packages: Springer Book Archive