Persistent programming systems are designed to provide technology for
the construction and maintenance of large, long-lived object-based app
lication systems. Many successful prototypes have been constructed and
a large body of application building experience is emerging. Three co
mmon attributes of persistent systems are persistent linkage, strong t
yping, and the referential integrity of data. Persistent linkage allow
s persistent objects to be included in the binding process. Strong typ
ing guarantees that objects are only manipulated in a manner consisten
t with their type system descriptions. Referential integrity ensures t
hat once a link (reference) to an object is established, its identity
is unique and it persists over time. As a consequence no object can be
deleted while another refers to it. Here we examine some of the advan
tages of providing software engineering environments within a persiste
nt object system with strong typing and referential integrity. It is s
hown how the integration of system specifications, programs, configura
tion management tools and documentation all within a single persistent
environment leads to powerful new techniques. This new power is achie
ved by sharing structured persistent data across the hitherto enclosin
g boundaries of system components.