William Opdyke

Last updated

William F. (Bill) Opdyke (born c. 1958) is an American computer scientist, and enterprise architect at JPMorgan Chase, known for his early work on code refactoring. [1] [2]

Contents

Life and work

Opdyke received a B.S. from Drexel University in 1979, an M.S. from University of Wisconsin at Madison in 1982, and his Ph.D. from the University of Illinois at Urbana–Champaign in 1992 under supervision of Ralph Johnson. His Ph.D. thesis, Refactoring Object-Oriented Frameworks, was the first in-depth study of code refactoring as a software engineering technique. [1] [3]

After graduation Opdyke started his career at AT&T Bell Laboratories in 1981, where he worked as researcher until 2001. From 2001 to 2006 he was Associate Professor in Computer Science at North Central College in Naperville, Illinois, and for Motorola in Schaumburg, Illinois. [4] Since 2009 he is enterprise architect in the Mobile and Web Retail Banking area, and trainer at the Technical Leadership Development program.

Selected publications

Articles, a selection: [5]

Related Research Articles

Kent Beck

Kent Beck is an American software engineer and the creator of extreme programming, a software development methodology that eschews rigid formal specification for a collaborative and iterative design process. Beck was one of the 17 original signatories of the Agile Manifesto, the founding document for agile software development. Extreme and Agile methods are closely associated with Test-Driven Development (TDD), of which Beck is perhaps the leading proponent.

Martin Fowler (software engineer) American software developer, author and international public speaker on software development

Martin Fowler is an American-resident British software developer, author and international public speaker on software development, specialising in object-oriented analysis and design, UML, patterns, and agile software development methodologies, including extreme programming.

In computer programming and software design, code refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behavior. Refactoring is intended to improve the design, structure, and/or implementation of the software, while preserving its functionality. Potential advantages of refactoring may include improved code readability and reduced complexity; these can improve the source code's maintainability and create a simpler, cleaner, or more expressive internal architecture or object model to improve extensibility. Another potential goal for refactoring is improved performance; software engineers face an ongoing challenge to write programs that perform faster or use less memory.

<i>Design Patterns</i> 1994 software engineering book

This article is about the book. For the generic article, see software design patterns, or Design Pattern.

In class-based programming, the factory method pattern is a creational pattern that uses factory methods to deal with the problem of creating objects without having to specify the exact class of the object that will be created. This is done by creating objects by calling a factory method—either specified in an interface and implemented by child classes, or implemented in a base class and optionally overridden by derived classes—rather than by calling a constructor.

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

xUnit is the collective name for several unit testing frameworks that derive their structure and functionality from Smalltalk's SUnit. SUnit, designed by Kent Beck in 1998, was written in a highly structured object-oriented style, which lent easily to contemporary languages such as Java and C#. Following its introduction in Smalltalk the framework was ported to Java by Kent Beck and Erich Gamma and gained wide popularity, eventually gaining ground in the majority of programming languages in current use. The names of many of these frameworks are a variation on "SUnit", usually replacing the "S" with the first letter in the name of their intended language. These frameworks and their common architecture are collectively known as "xUnit".

In computer programming, a code smell is any characteristic in the source code of a program that possibly indicates a deeper problem. Determining what is and is not a code smell is subjective, and varies by language, developer, and development methodology.

The following outline is provided as an overview of and topical guide to software engineering:

In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard way to build and deploy applications and is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate the development of software applications, products and solutions. Software frameworks may include support programs, compilers, code libraries, toolsets, and application programming interfaces (APIs) that bring together all the different components to enable development of a project or system.

"You aren't gonna need it" (YAGNI) is a principle which arose from extreme programming (XP) that states a programmer should not add functionality until deemed necessary. XP co-founder Ron Jeffries has written: "Always implement things when you actually need them, never when you just foresee that you need them." Other forms of the phrase include "You aren't going to need it" (YAGTNI) and "You ain't gonna need it" (YAGNI).

Object-oriented analysis and design (OOAD) is a technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality.

Ralph E. Johnson is a Research Associate Professor in the Department of Computer Science at the University of Illinois at Urbana-Champaign. He is a co-author of the influential computer science textbook Design Patterns: Elements of Reusable Object-Oriented Software, for which he won the 2010 ACM SIGSOFT Outstanding Research Award.

Pattern Languages of Programs Annual conference series on software design patterns

Pattern Languages of Programs is the name of a group of annual conferences sponsored by The Hillside Group. The purpose of these conferences is to develop and refine the art of software design patterns. Most of the effort focuses on developing a textual presentation of a pattern such that it becomes easy to understand and apply. This is typically done in a writers' workshop setting.

Rule of three is a code refactoring rule of thumb to decide when similar pieces of code should be refactored to avoid duplication. It states that two instances of similar code do not require refactoring, but when similar code is used three times, it should be extracted into a new procedure. The rule was popularised by Martin Fowler in Refactoring and attributed to Don Roberts.

Software entropy is the idea that software eventually rots as it is changed if sufficient care isn't taken to maintain coherence with product design and established design principles. The common usage is only tangentially related to entropy as defined in classical thermodynamics and statistical physics.

The Hillside Group

The Hillside Group is an educational nonprofit organization founded in August 1993 to help software developers analyze and document common development and design problems as software design patterns. The Hillside Group supports the patterns community through sponsorship of the Pattern Languages of Programs conferences.

Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code: data in the form of fields, and code, in the form of procedures.

Extreme programming Software development methodology

Extreme programming (XP) is a software development methodology intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent releases in short development cycles, intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.

In computer programming, design smells are "structures in the design that indicate violation of fundamental design principles and negatively impact design quality". The origin of the term "design smell" can be traced to the term "code smell" which was featured in the book Refactoring: Improving the Design of Existing Code by Martin Fowler.

References

  1. 1 2 Fowler, Martin; Beck, Kent (1999), Refactoring: Improving the Design of Existing Code , The Addison-Wesley object technology series, Addison-Wesley, p.  415, ISBN   978-0-201-48567-7 .
  2. Buschmann, Frank; Henney, Kevlin; Schmidt, Douglas (2007), Pattern-oriented Software Architecture: On Patterns and Pattern Language, Pattern-Oriented Software Architecture, vol. 5, John Wiley & Sons, ISBN   978-0471486480 .
  3. Opdyke, William (1992), Refactoring Object-Oriented Frameworks .
  4. Affiliation listed as an organizer of the Third ACM Workshop on Refactoring Tools (WRT'09), retrieved 2010-04-27.
  5. List of publications from DBLP