Martin Fowler (software engineer)
   HOME

TheInfoList



OR:

Martin Fowler (18 December 1963) is a British
software developer Software development is the process of conceiving, specifying, designing, Computer programming, programming, software documentation, documenting, software testing, testing, and Software bugs, bug fixing involved in creating and maintaining applic ...
, author and international public speaker on software development, specialising in
object-oriented analysis and design 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 proces ...
,
UML The Unified Modeling Language (UML) is a general-purpose, developmental modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system. The creation of UML was originally m ...
,
patterns A pattern is a regularity in the world, in human-made design, or in abstract ideas. As such, the elements of a pattern repeat in a predictable manner. A geometric pattern is a kind of pattern formed of geometric shapes and typically repeated li ...
, and agile software development methodologies, including
extreme programming 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,"Human Centred Technology Workshop 2006 ", 2006, P ...
. His 1999 book ''Refactoring'' popularised the practice of
code refactoring 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, structur ...
. In 2004 he introduced a new architectural pattern, called Presentation Model (PM).


Biography

Fowler was born and grew up in
Walsall Walsall (, or ; locally ) is a market town and administrative centre in the West Midlands (county), West Midlands County, England. Historic counties of England, Historically part of Staffordshire, it is located north-west of Birmingham, east ...
, England, where he went to
Queen Mary's Grammar School Queen Mary's Grammar School (QMGS) is a boys' grammar school with academy status located on Sutton Road, Walsall, England, about a mile from the town centre and one of the oldest schools in the country. The sixth form is coeducational. Admiss ...
for his secondary education. He graduated at
University College London , mottoeng = Let all come who by merit deserve the most reward , established = , type = Public research university , endowment = £143 million (2020) , budget = ...
in 1986. In 1994 he moved to the United States, where he lives near
Boston Boston (), officially the City of Boston, is the state capital and most populous city of the Commonwealth of Massachusetts, as well as the cultural and financial center of the New England region of the United States. It is the 24th- mo ...
,
Massachusetts Massachusetts (Massachusett language, Massachusett: ''Muhsachuweesut assachusett writing systems, məhswatʃəwiːsət'' English: , ), officially the Commonwealth of Massachusetts, is the most populous U.S. state, state in the New England ...
in the suburb of Melrose.Martin Fowler
at martinfowler.com. Retrieved 2012-11-15.
Fowler started working with software in the early 1980s. Out of university in 1986 he started working in software development for
Coopers & Lybrand PricewaterhouseCoopers is an international professional services brand of firms, operating as partnerships under the PwC brand. It is the second-largest professional services network in the world and is considered one of the Big Four accounting ...
until 1991. In 2000 he joined ThoughtWorks, a systems integration and consulting company, where he serves as Chief Scientist. Fowler has written nine books on the topic of software development. He is a member of the '' Agile Alliance'' and helped create the
Manifesto for Agile Software Development In software development, agile (sometimes written Agile) practices include requirements discovery and solutions improvement through the collaborative effort of self-organizing and cross-functional teams with their customer(s)/ end user(s), a ...
in 2001, along with 16 fellow signatories. He maintains a '' bliki'', a mix of
blog A blog (a truncation of "weblog") is a discussion or informational website published on the World Wide Web consisting of discrete, often informal diary-style text entries (posts). Posts are typically displayed in reverse chronological order ...
and
wiki A wiki ( ) is an online hypertext publication collaboratively edited and managed by its own audience, using a web browser. A typical wiki contains multiple pages for the subjects or scope of the project, and could be either open to the pu ...
. He popularised the term Dependency Injection as a form of
Inversion of Control In software engineering, inversion of control (IoC) is a design pattern in which custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as co ...
.Martin Fowler (2004)
Inversion of Control Containers and the Dependency Injection pattern
. Retrieved 2012-11-15.


Publications

* 1996. ''Analysis Patterns: Reusable Object Models''. Addison-Wesley. . * 1997. ''UML Distilled: A Brief Guide to the Standard Object Modeling Language''. Addison-Wesley. . * 1999. ''Refactoring: Improving the Design of Existing Code'', With
Kent Beck Kent Beck (born 1961) 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 ...
, John Brant,
William Opdyke 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... Education Opdyke received a B.S. from Drexel University in 1979, an M.S. from ...
, and Don Roberts (June 1999). Addison-Wesley. . * 2000. ''Planning Extreme Programming''. With
Kent Beck Kent Beck (born 1961) 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 ...
. Addison-Wesley. . * 2002. ''Patterns of Enterprise Application Architecture''. With David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, and Randy Stafford. Addison-Wesley. . * 2010. ''Domain-Specific Languages''. With Rebecca Parsons. Addison-Wesley. . * 2012. ''NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence''. With Pramod Sadalage. Addison-Wesley. . * 2013. ''Refactoring: Ruby Edition''. With
Kent Beck Kent Beck (born 1961) 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 ...
, Shane Harvie, and Jay Fields. Addison-Wesley. . * 2018. ''Refactoring: Improving the Design of Existing Code, Second Edition''. Kent Beck, and Martin Fowler. Addison-Wesley. .


Domain-specific languages

In his book, ''Domain-specific languages'', Fowler discusses
Domain-specific language A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging f ...
s, DSL. DSLs are said to be defined by being composable programming languages, with their focus on an individual domain and having limited expressively. It is argued that DSLs can increase productivity by removing the requirement of the programmer to understand a full programming language, providing a means of communication with
domain expert A subject-matter expert (SME) is a person who has accumulated great knowledge in a particular field or topic and this level of knowledge is demonstrated by the person's degree, licensure, and/or through years of professional experience with the s ...
s, and separate the manner of execution of a task from the definition of a task itself. These benefits are set against the cost of learning a new language and building the tools for this language, siloing that results for different languages and the abstractions used in DSLs not being suitable for a task. Fowler introduces the concept of internal (or embedded) and external DSL, an internal DSL being a DSL that is a subset of another language and can be executed by the tools for this outer language.
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sa ...
and Lisp are given as an example of languages where internal DSLs are common. He also introduces the idea of Semantic Model which defines the execution of a DSL. Various examples of DSLs are presented including
graphviz Graphviz (short for ''Graph Visualization Software'') is a package of open-source tools initiated by AT&T Labs Research for drawing graphs specified in DOT language scripts having the file name extension "gv". It also provides libraries for ...
, a language for specifying
graphs Graph may refer to: Mathematics *Graph (discrete mathematics), a structure made of vertices and edges **Graph theory, the study of such graphs and their properties *Graph (topology), a topological space resembling a graph in the sense of discre ...
to be rendered; JMock a java mocking framework;
CSS Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language such as HTML or XML (including XML dialects such as SVG, MathML or XHTML). CSS is a cornerstone techno ...
a language to specify stylistic elements of a website;
HQL The Jakarta Persistence Query Language (JPQL; formerly Java Persistence Query Language) is a platform-independent object-oriented query language defined as part of the Jakarta Persistence (JPA; formerly Java Persistence API) specification. JPQL i ...
a
object relational mapper Object may refer to: General meanings * Object (philosophy), a thing, being, or concept ** Abstract object, Object (abstract), an object which does not exist at any particular time or place ** Physical object, an identifiable collection of matt ...
in
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
;
XAML Extensible Application Markup Language (XAML ) is a declarative XML-based language that Microsoft developed for initializing structured values and objects. It is available under Microsoft's Open Specification Promise. XAML is used extensively ...
a language used to specify and change
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
s; FIT, a language to express testing scenarios; and
make Make or MAKE may refer to: * Make (magazine), a tech DIY periodical *Make (software), a software build tool *Make, Botswana, in the Kalahari Desert *Make Architects Make Architects is an international architecture practice headquartered in Londo ...
a tool to build software The book discusses implementing an external DSL using tools like
parsers Parsing, syntax analysis, or syntactic analysis is the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar. The term ''parsing'' comes from L ...
, lexers,
abstract syntax tree In computer science, an abstract syntax tree (AST), or just syntax tree, is a tree representation of the abstract syntactic structure of text (often source code) written in a formal language. Each node of the tree denotes a construct occurring ...
s and code generation referred to as "syntax-driven translation" This is contrasted with "delimiter-driven translation" which is said to be simpler but less powerful. Here the language is simple enough to be interpreted by splitting on delimiters and switching logic based on individual entries. Ways of implementing internal DSLs is discussed, with attention paid to nested function calls, sequences of function calls, or
method chaining Method chaining, also known as named parameter idiom, is a common syntax for invoking multiple method calls in object-oriented programming languages. Each method returns an object, allowing the calls to be chained together in a single statement ...
amongst other methods.


References


External links

* * {{DEFAULTSORT:Fowler, Martin Living people 1963 births Alumni of University College London British software engineers British bloggers British technology writers Extreme programming People from Walsall People educated at Queen Mary's Grammar School British expatriates in the United States Agile software development