The use of Ada and reusable software components in flight training devices promises to significantly reduce the cost and development time of future trainers, this paper deals with the selection, design, development, and management of reusable software components utilizing Ada as the design and implementation language. In order to realize the benefits of reusable software components, careful planning is needed to ensure that appropriate candidates are selected. In this selection process the additional cost of producing an efficient real time software component is discussed and weighted against the useful lifetime of such a component. Since design is the most critical part of the development cycle of a reusable component, generality versus efficiency tradeoffs are discussed in terms of how they will affect the future success of the component. The successful management of reusable components and their acceptance by programmers is also discussed.