Visualizing Design Patterns With A UML Profile

Size: px
Start display at page:

Download "Visualizing Design Patterns With A UML Profile"

Transcription

1 Visualizing Design Patterns With A UML Profile Jing Dong and Sheng Yang School of Engineering and Computer Science University of Texas at Dallas Richardson, TX 75083, USA fjdong,syangg@utdallas.edu Abstract A design pattern describes a general solution to a design problem that recurs repeatedly in many projects. Software designers adapt the pattern solution to their specific project. Design patterns are usually modeled using UML. However, UML does not keep track of pattern-related information when a design pattern is applied or composed with other patterns. Thus, it is hard for a designer to identify design patterns in software system designs. The benefits of design patterns are compromised because the designers cannot communicate with each other in terms of the design patterns they use and their design decisions and tradeoffs. In this paper, we present the essential features of a new member of the UML language family that supports working with object-oriented design patterns. This UML extension allows the explicit representation of design patterns in software designs. We also discuss some of the relevant aspects of the UML profile which is based on standard UML extension mechanisms. A case study shows how it can be used to assist pattern-based software development. 1 Introduction Design patterns [14, 21, 8, 6, 13] are commonly used in designing large-scale software systems. They have become increasingly popular among software developers since the early 1990s. A pattern is a recurring solution to a standard problem. It has a context in which it applies. Design patterns help developers communicate architectural knowledge, help people learn a new design paradigm, and help new developers ignore traps and pitfalls that have traditionally been learned only by costly experience. Design patterns are usually modeled and documented in natural languages and visual languages, such as the Unified Modeling Language (UML) [3, 22, 15]. UML is a general-purpose language for specifying, constructing, visualizing, and documenting artifacts of software-intensive systems. It provides a collection of visual notations to capture different aspects of the system under development. Visual programming [5, 4] more than one dimension, such as spatial and time relationships, to convey program semantics. A collection of these dimensions is a visual expression that is described by graphical notations including diagrammatic, iconic, and chart-based notations. A graphical notation can be beneficial in many ways. First, it can be used for conveying complex concepts and models, such as object-oriented design and software architecture [16]. Notations like UML are very good at communicating software designs. Second, it can help people grasp large amount of information more quickly than straight text. Third, as well as being easy to understand, it is normally easier to learn drawing diagrams than writing text because diagrams are more concrete and intuitive than text written in formal or informal languages. Fourth, graphical notations cross language boundary and can be used to communicate by people from different nationalities. The standardization efforts of the UML offer a chance to harness UML as notational basis for visualizing design patterns. However, the constructs provided by the standard UML are not enough to visualize design patterns in their applications and compositions. The model elements, such as classes, operations, and attributes, in each design pattern usually play certain roles that are manifested by their names. The application of a design pattern may change the names of its classes, operations, and attributes to the terms in the application domain. Thus, the role information of the pattern is lost. It is not obvious which model elements participate in this pattern. UML does not track pattern-related information when a pattern is applied in a software system. Using an example, we have shown that it is difficult to identify design patterns in a system containing five patterns in [11]. Thus, design patterns are implicit in software system designs, which have several problems: first, software developers can only communicate at the class level instead of the pattern level since they do not have patternrelated information in system designs. Second, each pattern often documents some ways for future evolutions, which are 1

2 buried in system designs. Third, it may require considerable efforts on reverse-engineering design patterns from software system designs [19, 18]. UML provides extension mechanisms that allow us to define appropriate labels and markings for the UML model elements. In order to retain the pattern-related information even after the pattern is applied or composed with other patterns, we define an extension to UML. In this extension, pattern-related information is explicit so that a design pattern can be easily identified when it is applied and composed. The extensions have been defined mainly by applying the UML built-in extensibility mechanisms, such as stereotypes, tagged values, and constraints. A case study shows how it can be used to assist pattern-based software development. The remainder of this paper is organized as follows. In the next section, we provide a brief introduction to the UML built-in extensibility mechanisms. In Section 3, we present our extensions to UML in terms of a profile and provide an example. In Section 4, we use a case study to illustrate our approach. In the last two sections, we discuss related work and conclude this paper. + extendedelement + constraintedelement {ordered} ModelElement (from core) + referencevalue 1 + modelelement + referencetag GeneralizaleElement (from core) + constraint + stereotypeconstraint Constraint + taggedvalue TaggedValue datavalue : String[] /modelelement : ModelElement /type : TagDefinition /referencevalue: ModelElement + typedvalue + stereotype Stereotype Icon : Geometry base Class : Name [1.] /definedtag : TagDefinition /StereotypeConstraint : Constraint constrainedstereotype + owner + definedtag TagDefinition tagtype : Name multiplicity : Multiplicity /owner : Stereotype 1 + type Figure 1: UML Profile Meta Model 2 UML Extension Mechanisms UML is a graphical language for visualizing, specifying, constructing, and documenting the artifacts of a software-intensive system. It is a multi-purpose language with many notational constructs. UML provides extension mechanisms to allow the user to model software systems if the current UML technique is not semantically sufficient to express the systems. These extension mechanisms are stereotypes, tagged values, and constraints. Stereotypes allow the definition of extensions to the UML vocabulary, denoted by <<stereotype-name>>. The base class of a stereotype can be different model elements, such as Class, Attribute, and Operation. A stereotype groups tagged values and constraints under a meaningful name. When a stereotype is branded to a model element, the semantic meaning of the tagged values and the constraints associated with the stereotype are attached to that model element implicitly. A number of possible of stereotypes have been classified in [2]. Tagged values extend model elements with new kinds of properties. Tagged values may be attached to a stereotype, and this association will navigate to the model element to which the stereotype is branded. Basically, the format of a tagged value is a pair of name and an associated value, i.e., fname=valueg. Note that the tagged values attached to a stereotype must be compatible with the constraints of the stereotype s base class. Constraints add new semantic restrictions to a model element. Typically constrains are written in the Object Constraint Language (OCL) [25]. Constraints attached to a stereotype imply that all model elements branded by that stereotype must 2

3 obey the semantic restrictions which constraints state. Note that the constraints attached to a stereotyped model element must be compatible with the constraints of the stereotype and the base class of the model element. A profile is a stereotyped package that contains model elements that have been customized for a specific domain or purpose by extending the metamodel using stereotypes, tagged values, and constraints. A profile may specify model libraries on which it depends and the metamodel subset that it extends. Figure 1 shows the relationships among stereotype, constraint, tagged value, and model element, where the stereotype, constraint, and tagged value can apply to a model element, and add corresponding semantics to that model element. Constraints and tagged values can also apply to a stereotype and the corresponding semantics added to the stereotype will navigate to a model element when the stereotype is branded to the model element. 3 The Proposed Extensions This section introduces the UML extensions through an example. It summarizes the new stereotypes, tagged values and constraints, and presents a general description of their semantics. It also presents a description of how the UML extensibility mechanisms have been applied in the definition of a UML profile for design patterns. 3.1 Motivating Example Figure 2 shows a system design that manages the connections to different types of databases, such as Oracle and MySQL ( This system provides a connection pool for accessing each type of database. The connect pool restricts a limit number of accesses to a database and re connections to the database. The system has the capability to handle different types of database connections. ConnectionPool createconnection() OracleConnectionPool OracleConnection createconnection() OracleConnection MySQLConnectionPool MySQLConnection createconnection() MySQLConnection Connection Figure 2: Connection Pool for Database The ConnectionPool class defines an interface for the creation of a connection pool for the appropriate type of database. The concrete classes, OracleConnectionPool and MySQLConnectionPool, use the createconnection operation to create the corresponding connections, OracleConnection and MySQLConnection, respectively. All connection instances have the same interface which is defined in the Connection class. There are two design patterns, Abstract Factory and Singleton, applied in the system design 1. The ConnectPool, Ora- 1 To illustrate our approach, we use this small example. It may be not hard, if not obvious, to discover the two design patterns used in this example. We have shown that it is not easy to identify design patterns in a larger system design with five patterns in [11]. 3

4 cleconnectionpool and MySQLConnectionPool classes play the roles of abstract and concrete factories, whereas the Connection, OracleConnection and MySQLConnection classes play the roles of abstract and concrete products in the Abstract Factory pattern, respectively. OracleConnectionPool and MySQLConnectionPool are the Singleton classes, which restrict only one connection pool for each database. While pattern-related information is not explicit in the class diagrams, e.g., Figure 2, without further textual explanation, several graphical notations have been proposed. Vlissides [23] described a Venn diagram-style annotation for identifying design pattern. Different patterns are differentiated with different levels of shading. All classes that participate in the same pattern are shaded with the same color. Although this approach may allow identifying a small number of patterns, it is hard to scale up. Moreover, the overlapping regions may become hard to distinguish when some classes play several roles in different patterns. In addition, this notation cannot represent roles a model element, e.g., a class, an operation, and an attribute, plays in a design pattern. UML Collaboration notation [15] has been proposed, which dashed ellipses with pattern names inside to denote patterns and dashed lines with participant names to associate patterns with their participating classes. The shortcoming of this notation is pattern information is mixed with class structure, making hard to distinguish both. The dashed lines may also twist together when the number of patterns increases. Furthermore, this notation can only represent roles a class, not an operation or an attribute, plays in a design pattern. Vlissides [23] described a pattern:role annotation which a shaded box containing the pattern and/or participant name(s) to associate with the corresponding class. The drawback of this notation is that it cannot represent roles an operation (or attribute) plays in a design pattern. Explicitly representing this kind of information is very important because many patterns are based on polymorphism, delegation and aggregation, which are often presented based on the relationships among operations and attributes. Explicit representation of the key operations and attributes can not only help on the application (instantiation) of a pattern because the pattern impose some restrictions through the relationship among operations and attributes, but also assist on the traceability of a pattern since it allows us to trace back to the design pattern from a complex design diagram. In [10], we have provided detailed descriptions of those previous notations and proposed the tagged pattern notation by extending UML. This notation can visualize different model elements. We have described the notation informally in [10]. In this paper, we will provide a formal description of the tagged pattern notation in terms of a UML profile. 3.2 UML Profile for Patterns There are two options to extend the UML to explicitly visualize pattern-related information usually hidden in UML class diagrams. The first option is to define three stereotypes: PatternClass, PatternAttribute and PatternOperation, whose base classes are Class, Attribute and Operation, respectively. Each stereotype has three tagged values. The three tagged values of the PatternClass (PatternAttribute and PatternOperation) stereotype are PatternName, PatternInstance and ClassRole (AttributeRole and OperationRole). The tagged value PatternInstance has the type of integer. All other tagged values have the type of string. The second option is to define three stereotypes: PatternClass, PatternAttribute and PatternOperation, whose base classes are Class, Attribute and Operation, respectively. Unlike the first option where there are multiple tagged values defined in each stereotype, there is only one tagged value defined in each stereotype in the second option. The name of the tagged value is pattern and the value of the tagged value is a tuple in the format of <name:string [instance:integer], role:string> 2. The name in the tuple is the pattern name in which a model element, such as class, attribute or operation, participates. The name field of PatternAttribute and PatternOperation can be omitted if the class plays a role only in one pattern, and omitting the name of PatternAttribute and PatternOperation will not create any ambiguity. But the name field of PatternClass is mandatory. Sometimes there are more than one instance of a pattern in the system, and it is useful to distinguish the instances. The instance in the tuple indicates the instance of the pattern the model element participates. The role in the tuple shows the role that a model element plays in the pattern. There are two advantages of the second option: first, the first option attaches redundant information to the class diagram, which makes the class diagrams complicated especially when a class participates in several design patterns. Pattern-related information should be minimized in the class diagrams for readability and scalability. Second, the first option is not supported by the commonly used UML tools, such as Rational Rose. Therefore, we choose the second option to define the 2 For simplicity, we omit the name of the tagged value such that each tagged value is represented by f<name[instance], role>g instead of fpattern = <name[instance], role>g. 4

5 Stereotype Applies To Definition <<PatternClass>> Class Indicate that this class is a part of a design pattern <<PatternAttribute>> Attribute Indicate that this attribute is a part of a design pattern <<PatternOperation>> Operation Indicate that this operation is a part of a design pattern Table 1: Stereotypes Tagged Value Applies To Definition Name Value pattern <name[instance],role> <<PatternClass>> Indicate that the attached class plays the role of role in the instance of a design pattern named name pattern <name[instance],role> <<PatternAttribute>> Indicate that the attached attribute plays the role of role in the instance of a design pattern named name pattern <name[instance],role> <<PatternOperation>> Indicate that the attached operation plays the role of role in the instance of a design pattern named name Table 2: Tagged Values complete set of the UML profile, the stereotypes, the tagged values, the constraints, and the virtual meta model. As introduced previously, three stereotypes, PatternClass, PatternAttribute and PatternOperation are defined in Table 1 to explicitly visualize design patterns in class diagrams. The PatternClass stereotype is used to attach to a class that plays a role in a design pattern. Similarly, the PatternAttribute and PatternOperation stereotypes are used to attach to an attribute and an operation, respectively, which plays certain role in a design pattern. Each stereotype also defines one tagged value as shown in Table 2. These tagged values define exactly what role a class, an attribute or an operation plays in a design pattern. All tagged values have the same name pattern, but apply to different stereotypes. These stereotypes, together with their tagged values and constraints, form a new UML profile for design pattern. In the next section, we will provide detailed semantics of these stereotypes and their tagged values and constraints. 3.3 Semantics The PatternClass stereotype is defined to be branded to a class that plays a role in a design pattern. The particular role this class plays is defined in the tagged value with the format <name[instance],role>, where name specifies the name of the design pattern, instance specifies to which instance of the pattern the class belongs, and role specifies the role the class plays in the pattern. For instance, the OracleConnectionPool class plays the role of ConcreteFactory in the Abstract Factory pattern in the example shown in Section 3.1. Then, the stereotype <<PatternClassf<Abstract Factory[1], ConcreteFactory>g>> is branded to the OracleConnectionPool class, where the branded class participates in the first instance of the Abstract Factory pattern and plays the role of ConcreteFactory in the pattern. A class may simultaneously play different roles in different patterns. In this case, a new tagged value with the same format as name[instance],role is branded to the class for each additional pattern it participates. For instance, the Oracle- ConnectionPool class also plays the role of Singleton in the Singleton pattern in the example shown in Section 3.1. Then, the stereotype <<PatternClassf<Abstract Factory[1], ConcreteFactory> <Singleton[1], Singleton>g>> is branded to the OracleConnectionPool class, where the branded class also participates in the first instance of the Singleton pattern and plays the role of Singleton. The PatternClass stereotype and its tagged value are defined in Table 1 and Table 2, respectively. The constraint of the PatternClass stereotype is defined formally in OCL as follows: <<PatternClass>>: self.baseclass = Class and self.taggedvalue -> exists (tv:taggedvalue tv.name = "pattern" and tv.value = "tuple<name:string[instance:integer],role:string>") 5

6 where the base class of this stereotype is Class and the stereotype has a tagged value with the name of pattern and the value of name[instance],role. The types of name and role are string and the type of instance is integer. The PatternAttribute stereotype is defined to be branded to an attribute that plays a role in a design pattern. The particular role this attribute plays is defined in the tagged value with the format <name[instance], role>, where name specifies the name of the design pattern, instance specifies which instance of the pattern the attribute belongs, and role specifies the role the attribute plays in the pattern. For instance, the OracleConnection attribute plays the role of UniqueInstance in the Singleton pattern in the example shown in Section 3.1. Then, the stereotype <<PatternAttributef<Singleton[1], UniqueInstance>g>> is branded to the OracleConnection attribute, which participates in the first instance of the Singleton pattern and plays the role of UniqueInstance in the pattern. An attribute may simultaneously play different roles in different patterns. In this case, a new tagged value with the same format as name[instance],role is branded to the attribute for each additional pattern it participates. The PatternAttribute stereotype and its tagged value are defined in Table 1 and Table 2, respectively. The constraint of the PatternAttribute stereotype is defined formally in OCL as follows: self.baseclass = Attribute and self.taggedvalue -> exists (tv:taggedvalue tv.name = "pattern" and tv.value = "tuple <name:string[instance:integer], role:string>") where the base class of this stereotype is Attribute and the stereotype has a tagged value with the name of pattern and the value of name[instance],role. The types of name and role are string and the type of instance is integer. The PatternOperation stereotype is defined to be branded to an operation that plays a role in a design pattern. The particular role this operation plays is defined in the tagged value with the format as <name[instance],role>, where the value of name specifies the name of the design pattern, the value of instance specifies which instance of the pattern the operation belongs, and the value of role specifies the role the operation plays in the pattern. For instance, the create- Connection operation plays the role of CreateProduct in the Abstract Factory pattern in the example shown in Section 3.1. Then, the stereotype <<PatternOperationf<Abstract Factory[1], CreateProduct>g>> is branded to the createconnection operation, where the branded operation participates in the first instance of the Abstract Factory pattern and plays the role of CreateProduct in the pattern. An operation may simultaneously play different roles in different patterns. In this case, a new tagged value with the same format as name[instance],role is branded to the operation for each additional pattern it participates. For instance, the createconnection operation also plays the role of Instance in the Singleton pattern in the example shown in Section 3.1. Then, the stereotype <<PatternOperationf<Abstract Factory[1], CreateProduct> < Singleton[1], Instance>g>> is branded to the createconnection operation, where the branded operation also participates in the first instance of the Singleton pattern and plays the role of Instance. The PatternOperation stereotype and its tagged value are defined in Table 1 and Table 2, respectively. The constraint of the PatternOperation stereotype is defined formally in OCL as follows: self.baseclass = Operation and self.taggedvalue -> exists (tv:taggedvalue tv.name = "pattern" and tv.value = "tuple <name:string[instance:integer], role:string>") where the base class of this stereotype is Operation and the stereotype has a tagged value with the name of pattern and the value of name[instance],role. The types of name and role are string and the type of instance is integer. 3.4 Constraints There are several constraints for the stereotypes and tagged values we defined in the previous section. 1. All pattern names found in the << PatternOperation >> and << PatternAttribute >> stereotypes should also be in the << PatternClass >>. self.taggedvalue->exists(tv:taggedvalue,pc:patternclass tv.value.name = pc.taggedvalue.value.name) self.taggedvalue->exists(tv:taggedvalue,pc:patternclass tv.value.name = pc.taggedvalue.value.name) 6

7 2. The number of patterns in the <<PatternOperation>> and <<PatternAttribute>> must be less than or equal to that of <<PatternClass>>. It is often the case that a class plays multiple roles in several patterns. However each operation or attribute may not participate all patterns in which its class participates. Sometimes, an operation or an attribute of a class plays roles in some patterns, other operations or attributes of the same class may play roles in other patterns. self.taggedvalue.value->size <= PatternClass.taggedValue.value->size self.taggedvalue.value->size <= PatternClass.taggedValue.value->size 3. In the tagged value with format as < name[instance], role >, the name field of the tagged value in << PatternClass >> is mandatory. <<PatternClass>>: self.taggedvalue.value.name -> notempty 4. The role fields of the tagged values in << PatternClass >>, << PatternAttribute >> and << PatternOperation >> are mandatory. <<PatternClass>>: self.taggedvalue.value.role -> notempty self.taggedvalue.value.role -> notempty self.taggedvalue.value.role -> notempty 5. The name field of << PatternOperation >> and << PatternAttribute >> can be omitted. self.taggedvalue.value.name -> isempty or self.taggedvalue -> exists (tv:taggedvalue tv.value.name -> notempty) self.taggedvalue.value.name -> isempty or self.taggedvalue -> exists (tv:taggedvalue tv.value.name -> notempty) 6. The name field of the tagged value in <<PatternAttribute>> and <<PatternOperation>> can be omitted if no ambiguity is added into the class diagram. If this is the case, it implies that <<PatternAttribute>> and <<PatternOperation>> have the same name as <<PatternClass>>. self.taggedvalue.value.name -> isempty implies self.taggedvalue.value.name = PatternClass.taggedValue.value.name self.taggedvalue.value.name -> isempty implies self.taggedvalue.value.name = PatternClass.taggedValue.value.name 7. The instance field of << PatternClass >>, << PatternOperation >> and <<PatternAttribute>> can be omitted. <<PatternClass>>: self.taggedvalue.value.instance -> isempty or self.taggedvalue -> exists (tv:taggedvalue tv.value.instance -> notempty) self.taggedvalue.value.instance -> isempty or self.taggedvalue -> exists (tv:taggedvalue tv.value.instance -> notempty) self.taggedvalue.value.instance -> isempty or self.taggedvalue -> exists (tv:taggedvalue tv.value.instance -> notempty) 8. The instance field of << PatternClass >>, << PatternOperation >> and << PatternAttribute >> cannot be omitted if the attached model element participates in more than one instance of a design pattern. 7

8 <<PatternClass>>: self.taggedvalue.value -> exists (v1, v2:value v1.name = v2.name ) implies (v1.instance -> notempty and v2.instance -> notempty and v1.instance <> v2.instance) self.taggedvalue.value -> exists (v1, v2:value v1.name = v2.name ) implies (v1.instance -> notempty and v2.instance -> notempty and v1.instance <> v2.instance) self.taggedvalue.value -> exists (v1, v2:value v1.name = v2.name ) implies (v1.instance -> notempty and v2.instance -> notempty and v1.instance <> v2.instance) 9. The instance field of the tagged value in << PatternAttribute >> and << PatternOperation >> can be omitted if no ambiguity is added into the design diagram. If this is the case, it implies that PatternAttribute and PatternOperation have the same instance as PatternClass. self.taggedvalue.value.instance -> isempty implies self.taggedvalue.value.instance = PatternClass.taggedValue.value.instance self.taggedvalue.value.instance -> isempty implies self.taggedvalue.value.instance = PatternClass.taggedValue.value.instance After applying the new UML extensions to the previous example, the new class diagram of the system is shown in Figure 4. Note that the instance fields of the tagged values are omitted for all stereptypes because there is only one instance of the Abstract Factory pattern and the Singleton pattern. From this diagram, we can identify the two patterns and their participants. For example, from the stereotype branded to the class OracleConnectionPool, i.e., <<PatternClassf<Abstract Factory, ConcreteFactory> <Singleton, Singleton>g>>, we know that OracleConnectionPool participates in two design patterns: Abstract Factory and Singleton. It plays the role of ConcreteFactory in the Abstract Factory pattern and the role of Singleton in the Singleton pattern. There is only one instance of the Abstract Factory pattern and the Singleton pattern since the instance fields are omitted. Class <<stereotype>> PatternClass <<taggedvalue>> pattern[0..]<name : string[instance:integer],role:string> Operation <<stereotype>> PatternOperation <<taggedvalue>> pattern[0..]<name : string[instance:integer],role:string> Attribute <<stereotype>> PatternAttribute <<taggedvalue>> pattern[0..]<name : string[instance:integer],role:string> Figure 3: Virtual Meta Model 8

9 <<PatternClass{<Abstract Factory,AbstractFactory>}>> ConnectionPool <<PatternOperation{<Abstract Factory,createProduct>}>> createconnection() <<PatternClass{<Abstract Factory,ConcreteFactory><Singleton,Singleton>}>> OracleConnectionPool <<PatternAttribute{<Singleton,UniqueInstance>}>> OracleConnection <<PatternOperation{<Abstract Factory,createProduct><Singleton:Instance>}>> createconnection() <<PatternClass{<Abstract Factory,ConcreteFactory><Singleton,Singleton>}>> MySQLConnectionPool <<PatternAttribute{<Singleton,UniqueInstance>}>> MySQLConnection <<PatternOperation{<Abstract Factory,createProduct><Singleton:Instance>}>> createconnection() <<PatternClass{<Abstract Factory,ConcreteProduct>}>> OracleConnection <<PatternClass{<Abstract Factory,ConcreteProduct>}>> MySQLConnection <<PatternClass{<Abstract Factory,AbstractProduct>}>> Connection Figure 4: Connection Pool Modeled with the New Stereotypes 3.5 Virtual Meta Model A virtual meta model (VMM) is the UML expression of a formal model with a set of UML extensions. A VMM can graphically represent the relationship among the newly defined elements, i.e., PatternClass, PatternAttribute and Pattern- Operation, and those defined by UML specification. The VMM for the newly defined extensions is represented as a set of class diagrams in Figure 3. The VMM represents a Stereotype as a Class stereotyped <<stereotype>> and a Tagged- Value associated with a Stereotype as an Attribute of the Class that represents the Stereotype. The Attribute is stereotyped <<TaggedValue>>. The Attribute name is the name of the tagged value. The value of a tagged value is enclosed between < and > signs which means the format of the value is <name[instrance],role>. The multiplicity following the Attribute name ([1..Λ]) indicate that the tagged value may have one or more values. 4 Case Study In this section, we describe a case study to illustrate how to use the UML profile to visualize design patterns. This case study considers a software system for the management of student information in a school. The system allows the instructor to search, review and update student information, such as courses enrollment and grades anywhere in and out of the campus. At the initial stage, the system needs to handle limited number of students due to budget limitation. If the student enrollment increases, the system is able to scale up easily with increasing budget. There are three design patterns used in this system: two instances of the Abstract Factory pattern [14], one instance of the Singleton pattern [14] and one instance of the Data Access Object pattern [1]. The Data Access Object (DAO) pattern encapsulates the connection to a database so that the user is able to access the database only through the DAO classes. The DAO pattern provides the flexible and transparent accesses to different database engines. Figure 5 shows the class diagram of the DAO pattern. The BusinessObject defines the business logic and the DataAccessObject to access any persistent data in a database or a flat file system. The DataSource represents a data source implementation, which can be a database or a flat file system. The ValueObject is a data carrier. The DataAccessObject encapsulates the access to the DataSource and abstracts the underlying data access implementation for the BusinessObject, which enables transparent access to the data source. The BusinessObject, as a client, requires data from the DataSource by using the DataAccessObject and does not know what the DataSource is. The DataAccessObject then returns the required 9

10 data to the client using the data carrier, a value object. When the BusinessObject requires updates in the DataSource, the DataAccessObject will receive the updated data from the client using the value object and update data in the data source. BusinessObject dao : DataAccessObject DataAccessObject valueobj : ValueObject encapsulates DataSource obtains/modifies / ValueObject Figure 5: The Data Access Object Pattern The DAO pattern is applied in this system for flexible and transparent change of database engines. Business data can be moved from an open-source database engine (e.g. MySQL) with low capability and price to a commercial one (e.g. Oracle) with high capability and price when the data processing demand increases, and vice versa. In addition, the application of this pattern prevents vender lock-in in that business data is free to move from one database to another transparently due to the merger or change of business and organizations. Figure 6 shows the detailed system design with two instances of the Abstract Factory pattern, one instance of the Singleton pattern and one instance of the Data Access Object pattern. The QueryServlet and UpdateServlet classes play the role of the BusinessObject in the DAO pattern. They define the business logic of searching and updating student information. The StudentInfo plays role of the ValueObject in the DAO pattern. It defines the functions, such as getstudinfo() and updatestudinfo(), and carries the student information either as search results returned to the QueryServlet or as the data prepared by the UpdateServlet and to be updated by the DAO class. The DAO class plays the role of DataAccessObject in the DAO pattern. It defines all the functions to manipulate the database, such as to get required data from the database and to update the required data in the database. To be able to move data between databases transparently, the DataAccessObject needs to decide what type of database to be accessed, and the Abstract Factory pattern is used to generate the appropriate type of DAO objects according to the kind of database engine used, e.g. MySQLDAO, OracleDAO and/or other database DAO objects, which provides the flexibility to add and delete a type of database transparently. At the initial stage, the MySQL database is used. The MySQLStudInfoDAO classes realizes the StudInfoDAO class to allow the access of student information to the mysql database. Later on, when the database is changed to Oracle, OracleStudInfoDAO will be implemented to allow the BusinessObject to access and manipulate data in the Oracle database. The DataSource in the DAO pattern provides the connections to the corresponding database engine, e.g., initially the MySQL database and later the Oracle database. To allow dynamic creation of the connections to the corresponding database engine, the Abstract Factory pattern is applied which is the same as shown in Figure 4. Similarly, the Singleton pattern is applied the same way as shown in the example in Section Related Work UML extension mechanisms have been used to expand the expressive power of UML to model and represent object-oriented framework [12], software architecture [20, 17, 26], and agent-oriented systems [24] when the original UML is not sufficient to represent the semantic meaning of the design. Medvidovic et al. [20] applied the UML extension mechanism for modeling software architectures. They extended the UML to model software architecture in UML. Kande and Strohmeier [17] extended the UML by incorporating key abstractions in ADLs, such as connectors, components and configurations. They focus on how UML can be used for modeling architectural viewpoints. Zarras et al. [26] applied the UML extension mechanism for architecture description and provided a base UML profile for existing Architecture Description Languages (ADLs). Fontoura et al. [12] proposed a UML extension, called UML-F, to represent object-oriented frameworks. The authors defined a set of new tagged values which can help to represent an object-oriented framework more meaningfully by UML. But the authors failed to give the complete UML profiles for the newly defined stereotypes and tagged values. Sanada and Adams [9] used the UML extension mechanism to represent design patterns and frameworks. They defined the UML stereotypes and tagged values to represent the designs in frameworks. The UML profiles for design patterns and 10

11 <<PatternClass{<DAO,BusinessObject>}>> QueryServlet obtains/modifies <<PatternClass{<DAO,ValueObject>}>> StudentInfo obtains/modifies <<PatternClass{<DAO,BusinessObject>}>> UpdateServlet <<PatternClass{<DAO,DataAccessObject><Abstract Factory[1],AbstractFactory>}>> DAO <<PatternOperation{<Abstract Factory[1],createProduct>}>> createdao() <<PatternClass{<Abstract Factory[1],ConcreteFactory>}>> OracleDAO <<PatternClass{<Abstract Factory[1],ConcreteFactory>}>> MySQLDAO <<PatternOperation{<Abstract Factory[1],createProduct>}>> createdao() <<PatternOperation{<Abstract Factory[1],createProduct>}>> createdao() <<PatternClass{<Abstract Factory[1],ConcreteProduct>}>> OracleStudInfoDAO <<PatternClass{<Abstract Factory[1],ConcreteProduct>}>> MySQLStudInfoDAO <<PatternClass{<Abstract Factory[1],AbstractProduct>}>> StudInfoDAO encapsulates encapsulates <<PatternClass{<DAO,DataSource><Abstract Factory[2],AbstractFactory>}>> ConnectionPool <<PatternOperation{<Abstract Factory[2],createProduct>}>> createconnection() <<PatternClass{<Abstract Factory[2],ConcreteFactory><Singleton,Singleton>}>> OracleConnectionPool <<PatternAttribute{<Singleton,UniqueInstance>}>> OracleConnection <<PatternOperation{<Abstract Factory[2],createProduct><Singleton,Instance>}>> createconnection() <<PatternClass{<Abstract Factory[2],ConcreteFactory><Singleton,Singleton>}>> MySQLConnectionPool <<PatternAttribute{<Singleton,UniqueInstance>}>> MySQLConnection <<PatternOperation{<Abstract Factory[2],createProduct><Singleton,Instance>}>> createconnection() <<PatternClass{<Abstract Factory[2],ConcreteProduct>}>> OracleConnection <<PatternClass{<Abstract Factory[2],ConcreteProduct>}>> MySQLConnection <<PatternClass{<Abstract Factory[2],AbstractProduct>}>> Connection Figure 6: The Student Information Management System 11

12 frameworks are also provided in their work. The authors extended the existing UML tools to support the newly defined stereotypes and tagged values. However they did not provide the constraints applied to these new stereotypes and tagged values. Wagner [24] applied the UML extension mechanisms for agent-oriented modeling. A set of new stereotypes are defined to model agent-oriented systems. Clarke [7] provided UML metamodel extensions, i.e., abstract syntax, well-formed rules and semantics to describe composable elements, composition relationship, and integration of the composable elements. Our work the UML profiles and extension mechanisms to visualize the pattern-related information hidden in a class diagram. We defined new stereotypes, tagged values and provided the constraints applied to these stereotypes and tagged values. By using these new stereotypes and tagged values, the user can easily identify the patterns in a class diagram. 6 Conclusion Standard UML is normally used to describe a design pattern. However, UML does not keep track of pattern-related information in system applications. In this paper, we introduced a UML profile for the explicit visualization of design patterns in system designs. It is important for designers to describe explicitly patterns in a design diagram because the goals of design patterns are to reuse design experience, to improve communication within and across software development teams, to capture explicitly the design decisions made by designers, and to record design tradeoffs and design alternatives in different applications. The application of a design pattern may change the names of classes, operations, and attributes participating in this pattern to the terms of the application domain. Thus, the roles that the classes, operations, and attributes play in this pattern have lost. This pattern-related information is important to accomplish the goals of design pattern. Without explicitly representing this information, the designers are force to communicate at the class and object level, instead of the pattern level. The design decisions and tradeoffs captured in the pattern are lost too. Therefore, the notations provided in this paper help on the explicit representation of design patterns and accomplishing the goals of design patterns. Our approach the UML extension mechanisms to define a UML profile for visualizing design patterns. Three new stereotypes, PatternClass, PatternAttribute and PatternOperation, are defined. Each stereotype has a tagged value with the name of pattern and the value of the format as name[instance],role. Several constraints are also defined. Using this new UML profile to model software system design in class diagrams, one can identify pattern-related information, such as how many design patterns are used in the system, what is the role of each model element, how many instances of a design pattern are applied, and where is each instance of design pattern in the class diagram. References [1] Deepak Alur, John Crupi, and Dan Malks. Core J2EE Patterns: Best Practices and Design Strategies. Sun Microsystems, [2] Stefan Berner, Martin Glinz, and Stefan Joos. A Classification of Stereotypes for Object-Oriented Modeling Languages. Proceedings of the Second International Conference on the Unified Modeling Language (UML), LNCS1723, Springer-Verlag, pages , October [3] Grady Booch, James Rumbaugh, and Ivar Jacobson. The Unified Modeling Language User Guide. Addison-Wesley, [4] Margaret Burnett. Visual Programming. in Encyclopedia of Electrical and Electronics Engineering (John G. Webster, ed.), John WIley & Sons Inc., New York, [5] Margaret Burnett, A. Goldberg, and T. Lewis(eds.). Visual Object-Oriented Programming: Concepts and Environments. Prentice-Hall/Manning, [6] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. Pattern-Oriented Software Architecture: A System of Patterns. Wiley, [7] Siobhan Clarke. Extending UML Metamodel for Design Composition. Proceedings of the ICSE Workshop on Multi- Dimensional Separation of Concerns in Software Engineering,

13 [8] James O. Coplien and Douglas C. Schmidt. Pattern Languages of Program Design. Addison-Wesley Publishing Company, [9] Yasunobu Danada and Rolf Adams. Representing Design Patterns and Frameworks in UML - Towards a Comprehensive Approach. Journal of Object Technology, 1(2): , July-August [10] Jing Dong. Representing the Applications and Compositions of Design Pattern in UML. Proceedings of the ACM Symposium on Applied Computing (SAC), Melbourne, Florida, USA, pages , March [11] Jing Dong and Kang Zhang. Design Pattern Compositions in UML. Software Visualization - From Theory to Practice, Kluwer Academic Publishers, pages , [12] Marcus Fontoura, Wolfgan Pree, and Bernhard Rumpe. UML-F: A Modeling Language for Object-Oriented Frameworks. Proceedings of the 14th European Conference on Object-Oriented Programming (ECOOP), pages 63 82, July [13] Martin Fowler. Analysis Patterns: Reusable Object Models. Addison-Wesley, [14] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns, Elements of Reusable Object- Oriented Software. Addison-Wesley Publishing Company, [15] Object Management Group. Unified Modeling Language Specification, Version [16] John Grundy and J. G. Hosking. High-level Static and Dynamic Visualisation of Software Architectures. IEEE Symposium on Visual Languages, Seattle, Washington, Sept [17] Mohamed Mancona Kande and Alfred Strohmeier. Towards a UML Profile for Software Architecture Descriptions. Proceedings of the Third International Conference on the Unified Modeling Language (UML), LNCS1939, Springer- Verlag, pages , October [18] Rudolf K. Keller, Reinhard Schauer, Sébastien Robitalille, and Patrick Pagé. Pattern-Based Reverse-Engineering of Design Components. Proceedings of the 21st International Conference on Software Engineering, Los Angeles, USA, pages , May [19] Christian Krämer and Lutz Prechelt. Design Recovery by Automated Search for Structural Design Patterns in Object- Oriented Software. Proceedings of the Working Conference on Reverse Engineering, IEEE CS press, Monterey, Nov [20] Nenad Medvidovic, David S. Rosenblum, David F. Redmiles, and Jason E. Robbins. Modeling Software Architectures in the Unified Modeling Language. ACM Transactions on Software Engineering and Methodology, 11(1):2 57, January [21] Wolfgang Pree. Design Patterns for Object-Oriented Software Development. Addison-Wesley Publishing Company, [22] James Rumbaugh, Ivar Jacobson, and Grady Booch. The Unified Modeling Language Reference Manual. Addison- Wesley, [23] John Vlissides. Notation, Notation, Notation. C++ Report, April [24] Gerg Wagner. A UML Profile for Agent-Oriented Modeling. Proceedings of the Third International Workshop on Agent-Oriented Software Engineering, Bologna, Italy, July [25] Jos B. Warmer and Anneke G. Kleppe. The Object Constraint Language: Precise Modeling with UML. Addison- Wesley, [26] Apostolos Zarras, Valerie Issarny, Christos Kloukinas, and Viet Khoi Nguyen. Towards a Base UML Profile for Architecture Description. Proceedings of the ICSE Workshop on Architecture and UML,

Extending UML To Visualize Design Patterns In Class Diagrams

Extending UML To Visualize Design Patterns In Class Diagrams Extending UML To Visualize Design Patterns In Class Diagrams Jing Dong and Sheng Yang School of Engineering and Computer Science University of Texas at Dallas, Richardson, TX 75083, USA fjdong,syangg@utdallas.edu

More information

Visualizing Design Patterns in Their Applications and Compositions

Visualizing Design Patterns in Their Applications and Compositions IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 33, NO. 7, JULY 2007 433 Visualizing Design Patterns in Their Applications and Compositions Jing Dong, Member, IEEE, Sheng Yang, Member, IEEE, and Kang Zhang,

More information

JOURNAL OF OBJECT TECHNOLOGY Online at Published by ETH Zurich, Chair of Software Engineering. JOT, 2002

JOURNAL OF OBJECT TECHNOLOGY Online at  Published by ETH Zurich, Chair of Software Engineering. JOT, 2002 JOURNAL OF OBJECT TECHNOLOGY Online at www.jot.fm. Published by ETH Zurich, Chair of Software Engineering. JOT, 2002 Vol. 1, No. 2, July-August 2002 Representing Design Patterns and Frameworks in UML Towards

More information

Object-Oriented Software Development Goal and Scope

Object-Oriented Software Development Goal and Scope Object-Oriented Software Development Goal and Scope Koichiro Ochimizu Japan Advanced Institute of Science and Technologies School of Information Science Scope and Goal Goal enable you to understand basic

More information

Towards Better Support for Pattern-Oriented Software Development

Towards Better Support for Pattern-Oriented Software Development Towards Better Support for Pattern-Oriented Software Development Dietrich Travkin Software Engineering Research Group, Heinz Nixdorf Institute & Department of Computer Science, University of Paderborn,

More information

Coordination Patterns

Coordination Patterns Coordination Patterns 1. Coordination Patterns Design Patterns and their relevance for Coordination Oscar Nierstrasz Software Composition Group Institut für Informatik (IAM) Universität Bern oscar@iam.unibe.ch

More information

A Metric of the Relative Abstraction Level of Software Patterns

A Metric of the Relative Abstraction Level of Software Patterns A Metric of the Relative Abstraction Level of Software Patterns Atsuto Kubo 1, Hironori Washizaki 2, and Yoshiaki Fukazawa 1 1 Department of Computer Science, Waseda University, 3-4-1 Okubo, Shinjuku-ku,

More information

Visualizing Composition in Design Patterns

Visualizing Composition in Design Patterns Visualizing Composition in Design Patterns Zaigham Mushtaq, Kiran Iqbal, Ghulam Rasool COMSATS Institute of Information Technology, Defence Road, Lahore, Pakistan Abstract Visualization of design patterns

More information

Composition Approaches Summary

Composition Approaches Summary Composition Approaches Summary Related Work Several successful experiences have reported on the advantages of using patterns in designing applications. For instance, Srinivasan et. al. [26] discuss their

More information

A System of Patterns for Web Navigation

A System of Patterns for Web Navigation A System of Patterns for Web Navigation Mohammed Abul Khayes Akanda and Daniel M. German Department of Computer Science, University of Victoria, Canada maka@alumni.uvic.ca, dmgerman@uvic.ca Abstract. In

More information

A Metamodeling Approach to Model Refactoring

A Metamodeling Approach to Model Refactoring A Metamodeling Approach to Model Refactoring Sheena R. Judson, Doris L. Carver, and Robert France 2 Department of Computer Science, Louisiana State University Baton Rouge, Louisiana USA sheena.r.judson@lmco.com,

More information

Ingegneria del Software Corso di Laurea in Informatica per il Management. Introduction to UML

Ingegneria del Software Corso di Laurea in Informatica per il Management. Introduction to UML Ingegneria del Software Corso di Laurea in Informatica per il Management Introduction to UML Davide Rossi Dipartimento di Informatica Università di Bologna Modeling A model is an (abstract) representation

More information

Introduction to Software Engineering. 5. Modeling Objects and Classes

Introduction to Software Engineering. 5. Modeling Objects and Classes Introduction to Software Engineering 5. Modeling Objects and Classes Roadmap > UML Overview > Classes, attributes and operations > UML Lines and Arrows > Parameterized Classes, Interfaces and Utilities

More information

Pattern-Based Architectural Design Process Model

Pattern-Based Architectural Design Process Model Pattern-Based Architectural Design Process Model N. Lévy, F. Losavio Abstract: The identification of quality requirements is crucial to develop modern software systems, especially when their underlying

More information

Design Patterns. Gunnar Gotshalks A4-1

Design Patterns. Gunnar Gotshalks A4-1 Design Patterns A4-1 On Design Patterns A design pattern systematically names, explains and evaluates an important and recurring design problem and its solution Good designers know not to solve every problem

More information

UML Modeling I. Instructor: Yongjie Zheng September 3, CS 490MT/5555 Software Methods and Tools

UML Modeling I. Instructor: Yongjie Zheng September 3, CS 490MT/5555 Software Methods and Tools UML Modeling I Instructor: Yongjie Zheng September 3, 2015 CS 490MT/5555 Software Methods and Tools Object-Oriented Design: Topics & Skills Rational Unified Process Unified Modeling Languages (UML) Provide

More information

Programação de Sistemas Distribuidos

Programação de Sistemas Distribuidos Programação de Sistemas Distribuidos Paulo Gandra de Sousa psousa@dei.isep.ipp.pt Mestrado em Engenharia Informática DEI/ISEP Disclaimer Parts of this presentation are from: Paulo Sousa (PARS) Ron Jacobs

More information

Mining Relationships Between the Participants of Architectural Patterns

Mining Relationships Between the Participants of Architectural Patterns Mining Relationships Between the Participants of Architectural Patterns Ahmad Waqas Kamal and Paris Avgeriou Department of Mathematics and Computing Science, University of Groningen, The Netherlands a.w.kamal@rug.nl,

More information

Slide 1. Design Patterns. Prof. Mirco Tribastone, Ph.D

Slide 1. Design Patterns. Prof. Mirco Tribastone, Ph.D Slide 1 Design Patterns Prof. Mirco Tribastone, Ph.D. 22.11.2011 Introduction Slide 2 Basic Idea The same (well-established) schema can be reused as a solution to similar problems. Muster Abstraktion Anwendung

More information

Using AOP to build complex data centric component frameworks

Using AOP to build complex data centric component frameworks Using AOP to build complex data centric component frameworks Tom Mahieu, Bart Vanhaute, Karel De Vlaminck, Gerda Janssens, Wouter Joosen Katholieke Universiteit Leuven Computer Science Dept. - Distrinet

More information

OBJECT-ORIENTED MODELING AND DESIGN. Introduction

OBJECT-ORIENTED MODELING AND DESIGN. Introduction OBJECT-ORIENTED MODELING AND DESIGN Introduction Contents: Introduction. Course Relevance Learning Outcomes Overview of the syllabus Introduction to Object Orientation Introduction Object Oriented Approach

More information

A Metric for Measuring the Abstraction Level of Design Patterns

A Metric for Measuring the Abstraction Level of Design Patterns A Metric for Measuring the Abstraction Level of Design Patterns Atsuto Kubo 1, Hironori Washizaki 2, and Yoshiaki Fukazawa 1 1 Department of Computer Science, Waseda University, 3-4-1 Okubo, Shinjuku-ku,

More information

Quality-Driven Architecture Design Method

Quality-Driven Architecture Design Method Quality-Driven Architecture Design Method Matinlassi Mari, Niemelä Eila P.O. Box 1100, 90571 Oulu Tel. +358 8 551 2111 Fax +358 8 551 2320 {Mari.Matinlassi, Eila.Niemela}@vtt.fi Abstract: In this paper

More information

Product Line Annotations with UML-F

Product Line Annotations with UML-F Product Line Annotations with UML-F Wolfgang Pree 1, Marcus Fontoura 2, and Bernhard Rumpe 3 1 Department of Computer Sciences (guest), Univ. of California, Berkeley, pree@eecs.berkeley.edu 2 IBM Almaden

More information

Journal of Information Technology Impact

Journal of Information Technology Impact Journal of Information Technology Impact Vol. 3, No. 1, pp. 25-44, 2003 Bogdan D. Czejdo 1 Loyola University Louisiana, USA The Impact of UML Class Diagrams on Knowledge Modeling, Discovery and Presentations

More information

Design Patterns. An introduction

Design Patterns. An introduction Design Patterns An introduction Introduction Designing object-oriented software is hard, and designing reusable object-oriented software is even harder. Your design should be specific to the problem at

More information

TIME-BASED CONSTRAINTS IN THE OBJECT CONSTRAINT LANGUAGE OCL

TIME-BASED CONSTRAINTS IN THE OBJECT CONSTRAINT LANGUAGE OCL TIME-BASED CONSTRAINTS IN THE OBJECT CONSTRAINT LANGUAGE OCL Ali Hamie, John Howse School of Computing, Mathematical and Information Sciences, University of Brighton, Brighton, UK. {a.a.hamie@brighton.ac.uk,

More information

Comparative Analysis of Architectural Views Based on UML

Comparative Analysis of Architectural Views Based on UML Electronic Notes in Theoretical Computer Science 65 No. 4 (2002) URL: http://www.elsevier.nl/locate/entcs/volume65.html 12 pages Comparative Analysis of Architectural Views Based on UML Lyrene Fernandes

More information

James Newkirk

James Newkirk Private Interface Class Structural James Newkirk newkirk@oma.com Intent Provide a mechanism that allows specific classes to use a non-public subset of a class interface without inadvertently increasing

More information

Product line annotations with UML-F

Product line annotations with UML-F Product line annotations with UML-F Wolfgang Pree 1), Marcus Fontoura 2), Bernhard Rumpe 3) 1) Department of Computer Sciences, University of California, Berkeley 2) IBM Almaden Research Center, San Jose,

More information

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator.

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator. Comparative Study In Utilization Of Creational And Structural Design Patterns In Solving Design Problems K.Wseem Abrar M.Tech., Student, Dept. of CSE, Amina Institute of Technology, Shamirpet, Hyderabad

More information

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1 Ingegneria del Software Corso di Laurea in Informatica per il Management Design Patterns part 1 Davide Rossi Dipartimento di Informatica Università di Bologna Pattern Each pattern describes a problem which

More information

Concurrency Control with Java and Relational Databases

Concurrency Control with Java and Relational Databases Concurrency Control with Java and Relational Databases Sérgio Soares and Paulo Borba Informatics Center Federal University of Pernambuco Recife, PE, Brazil scbs,phmb @cin.ufpe.br Abstract As web based

More information

LABORATORY 1 REVISION

LABORATORY 1 REVISION UTCN Computer Science Department Software Design 2012/2013 LABORATORY 1 REVISION ================================================================== I. UML Revision This section focuses on reviewing the

More information

Pattern-Oriented Development with Rational Rose

Pattern-Oriented Development with Rational Rose Pattern-Oriented Development with Rational Rose Professor Peter Forbrig, Department of Computer Science, University of Rostock, Germany; Dr. Ralf Laemmel, Department of Information Management and Software

More information

Evolution Support by Homogeneously Documenting Patterns, Aspects and Traces

Evolution Support by Homogeneously Documenting Patterns, Aspects and Traces Evolution Support by Homogeneously Documenting Patterns, Aspects and Traces Johannes Sametinger Johannes Kepler University Linz, Austria sametinger@acm.org Matthias Riebisch Technical University of Ilmenau,

More information

USING TRANSFORMATIONS TO INTEGRATE TASK MODELS IN

USING TRANSFORMATIONS TO INTEGRATE TASK MODELS IN USING TRANSFORMATIONS TO INTEGRATE TASK MODELS IN THE UML Position Paper to the WTUML: Workshop on Transformations in UML ETAPS 2001 European Joint Conference on Theory and Practice of Software Nuno Jardim

More information

Scenario-based Synthesis of Annotated Class Diagrams in UML

Scenario-based Synthesis of Annotated Class Diagrams in UML Scenario-based Synthesis of Annotated Class Diagrams in UML Petri Selonen and Tarja Systä Tampere University of Technology, Software Systems Laboratory, P.O.Box 553, FIN-33101 Tampere, Finland {pselonen,tsysta}@cs.tut.fi

More information

Software Engineering - I An Introduction to Software Construction Techniques for Industrial Strength Software

Software Engineering - I An Introduction to Software Construction Techniques for Industrial Strength Software Software Engineering - I An Introduction to Software Construction Techniques for Industrial Strength Software Chapter 9 Introduction to Design Patterns Copy Rights Virtual University of Pakistan 1 Design

More information

Modeling Systems Using Design Patterns

Modeling Systems Using Design Patterns Modeling Systems Using Design Patterns Jaroslav JAKUBÍK Slovak University of Technology Faculty of Informatics and Information Technologies Ilkovičova 3, 842 16 Bratislava, Slovakia jakubik@fiit.stuba.sk

More information

CHAPTER 6: CREATIONAL DESIGN PATTERNS

CHAPTER 6: CREATIONAL DESIGN PATTERNS CHAPTER 6: CREATIONAL DESIGN PATTERNS SESSION I: OVERVIEW OF DESIGN PATTERNS, ABSTRACT FACTORY Software Engineering Design: Theory and Practice by Carlos E. Otero Slides copyright 2012 by Carlos E. Otero

More information

A SYSTEMATIC APPROACH FOR COMPONENT-BASED SOFTWARE DEVELOPMENT

A SYSTEMATIC APPROACH FOR COMPONENT-BASED SOFTWARE DEVELOPMENT A SYSTEMATIC APPROACH FOR COMPONENT-BASED SOFTWARE DEVELOPMENT Cléver Ricardo Guareis de Farias, Marten van Sinderen and Luís Ferreira Pires Centre for Telematics and Information Technology (CTIT) PO Box

More information

Chapter No. 2 Class modeling CO:-Sketch Class,object models using fundamental relationships Contents 2.1 Object and Class Concepts (12M) Objects,

Chapter No. 2 Class modeling CO:-Sketch Class,object models using fundamental relationships Contents 2.1 Object and Class Concepts (12M) Objects, Chapter No. 2 Class modeling CO:-Sketch Class,object models using fundamental relationships Contents 2.1 Object and Class Concepts (12M) Objects, Classes, Class Diagrams Values and Attributes Operations

More information

Approaches of using UML for Embedded System Design

Approaches of using UML for Embedded System Design Approaches of using UML for Embedded System Design Sudeep D. Thepade Lecturer, Dept. of Information Technology, Thadomal Shahani Engg. College, Bandra, Mumbai sudeepthepade@gmail.com Abstract New approaches

More information

Software Design And Modeling BE 2015 (w. e. f Academic Year )

Software Design And Modeling BE 2015 (w. e. f Academic Year ) Software Design And Modeling BE 2015 (w. e. f Academic Year 2018-2019) 1 The Team Prof. Ravi Patki, I 2 IT Hinjawadi Pune Prof. Sangita Jaibhaiye SCOE Prof. D.D.Londhe PICT Prof. P. A. Joshi, ZCOER 2 The

More information

Guiding System Modelers in Multi View Environments: A Domain Engineering Approach

Guiding System Modelers in Multi View Environments: A Domain Engineering Approach Guiding System Modelers in Multi View Environments: A Domain Engineering Approach Arnon Sturm Department of Information Systems Engineering Ben-Gurion University of the Negev, Beer Sheva 84105, Israel

More information

Distributed Proxy: A Design Pattern for Distributed Object Communication

Distributed Proxy: A Design Pattern for Distributed Object Communication Distributed Proxy: A Design Pattern for Distributed Object Communication António Rito Silva, Francisco Assis Rosa, Teresa Gonçalves INESC/IST Technical University of Lisbon, Rua Alves Redol n o 9, 1000

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecturer: Raman Ramsin Lecture 20: GoF Design Patterns Creational 1 Software Patterns Software Patterns support reuse of software architecture and design. Patterns capture the static

More information

The Authenticator Pattern

The Authenticator Pattern The Authenticator Pattern F. Lee Brown, Jr. James DiVietri Graziella Diaz de Villegas CyberGuard Corp. Fort Lauderdale, FL 33309 Eduardo B. Fernandez Dept. of Computer Science and Eng. Florida Atlantic

More information

A component-centric UML based approach for modeling the architecture of web applications.

A component-centric UML based approach for modeling the architecture of web applications. International Journal of Recent Research and Review, Vol. V, March 2013 ISSN 2277 8322 A component-centric UML based approach for modeling the architecture of web applications. Mukesh Kataria 1 1 Affiliated

More information

Modeling the Evolution of Aspect Configurations using Model Transformations

Modeling the Evolution of Aspect Configurations using Model Transformations Modeling the Evolution of Aspect Configurations using Model Transformations Uwe Zdun, Mark Strembeck Institute of Information Systems, New Media Lab Vienna University of Economics, Austria {uwe.zdun mark.strembeck}@wu-wien.ac.at

More information

Customisation of Unified Modeling Language for logical database modeling

Customisation of Unified Modeling Language for logical database modeling Blekinge Institute of Technology Research Report No 2002:12 Customisation of Unified Modeling Language for Logical Database Modeling Editors: Ludwik Kuzniarz and Miroslaw Staron Department of Software

More information

administrivia today UML start design patterns Tuesday, September 28, 2010

administrivia today UML start design patterns Tuesday, September 28, 2010 administrivia Assignment 2? promise to get past assignment 1 back soon exam on monday review slides are posted your responsibility to review covers through last week today UML start design patterns 1 Unified

More information

Software Service Engineering

Software Service Engineering Software Service Engineering Lecture 4: Unified Modeling Language Doctor Guangyu Gao Some contents and notes selected from Fowler, M. UML Distilled, 3rd edition. Addison-Wesley Unified Modeling Language

More information

Domain-Driven Development with Ontologies and Aspects

Domain-Driven Development with Ontologies and Aspects Domain-Driven Development with Ontologies and Aspects Submitted for Domain-Specific Modeling workshop at OOPSLA 2005 Latest version of this paper can be downloaded from http://phruby.com Pavel Hruby Microsoft

More information

Rose/Architect: a tool to visualize architecture

Rose/Architect: a tool to visualize architecture Rose/Architect: a tool to visualize architecture Alexander Egyed University of Southern California Center for Software Engineering Los Angeles, CA 90089-0781, USA aegyed@sunset.usc.edu Philippe B. Kruchten

More information

Topics in Object-Oriented Design Patterns

Topics in Object-Oriented Design Patterns Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;

More information

A Meta-Model for Composition Techniques in Object-Oriented Software Development

A Meta-Model for Composition Techniques in Object-Oriented Software Development A Meta-Model for Composition Techniques in Object-Oriented Software Development Bedir Tekinerdogan Department of Computer Science University of Twente P.O. Box 217, 7500 AE Enschede, The Netherlands E-Mail:

More information

Transparent Remote Access

Transparent Remote Access Abstract Transparent Remote Access Klaus Marquardt Käthe-Kollwitz-Weg 14, D-23558 Lübeck, Germany Email: marquardt@acm.org In distributed systems, the different processors communicate via network messages.

More information

CHAPTER 1. Topic: UML Overview. CHAPTER 1: Topic 1. Topic: UML Overview

CHAPTER 1. Topic: UML Overview. CHAPTER 1: Topic 1. Topic: UML Overview CHAPTER 1 Topic: UML Overview After studying this Chapter, students should be able to: Describe the goals of UML. Analyze the History of UML. Evaluate the use of UML in an area of interest. CHAPTER 1:

More information

Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms?

Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms? Describing the architecture: Creating and Using Architectural Description Languages (ADLs): What are the attributes and R-forms? CIS 8690 Enterprise Architectures Duane Truex, 2013 Cognitive Map of 8090

More information

DESIGN PATTERN MATCHING

DESIGN PATTERN MATCHING PERIODICA POLYTECHNICA SER. EL. ENG. VOL. 47, NO. 3 4, PP. 205 212 (2003) DESIGN PATTERN MATCHING Dániel PETRI and György CSERTÁN Department of Measurement and Information Systems Budapest University of

More information

Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach

Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach Ninat Wanapan and Somnuk Keretho Department of Computer Engineering, Kasetsart

More information

OO Analysis and Design with UML 2 and UP

OO Analysis and Design with UML 2 and UP OO Analysis and Design with UML 2 and UP Dr. Jim Arlow, Zuhlke Engineering Limited Clear View Training 2008 v2.5 1 UML principles Clear View Training 2008 v2.5 2 1.2 What is UML? Unified Modelling Language

More information

Patterns for Decoupling

Patterns for Decoupling Patterns for Decoupling Ingolf H. Krueger Department of Computer Science & Engineering University of California, San Diego La Jolla, CA 92093-0114, USA California Institute for Telecommunications and Information

More information

UML Aspect Specification Using Role Models

UML Aspect Specification Using Role Models UML Aspect Specification Using Role Models Geri Georg Agilent Laboratories, Agilent Technologies, Fort Collins, USA geri_georg@agilent.com Robert France Department of Computer Science, Colorado State University

More information

Concurrent Object-Oriented Development with Behavioral Design Patterns

Concurrent Object-Oriented Development with Behavioral Design Patterns Concurrent Object-Oriented Development with Behavioral Design Patterns Benjamin Morandi 1, Scott West 1, Sebastian Nanz 1, and Hassan Gomaa 2 1 ETH Zurich, Switzerland 2 George Mason University, USA firstname.lastname@inf.ethz.ch

More information

Course "Softwaretechnik" Book Chapter 2 Modeling with UML

Course Softwaretechnik Book Chapter 2 Modeling with UML Course "Softwaretechnik" Book Chapter 2 Modeling with UML Lutz Prechelt, Bernd Bruegge, Allen H. Dutoit Freie Universität Berlin, Institut für Informatik http://www.inf.fu-berlin.de/inst/ag-se/ Modeling,

More information

Incorporating applications to a Service Oriented Architecture

Incorporating applications to a Service Oriented Architecture Proceedings of the 5th WSEAS Int. Conf. on System Science and Simulation in Engineering, Tenerife, Canary Islands, Spain, December 16-18, 2006 401 Incorporating applications to a Service Oriented Architecture

More information

Using Design Patterns in Java Application Development

Using Design Patterns in Java Application Development Using Design Patterns in Java Application Development ExxonMobil Research & Engineering Co. Clinton, New Jersey Michael P. Redlich (908) 730-3416 michael.p.redlich@exxonmobil.com About Myself Degree B.S.

More information

Research Review on Basic Principles of Unified Modelling Language

Research Review on Basic Principles of Unified Modelling Language Research Review on Basic Principles of Unified Modelling Language Agha Salman Haider Sr Lecturer, Jazan University, Saudi Arabia Abstract This paper presents review of concepts, ideas and the introduction

More information

An Aspect-Based Approach to Modeling Security Concerns

An Aspect-Based Approach to Modeling Security Concerns An Aspect-Based Approach to Modeling Security Concerns Geri Georg Agilent Laboratories, Agilent Technologies, Fort Collins, USA geri_georg@agilent.com Robert France, Indrakshi Ray Department of Computer

More information

Chapter 12 (revised by JAS)

Chapter 12 (revised by JAS) Chapter 12 (revised by JAS) Pattern-Based Design Slide Set to accompany Software Engineering: A Practitionerʼs Approach, 7/e by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman

More information

Using the UML to Describe Design Patterns

Using the UML to Describe Design Patterns Proceedings of the 16 th Annual NACCQ, Palmerston North New Zealand July, 2003 (eds) Mann, S. and Williamson, A. www.naccq.ac.nz Using the UML to Describe Design Patterns ABSTRACT to describe patterns

More information

OCL for the Specification of Model Transformation Contracts

OCL for the Specification of Model Transformation Contracts OCL for the Specification of Model Transformation Contracts Eric Cariou, Raphaël Marvie, Lionel Seinturier, and Laurence Duchien LIFL - Université des Sciences et Technologies de Lille UMR CNRS 8022 -

More information

Work groups meeting 3

Work groups meeting 3 Work groups meeting 3 INF5040 (Open Distributed Systems) Sabita Maharjan sabita@simula.no Department of Informatics University of Oslo September 07, 2009 Design Patterns J2EE Design Patterns Outline EIS

More information

UML-Based Conceptual Modeling of Pattern-Bases

UML-Based Conceptual Modeling of Pattern-Bases UML-Based Conceptual Modeling of Pattern-Bases Stefano Rizzi DEIS - University of Bologna Viale Risorgimento, 2 40136 Bologna - Italy srizzi@deis.unibo.it Abstract. The concept of pattern, meant as an

More information

Design Patterns. Hausi A. Müller University of Victoria. Software Architecture Course Spring 2000

Design Patterns. Hausi A. Müller University of Victoria. Software Architecture Course Spring 2000 Design Patterns Hausi A. Müller University of Victoria Software Architecture Course Spring 2000 1 Motivation Vehicle for reasoning about design or architecture at a higher level of abstraction (design

More information

Heavyweight extensions to the UML metamodel to describe the C3 architectural style Abstract Keywords 2. Strategies to extend UML 1.

Heavyweight extensions to the UML metamodel to describe the C3 architectural style Abstract Keywords 2. Strategies to extend UML 1. Heavyweight extensions to the UML metamodel to describe the C3 architectural style Jorge Enrique Pérez-Martínez Universidad Rey Juan Carlos, Spain j.perez@escet.urjc.es Abstract UML is widely accepted

More information

Reflective Design Patterns to Implement Fault Tolerance

Reflective Design Patterns to Implement Fault Tolerance Reflective Design Patterns to Implement Fault Tolerance Luciane Lamour Ferreira Cecília Mary Fischer Rubira Institute of Computing - IC State University of Campinas UNICAMP P.O. Box 676, Campinas, SP 3083-970

More information

UML Specification and Correction of Object-Oriented Anti-patterns

UML Specification and Correction of Object-Oriented Anti-patterns UML Specification and Correction of Object-Oriented Anti-patterns Maria Teresa Llano and Rob Pooley School of Mathematical and Computer Sciences Heriot-Watt University Edinburgh, United Kingdom {mtl4,rjpooley}@hwacuk

More information

Object-Oriented Theories for Model Driven Architecture

Object-Oriented Theories for Model Driven Architecture Object-Oriented Theories for Model Driven Architecture Tony Clark 1, Andy Evans 2, Robert France 3 1 King s College London, UK, anclark@dcs.kcl.ac.uk, 2 University of York, UK, andye@cs.york.ac.uk, 3 University

More information

WS01/02 - Design Pattern and Software Architecture

WS01/02 - Design Pattern and Software Architecture Design Pattern and Software Architecture: VIII. Conclusion AG Softwaretechnik Raum E 3.165 Tele. 60-3321 hg@upb.de VIII. Conclusion VIII.1 Classifications VIII.2 Common Misconceptions VIII.3 Open Questions

More information

02291: System Integration

02291: System Integration 02291: System Integration Hubert Baumeister hub@imm.dtu.dk Spring 2012 Contents 1 General Information 1 2 Overview 3 3 Introduction to UML 11 4 Summary 16 1 General Information System Integration Type

More information

Developing CASE tools which support integrated development notations

Developing CASE tools which support integrated development notations Revised version in Proceedings of the 6th Workshop on the Next Generation of CASE Tools, Finland, June 1995. Developing CASE tools which support integrated development notations John C. Grundy and John

More information

UNIT-IV BASIC BEHAVIORAL MODELING-I

UNIT-IV BASIC BEHAVIORAL MODELING-I UNIT-IV BASIC BEHAVIORAL MODELING-I CONTENTS 1. Interactions Terms and Concepts Modeling Techniques 2. Interaction Diagrams Terms and Concepts Modeling Techniques Interactions: Terms and Concepts: An interaction

More information

Work groups meeting 3

Work groups meeting 3 Work groups meeting 3 INF5040 (Open Distributed Systems) Amir Taherkordi amirhost@ifi.uio.no Department of Informatics University of Oslo September 18, 2008 Design Patterns J2EE Design Patterns AntiPatterns

More information

CISC 322 Software Architecture

CISC 322 Software Architecture CISC 322 Software Architecture UML - The Unified Modelling Language Nicolas Bettenburg 1 DEFINITION The Unified Modelling Language (UML) is a graphical language for visualizing, specifying, constructing,

More information

Aspect-Orientation from Design to Code

Aspect-Orientation from Design to Code Aspect-Orientation from Design to Code Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany groher@informatik.tu-darmstadt.de Thomas Baumgarth Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739

More information

The UML Extension Mechanisms

The UML Extension Mechanisms Jasmine Farhad Dept of Computer Science University College London 13-Dec-02 The UML Extension Mechanisms Introduction There is an important need for organisations to evolve in today s market. This has

More information

A UML-based Methodology for Hypermedia Design

A UML-based Methodology for Hypermedia Design A UML-based Methodology for Hypermedia Design Rolf Hennicker, Nora Koch,2 Institute of Computer Science Ludwig-Maximilians University of Munich Oettingenstr. 67, D-80538 München, Germany {hennicke,kochn}@informatik.uni-muenchen.de

More information

Software Architecture

Software Architecture Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay What is Architecture? Software Architecture? Is this an Architecture? Is this an Architecture? Is this an

More information

Proposal of a Supporting Method for Diagrams Generation with the Transformation Rules in UML

Proposal of a Supporting Method for Diagrams Generation with the Transformation Rules in UML Proposal of a Supporting Method for Diagrams Generation with the Transformation Rules in UML Tetsuro Katayama Department of Computer Science and Systems Engineering, Faculty of Engineering, Miyazaki University

More information

Conflicting Perspectives on Architecting Software In Search of a Practical Solution

Conflicting Perspectives on Architecting Software In Search of a Practical Solution Conflicting Perspectives on Architecting Software In Search of a Practical Solution SASA BASKARADA & FRANK FURSENKO School of Computer and Information Science University of South Australia Mawson Lakes

More information

Generic Modeling using UML extensions for variability

Generic Modeling using UML extensions for variability Generic Modeling using UML extensions for variability Intershop Research Intershop, Jena Matthias Clauß Software Engineering Group Dresden University of Technology M.Clauss@intershop.com September 14,

More information

Introduction to Design Patterns

Introduction to Design Patterns Dr. Michael Eichberg Software Engineering Department of Computer Science Technische Universität Darmstadt Software Engineering Introduction to Design Patterns (Design) Patterns A pattern describes... Patterns

More information

1 (ERTSDP) ERTSDP (Embedded Real-Time Systems Design Pattern) (1)

1 (ERTSDP) ERTSDP (Embedded Real-Time Systems Design Pattern) (1) [ ] ERTSDP [ ] UML 1 Liskov [1-4] Gamma 25 [5] GammaBruce Douglas UML [6] ERTSDP Bruce Douglass 2 (ERTSDP) 2.1 [7-9] (problem) QoS (solution) (consequences) 2.2 ERTSDP (Embedded Real-Time Systems Design

More information

TTool Training. I. Introduction to UML

TTool Training. I. Introduction to UML TTool Training I. Introduction to UML Ludovic Apvrille ludovic.apvrille@telecom-paris.fr Eurecom, Office 223 Ludovic Apvrille TTool Training - 2004. Slide #1 Outline of the Training Introduction to UML

More information

Modeling variability with UML

Modeling variability with UML Modeling variability with UML Matthias Clauß Intershop Research Software Engineering Group Intershop, Jena Dresden University of Technology Matthias.Clauss@gmx.de Keywords: product families, domain modeling,

More information

A Lightweight Language for Software Product Lines Architecture Description

A Lightweight Language for Software Product Lines Architecture Description A Lightweight Language for Software Product Lines Architecture Description Eduardo Silva, Ana Luisa Medeiros, Everton Cavalcante, Thais Batista DIMAp Department of Informatics and Applied Mathematics UFRN

More information