Make has a simplistic model for generating a new executable version of a system after one or more source files have been modified. However, Make's knowledge is primitive; Make uses a single attribute, the time-stamp of files. In this thesis, we extend the Make dependency rules in order to incorporate module hierarchy, version, configuration and installation informations. A software developer or maintainer can use the attributed Makefile in selecting the versions and describing the software construction steps. Attribute interpreter has been implemented in C language on the ELXSI system running under the 4.3 BSD UNIX.