Constructing real-time collaborative software engineering tools using CAISE, an architecture for supporting tool development