Martin Fowler
Fowler in 2015
Born (1963-12-18) 18 December 1963 (age 62)
Walsall, England, UK
EducationUniversity College London (BSc, 1986)[1]
OccupationsSoftware developer, author, public speaker
EmployerThoughtWorks
Websitemartinfowler.com

Martin Fowler (18 December 1963) is a British software developer,[2] 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.

His 1999 book Refactoring popularised the practice of code refactoring.[3] In 2004 he introduced a new architectural pattern, called Presentation Model (PM).[4]

Biography

edit

Fowler was born and grew up in Walsall, England, where he went to Queen Mary's Grammar School for his secondary education. He graduated at University College London in 1986. In 1994, he moved to the United States, where he lives near Boston, Massachusetts in the suburb of Melrose.[1]

Fowler started working with software in the early 1980s. Out of university in 1986 he started working in software development for Coopers & Lybrand until 1991.[5] In 2000 he joined ThoughtWorks, a systems integration and consulting company,[1] where he is Chief Scientist.[6][1]

Fowler maintains a bliki, a mix of blog and wiki, where he describes himself as "a sort of software botanist, keen to collect samples".[7] He 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 2001, along with 16 fellow signatories.[8] He popularised the term Dependency Injection as a form of Inversion of Control.[9][10]

Publications

edit
  • 1996. Analysis Patterns: Reusable Object Models. Addison-Wesley. ISBN 0-201-89542-0.
  • 1997. UML Distilled: A Brief Guide to the Standard Object Modeling Language. Addison-Wesley. ISBN 978-0-201-32563-8.
  • 1999. Refactoring: Improving the Design of Existing Code, With Kent Beck, John Brant, William Opdyke, and Don Roberts (June 1999). Addison-Wesley. ISBN 0-201-48567-2.
  • 2000. Planning Extreme Programming. With Kent Beck. Addison-Wesley. ISBN 0-201-71091-9.
  • 2002. Patterns of Enterprise Application Architecture. With David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, and Randy Stafford. Addison-Wesley. ISBN 0-321-12742-0.
  • 2010. Domain-Specific Languages. With Rebecca Parsons. Addison-Wesley. ISBN 978-0-321-71294-3.
  • 2012. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. With Pramod Sadalage. Addison-Wesley. ISBN 978-0-321-82662-6.
  • 2013. Refactoring: Ruby Edition. With Kent Beck, Shane Harvie, and Jay Fields. Addison-Wesley. ISBN 978-0-321-98413-5.
  • 2018. Refactoring: Improving the Design of Existing Code, Second Edition. Kent Beck, and Martin Fowler. Addison-Wesley. ISBN 978-0-134-75759-9.

Domain-specific languages

edit

Fowler’s Domain-specific languages discusses small, composable programming languages focused on an individual domain.[11]: 27  He argues that domain-specific languages increase productivity by removing the need for the programmer to understand a full programming language, by improving communication with domain experts, and by separating the execution of a task from its definition.[11]: 33  These benefits are set against the cost of learning a new language and building the tools for this language.[11]: 39 

Fowler introduces the concept of internal (or embedded) and external domain-specific languages. An internal language is a subset of another language and can be executed by the tools for this outer language. Ruby and Lisp are given as an example of languages where internal domain-specific languages are common. Fowler also introduces the idea of Semantic Model.[11]: 14  Various domain-specific languages are presented including graphviz, a language for specifying graphs to be rendered; JMock, a java mocking framework; CSS, a language to specify stylistic elements of a website; HQL, an object relational mapper; XAML, a language used to specify and change graphical user interfaces; FIT, a language to express testing scenarios; and make, a tool to build software[11]: 147 

The book discusses implementing an external domain-specific language using parsers, lexers, abstract syntax trees and code generation referred to as "syntax-driven translation"[11]: 219  This is contrasted with "delimiter-driven translation" which is simpler but less powerful. Here the language is simple enough to be interpreted by splitting on delimiters and switching logic based on individual entries.[11]: 201 

Ways of implementing internal domain-specific languages are discussed, with attention to nested function calls,[11]: 357  sequences of function calls,[11]: 351  or method chaining[11]: 373 .[12]

References

edit
  1. ^ a b c d Martin Fowler at martinfowler.com. Retrieved 2012-11-15.
  2. ^ "About Martin Fowler". martinfowler.com. Retrieved 1 May 2021.
  3. ^ Stephane Faroult; Pascal L'Hermite (2008). Refactoring SQL Applications. O'Reilly Media. p. 8. ISBN 978-0-596-55177-3.
  4. ^ Stephen Chin; Dean Iverson; Oswald Campesato; Paul Trani (2011). Pro Android Flash. Apress. p. 300. ISBN 978-1-4302-3232-2.
  5. ^ James A. Highsmith (2002). Agile Software Development Ecosystems. Addison-Wesley Professional. p. 133. ISBN 978-0-201-76043-9.
  6. ^ Martin Fowler | ThoughtWorks. Retrieved 2015-03-30.
  7. ^ "What do you mean by “Event-Driven”?". martinFowler.com. 7 February 2017. Retrieved 25 March 2026.
  8. ^ Manifesto for Agile Software Development. Retrieved 2012-12-10.
  9. ^ Kamil Piętak; Marek Kisiel-Dorohinicki (2013). "Agent-Based Framework Facilitating Component-Based Implementation of Distributed Computational Intelligence Systems". In Ngoc-Thanh Nguyen; Joanna Kołodziej; Tadeusz Burczyński et al. Transactions on Computational Collective Intelligence X. Springer. p. 38. ISBN 978-3-642-38496-7.
  10. ^ Martin Fowler (2004) "Inversion of Control Containers and the Dependency Injection pattern". Retrieved 2012-11-15.
  11. ^ a b c d e f g h i j Fowler, Martin (2011). Domain-specific languages. Upper Saddle River, N.J.: Addison-Wesley. ISBN 978-0-13-210754-9. OCLC 686709295.
  12. ^ "Contents - Domain Specific Languages [Book]". O'Reilly Media. Retrieved 19 May 2026.
edit

📚 Artikel Terkait di Wikipedia

Martin Fowler

Martin Fowler may refer to: Martin Fowler (footballer) (born 1957), English footballer Martin Fowler (software engineer) (born 1963), British information

Fowler (surname)

1957), English footballer Martin Fowler (software engineer) (born 1963), English-American software architecture author Mary Fowler (born 2003), Australian

Chaos engineering

2016. Retrieved 21 October 2017. "PhoenixServer". martinFowler.com. Martin Fowler (software engineer). 10 July 2012. Retrieved 14 January 2021. "Netflix

Programmer

skill in computer programming. The professional titles software developer and software engineer may be used for jobs that require a programmer. Sometimes

Chrysler Comprehensive Compensation System

support all payroll processing for 87,000 employees by 1999.[1] In 1996 software engineer Kent Beck was brought on to oversee development, as the system had

Outline of software development

van Rossum (Python) Bill Joy Martin Fowler "Uncle Bob" Martin Product activation Software blueprint Software design Software development effort estimation

Code refactoring

and causes". Journal of Systems and Software. 61 (2): 105–119. doi:10.1016/S0164-1212(01)00152-2. Fowler, Martin (1999). Refactoring: improving the design

Microservices

Unix philosophy Self-contained system (software) Serverless computing Web-oriented architecture (WOA) Fowler, Martin (2002). Patterns of Enterprise Application