Requirement analysis continues to be one of the most critical and challenging phases during the software development process. Many object-oriented methodologies identify three primary objects during requirements analysis. These objects are control - coordinate the activities of the system, boundary - an interface for actors external to the system, and entity - for the persistent data in the system. The pervasiveness of technology to support complex communication services has resulted in a need to model communication concerns early in the software development process. In this paper we introduce the communication object during requirement analysis to model the communication needs of an application. Communication objects assist the developer in identifying and specifying communication services, including the constraints placed on data being moved between subsystems. We present heuristics on how communication objects are identified and modeled during requirements analysis. To show the benefits of our approach communication objects are translated into specialized models and executed on a Communication Virtual Machine (CVM) prototype using a model-driven approach.