home *** CD-ROM | disk | FTP | other *** search
- Xref: sparky comp.object:3498 comp.lang.c++:13468
- Newsgroups: comp.object,comp.lang.c++
- Path: sparky!uunet!cs.utexas.edu!sdd.hp.com!ux1.cso.uiuc.edu!m.cs.uiuc.edu!ernie.cs.uiuc.edu!opdyke
- From: opdyke@ernie.cs.uiuc.edu ()
- Subject: Refactoring Object-Oriented Frameworks
- Message-ID: <1992Sep10.132444.28214@m.cs.uiuc.edu>
- Sender: news@m.cs.uiuc.edu (News Database (admin-Mike Schwager))
- Organization: University of Illinois, Dept. of Comp. Sci., Urbana, IL
- Date: Thu, 10 Sep 1992 13:24:44 GMT
- Lines: 45
-
- Below is the abstract of my PhD thesis, recently completed at the
- University of Illinois at Urbana-Champaign, entitled ``Refactoring
- Object-Oriented Frameworks.'' My research was supervised by
- Professor Ralph Johnson, and builds upon research he did with
- Brian Foote on Designing Reusable Classes.
-
- The thesis is available from the Department of Computer Science as Technical
- Report No. UIUCDCS--R--92--1759. Erna Amerman (erna@cs.uiuc.edu) is the
- department's contact for technical reports.
-
- If you have any questions regarding this research, please contact
- Ralph Johnson (johnson@cs.uiuc.edu) or myself.
-
- Bill Opdyke
- opdyke@cs.uiuc.edu; opdyke@iexist.att.com
-
- *****
-
- This thesis defines a set of program restructuring operations
- (refactorings) that support the design, evolution and reuse
- of object-oriented application frameworks.
-
- The focus of the thesis is on automating the refactorings in a way
- that preserves the behavior of a program. The refactorings are
- defined to be behavior preserving, provided that their
- preconditions are met. Most of the refactorings are simple to
- implement and it is almost trivial to show that they are behavior
- preserving. However, for a few refactorings, one or more of their
- preconditions are in general undecidable. Fortunately, for some cases
- it can be determined whether these refactorings can be applied
- safely.
-
- Three of the most complex refactorings are defined in detail: generalizing
- the inheritance hierarchy, specializing the inheritance hierarchy
- and using aggregations to model the relationships among classes. These
- operations are decomposed into more primitive parts, and the power of these
- operations is discussed from the perspectives of automatability and
- usefulness in supporting design.
-
- Two design constraints needed in refactoring are class invariants and
- exclusive components. These constraints are needed to ensure that behavior
- is preserved across some refactorings. This thesis gives some conservative
- algorithms for determining whether a program satisfies these constraints,
- and describes how to use this design information to refactor a program.
-
-