Despite advances in implementation technologies of distributed systems during the last few years, little progress has been made on specification techniques for describing distributed systems in software development practice. The contribution of this paper is a UML-based approach for specifying concurrent behavior and timing constraints--often inherent characteristics of distributed systems. We propose a novel approach for specifying concurrent behavior of reactive systems in OCL and several constructs for precisely describing timing constraints on UML statemachines. More precisely, we show how we enriched operation schemas--pre- and postcondition assertions of system operations written in OCL--by extending the current calculus with constructs for asserting synchronization on shared resources. Also, we describe how we use new and existing constructs for UML statemachines to specify timing constraints on the system interface protocol (SIP)--a restricted form of UML protocol statemachine. Finally, we discuss how both the extended system operation and SIP models are complementary.