08.07.2015 Views

Rapid Development of Custom Software Architecture Design ...

Rapid Development of Custom Software Architecture Design ...

Rapid Development of Custom Software Architecture Design ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Style naiveClientServerStyle = {// define the style's vocabulary, port and role interfaces firstPort Type naiveClientPortT = {...};Port Type naiveServerPortT = {...};Role Type clientSideRoleT = {...};Role Type serverSideRoleT = {...};// define the generic client vocabulary elementComponent Type naiveClientT = {Port sendRequest : naiveClientPortT;};// define the generic server vocabulary elementComponent Type naiveServerT = {Port receiveRequest : naiveServerPortT;Property multiThreaded : boolean >;Property max-concurrent-requests : int;};// define the generic binary client-server connectorConnector Type csConnT = {Role clientSide : clientSideRoleT;Role serverSide : serverSideRoleT;Property blocking : boolean >;Invariant size(self.roles) == 2; // all csConnT's are binary connectors};// limit the vocabulary types used in this style to naiveClientT's, naiveServerT's and csConnT connectors.invariant forall comp : component in self.components |(declaresType(comp, naiveClientT) AND satisfiesType(comp, naiveClientT))OR (declaresType(comp, naiveServerT) AND satisfiesType(comp, naiveServerT));invariant forall conn : connector in self.connectors |declaresType(conn, csConnT) AND satisfiesType(conn, csConnT);// specify topological attachment constraints:invariant forall c1 : component in self.components |forall c2 : component in self.components | connected(c1,c2) ->(declaresType(c1,naiveClientT) AND declaresType(c2,naiveServerT))OR (declaresType (c1,naiveServerT) AND declaresType(c2,naiveClientT));// make sure that all <strong>of</strong> the attachments are valid...invariant forall a : attachment in self.attachments |(declaresType(a.port, naiveClientPortT) -> declaresType(a.role, clientSideRoleT))AND (declaresType(a.port, naiveServerPortT) -> declaresType(a.role, serverSideRoleT));};)LJXUH1DwYHFOLHQWVHUYHUVW\OHVSHFLILFDWLRQH[DPSOHLOOXVWUDWHVVW\OHVWUXFWXUH

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!