Constantine, who learned programming at the Massachusetts Institute of Technology, began his professional career in computers with a summer job at Scientific Computing, at the time a subsidiary of Control Data Corporation, in Minneapolis. He went on to full-time work at MIT’s Laboratory for Nuclear Science, where he wrote routines for analyzing spark chamber photographs, and then to C-E-I-R, Inc., where he worked on economics simulations, business applications, project management tools, and programming languages.
While still an undergraduate at MIT he began work on what was to become structured design, formed his first consulting company, and taught in a postgraduate program at the University of Pennsylvania Wharton School. The core of structured design, including structure charts and coupling and cohesion metrics, was substantially complete by 1968, when it was presented at the National Symposium on Modular Programming. He joined the faculty of IBM’s Systems Research Institute the same year, where he taught for four years and further refined his concepts.
As part of Structured Design, Constantine developed the concepts of cohesion (the degree to which the internal contents of a module are related) and coupling (the degree to which a module depends upon other modules). These two concepts have been influential in the development of software engineering, and stand alone from Structured Design as significant contributions in their own right. They have proved foundational in areas ranging from software design to software metrics, and indeed have passed into the vernacular of the discipline.
Constantine also developed methodologies that combine human-computer-interaction design with software engineering. One methodology, usage-centered design, is the topic of his 1999 book with Lucy Lockwood, “Software For Use”. This is a third significant contribution to the field, being both well used in professional practice and the subject of academic study, and taught in a number of human-computer interface courses and universities around the world. His work on Human-Computer Interaction was influential for techniques like essential use cases and usage-centered design, which are widely used for building interactive software systems.