|August 20, 1940
Hazleton, Pennsylvania, U.S.
|Cornell University, Columbia University, University of Paris
|Stevens Award (1999)
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.
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.
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.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.
In the 1970s DeMarco was one of the major figures in the development of structured analysis and structured design in software engineering.In January 1978 he published Structured Analysis and System Specification, a major milestone in the field.
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.He has also been a technical advisor for ZeniMax Media, the parent company of video game publisher Bethesda Softworks.
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. 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".
In his spare time, DeMarco is an emergency medical technician, certified by his home state and by the National Registry of EMTs.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.
DeMarco has authored over nine books and 100 papers on project management and software development. A selection:
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:
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 flow — there 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.
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.
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.
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:
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.
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.