Matt Stephens

Last updated

Matt Stephens (born 1971) is an author and software process expert based in London, UK. In January 2010 he founded independent book publisher Fingerpress UK Ltd, [1] and in November 2014 he founded the Virtual Reality book discovery site Inkflash. [2]

He is known for having spoken out against what he regards as popular (or populist) software development fashions, most notably Extreme Programming, [3] Enterprise JavaBeans (EJB) [4] and the Ruby programming language. [5] He has co-authored four books on software development: Design Driven Testing: Test Smarter, Not Harder, [6] Use Case Driven Object Modeling with UML: Theory and Practice, [7] Agile Development with ICONIX Process, [8] and Extreme Programming Refactored: The Case Against XP. [9] He is also a columnist for The Register, a UK-based IT news website where he writes a monthly "Agile Iconoclast" column on software design and programming, [10] and has written for Dr Dobb's Journal, Software Development Magazine, Application Development Trends and other journals and websites. [11]

Stephens' first book, Extreme Programming Refactored, has proved to be controversial as it satirizes the popular Extreme Programming (XP) agile methodology. The book triggered a lengthy debate in articles, internet newsgroups, and web-site chat areas. The core argument of the book is that XP is fragile rather than agile, as its practices are interdependent but that few practical organizations are willing/able to adopt all the practices; therefore the entire process fails. On the book's first page he points out that he is not "anti-agile", rather that the XP process is a fragile implementation of the values described in the Agile Manifesto.

In Use Case Driven Object Modeling with UML, Stephens outlines an extension to the ICONIX object modeling process which he and co-author Doug Rosenberg termed Design Driven Testing (DDT), a deliberate reversal of Test Driven Development (TDD), a core tenet of XP. DDT provides a method of creating unit tests and customer acceptance tests that are driven from the design and behavioral requirements (use cases). DDT and the ICONIX modeling process have been adopted in a variety of large-scale software projects e.g. the image processing software in the Large Synoptic Survey Telescope (LSST). [12]

In Design Driven Testing, Stephens compares DDT with TDD, and applies DDT on a real project run by ESRI Systems, to create a GIS mapping system for travel website VResorts.com.

Notes and references

  1. Fingerpress book publisher
  2. Inkflash VR/3D book discovery website
  3. The Case Against Extreme Programming: A Self-Referential Safety Net (2001), Stephens, M.
  4. EJB's 101 Damnations (2002), with Fancellu, D. and Sharp, R. Archived 2008-12-25 at the Wayback Machine
  5. Ruby: I Love You (Not) in ObjectiveView Magazine Issue 10 (2006), Stephens, M. Archived 2008-12-19 at the Wayback Machine
  6. Stephens, M. & Rosenberg, D. (2010). Design Driven Testing: Test Smarter, Not Harder. Apress. ISBN   1-4302-2943-8.
  7. Rosenberg, D. & Stephens, M. (2007). Use Case Driven Object Modeling with UML: Theory and Practice. Apress. ISBN   1-59059-774-5.
  8. Rosenberg, D., Stephens, M. & Collins-Cope, M. (2005). Agile Development with ICONIX Process. Apress. ISBN   1-59059-464-9.
  9. Stephens, M. & Rosenberg, D. (2003). Extreme Programming Refactored: The Case Against XP. Apress. ISBN   1-59059-096-1.
  10. Agile Iconoclast column at The Register
  11. Matt Stephens on Software Reality
  12. Designing the Large Synoptic Survey Telescope with Enterprise Architect (case study)

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.

The Rational Unified Process (RUP) is an iterative software development process framework created by the Rational Software Corporation, a division of IBM since 2003. RUP is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs. RUP is a specific implementation of the Unified Process.

Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process. Prototypes are often used in addition to or sometimes even instead of design specifications.

In software and systems engineering, the phrase use case is a polyseme with two senses:

  1. A usage scenario for a piece of software; often used in the plural to suggest situations where a piece of software may be useful.
  2. A potential scenario in which a system receives an external request and responds to it.

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

Test-driven development (TDD) is a software development process relying on software requirements being converted to test cases before software is fully developed, and tracking all software development by repeatedly testing the software against all test cases. This is as opposed to software being developed first and test cases created later.

In software development, 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), adaptive planning, evolutionary development, early delivery, continual improvement, and flexible responses to changes in requirements, capacity, and understanding of the problems to be solved.

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

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.

Agile modeling (AM) is a methodology for modeling and documenting software systems based on best practices. It is a collection of values and principles, that can be applied on an (agile) software development project. This methodology is more flexible than traditional modeling methods, making it a better fit in a fast changing environment. It is part of the agile software development tool kit.

Extreme programming (XP) is an agile software development methodology used to implement software projects. This article details the practices used in this methodology. Extreme programming has 12 practices, grouped into four areas, derived from the best practices of software engineering.

A lightweight methodology is a software development method that has only a few rules and practices, or only ones that are easy to follow. In contrast, a complex method with many rules is considered a heavyweight methodology."

ICONIX is a software development methodology which predates both the Rational Unified Process (RUP), Extreme Programming (XP) and Agile software development. Like RUP, the ICONIX process is UML Use Case driven but more lightweight than RUP. ICONIX provides more requirement and design documentation than XP, and aims to avoid analysis paralysis. The ICONIX Process uses only four UML based diagrams in a four-step process that turns use case text into working code.

Scott W. Ambler is a Canadian software engineer, consultant and author. He is an author of books about the Disciplined Agile Delivery toolkit, the Unified process, Agile software development, the Unified Modeling Language, and Capability Maturity Model (CMM) development.

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.

eXtreme Manufacturing (XM) is an iterative and incremental framework for manufacturing improvement and new product development that was inspired by the software development methodology Scrum and the systematic waste-elimination (lean) production scheduling system Kanban(かんばん ).

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.

The entity-control-boundary (ECB), or entity-boundary-control (EBC), or boundary-control-entity (BCE) is an architectural pattern used in use-case driven object-oriented software design that structures the classes composing a software according to their responsibilities in the use-case realization.