Model-Driven Engineering (MDE) harbors the promise of developing software-based systems with little or no coding. Instead of coding, it is envisioned that software engineers build models that are automatically translated into code. The modeling notation of choice for model-driven methods is the Unified Modeling Language (UML). In UML, modelers are forced to separately model structure (class diagrams), behavior (activity, sequence diagrams), state (statecharts), and integrity constraints (OCL). This separation of models makes it difficult to understand the overall behavior of the resulting system. We propose a visual modeling notation, called visual contracts, for system specifications, which incorporate the four aspects (i.e., behavioral, structural, state and constraints) in a single diagram. From a UML point of view, this is a combination of an activity diagram, a class diagram, a statechart, and OCL code. Proposing a unified, diagrammatic notation for contracts requires advances in the following three dimensions: visual, formal and system-centric. We examine the current state of research in modeling notations for system specifications, in contracts and in visual notations. We then describe the main contribution of the thesis, the concept of Visual Contracts. Visual Contracts condense the four components of the specification –i.e. behavior, structure, state, and constraints– in a compact form. Visual Contracts contain all the elements required for a specification. Visual Contracts are based on set theory. They are formalized in Alloy. As this is a complementary approach to traditional, analytic specification techniques, we are able to express features that are difficult to express using notations such as UML. We consider that visual contracts, as a complement to UML, can be one of the aspects that can help model-driven approaches to fulfill their promise.