The very large and the very critical. Very large applications, which inevitably have a long lifetime, require the cooperative effort of large teams. The information hiding properties of Ada and especially the way in which integrity is maintained across compilation unit boundaries are invaluable in enabling such developments to progress smoothly. Furthermore, if and when the requirements change and the program has to be modified, the structure and especially the readability of Ada enable rapid understanding of the original program even if it is modified by a different team. Very critical applications are those that just have to be correct otherwise people or the environment get damaged.
Obvious examples occur in avionics, railway signalling, process control and medical applications.
Such programs may not be large but have to be very well understood and often mathematically proven to be correct. The full flexibility of Ada is not appropriate in this case but the intrinsic reliability of the strongly typed kernel of the language is exactly what is required. Indeed many certification agencies dictate the properties of acceptable languages and whereas they do not always explicitly demand a subset of Ada, nevertheless the properties are not provided by any other practically available language. Ada is thus very appropriate for many application domains. Ada 95 with its extra facilities and specialized annexes extends the domain further thereby making this professional language applicable to a wider community.