Disconnecting components from programming languages is far from trivial. Interoperability is ok, but when it comes to sw evolution (read maintenance) you obviously have to step back to the pl level. (Unless better approaches arise. This is part of my research agenda...)|
Having sort of a DBA past, I like your comment re databases. Alas, I think things are much more complicated than what you imply.
One reason dbms are so fundamental for the way we view sw is beacuse they are (a) very well encapsulated and (b) have a standardized interface (SQL etc.) Not coincidently, this standardized interface is a language.
These issues are the main problems with other components. Solving this (esp. b, since a is basically something we study since Parnas (1972)) is, I think, a very important goal.
My belief is that solutions will involve language evolution. I think there are some very cool ideas that should be investigated. Some of them are related to things discussed here in the past like DbC, generic programming and typing.
It is a shame that a crippled language like Java (esp. one with no parametrized units) sets the components agenda. I much prefer to take the ML design as a starting point.