This thesis is a critique of the Ada 83 programming language with emphasis on the construction of reusable components and their composition, and more generally on programming "in the large". Ada 83's deficiencies in that area are first described, and then solutions are proposed to most of the problems. The main part of the thesis is a proposal for object-oriented extensions, making classes and objects with inheritance available through package and task types, as a very natural extension of Ada 83's task types. These proposals can be viewed as an alternative to Ada 9X's tagged types, with which a comparison is made.