To motivate the practical importance of refactoring in designing application frameworks, the examples presented in the chapter are real; that is, the examples describe refactorings that were actually applied manually to improve application frameworks in the Choices operating system and Typed Smalltalk projects.
One of the reasons why programs are not refactored is that any change to the program runs the risk of introducing defects into the program. There is no theory i. For a long routine, one or more smaller subroutines can be extracted; or for duplicate routines, the duplication can be removed and replaced with one shared function.
These refactorings are detailed in chapters six through eight. The high-level refactorings are more expressive and theoretically interesting refactorings.
Software that solves a similar problem might be available, but such software may need to be changed Opdyke refactoring thesis some way before it can be reused.
The non-functional measurement that improves is that refactored code can be processed by standard synthesis tools, while the original code cannot. Those efforts have tended to focus on inheritance, to achieve such goals as eliminating duplicate definitions of a variable in a program.
The software system must operate in an environment that is constantly changing, and the software system must satisfy user needs that are constantly changing as well.
Abstract This thesis defines a set of program restructuring operations refactorings that support the design, evolution and reuse of object-oriented application frameworks. The file system has a layered structure that is much more comprehensive than what is presented here; see .
The important point here is that these issues do not disappear when object-oriented technology is introduced. Instance hierarchies emerge, where an instance of one class is a component of another class .
Once recognized, such problems can be addressed by refactoring the source code, or transforming it into a new form that behaves the same as before but that no longer "smells". Reusable software usually is the result Opdyke refactoring thesis many design iterations.
In an object-oriented system, this could be implemented as a series of calls to array elements to compare themselves with another element and return the maximal element. There are cases where refactorings might be Opdyke refactoring thesis Tools and techniques to support software reuse include compositional and generational approaches .
These complexities, and the limitations in inferring design intent, make it difficult to ensure that the intended behavior is preserved. The focus of the thesis is on automating the refactorings in a way that preserves the behavior of a program. Johnson and Foote  propose design rules to support reusable classes.
These efforts are briefly discussed below and further detailed in chapter ten. It is easier to extend the capabilities of the application if it uses recognizable design patterns, and it provides some flexibility where none before may have existed.
In other cases, restructuring a program rather than rewriting it may be a more practical way to improve its design. Refactorings are reorganization plans that support change at an intermediate level.
Some restructurings modify a component to make it more reusable; such components can be easier to compose together for an application.
Compared with more traditional software development approaches, object-oriented programming makes refactoring more feasible by making more explicit the structural information needed to refactor a program.
Some in the objectoriented programming culture have placed high value in designing and redesigning software to make it more reusable [59, 98].
It is easier to fix bugs because the source code is easy to read and the intent of its author is easy to grasp. All of these resources provide a catalog of common methods for refactoring; a refactoring method has a description of how to apply the method and indicators for when you should or should not apply the method.
Often, however, object-oriented software cannot be reused without first being restructuring. Restructuring a program can make it easier to understand the design of a program and can assist in finding reusable components.
Although there have been no scientific studies that validate the claim, it is nonetheless a strongly held conclusion among many practitioners that object-oriented software is easier to change than conventional software .
Extracting a reusable component.Martin Fowler's book Refactoring: Improving the Design of Existing Code is the canonical reference. The first known use of the term "refactoring" in the published literature was in a September, article by William F.
Opdyke and Ralph E. Johnson. Opdyke's Ph.D.
thesis, published inalso used this term. The first known use of the term "refactoring" in the published literature was in a September, article by William Opdyke and Ralph Johnson. Griswold's Ph.D.
thesis, Opdyke's Ph.D. thesis, published inalso used this term. The term "factoring" has been used in the Forth community since at least the early s.
REFACTORING OBJECT-ORIENTED FRAMEWORKS William F. Opdyke, Ph.D. Department of Computer Science University of Illinois at Urbana-Champaign, Ralph E. Johnson, Advisor This thesis defines a set of program restructuring operations (refactorings) that support the design, evolution and reuse of object-oriented.
His Ph.D. thesis, Refactoring Object-Oriented Frameworks was the first in-depth study of code refactoring as a software engineering technique.  After graduation Opdyke started his career at AT&T Bell Laboratories inwhere he worked as researcher until Nationality: American.
William Opdyke William F. (Bill) Opdyke His Ph.D. thesis, Refactoring Object-Oriented Frameworks was the first in-depth study of code refactoring as a software Opdyke Thesis Pdf - killarney10mile.comyke Refactoring Thesis - killarney10mile.com Bill opdyke thesis Bill Opdyke developed the first detailed written work on refactoring in his doctoral thesis.
CiteSeerX - Document Details (Isaac Councill, Lee Giles, Pradeep Teregowda): 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 .Download