Separating Soft Real-Time from Functionality Concerns in Complex Object-Oriented Applications