Tom DeMarco

Last updated

Tom DeMarco
Born (1940-08-20) August 20, 1940 (age 83)
Alma mater Cornell University, Columbia University, University of Paris
Known for Structured analysis
Awards Stevens Award (1999)
Scientific career
Fields Computer science
Institutions Bell Labs

Tom DeMarco (born August 20, 1940) is an American software engineer, author, and consultant on software engineering topics. He was an early developer of structured analysis in the 1970s.


Early life and education

Tom DeMarco was born in Hazleton, Pennsylvania. He received a BSEE degree in Electrical Engineering from Cornell University, a M.S. from Columbia University, and a diplôme from the University of Paris. [1]


DeMarco started working at Bell Telephone Laboratories in 1963, where he participated in ESS-1 project to develop the first large scale Electronic Switching System, which became installed in telephone offices all over the world. [2] Later in the 1960s he started working for a French IT consulting firm, where he worked on the development of a conveyor system for the new merchandise mart at La Villette in Paris, and in the 1970s on the development of on-line banking systems in Sweden, Holland, France and New York. [3]

In the 1970s DeMarco was one of the major figures in the development of structured analysis and structured design in software engineering. [4] In January 1978 he published Structured Analysis and System Specification, [5] a major milestone in the field. [4]

In the 1980s with Tim Lister, Stephen McMenamin, John F. Palmer, James Robertson and Suzanne Robertson, he founded the consulting firm "The Atlantic Systems Guild" in New York. The firm initially shared offices with the Dorset House Publishing owned by Wendy Eachan, Tim Lister's wife. Their company developed into a New York- and London-based consulting company specializing in methods and management of software development.[ citation needed ]

DeMarco has lectured and consulted throughout the Americas, Europe, Africa, Australia and the Far East. [6] He has also been a technical advisor for ZeniMax Media, the parent company of video game publisher Bethesda Softworks. [7]

He is a member of the ACM and a Fellow of the IEEE. He lives in Camden, Maine, and is[ when? ] a principal of the Atlantic Systems Guild, and a fellow and Senior Consultant of the Cutter Consortium. [1] DeMarco was the 1986 recipient of the Warnier Prize for "lifetime contribution to the field of computing", and the 1999 recipient of the Stevens Award for "contribution to the methods of software development". [1]

Personal life

In his spare time, DeMarco is an emergency medical technician, certified by his home state and by the National Registry of EMTs. [6] He is also founding member of the Penobscot Compact, operating under the auspices of the Maine State Aspirations Program, in which local employers contribute the paid time of their employees to tutor students in the public schools. [8]


DeMarco has authored over nine books and 100 papers on project management and software development. A selection: [9]

See also

Related Research Articles

The Capability Maturity Model (CMM) is a development model created in 1986 after a study of data collected from organizations that contracted with the U.S. Department of Defense, who funded the research. The term "maturity" relates to the degree of formality and optimization of processes, from ad hoc practices, to formally defined steps, to managed result metrics, to active optimization of the processes.

In software engineering and development, a software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement, often the two terms are used as synonyms. Since quantitative measurements are essential in all sciences, there is a continuous effort by computer science practitioners and theoreticians to bring similar approaches to software development. The goal is obtaining objective, reproducible and quantifiable measurements, which may have numerous valuable applications in schedule and budget planning, cost estimation, quality assurance, testing, software debugging, software performance optimization, and optimal personnel task assignments.

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

<span class="mw-page-title-main">Edward Yourdon</span> American software engineer and pioneer in the software engineering methodology

Edward Nash Yourdon was an American software engineer, computer consultant, author and lecturer, and software engineering methodology pioneer. He was one of the lead developers of the structured analysis techniques of the 1970s and a co-developer of both the Yourdon/Whitehead method for object-oriented analysis/design in the late 1980s and the Coad/Yourdon methodology for object-oriented analysis/design in the 1990s.

A data-flow diagram is a way of representing a flow of data through a process or a system. The DFD also provides information about the outputs and inputs of each entity and the process itself. A data-flow diagram has no control flowthere are no decision rules and no loops. Specific operations based on the data can be represented by a flowchart.

Gerald Marvin Weinberg was an American computer scientist, author and teacher of the psychology and anthropology of computer software development. His most well-known books are The Psychology of Computer Programming and Introduction to General Systems Thinking.

Decomposition in computer science, also known as factoring, is breaking a complex problem or system into parts that are easier to conceive, understand, program, and maintain.

The single responsibility principle (SRP) is a computer programming principle that states that "A module should be responsible to one, and only one, actor." The term actor refers to a group that requires a change in the module.

<span class="mw-page-title-main">Structured analysis and design technique</span>

Structured analysis and design technique (SADT) is a systems engineering and software engineering methodology for describing systems as a hierarchy of functions. SADT is a structured analysis modelling language, which uses two types of diagrams: activity models and data models. It was developed in the late 1960s by Douglas T. Ross, and was formalized and published as IDEF0 in 1981.

The Toolkit for Conceptual Modeling (TCM) is a collection of software tools to present specifications of software systems in the form of diagrams, tables, trees, and the like. TCM offers editors for techniques used in Structured Analysis as well as editors for object-oriented (UML) techniques. For some of the behavior specification techniques, an interface to model checkers is offered. More in particular, TCM contains the following editors.

<span class="mw-page-title-main">Structured analysis</span>

In software engineering, structured analysis (SA) and structured design (SD) are methods for analyzing business requirements and developing specifications for converting practices into computer programs, hardware configurations, and related manual procedures.

The Putnam model is an empirical software effort estimation model. The original paper by Lawrence H. Putnam published in 1978 is seen as pioneering work in the field of software process modelling. As a group, empirical models work by collecting software project data and fitting a curve to the data. Future effort estimates are made by providing size and calculating the associated effort using the equation which fit the original data.

Requirements traceability is a sub-discipline of requirements management within software development and systems engineering. Traceability as a general term is defined by the IEEE Systems and Software Engineering Vocabulary as (1) the degree to which a relationship can be established between two or more products of the development process, especially products having a predecessor-successor or primary-subordinate relationship to one another; (2) the identification and documentation of derivation paths (upward) and allocation or flowdown paths (downward) of work products in the work product hierarchy; (3) the degree to which each element in a software development product establishes its reason for existing; and (4) discernible association among two or more logical entities, such as requirements, system elements, verifications, or tasks.

<span class="mw-page-title-main">Event partitioning</span>

Event partitioning is an easy-to-apply systems analysis technique that helps the analyst organize requirements for large systems into a collection of smaller, simpler, minimally-connected, easier-to-understand "mini systems" / use cases.

Peopleware can refer to anything that has to do with the role of people in the development or use of computer software and hardware systems, including such issues as developer productivity, teamwork, group dynamics, the psychology of programming, project management, organizational factors, human interface design and human–machine interaction.

Software requirements for a system are the description of what the system should do, the service or services that it provides and the constraints on its operation. The IEEE Standard Glossary of Software Engineering Terminology defines a requirement as:

  1. A condition or capability needed by a user to solve a problem or achieve an objective
  2. A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed document
  3. A documented representation of a condition or capability as in 1 or 2

Karl E. Wiegers is an American software engineer, consultant, and trainer in the areas of software development, management, and process improvement. He is the author of numerous books and articles mainly focused on software requirements, project management, process improvement, quality, design, and consulting. He is also the author of a forensic mystery novel titled The Reconstruction and a memoir of life lessons titled Pearls from Sand: How Small Encounters Lead to Powerful Lessons.

<span class="mw-page-title-main">Tim Lister</span>

Tim Lister is an American software engineer and author with specialty in design, software risk management, and human aspects of technological work. He is a Principal of The Atlantic Systems Guild Inc. and a fellow of the Cutter Consortium.

Kenneth T. Orr was an American software engineer, executive and consultant, known for his contributions in the field of software engineering to structured analysis and with the Warnier/Orr diagram.

Essential systems analysis was a new methodology for software specification published in 1984 by Stephen M. McMenamin and John F. Palmer for performing structured systems analysis based on the concept of event partitioning.


  1. 1 2 3 "Tom DeMarco". The Atlantic Systems Guild. Retrieved October 8, 2022.
  2. Tom DeMarco (2002) Structured Analysis: Beginnings of a New Discipline Archived March 3, 2004, at the Wayback Machine In: sd&m Conference 2001, Software Pioneers Eds.: M. Broy, E. Denert, Springer 2002.
  3. Tom DeMarco Archived November 3, 2009, at the Wayback Machine ISRC Fellow. Retrieved November 24, 2008.
  4. 1 2 Ward, Paul T. (October 13, 1995). "Structured Analysis". In Allen Kent; James G. Williams (eds.). Encyclopedia of Microcomputers: Volume 17 - Strategies in the Microprocess Industry to TCP/IP Internetworking: Concepts: Architecture: Protocols, and Tools. Taylor & Francis. pp. 51–89. ISBN   978-0-8247-2715-4.
  5. DeMarco, Tom (1978). Structured Analysis and System Specification. Yourdon. ISBN   978-0-917072-07-9.
  6. 1 2 "Tom DeMarco". Dorset House Publishing. Retrieved October 28, 2013.
  7. "ZeniMax Media Profile-Technical Advisory Board". 2001. Archived from the original on October 8, 2001. Retrieved July 29, 2016.
  8. DeMarco, Tom (1990). "Making a difference in the schools". IEEE Software. 7 (6): 78–82. doi:10.1109/52.60592. S2CID   34694392.
  9. Tom DeMarco List of publications from the DBLP Bibliography Server.