Doing Hard Time: Developing Real-Time Systems with UML, Objects, Frameworks, and Patterns