Иерархия модулей как подсистема
Каждый программный модуль (процедура, функция пакет) должен иметь уникальное имя.
Бывают случаи, когда происходит быстрое заполнение пространства имен.
Например, при проектировании большой системы достаточно сложно обеспечить уникальность имен и при этом сохранить их смысловое значение, а в случаях когда разные части проекта разрабатываются разными программистами (или даже коллективами программистов) риск получения коллизии имен увеличивается еще больше.
В подобных ситуациях, используя концепцию дочерних модулей Ады, можно выделить каждую отдельно разрабатываемую подсистему в самостоятельную иерархию модулей.
При этом, каждая подсистема будет иметь свой собственный корневой пакет с уникальным именем.
package Root is
-- корневой пакет может быть пустым end Root; |
Поскольку имя корневого пакета уникально, то имена дочерних модулей иерархии также будут уникальны, что, в результате, минимизирует вероятность коллизии имен.
Кроме того, такой прием является удобным средством разделения большого проекта на логически самостоятельные составные части.
Примером использования подобного подхода может служить стандартная библиотека Ады, которая предстявляется как набор дочерних модулей трех корневых пакетов: Ada, Interfaces и System.