In a similar vein to John Carter's recent submission, here's an attempt to attack the complexity problem: Out of the tar pit
Abstract: Complexity is the single major difficulty in the successful development of large-scale software systems. Following Brooks we distinguish accidental from essential difficuly but disagree with his premise that most complexity remaining in contemporary systems is essential. We identify common causes of complexity and discuss general approaches which can be taken to eliminate them where they are accidental in nature. To make things more concrete we then give an outline for a potential complexity-minimizing approach based on functional programming and Coddâ€™s relational model of data.
They basically advocate minimising mutable state, moving any mutable state that remains into relations, and specifying the behaviour (i.e. manipulation of relational data) in a declarative/logical/purely-functional language.
Pros: the first half of the paper is a reasonable review of the types and causes of complexity in software.
Cons: lack of any implementation, other than a Scheme prototype of the relational bits, I think (see footnote 25). No source code. Lack of detail about interfacing with external systems.
Here's a link to Ben Moseley's FRP page, where you can find the paper, plus presentation slides and a discussion group.