> I am not mistaken. For a single Ada program that compiles > successfully, there is 1-to-1 correspondence of a package declaration > and package body. > > > > > It's not uncommon to have multiple different implementations of the > > same specification, for example for different target architectures or > > one might be production and the other development. > > That's what conditional compilation, modules and build systems are for.
Sure, but that doesn't change the issue of where to put documentation. Let's look at a typical real-world case. You're writing an FMS (Flight Management System) for airplanes. One of the critical things is knowing your "state vector", where you are and how fast you're moving. So your company has a sophisticated navigation package that has a function to which you supply which coordinate scheme and units you want used and it returns you the corresponding state vector. Given the number of coordinate schemes and units, it can take quite a lot of text to describe the specification of this package. And you have only ONE specification. However, you may have over a dozen different implementations. Some aircraft may have GPS, others not. There may be different INS's, each with different attributes. Various types of air data may be used. You very much want to have ONE common place that says "here's the specifications that all of these implementations need to meet". The implementations all may be quite different.