Kent Beck

Last updated
Kent Beck
Kent Beck no Workshop Mapping XP.jpg
Born1961 (age 5859)
CitizenshipUnited States
Alma mater University of Oregon
Known for Extreme programming, Software design patterns, JUnit
Scientific career
Fields Software engineering
Institutions Gusto
Beck speaking in 2001 Kent Beck 1.jpg
Beck speaking in 2001

Kent Beck (born 1961) is an American software engineer and the creator of extreme programming, [1] 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, [1] 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.

Contents

Beck pioneered software design patterns, as well as the commercial application of Smalltalk. He wrote the SUnit unit testing framework for Smalltalk, which spawned the xUnit series of frameworks, notably JUnit for Java, which Beck wrote with Erich Gamma. Beck popularized CRC cards with Ward Cunningham, the inventor of the wiki.

He lives in San Francisco, California and worked at social media company Facebook. [2]

History

Beck attended the University of Oregon between 1979 and 1987, receiving B.S. and M.S. degrees in computer and information science. [3]

In 1996 Beck was hired to work on the Chrysler Comprehensive Compensation System. Beck in turn brought in Ron Jeffries. In March 1996 the development team estimated the system would be ready to go into production around one year later. In 1997 the development team adopted a way of working which is now formalized as extreme programming. The one-year delivery target was nearly achieved, with actual delivery being only a couple of months late.

Publications

Books

The book illustrates the use of unit testing as part of the methodology, including examples in Java and Python. One section includes using test-driven development to develop a unit testing framework.

Selected papers

Related Research Articles

JUnit is a unit testing framework for the Java programming language. JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks which is collectively known as xUnit that originated with SUnit.

Martin Fowler (software engineer) British programmer

Martin Fowler is a 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.

Ward Cunningham American computer programmer who developed the first wiki

Howard G. "Ward" Cunningham is an American programmer who developed the first wiki and was a co-author of the Manifesto for Agile Software Development. A pioneer in both design patterns and extreme programming, he started coding the WikiWikiWeb in 1994, and installed it on the website of the software consultancy he started with his wife, Karen, Cunningham & Cunningham, on March 25, 1995, as an add-on to the Portland Pattern Repository. He has authored a book about wikis, entitled The Wiki Way. He also invented Framework for Integrated Tests.

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.

In computer programming, unit testing is a software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine whether they are fit for use.

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".

Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the code is improved so that the tests pass. This is opposed to software development that allows code to be added that is not proven to meet requirements.

The Portland Pattern Repository (PPR) is a repository for computer programming software design patterns. It was accompanied by a companion website, WikiWikiWeb, which was the world's first wiki. The repository has an emphasis on Extreme Programming, and it is hosted by Cunningham & Cunningham (C2) of Portland, Oregon. The PPR's motto is "People, Projects & Patterns".

Agile software development comprises various approaches to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s). It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages rapid and flexible response to change.

James O. Coplien, also known as Cope, is a writer, lecturer, and researcher in the field of computer science. He held the 2003–4 Vloeberghs Leerstoel at Vrije Universiteit Brussel and has been a visiting professor at University of Manchester.

"You aren't gonna need it" (YAGNI) is a principle of 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" and "You ain't gonna need it".

In software testing, test automation is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place, or perform additional testing that would be difficult to do manually. Test automation is critical for continuous delivery and continuous testing.

SUnit is a unit testing framework for the programming language Smalltalk. It is the original source of the xUnit design, originally written by one of the creators of Extreme Programming, Kent Beck. SUnit allows writing tests and checking results in Smalltalk.

The Chrysler Comprehensive Compensation System was a project in the Chrysler Corporation to replace several payroll applications with a single system. The new system was built using Smalltalk and GemStone. The software development techniques invented and employed on this project are of interest in the history of software engineering. C3 has been referenced in several books on the extreme programming (XP) methodology. The software went live in 1997 paying around ten thousand people. The project continued, intending to take on a larger proportion of the payroll but new development was stopped in 1999.

Ron Jeffries is one of the three founders of the Extreme Programming (XP) software development methodology circa 1996, along with Kent Beck and Ward Cunningham. He was from 1996, an XP coach on the Chrysler Comprehensive Compensation System project, which was where XP was invented. He is an author of Extreme Programming Installed, the second book published about XP. He has also written Extreme Programming Adventures in C#. He is one of the 17 original signatories of the Agile Manifesto.

My teams and I have implemented software products earning over half a billion dollars in revenue, including commercial software in assembler, FORTRAN, Pascal, C, C++, and Smalltalk. I've also done substantial non-commercial development in LISP, Forth, and probably half a dozen other languages. I've implemented commercial operating systems, compilers, relational and set-theoretic database systems, and a wide range of applications. I have degrees in Mathematics and in Computer and Communication Science. All this experience comes at a price: I absolutely never get carded when I order a glass of beer. I was fortunate enough to get involved with Extreme Programming at the beginning, and I've been doing nothing but helping people with it ever since. Looking back over all my successful projects, I'd apply XP techniques to all of them were I to do them over.

Organizational patterns are inspired in large part by the principles of the software pattern community, that in turn takes it cues from Christopher Alexander's work on patterns of the built world. Organizational patterns also have roots in Kroeber's classic anthropological texts on the patterns that underlie culture and society. They in turn have provided inspiration for the Agile software development movement, and for the creation of parts of Scrum and of Extreme Programming in particular.

Software archaeology or software archeology is the study of poorly documented or undocumented legacy software implementations, as part of software maintenance. Software archaeology, named by analogy with archaeology, includes the reverse engineering of software modules, and the application of a variety of tools and processes for extracting and understanding program structure and recovering design information. Software archaeology may reveal dysfunctional team processes which have produced poorly designed or even unused software modules. The term has been in use for decades, and reflects a fairly natural metaphor: a programmer reading legacy code may feel that he or she is in the same situation as an archaeologist exploring the rubble of an ancient civilization.

Specification by example (SBE) is a collaborative approach to defining requirements and business-oriented functional tests for software products based on capturing and illustrating requirements using realistic examples instead of abstract statements. It is applied in the context of agile software development methods, in particular behavior-driven development. This approach is particularly successful for managing requirements and functional tests on large-scale projects of significant domain and organisational complexity.

Extreme programming Software development methodology

Extreme programming (XP) is a software development methodology which is 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, which is intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.

Acceptance test–driven development (ATDD) is a development methodology based on communication between the business customers, the developers, and the testers. ATDD encompasses many of the same practices as specification by example (SBE), behavior-driven development (BDD), example-driven development (EDD), and support-driven development also called story test–driven development (SDD). All these processes aid developers and testers in understanding the customer's needs prior to implementation and allow customers to be able to converse in their own domain language.

References

  1. 1 2 "Extreme Programming", Computerworld (online), 2005, webpage: Computerworld-appdev-92.
  2. "Given my newly independent status after seven years at Facebook..."
  3. Beck, Kent. "Kent Beck". LinkedIn. Retrieved March 5, 2012.