<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Knowledge Representation of Software Design Patterns: A Model Transformations Perspective</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Himesha</forename><surname>Wijekoon</surname></persName>
							<email>wijekoon@pef.czu.cz</email>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">Department of Information Engineering</orgName>
								<orgName type="department" key="dep2">Faculty of Economics and Management</orgName>
								<orgName type="institution">Czech University of Life Sciences Prague</orgName>
								<address>
									<settlement>Prague</settlement>
									<country key="CZ">Czech Republic</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Boris</forename><surname>Schegolev</surname></persName>
							<email>schegolev@pef.czu.cz</email>
							<affiliation key="aff1">
								<orgName type="department" key="dep1">Department of Information Engineering</orgName>
								<orgName type="department" key="dep2">Faculty of Economics and Management</orgName>
								<orgName type="institution">Czech University of Life Sciences Prague</orgName>
								<address>
									<settlement>Prague</settlement>
									<country key="CZ">Czech Republic</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Vojtěch</forename><surname>Merunka</surname></persName>
							<email>merunka@pef.czu.cz</email>
							<affiliation key="aff2">
								<orgName type="department" key="dep1">Department of Information Engineering</orgName>
								<orgName type="department" key="dep2">Faculty of Economics and Management</orgName>
								<orgName type="institution">Czech University of Life Sciences Prague</orgName>
								<address>
									<settlement>Prague</settlement>
									<country key="CZ">Czech Republic</country>
								</address>
							</affiliation>
							<affiliation key="aff3">
								<orgName type="department" key="dep1">Department of Software Engineering</orgName>
								<orgName type="department" key="dep2">Faculty of Nuclear Sciences and Engineering</orgName>
								<orgName type="institution">Czech Technical University in Prague</orgName>
								<address>
									<settlement>Prague</settlement>
									<country key="CZ">Czech Republic</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Knowledge Representation of Software Design Patterns: A Model Transformations Perspective</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">998484DE5FDCF9572D291FE67AA371ED</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T06:07+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Knowledge Representation</term>
					<term>Software Design Patterns</term>
					<term>Model Transformations</term>
					<term>Design Pattern Specification</term>
					<term>Model-driven Engineering</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Software design patterns help software developers to design robust and easy to maintain systems as they could be used to solve already identified problems in less time. These software design patterns are mostly textual descriptions which are introduced from books as catalogues. While senior developers tend to know about these patterns by experience, the novice developers need to refer necessary books to get knowledge about them. Therefore, it will be a great help for software development if there are tools to detect and recommend design patterns in software designs. The ultimate advantage will be to automatically apply a design pattern over an initial design to improve it. This will be a model transformation task under model driven architecture. As an initial step towards this goal, in this paper a survey has been done to study the existing knowledge representation techniques used for software design patterns. These representations help automatic reading and processing of software design patterns in order to build necessary CASE 1 tools. Finally, the best design pattern specification techniques are recommended for pattern-based model transformation.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>A single software program can be designed differently by different software developers. While one design is readable, robust and easy to maintain the other can be complex, hard to read and change. The quality of the design also depends on the experience of the developer. To overcome these issues software design patterns are used extensively in software engineering. Further software design patterns speed up the development without compromising the design quality. These patterns are documented and published by experienced and respected programmers <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b1">2,</ref><ref type="bibr" target="#b2">3,</ref><ref type="bibr" target="#b3">4]</ref>.</p><p>However there exists some issues about the usability of the design patterns. One of these is the difficulty for the software developers to learn about all necessary design patterns <ref type="bibr" target="#b4">[5]</ref>. It is also hard to memorize them all and it is inconvenient to refer these as and when you design software. To overcome these issues, researchers suggest that there should be some tool support regarding the application of software design patterns. For an example some researchers have created recommendation systems to suggest necessary design patterns <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b6">7]</ref>. There are also studies carried out to automatically detect the existence of design patterns in software designs/code <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b7">8,</ref><ref type="bibr" target="#b8">9]</ref>.</p><p>But the main challenge in this regard has been to model and represent design patterns in a machine-readable form. This paper presents a survey of such knowledge representation techniques used to represent design patterns with an emphasis towards model transformations. Finally, the best option is chosen to be used for authors' ultimate goal, which is to automate/semi-automate application of a design pattern upon a given software model/design.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Background</head><p>There is no common specification for documenting design patterns as different forms have been used so far by pattern authors. Fowler mentions some of these forms such as GoF, Portland Coplien, POSA and P of EAA <ref type="bibr" target="#b9">[10]</ref>. GoF Form is the most comprehensive and nicely structured form among these. However, GoF patterns are quite large with many pages of descriptions.</p><p>Software developers usually first come up with the models for the business case and then manually refine the models applying the selected software design patterns. For example, software engineers initially design the class diagram for the underlying business case. Then they refine the class diagram by applying necessary design patterns. However, developers should be initially aware of a particular design pattern and its applicability in order to benefit from it. A developer is also responsible for properly implementing the suggested design pattern in his context.</p><p>Model transformation techniques can be used to automate or semi-automate this process. They can be utilized to validate the manually refined models as well. Modeldriven engineering (MDE) is considered as a well-established software development methodology that uses abstraction to bridge the gap between the problem space and the software implementation <ref type="bibr" target="#b10">[11,</ref><ref type="bibr" target="#b11">12]</ref>. Model transformations constitute the essence of MDE <ref type="bibr" target="#b12">[13]</ref>.</p><p>3 Existing Knowledge Representation Techniques for Software Design Patterns</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Ontology based Approaches</head><p>These approaches are based on the concepts and technologies of semantic web such as Web Ontology Language (OWL) <ref type="bibr" target="#b13">[14]</ref> and Resource Description Framework (RDF) <ref type="bibr" target="#b14">[15]</ref>. The major contribution in this category for coming up with a representation for software design patterns is from Dietrich and Elgar <ref type="bibr" target="#b15">[16,</ref><ref type="bibr" target="#b16">17]</ref>. They have come up with an OWL ontology named Object Design Ontology Layer (ODOL) <ref type="bibr" target="#b17">[18]</ref>. Then they have extended the ontology by adding pattern refinement <ref type="bibr" target="#b17">[18]</ref>. Dietrich and Elgar have made a prototype of a Java client to show how ODOL can be used. This prototype software can access the ODOL based pattern definitions which are published online and can detect patterns in Java programs.</p><p>Initially ODOL has only supported structural properties of the design patterns. Later, Di Martino and Esposito have further extended ODOL to support dynamic behaviour of the design patterns and also to support cloud patterns <ref type="bibr" target="#b8">[9]</ref>. They have revised original ODOL to support pattern categorization. Structure of this augmented ODOL is shown in Figure <ref type="figure" target="#fig_0">1</ref>. Further OWL-S <ref type="bibr" target="#b17">[18]</ref> has been used to describe behaviour of the pattern. OWL-S defines how the different participants communicate and relate to each other dynamically. Then, they have used this representation of design patterns to come up with a rule-based procedure to automatically recognize design patterns in UML diagrams. Each design pattern is individually converted to a set of first-order logic rules in Prolog by the use of Thea framework <ref type="bibr" target="#b18">[19]</ref>. In parallel, the UML model which needs to be analyzed is converted to XMI (XML Metadata Interchange) with the use of existing tools and then converted to Prolog facts using their own tool. Then using Prolog based inference rules specified they could check whether a respective design pattern exists in the UML model under investigation. ODOL has been also used to represent design patterns in an attempt to automate the Sequence Diagram generation when realizing a particular design pattern <ref type="bibr" target="#b19">[20]</ref>. In this case, the OWL based representation of design patterns are converted into Java Expert System Shell (Jess) facts by using a conversion tool, called SweetRules. Then the Jess rule engine is used for the execution of design pattern rules to produce an output sequence diagram.</p><p>Ontology based representations of design patterns have following aspects <ref type="bibr" target="#b15">[16]</ref>.</p><p>• Formal definition of patterns • Machine readable representation • Modular design that supports the separation of schema and instances • Compatibility with standard web</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Formal Mathematical Logic based Approaches</head><p>Formal approaches represent design patterns based on mathematics and formal logic. One of the earliest such approaches is Language for Pattern Uniform Specification (LePUS) <ref type="bibr" target="#b20">[21]</ref>. This has only covered the structure of design patterns. On the contrary, Distributed Co-operation (DisCo) specification supports the behavioural aspect of patterns <ref type="bibr" target="#b21">[22]</ref>. Taibi and Ngo, who have been inspired from both LePUS and DisCo have come up with Balanced Pattern Specification Language (BPSL) <ref type="bibr" target="#b22">[23]</ref>. BPSL combines the First Order Logic (FOL) and Temporal Logic of Actions (TLA) to support both structural and behavioural aspects of design patterns.</p><p>Jeon et. al. have also come up with their own formal specification of design patterns <ref type="bibr" target="#b23">[24]</ref>. Inference rules are derived for design patterns and then these rules are saved as Prolog rules. This Prolog rule base is used to find candidate spots in Java program code to apply a certain design pattern.</p><p>Formal approaches have been emerged in order to remove ambiguity, support reasoning about patterns and facilitate automation. However as per Khwaja and Alshayeb, formal specifications are not popular in the software industry <ref type="bibr" target="#b24">[25]</ref>. They mention that formal specifications are hard to use with less tool support while requiring strong mathematical background from the user.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">UML Notation based Approaches</head><p>Design Pattern Modelling Language (DPML) is a visual language that can be used to represent software design patterns <ref type="bibr" target="#b25">[26]</ref>. DPML can be used along with UML as it also supports instantiation of the design patterns into UML design models. However, DPML does not support dynamic aspects of design and meta-data of design patterns. Other drawbacks are the lacking tool support and notational differences from UML.</p><p>Role Based Metamodeling Language (RBML) is another UML based pattern specification language <ref type="bibr" target="#b26">[27]</ref>. RBML specifies the pattern solutions as a specialization of the UML metamodel. RBML provides 3 types of specifications; Static, Interaction and StateMachine in order to handle both structural and behavioural aspects of the design patterns. Each RBML specification is an instance of the RBML metamodel. A tool called RBML-Pattern Instantiator (RBML-PI) has been also created to generate a UML model from an RBML pattern specification.</p><p>These approaches are complex and require dedicated tool support which is not abundant. Therefore, not many applications could be found in the literature leveraging these specifications. Further these approaches fail to represent the textual descriptions which describe design patterns.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4">XML Notation based Approaches</head><p>Khwaja and Alshayeb have come up with Design Pattern Definition Language (DPDL) based on XML (Extensible Markup Language) to share design patterns between developers <ref type="bibr" target="#b24">[25]</ref>. They have reviewed most of other techniques mentioned above and have chosen XML as it is popular and easy to understand. DPDL supports both structural and behavioural views of the design patterns. High level schema of DPDL is shown in Figure <ref type="figure" target="#fig_1">2</ref>. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Discussion</head><p>Meta-Object Facility (MOF) is an Object Management Group (OMG) standard for model-driven engineering <ref type="bibr" target="#b27">[28]</ref>. The MOF 2.0 Queries Views and Transformations (QVT) provides a standard for expressing model transformations. Judson et. al. have come up with an approach to automate pattern-based transformations leveraging the MOF 2.0 standards in meta-model level <ref type="bibr" target="#b28">[29]</ref>. Overview of their approach is depicted in Figure <ref type="figure" target="#fig_3">3</ref> The main drawback with their approach is the necessity to prepare a Source Pattern for each design pattern to be applied in a specific scenario. However, it is nice if the freedom is given to the developer to specify the Source Pattern. For an example the developer can choose artefacts from a UML model and ask the transformation engine to transform them by applying a certain design pattern. For an example he/she can mark a certain class in the UML diagram and apply Singleton pattern over it. Then transformation engine should be robust enough to transform the source model accordingly. However major challenge in this regard is to dynamically generate Transformation Schema and Transformation Constraints for a specific application of a design pattern. This will be not feasible unless the design patterns are represented in a machinereadable format. ODOL + OWL-S seems to be the best choice as per the review in section 4 and it is popularity. The represented design patterns will be not limited to a specific purpose as the definitions can be shared online for public access. Another advantage of this is the fact that OWL supports different syntaxes such as RDF/XML, OWL2/XML and Manchester. Therefore the developers get ample options to adjust according to their tool stack. DPDL also cannot be left out as it stands out with ease of use and shorter learning curve as a second choice.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Conclusion</head><p>In this paper, existing knowledge representation techniques for software design patterns were reviewed with a focus on using them for model transformations. Introductions about software design patterns and model transformations were also included to provide a complete overview of the subject domain. In the discussion, the importance of design pattern specification techniques for pattern based model transformations was presented with example usage. Finally, the best design pattern specification techniques were recommended for the tasks of model transformation.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 1 .</head><label>1</label><figDesc>Fig. 1.Augmented ODOL<ref type="bibr" target="#b7">[8]</ref> </figDesc><graphic coords="4,125.39,151.75,346.22,204.20" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig. 2 .</head><label>2</label><figDesc>Fig.2. DPDL high-level schema<ref type="bibr" target="#b24">[25]</ref>.</figDesc><graphic coords="6,181.99,151.75,229.74,277.58" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head></head><label></label><figDesc>. Initially, Source Model is converted into a meta-model named Source Pattern. Source Pattern is transferred into the Target Pattern using the Transformation Schema and Transformation Constraints. Hence the Transformation Pattern consists of three parts: Source Pattern, Transformation Schema, and Transformation Constraint. Finally, the Target Model is derived from Target Pattern.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Fig. 3 .</head><label>3</label><figDesc>Fig. 3. Transformation Overview<ref type="bibr" target="#b28">[29]</ref> </figDesc><graphic coords="7,137.27,187.75,324.58,123.86" type="bitmap" /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">Computer Aided Software Engineering</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML</title>
		<author>
			<persName><forename type="first">M</forename><surname>Grand</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1998">1998</date>
			<publisher>Wiley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">Design Patterns: Elements of Reusable Object Oriented Software</title>
		<author>
			<persName><forename type="first">E</forename><surname>Gamma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Helm</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Johnson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Vlissides</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1995">1995</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<ptr target="http://en.clouddesignpattern" />
		<title level="m">AWS cloud design patterns</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m" type="main">Cloud Design Patterns</title>
		<ptr target="https://docs.microsoft.com/en-us/azure/architecture/patterns/" />
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">An Expert System for Design Patterns Recognition</title>
		<author>
			<persName><forename type="first">O</forename><surname>Alsheiksalem</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Qattous</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IJCSNS International Journal of Computer Science and Network Security</title>
		<imprint>
			<biblScope unit="volume">17</biblScope>
			<biblScope unit="issue">1</biblScope>
			<date type="published" when="2017-01">2017. January 2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">A Question-Based Design Pattern Advisement Approach</title>
		<author>
			<persName><forename type="first">L</forename><surname>Pavlič</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Podgorelec</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Hericko</surname></persName>
		</author>
		<idno type="DOI">10.2298/CSIS130824025P</idno>
	</analytic>
	<monogr>
		<title level="j">Computer Science and Information Systems</title>
		<imprint>
			<biblScope unit="volume">11</biblScope>
			<biblScope unit="page" from="645" to="664" />
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Recommendation system for design patterns in software development: An DPR overview</title>
		<author>
			<persName><forename type="first">F</forename><surname>Palma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Farzin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Guéhéneuc</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Moha</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Third International Workshop on Recommendation Systems for Software Engineering (RSSE)</title>
				<meeting><address><addrLine>Zurich</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2012">2012. 2012</date>
			<biblScope unit="page" from="1" to="5" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">A rule-based procedure for automatic recognition of design patterns in UML diagrams</title>
		<author>
			<persName><forename type="first">Di</forename><surname>Martino</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Esposito</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename></persName>
		</author>
		<idno type="DOI">46.10.1002/spe.2336</idno>
	</analytic>
	<monogr>
		<title level="j">Software Practice and Experience</title>
		<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Detection of design patterns from class diagram and sequence diagrams using ontology</title>
		<author>
			<persName><forename type="first">A</forename><surname>Panich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Vatanawood</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE/ACIS 15th International Conference on Computer and Information Science (ICIS)</title>
				<meeting><address><addrLine>Okayama</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2016">2016. 2016</date>
			<biblScope unit="page" from="1" to="6" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<title level="m" type="main">Writing Software Patterns</title>
		<author>
			<persName><forename type="first">M</forename><surname>Fowler</surname></persName>
		</author>
		<ptr target="https://www.martinfowler.com/articles/writingPatterns.html" />
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">Model-driven software development: technology, engineering, management</title>
		<author>
			<persName><forename type="first">T</forename><surname>Stahl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Voelter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Czarnecki</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2006">2006</date>
			<publisher>John Wiley &amp; Sons</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">The State of Practice in Model-Driven Engineering</title>
		<author>
			<persName><forename type="first">J</forename><surname>Whittle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Hutchinson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Rouncefield</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Software</title>
		<imprint>
			<biblScope unit="volume">31</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="79" to="85" />
			<date type="published" when="2014-05">2014. May-June</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Model transformation: the heart and soul of model driven software development</title>
		<author>
			<persName><forename type="first">S</forename><surname>Sendall</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Kozaczynski</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Softw</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="42" to="45" />
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<ptr target="http://www.w3.org/TR/OWL/" />
		<title level="m">Web Ontology Language (OWL), W3C Recommendation</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<ptr target="http://www.w3c.org/RDF/" />
		<title level="m">Resource Description Framework (RDF), W3C Recommendation</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">A formal description of design patterns using OWL</title>
		<author>
			<persName><forename type="first">J</forename><surname>Dietrich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Elgar</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the ASWEC 2005</title>
				<meeting>the ASWEC 2005</meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Towards a Web of Patterns</title>
		<author>
			<persName><forename type="first">J</forename><surname>Dietrich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Elgar</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Web Semantics</title>
		<imprint>
			<biblScope unit="page" from="108" to="116" />
			<date type="published" when="2007-06">2007. June 2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">OWL-s: Semantic markup for web services</title>
		<author>
			<persName><forename type="first">B</forename><surname>Mark</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Jerry</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Ora</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Drew</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Sheila</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Srini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Massimo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Bijan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Terry</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Evren</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Naveen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Katia</surname></persName>
		</author>
		<ptr target="http://www.w3.org/Submission/2004/SUBM-OWL-S-20041122.WorldWideWebConsortium" />
		<imprint>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">Thea A web ontology language-owl library for [swi] prolog</title>
		<author>
			<persName><forename type="first">V</forename><surname>Vassiliadis</surname></persName>
		</author>
		<ptr target="http://www.semanticweb.gr/thea/" />
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">A design pattern knowledge base and its application to sequence diagram design</title>
		<author>
			<persName><forename type="first">B</forename><surname>Shakya</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Nantajeewarawat</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Computer Science and Engineering Conference (ICSEC)</title>
				<meeting><address><addrLine>Nakorn Pathom</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2013">2013. 2013</date>
			<biblScope unit="page" from="179" to="184" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">eLePUS -a language for specification of software design patterns</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">R</forename><surname>Raje</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Chinnasamy</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SAC &apos;01: Proceedings of the 2001 ACM symposium on applied computing</title>
				<meeting><address><addrLine>Las Vegas, Nevada, United States</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="600" to="604" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Formalizing Design Patterns</title>
		<author>
			<persName><forename type="first">T</forename><surname>Mikkonen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 20th international conference on Software engineering (ICSE &apos;98)</title>
				<meeting>the 20th international conference on Software engineering (ICSE &apos;98)<address><addrLine>USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="1998">1998</date>
			<biblScope unit="page" from="115" to="124" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Formal specification of design pattern combination using BPSL</title>
		<author>
			<persName><forename type="first">T</forename><surname>Taibi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">C</forename><surname>Ngo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Information and Software Technology</title>
		<imprint>
			<biblScope unit="volume">45</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="157" to="170" />
			<date type="published" when="2003">2003. 2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">An automated refactoring approach to design pattern-based program transformations in Java programs</title>
		<author>
			<persName><forename type="first">S</forename><surname>Jeon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Lee</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Bae</surname></persName>
		</author>
		<idno type="DOI">10.1109/APSEC.2002.1183003</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Ninth Asia-Pacific Software Engineering Conference</title>
				<meeting>the Ninth Asia-Pacific Software Engineering Conference</meeting>
		<imprint>
			<date type="published" when="2002">2002</date>
			<biblScope unit="page" from="337" to="345" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Towards design pattern definition language</title>
		<author>
			<persName><forename type="first">S</forename><surname>Khwaja</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Alshayeb</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software: Practice and Experience</title>
		<imprint>
			<biblScope unit="volume">43</biblScope>
			<biblScope unit="issue">7</biblScope>
			<biblScope unit="page" from="747" to="757" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">Design pattern modelling and instantiation using DPML</title>
		<author>
			<persName><forename type="first">D</forename><surname>Mapelsden</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Hosking</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Grundy</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Fortieth International Conference on Tools Pacific</title>
				<meeting>the Fortieth International Conference on Tools Pacific<address><addrLine>Sydney, Australia</addrLine></address></meeting>
		<imprint>
			<publisher>Australian Computer Society: Inc</publisher>
			<date type="published" when="2002">2002</date>
			<biblScope unit="page" from="3" to="11" />
		</imprint>
	</monogr>
	<note>CRPIT &apos;02</note>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Role-Based Metamodeling Language for Specifying Design Patterns</title>
		<author>
			<persName><forename type="first">D</forename><surname>Kim</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Design Pattern Formalization Techniques</title>
				<meeting><address><addrLine>Pennsylvania, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IGI Global</publisher>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="183" to="205" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<monogr>
		<title level="m">OMG: Meta Object Facility Specification</title>
				<imprint/>
	</monogr>
	<note>version 2.5.1</note>
</biblStruct>

<biblStruct xml:id="b28">
	<monogr>
		<title level="m" type="main">Specifying model transformations at the metamodel level</title>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">R</forename><surname>Judson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>France</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">L</forename><surname>Carver</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
