However, with object-oriented systems, some structural information is already explicit within the class and inheritance structures; the integrated development environments for Smalltalk and other object-oriented languages make understanding a program structure easier by providing facilities for abstracting and browsing the program.
An objectoriented application framework is an abstract design of an application, consisting of an Opdyke thesis class for each major component.
While refactorings do not change the behavior of a program, they can support software design and evolution by restructuring a program in the way that allows other changes to be made more easily. While most of these low-level operations have little theoretical difficulty, their implementation can be complicated.
Chapter eight defines refactorings that involve components and the aggregate classes that contain them. For example, the application framework for managing files in an operating system  began as an implementation of only one file format.
By breaking down code in smaller pieces, it is more easily understandable.
Frameworks are an emerging technique; there is still much to be learned concerning the design, configuration, and architecture-level description of frameworks. Furthermore, subclassing can be used in an application framework to model various concrete representations of a common abstraction.
The important point here is that these issues do not disappear when object-oriented technology is introduced. Class inheritance allows the operations and possibly the internal structure of a class to be inherited and reused by its subclasses. Extracting the user interface component first requires refactoring the existing software.
That analysis was based on a series of twelve snapshots of the framework covering a two-year period. Some of these refactorings require that the components be exclusive, that is, that they not be shared among multiple aggregate objects.
The operation could be defined once on the array class and then reused on arrays of different types, as long as each type of array element understood how to compare itself with another array element of that type.
This refactoring not only clarifies the design of the framework, but better ensures consistency by defining the abstraction in one place. Some in the objectoriented programming culture have placed high value in designing and redesigning software to make it more reusable [59, 98].
Many parts of the file system are MemoryObjects, such as files and disks. These include work in object-oriented databases, and research into improving the style of Opdyke thesis programs to increase their reusability. These factors include an inadequate design methodology , absence of development and maintenance standards , buggy optimizations  and expedient but poorly conceived changes made to the software system to reflect changes in the environment in which it operates .
Consider the example, shown in Figure 3. People usually think about software changes either at a high level, in terms of features to be added to a system, or at a low level, in terms of lines of code to be changed. Class definitions Opdyke thesis encapsulation and in some cases provide information hiding, and can often serve as reusable components.
Software reuse in its broadest sense involves reapplying knowledge about one software system to reduce the efforts of developing and maintaining another system.
List of refactoring techniques[ edit ] Here are some examples of code refactorings; some of these may only apply to certain languages or language types. Chapter four describes several issues related to preserving behavior during refactoring. The research described here focused on the third area; namely, in how these refactorings can support the iterative design of object-oriented application frameworks.
In some cases, the best way to improve the 3 design of a program is to re-write it. Often, however, the available software systems do not provide an exact fit for the problem at hand.
A refactoring improves design if the resultant code units correspond to meaningful abstractions that make it easier to refine or extend the program. In extreme programming, the Extract Method refactoring technique has essentially the same meaning as factoring in Forth; to break down a "word" or function into smaller, more easily maintained functions.
There are several reasons why this research has focuses on refactoring object-oriented systems: Some of these iterations occur after the software has been reused, and the resulting changes affect not only the design of the reusable software, but also the design of other software that is using it.
One of the central classes in that framework3 is MemoryObject . It is an important object-oriented technique to facilitate design-level reuse . Inheritance is sometimes used to represent specialization hierarchies, where the subclasses are specializations of the superclass.
Approaches have been proposed based on code inspections and walk throughs [42, 47], adherence to software metrics , maintainability measures  or other criteria [29, 52, 65, 68, 78, 87, 88, 90, ].
This combination of features is supplemented in Smalltalk and some other object-oriented languages with a sophisticated user interface and browsing facilities that help make explicit the inheritance relationships among classes and the protocol set of operations supported by each class.
As common abstractions are determined, it is useful to separate these abstractions from the example-specific behavior. A refactoring that can be applied safely to a program will not necessarily improve its design. The fourth issue applies to languages that have subtypes; the other three issues apply more generally.
An example of a polymorphic operation is an operation to find the maximal element in an array.
Extracting a reusable component. A refactory is a place where refactoring is performed.Dr. Opdyke earned a Bachelor of the Arts Degree in Psychology at Mansfield University of Pennsylvania in and then completed a Master of Science Degree at Indiana State University in 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 - mi-centre.comyke Refactoring Thesis - mi-centre.com Bill opdyke thesis Bill Opdyke developed the first detailed written work on refactoring in his doctoral thesis.
Jim Vandendorpe, Dewayne Perry and Jim Coplien reviewed parts of my thesis. Larry Mayka provided expert advice in using Common LISP for my prototyping. At Drexel University, Prof. James Maginnis sparked my interest in many areas of computer science.
At the University of Wisconsin, Prof.
Randy Katz sparked my interest in computer science research. Ingo Wald's thesis on realtime raytracing is a gem. It's also been cited by almost other papers, which is pretty rare for a thesis. Opdyke, Thesis Opdyke, William F. Refactoring Object-Oriented Frameworks Ph.D.
diss., University of Illinois at Urbana-Champaign, The first decent-length writing on refactoring [ Fowler ].
refactoring object-oriented frameworks BY WILLIAM F. OPDYKE B.S., Drexel University, B.S., Drexel University, M.S., University of Wisconsin - Madison, THESIS Submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Computer Science in the Graduate College of the University of Illinois at.Download