A systematic approach to program design developed in the mid-1970s by Constantine, Yourdon, et al, that included the use of graphical notation for effective documentation and communication, design guidelines and recipes to help programmers get started.