A Knowledge-Based Approach to the Rapid Prototyping of Data Intensive Software