@namespace(uri="comps", prefix="")
package comps;

class Model extends Component {
	val Component[*] components;
	val Connector[*] connectors;
}

class Component {
	attr String name;
	val Port[*] inPorts;
	val Port outPort;
}

class Port {
	attr String name;
	attr String type;
	ref Connector[1]#source outgoing;
	ref Connector[1]#target incoming;
}

class Connector {
	ref Port[1]#outgoing source;
	ref Port[1]#incoming target;
}