Up Previous Next Title Page Contents

4.3 Metamodels for method knowledge

In this section we shall analyze what kind of knowledge ISD methods include and how this knowledge can be represented. This provides a basis for identifying essential metamodeling constructs. Method modeling is illustrated by representing metamodels of three methods, namely Business Systems Planning (IBM 1984), Structured Analysis and Design (Yourdon 1989a) and Unified Modeling Language (Booch and Rumbaugh 1995, Booch et al. 1996, 1997). These methods were selected as examples because of their different nature and area of use, and because they demonstrate various kinds of knowledge incorporated into methods. Metamodels of other methods are available through the CASE tools adapted (cf. appendix), and can be found in Tolvanen and Rossi (1996).

In the following, method knowledge is inspected on two levels. First, on the metalevel, we apply the ten phases of metamodeling by specifying individual techniques and by showing how techniques of a method are interconnected. Second, we briefly demonstrate tool support by showing instance level models as they are represented in a modeling tool.

4.3.1 Business Systems Planning

The modeled BSP was based on IBM’s Guide on Information Systems Planning (IBM 1984).

4.3.1.1 Metamodel of BSP

In the following the metamodel is discussed based on the metamodeling steps and the use of the GOPRR metamodeling language.

1) Identification of techniques. BSP includes six techniques: five matrix-based techniques that focus on relationships between business processes, data classes, systems, and organizational structures of a company, and a problem sheet to analyze the business problems faced during the development of IS architectures. Although the method also includes other project management oriented techniques such as GANTT diagrams, study work plans, and product lifecycle models, we focus here on design-related techniques. The techniques of the BSP are defined as graph types with the GOPRR language, and can be defined as follows (cf. appendix):
Graph types = {Process/Organization Matrix, Process/System Matrix, Process/Entity Matrix, System/Entity Matrix, System/Organization Matrix, Problem Table}
2) Identification of object types. In BSP, we distinguish five object types, namely: ‘business process’, ‘data class’ (or entity), ‘organizational unit’, ‘system’, and ‘problem’[18]. A business process is defined as “a group of logically related decisions and activities required to manage resources of the business”. A data class denotes “a logical grouping of data related to things that are relevant to the organization” (IBM 1984, p 29). An organizational unit denotes departments involved in the study, and a system either existing or planned information system. The object types can be defined as a set:
Object types = {Business process, Organization, Entity, System, Problem}
3) Determination of properties for each object type. Each object type is described with its naming property, that conveys the meaning of an instance. Because the name identifies all instances of an object type it is supposed to be unique in order to avoid homonyms. As a result, it is not possible to have for example entities or systems with the same name (i.e. values). The ‘problem’ is further characterized with six properties: a ‘problem cause’ to specify the reason for the problem, a ‘problem result’ to specify what is the outcome of the problem, e.g. how an organization must currently perform because of the problem, a ‘value’ to relate estimated costs to the problem, a ‘causing process’ to attach a business process that is related to the problem, a ‘causing entity’ to attach an entity related to the problem, and a ‘suggested solution’ to describe a proposed strategy for solving the problem.

4) Identification of relationships. Each of the matrix-based techniques focuses on specifying some relationships between two different object type instances. Accordingly, a relationship called ‘data usage’ defines the information needs of processes. A ‘system support’ relationship defines the systems that each process uses, and it is also applied in another technique to define units of an organization that use systems. Thus, this relationship type describes similar kinds of connections of systems in two different techniques, reducing the number of concepts in the metamodel. A ‘responsibility’ is used to relate stakeholders to processes: which units of an organization are involved with the process. Finally, a ‘usage’ relationship specifies the entities managed by the systems.
Relationship types = {Responsibility, System support, Data usage, Usage}
5) Determination of roles. In BSP all relationships are binary relationships with two different object types. In GOPRR these relationships are defined together with the role types and their cardinality rules. The role types identified are ‘uses’ and ‘used’ for the ‘data usage’ relationship; ‘uses’ and ‘supports’ for the ‘system support’ relationship; ‘performs’ and ‘is part of’ for the ‘responsibility’ relationship; and ‘system part’ and ‘data part’ for the ‘usage relationship’. Although each object type could have their own role types, and thus we could minimize the number of role types in the metamodel, we choose separate role types for each relationship type. According to the GOPRR data model, each role has a cardinality when bound to object and relationship types (cf. Kelly 1995), defining the minimum and maximum number of role type instances a relationship can have. In BSP all role cardinalities are one to one (1,1): a relationship must be connected to only one instance of each role type. The role types can be defined as a set:
Role types = { Uses, Used, Supports, Performs, Is part of, System part, Data part }
6) Allocation of properties to relationship types and role types. In BSP all information related to connections between object types is related to relationship types. The ‘data usage’ relationship type has a property type called ‘type of use’ since data use can be based on creation in which a process creates an instance of an entity, or on using the information contents of an existing entity (more specific usage types, such as update or read, can also be used).

A ‘responsibility’ relationship type specifies responsible organizational units for each process. This involvement can be as a major responsible decision maker in a process, having a major involvement in a process, or having some involvement in a process. The ‘support’ relationship type has a property called ‘status’ describing whether the system support for the organizational unit or process is current, planned, or hybrid (i.e. current and planned). Finally, the ‘usage’ relationship type does not carry additional properties. The allocations of property types to other types can be defined as follows:
Properties = { Name, Organization name, Entity name, System name, Relationship name, Type, Owner, Costs, Value adding, Value, Problem result, Suggested solution, Problem cause, Causing process, Causing entity, Responsibility type, Support status, Data usage}
Properties of types = {<Organization, Organization name, Owner}>, <Business process, {Name, Type, Value adding, Costs}>,<System, {System name}>, <Entity, {Entity name}>, <Problem, {Problem cause, Problem result, Value, Causing process, Causing entity, Suggested solution}>, <Responsibility, {Responsibility type}>, <System support, {Support status}>, <Data usage, {Data usage}>, <Usage, {Relationship name}>}
7) Determination of metamodels for individual techniques builds up the individual techniques by defining the bindings (Kelly 1995, Kelly 1997) from the relationship types as follows:
Process/Entity Matrix = {<Data usage, {<Used, {Entity}>, <Uses, {Business process}>}>} Process/Organization Matrix = {<Responsibility,{<Performs, Organization}>, <Is part of, {Business process}>}>} Process/System Matrix = {<System support, {<Uses, {Business process}>, <Supports, {System}>}>} System/Entity Matrix = {<Usage, {<Data part, {Entity}>, <System part, {System}>}>} System/Organization Matrix = {<System support, {<Uses, {Organization}>, <Supports, {System}>}>}
8) Determination of linkages between separate techniques. Since the data gathered with BSP is interrelated, each object type except a ‘problem’ is a part of several other techniques. Because the instances of object types are the same in the matrices, i.e. an instance of the ‘organization’ object type can exist in two modeling techniques, no actual linkages are defined in the meta-data model. In fact, the use of the same instances between the techniques is more dependent on the process in which the matrices are built, and thus should be represented with a process model.

9) Determination of the representational part of the method. BSP presumes a matrix and a table for representing models. Each object is represented through its name shown on the axis of a matrix. The relationships are located in the cells and only two relationship types have symbols according to the value of their properties: the ‘responsibility’ property can be denoted with different types of cross (i.e. X, X with a dot, and /), a ‘usage’ relationship between the ‘data class’ and the ‘system’ object types is shown with an X, and the rest of the relationships show the value of the relationship’s property.

10) Analysis and evaluation of the metamodel. The described metamodel of BSP has some limitations because of the restrictions made to BSP, and because of the metamodeling language applied. Naturally, BSP could be modeled differently. To gather information on the distribution of processes and data classes[19], a ‘process’ could be further characterized with additional properties, namely ‘security’, ‘auditability’, ‘volume’, and ‘responsiveness’. For distribution analysis each ‘data class’ could be specified with its ‘use’, ‘audit’, ‘security’, ‘occurrence’ and ‘currency’ properties. These properties could be attached to the ‘process’ and ‘data class’ types in the process/data class matrix, or a separate matrix (i.e. a new technique) could be created. The definition of data classes could also be supported by attaching a new property for categorization: a data class denotes a person, a place, a thing, a concept, or an event. Furthermore, to allow a description of each business process and data class a ‘description’ property could be attached to the corresponding object types. It must be noticed that the search for new method alternatives can lead to modifications of a method or even to the creation of a wholly new technique.

The metamodeling language also caused limitations to the specifications of BSP. Only those concepts of the method that could be described by the GOPRR model (and can be supported by the CASE tool) were specified[20]. First, we could not describe that each instance of an object type in a matrix must participate at least in one relationship and can participate in many relationships. This rule requires a constraint type for object type multiplicity in the metamodeling language, as discussed in more detail in Section 4.4.1.6. Later extensions of GOPRR include, however, such a multiplicity constraint (Kelly 1997). Second, we did not describe that a data class can not be created by more than one process although it could be possible to divide the data usage relationship into two different types, i.e. ‘create data class’ and ‘use data class’ relationship types, and a ‘create data class’ could have only one connected process.

Third, the metamodel does not specify the grouping of a set of processes, and the composition of a set of data classes, processes, and their connections into a module of an architecture plan. This would require a constraint for describing a composite of objects and relationships as discussed in Section 4.4.2.2. The main reason for excluding these rules of the method was the limited tool support: the tool used did not provide support for representing these constructs of a model in a matrix form as described by the method.

Fourth, we could not describe mandatory properties, so it was not possible to define for example that each business process must have a non-empty name. The specification of mandatory properties would require an additional construct in the metamodeling language (cf. Section 4.4.1.3). Finally, we could not describe the heuristic rules of the method. An example of these rules is the recommended population of 30-60 data classes that could be found in an average organization and specified within the matrix models (i.e. modeling of data classes should not be more detailed in system architecture plans). Similarly, the capturing of multiplicity of types would require an additional metamodeling constraint as discussed in Section 4.4.1.9.

4.3.1.2 Instance models of BSP

Because the methods modeled were also adapted in a modeling tool we can demonstrate the tool support by showing instance level models made with the metamodel developed. The examples of BSP include two matrixes, namely process/entity and system/ organization. Both contain instances of all types of the techniques. In the ‘process/entity’ matrix the horizontal axis contains entities, and the vertical axis contains processes. The cells of this matrix include data usage relationships: how each process uses each data class. In the ‘system/organization’ matrix units of an organization and systems are shown. The former on the vertical axis and the latter on the horizontal axis. The cells describe the current status of the system support for each organization.
 




FIGURE 4-2 Instance models described with BSP.

These examples show that the metamodel is complete, because it can represent matrixes as described in the method book, and also follow the constraints of the method. For example, it is not possible to relate two business processes directly through a ‘system support’ relationship type. Both of the matrixes show instances of all types found from these techniques, expect role instances which do not have any explicit representation in BSP. All in all, the correspondence between the elements of the metamodel and the instance level is clear.

4.3.2 Structured Analysis and Design

Although there are several structured methods available (e.g. DeMarco 1978, Gane and Sarson 1978, Yourdon 1989a) we selected Yourdon’s (1989a) version with the original ER model (Chen 1976) for closer analysis. It includes more individual techniques than other dialects with a structured approach and describes the linkages between different techniques in more detail.

4.3.2.1 Metamodel of SA/SD

As with BSP, the metamodel of SA/SD is discussed following the metamodeling steps and documented with the GOPRR metamodeling language.

1) Identification of techniques. The main techniques for analysis and design include a data flow diagram (DFD) for describing a network of functional processes, an entity relationship diagram (ERD) for specifying the stored data layout of a system, a structure chart (SC) for describing data interfaces between components, and a state transition diagram (STD) for specifying the time-dependent behavior of a system. According to the GOPRR language these techniques can be defined as the following graph types:
Graph types = {Data Flow Diagram, Entity Relationship Diagram, Structure Chart, State Transition Diagram}
2) Identification of object types. Unlike BSP, in SA/SD each individual technique has separate object types. DFDs have three object types, ‘process’, ‘store’ and ‘external’ (sometimes also called a terminator). ERDs contain three object types, ‘entity’, ‘attribute’ and ‘relationship’, and both SCs and STDs include only one object type, ‘module’ and ‘state’ respectively.
Object types = {Process, Store, External, Attribute, Entity, Relationship, Module, State}
3) Determination of properties for each object type. Because of the pen-and-paper mentality of SA/SD each object type is described with only a few properties, shown also in the diagrams: only a naming property type is used for most of the object types. The name must be unique among all components to avoid homonyms in the data dictionary. In GOPRR a property type can be renamed with a local name, hence the same property type (i.e. the ‘name’) can be labeled with a ‘store name’ and a ‘process name’ but they still refer to the same property type. Because Yourdon and some other method developers have proposed the use of numbering for processes a ‘process ID’ is also defined. Other modeling information on object type instances is typically added into an additional data dictionary including, for example, a definition and examples of each instance. Therefore, in the metamodel a ‘documentation’ is added for each object type. The ‘attribute’ object type is furthermore characterized with two additional property types: ‘type of data’ (e.g. integer, Boolean) and ‘constraints’ (e.g. primary key, not null).

4) Identification of relationships. Since each technique includes different object types the relationship types are separate between techniques as well. In DFDs, SCs and STDs only one relationship type exists. A ‘data flow’ describes the movement of chunks or packets of information between the object types of DFDs; a ‘call’ specifies a synchronous hierarchy of modules in SCs; a ‘transition’ describes possible changes between states. In ERDs two different types of relationships exist, one between an ‘entity’ and a ‘relationship’, called ‘in relationship’, and one between an ‘attribute’ and the other object types called ‘attribute of’. In other words, both entities and relationships can have attributes.
Relationship types = {Data flow, In relationship, Attribute of, Call, Transition}
5) Determination of roles. In SA/SD all relationships except the ‘data flow’ are binary with two instances of role types. According to our GOPRR definition of roles, a ‘data flow’ has two roles called ‘sends’ and ‘receives’. Since data flows can diverge, a cardinality constraint for a receiving role is one-to-many (1,M). In GOPRR, a cardinality constraint defines how many instances of a given role type can exist for a relationship type instance (Kelly et al. 1996). The other role types identified are listed in set form below. The ‘sends’ and ‘receives’ roles are also used for the ‘transition’; an ‘owner part’ and an ‘attribute part’ are used for an ‘attribute of’ relationship type; an ‘entity part’ and a ‘relationship role’ is used for the ‘in relationship’; and a ‘call from’ and a ‘call to’ for the ‘call’ relationship type. The minimum and maximum cardinalities for the other roles are one-to-one (1,1): an instance of a role type must be connected to only one instance of a relationship type. The set of role types is:
Role types = {Receives, Sends, Entity part, Owner part, Attribute part, Relationship role, Call from, Call to}
6) Allocation of properties to relationship types and role types. In ERD relationship types do not have any explicit properties: they just relate object types together. A ‘data flow’ can be characterized with its name and ‘documentation’ property type, a ‘call’ has a ‘call name’ and a ‘parameters’ property type to specify the parameters sent in the subroutine calls. A ‘transition’ relationship type is characterized with three property types: a ‘condition’ that must be met to change the state, an ‘action’ that the system takes when the state is changed, and ‘documentation’ for adding a textual description of the transition into the data dictionary.

Role types have properties only in the ERD technique. The ‘entity part’ has a ‘cardinality’ property for specifying how many times an instance of the ‘entity’ can relate to another instance of the ‘entity’ through a relationship. The properties and their allocation to object, relationship, and role types are specified in GOPRR as follows:
Properties = {Process name, Process ID, Documentation, Name, Flow name, Cardinality, Constraints, Type of data, Attribute name, Relationship name, Entity name, Module name, Parameters, Call name, Action, Store name, Condition, State name}
Properties for types = { <Process, {Process ID, Process name, Documentation}>, <Store, {Store name, Documentation}>, <External, {Name, Documentation}>, <Data flow, {Flow name, Documentation}>, <Attribute, {Attribute name, Type of data, Constraints, Documentation}>, <Entity, {Entity name, Documentation}>, <Relationship, {Relationship name, Documentation}>, <Entity part, {Cardinality}>, <Module, {Module name, Documentation}>, <Call, {Call name, Parameters}>, <State, {State name, Documentation}>, <Transition, {Condition, Action, Documentation}>}
7) Determination of metamodels for individual techniques. Types in each individual technique are defined by mappings from the relationship types as follows:
Data Flow Diagram ={<Data flow,{<Sends, {Process}>, <Receives,{Process, Store, External}>}>, <Data flow,{<Sends, {Store, External}>, <Receives, {Process}>}>}
This definition follows the rules of DFDs preventing data flows between stores and externals. Real-time extensions to the DFD could be included by defining the related types and bindings as follows:
Real-time Data Flow Diagram = {<Signal flow, {<Event from, {Control}>, <Signal to, Process, External, Control, Buffer}>}>,<Signal flow, {<Event from, {Process, External, Buffer}>, <Signal to, {Control}>}>, <Discrete data flow, {<Sends, {External, Store, Buffer}>, <Receives, {Process}>}>, <Discrete data flow, {<Sends, {Process}>, <Receives, {Process, Store, External, Buffer}>}>, <Deactivation flow, {<Event from, {Control}>, <Deactivated, {Process}>}>, <Continuous data flow, {<Sends, {Process}>, <Continuous, {Process}>}>, <Activation flow, {<Event from, {Control}>, <Activated, {Process}>}>}
Entity Relationship Diagram = {<Attribute of, {<Owner part, {Entity, Relationship}>, <Attribute part, {Attribute}>}>, <In relationship, {<Entity part, {Entity}>, <Relationship role, {Relationship}>}>}
Structure Chart = {<Call, {<Call from, {Module}>, <Call to, {Module}>}>}
State Transition Diagram = {<Transition, {<Sends, {State}>, <Receives, {State}>}>}
8) Determination of linkages between separate techniques. Unlike in BSP, techniques of SA/SD model a system using techniques that do not share types, i.e. use the same type in several techniques. Thus, each technique focuses on separate types in describing the system. Instance information can, however, be shared as discussed below. In the following the top-down approach and balancing rules of SA/SD are modeled with GOPRR using explosion and decomposition based linkages. First, because the DFD forms the dominant view of the system, each process can be decomposed into a submodel of a DFD (i.e. functional decomposition). Processes can also be exploded into a SC to specify subroutines and modules of a process, and into a STD to specify which transitions change the state of the controlling process and send or receive data flows from other processes. Second, as data stores of DFDs and entities of ERDs must be balanced, each data store in a DFD can be exploded into an ERD to specify the schemas of the database. Matching store names to entity names on the instance level is achieved in GOPRR by using the same property type for both types. Only their local name may differ (i.e. the metamodel definition shows local names for store and entity, but they refer to the same property type). Third, the STD allows decomposition to partition states. The same partitioning could be applied for the SC as well. It is not defined here, because a single SC should not include modules of several processes. Instead, according to SA/SD the process should be decomposed into subprocesses that have a simpler structure in terms of a number of modules and their subroutines.
Data Flow Diagram:
Explosions = {<Store, {Entity Relationship Diagram}>, <Process, {Structure Chart, State Transition Diagram}>}
Decompositions = {<Process, {Data Flow Diagram}>}
State Transition Diagram:
Decompositions = {<State, {State Transition Diagram}>}
9) Determination of the representational part of the method. In SA/SD all techniques are graphical notations except the process specification. During method implementation all graphical representations were defined as illustrated in Figure 4-3. Notational aspects that were not possible to define during the adaptation are the representation of relationships in a functional decomposition (i.e. relationships mapping to parent diagram and represented as “dangling” links with one connected object type only), and the tree structure of the SC diagram (i.e. each calling module should be located above the modules called). Other techniques do include similar location recommendations though. For example, in DFD externals are most often placed on the sides of a diagram.

10) Analysis and evaluation of the metamodel. Because of the several informal definitions of SA/SD, it is possible to model techniques in many ways. For example, a ‘decision’ in the SC could be included into the metamodel either by specifying a new role type, such as a ‘decision’, by adding a relationship type, such as a ‘call based on decision’, or by adding a property type for the ‘call’ relationship (see also Welke 1988). Moreover, supertype/subtype relationships and indicators for associative object type in ERD are not modeled[21]. Also, the data dictionary and process specification are not included, although one can form a dictionary by using information entered into the documentation properties attached to types (i.e. using form conversion mechanisms, cf. Section 2.3.2).

A more important aspect of evaluation is how completely the SA/SD method is modeled and therefore implemented into a CASE tool. Because of limitations in GOPRR and OPRR, some aspects of SA/SD were not captured and supported by tools. First, in a data flow diagram a process should be described in more detail either with an additional subdiagram or with a structure chart, but not by using both techniques. Such a restriction between explosion and decomposition can not be specified with GOPRR. These require a more detailed definition (cf. Section 4.4.2.3). Second, iteration calls between the modules could not be restricted with GOPRR, requiring an additional metamodeling constraint (cf. Section 4.4.1.8). Third, transformations that could be automated, such as transformations from a DFD into a SC at the same level, are not supported. Fourth, and similarly to the BSP metamodel, identifiers and uniqueness of property values were not defined adequately. It was not possible to restrict these to the scope of a single diagram. For example, according to the metamodel each name of a state is unique among all diagrams, not just inside one diagram as required. To model these rules a metamodeling language should allow the specification of different scopes for the method rules (cf. Section 4.4).

Fifth, the metamodel does not support all the balancing rules of SA/SD, such as a correspondence of data stores to entities (based on their names) or correspondence of conditions in state transition diagrams to data flows. Furthermore, dependencies of the property values should be included into the metamodel as well: the possible values for a condition in a state transition diagram can be only those defined in data flows that a related control process receives. Modeling of the balancing rules and dependencies of related instances would require additional metamodeling constructs as discussed in Section 4.4.2.4. Finally, the metamodel does not include multiplicity rules defining the number of roles an object can participate in (cf. Section 4.4.1.5).

4.3.2.2 Instance models of SA/SD

Figure 4-3 illustrates an example of the use of two techniques in the modeling tool. The upper window shows some processes and data flows of a sales system. To show instances of property definitions and a decomposition, a process called verify orders is viewed with its properties, and the status bar of the window shows that the process is decomposed into a subdiagram. The lower window shows a structure chart.





FIGURE 4-3 Two instance models of SA/SD: a data flow diagram and a structure chart.

4.3.3 Unified Modeling Language

After modeling two relatively simple methods we shall next model one of the most complex methods found, the Unified Modeling Language (UML). Because the standardization of UML was under development at the time of metamodeling, the metamodels discussed here are based on several publications about the method and its versions (cf. Booch and Rumbaugh 1995, Booch et al. 1996, 1997).

4.3.3.1 Metamodel of UML

As with the earlier metamodeling cases, specification of UML follows the metamodeling process described in Section 4.2.2.

1) Identification of techniques. UML includes as its main techniques a class diagram, a collaboration diagram and a use case diagram. Other diagram types[22], mentioned below as graph types, have a simpler structure and they are not applied as often. We also make some simplifications in techniques by joining the category diagram and class diagram as they include the same types. The only difference is that a category diagram shows instances of a ‘category’ only, whereas class diagrams can include instances of both a ‘class’ and a ‘category’. The composite diagram has been included in the graph types to support context diagrams for instances of classes (called composites in UML). In a later extension (Booch et al. 1996, 1997) all techniques are expected to use categories, renamed now as package, for organizing large models.
Graph types = {Class diagram, Use case diagram, Collaboration diagram, State diagram, Component diagram, Deployment diagram, Operation table, Composite diagram}
2) Identification of object types. Because of the unfinished documentation and relatively complex conceptual structure of UML, several alternative interpretations and consequent modeling decisions of object types can be made. First, template classes are not distinguished as a separate type because template parameters denoting generic classes are not mandatory, i.e. a ‘class’ without defined template parameters is considered to be an ordinary class. Second, a utility class is not identified as its own object type. Rather it is distinguished with a property attached to each class (discussed in the next task).

In addition to the object types of a class diagram, the GOPRR metamodel includes some constraints of UML modeled as object types, such as an alternative association (i.e. ‘or-constraint’) and ‘parallel inheritance’. Parallel inheritance hierarchies, however, could also be described with a property type referring to another hierarchy of the same superclass (i.e. to another inheritance relationship). The fourth major modeling alternative would be to distinguish objects of a class diagram and a collaboration diagram into separate types instead of using a single type in both techniques. Overall, the following set of object types describes one possible outcome of object type identification.
Object types = {Class, Instantiated class, Object, Category, Or-constraint, Parallel inheritance, Actor, Use case, Operation specification, Note, Node, Specification, Main program, Body, State, Stop, Start}
3) Determination of properties for each object type. Compared to other types of methods, object-oriented methods in general, and UML in particular, have more property types. For this reason they are specified here distinct from other metatypes. In contrast to the methods above, in UML some properties are atomic, single valued, whereas others consist of a set of other property types. For example, an attribute of a class has a more detailed internal structure with its own property types (such as an initial value and a data type of an attribute). In the following we first define the properties of object types and later the non-atomic properties.

A class is identified by its name and by the name of a possible category to which it belongs. Although class names must be unique in the enclosing category, the same class name can be used as a type of a parameter. In GOPRR this is modeled by using both global and local names for property types (see also the metamodel of state diagrams in Section 3.3.3). For example, a property type ‘class name’ can be renamed with a local name for describing a data type of a parameter.

An ‘Is utility?’ property type is used to define global attributes and operations; ‘overridability’ (e.g. deferred, leaf, extensible, virtual) is used to define how a class may be overridden by a subclass. ‘Template parameters’ is used for defining generic classes called templates in UML. An object type ‘instantiated class’ refers to a template class in two ways: properties of ‘instantiated class name’ refer to a name of a template class, and ‘values’ is a set of template parameter values. An ‘instantiated class’ can not have its own attributes or operations as these are derived from the template class. Categories are identified by a ‘category name’ and it has an additional ‘documentation’ property type. These are also added to ‘class’ and to ‘instantiated class’.

A ‘class name’ is the same property for ‘object’ and ‘class’ object types, showing that an object can not belong to other classes than those defined. Hence, objects are dependent on the existence of classes. Other property types for an ‘object’ are a ‘multiplicity’ type for specifying the number of instances a related class can have at a time; and ‘values’ which denotes instances of an attribute of a class. Notes are specified by one property type only, named here ‘description’.

Other object types of UML are identified and described just by their name and additional ‘documentation’ property type. Only a ‘node’ object type can have a ‘multiplicity’ property type, and a ‘state’ object type has ‘attribute values’ and ‘operations’ property types. The name spaces of identifying properties are distinguished by using separate property types for identifiers of object types, except in a dependency diagram. Here, the metamodel uses the same property type ‘name’ for identifying several object types. By defining the instances of this property type as unique we can specify that the same value for a property can not be used to identify other instances of object types in a deployment diagram. Thus, instances of ‘specification’ and ‘body’ can not have the same value for this property.
Properties for object types = {<Class, {Class name, Is utility?, Category, Stereotype, Overridability, Attributes, Operations, Documentation, Template parameters}>,<Category, {Category name, Documentation}>,<Instantiated class, {Instantiated class name, Values, Documentation}>,<Object, {Object name, Class name, Values, Multiplicity}>,<Note, {Description}>,<Use case, {Use case name, Documentation}>,<Actor, {Actor name, Documentation}>,<State, {State name, Attribute values, Operations, Documentation}>,<Operation specification, {Name, Responsibilities, Inputs, Returns, Modified objects, Preconditions, Postconditions}>,<Specification, {Name, Documentation}>,<Main program, {Name, Documentation}>,<Body, {Name, Documentation}>,<Node, {Name, Stereotype, Multiplicity, Documentation}>}
In UML, some property types have an internal structure. Each attribute has a basic format requiring property types for an ‘attribute’, namely an ‘attribute name’, a ‘data type’, an ‘attribute type’, and an ‘initial value’. Similarly, an ‘operation’ has an ‘operation name’, ‘parameters’ and a ‘return value’. The ‘parameters’ property type is a collection consisting of parameters each having three property types, namely a ‘parameter name’, a ‘parameter type’ and a ‘default value’. To support specific programming language constructs some additional property types are attached for both attributes and operations. These include ‘constraints’ and ‘visibility’ (e.g. public, private, protected in C++). Moreover, ‘overridability’ (applicable for both classes and operations) and ‘method body’ are also attached for operations. Finally, parameters for template classes have a name and a type.
Derived property types = {<Attributes, {<Attribute, {Attribute name, Data type, Attribute type, Initial value, Constraints, Visibility}>}>,<Operations, {<Operation, {Operation name, Parameters, Return value, Constraints, Visibility, Overridability, Method body}>}>,<Parameters, {<Parameter, {Parameter name, Parameter type, Default value}>}>,<Template parameters, {<Template parameter, {Parameter name, Parameter type}>}>}
4) Identification of relationships. In UML, there is a clear distinction between methods which apply several relationship types, and those using only one or two relationship types. More specifically, class diagrams and use case diagrams apply more relationship types than other techniques. In the following definition the number of necessary types is reduced by applying a ‘dependency’, a ‘note connection’ and an ‘inheritance’ relationship types in several techniques instead of having their own variants in each technique.
Relationship types = {Association, Ternary association, Aggregation, Instantiation, Dependency, Note connection, Inheritance, Connection, Message link, Uses, Extends, Participation, Transition}
5) Determination of roles. As in other methods, binary relationships dominate in UML. Some of the relationships are, however, n-ary at the instance level and some also at the type level. At the instance level, an ‘inheritance’ and an ‘association’, like their subtypes ‘aggregation’ and ‘ternary association’, necessitate roles with a maximum cardinality greater than one. For example, a ‘specialization’ role type in an ‘inheritance’ relationship can have more than one instance. Hence the maximum cardinality for a ‘specialization’ role type is many. At the type level, UML has optional role types connected to the relationship types which already have two other role types. Hence the minimum cardinality constraint of GOPRR is defined here as one for mandatory roles and zero for optional role types. Since all optional role types (i.e. ‘link attribute’, ‘or’ and ‘parallel’) can occur only once in a related relationship type instance, the maximum cardinality defined for them is one.

As with relationships the same role types are used in several techniques, such as ‘specialization’ and ‘note part’, reducing the size and complexity of the metamodel. The set of role types is:
Role types = {Instantiates, Is instantiated, Note part, Object part, Has dependents, Is dependent, Associates, Qualified association, Link attribute, Specialization, Generalization, Parallel, Or, Part, Whole, Sends, Receives, Uses, Participates, Is used, Extends, Is extended, Receive message, Send message, Connected}
6) Allocation of properties to relationship types and role types. Compared to the earlier methods, UML relationship and role types have many properties. This is also highlighted by adding some additional programming language specific property types. For example, the ‘inheritance’ relationship type has property types ‘visibility’ and ‘virtual?’ denoting inheritance structures in C++. In addition, associations can be defined as derived, messages have a ‘sequence’ for numbering, ‘arguments’ sent and values returned along the message, an ‘indicator’ for describing exclusive iteration and condition indicators of a message, and a ‘link type’ for typing message links (e.g. association, argument, global, variable).

Association role types have several property types. These include a description of the role names, their visibility (i.e. public, private, protected), the existence of an explicit order of the set of classes associated with a single object, how the role outside the class is accessed (i.e. read, write, both or none), and how many instances of the class can be associated with one instance in another class with ‘multiplicity’. Multiplicity is also needed for describing how many components an aggregate class can have, and how many aggregates a component class can be part of.

In the ‘state diagram’, the ‘transition’ is also specified with several property types: an ‘event’ triggering a state transition, a ‘condition’ to be met before the state transition can occur, and an ‘action’ resulting in a change in the state of the object. The action is realized by sending a message to an object or modifying a value of an attribute. Both events and actions have arguments, which refer to a specific value corresponding to a parameter. Finally, a role type ‘receive message’ has an additional ‘adornment’ property.
Properties for relationship and role types = {<Inheritance, {Visibility, Virtual?, Discriminator}>,<Association, {Association name, Is derived?}>,<Ternary association, {Association name, Is derived?}>,<Aggregation, {Name}>,<Associates, {Role name, Visibility, Access, Multiplicity, Ordered?}>,<Part, {Multiplicity}>,<Qualified association, {Role name, Visibility, Access, Multiplicity, Ordered?, Qualifier}>,<Whole, {Multiplicity}>,<Message link, {Sequence, Name, Arguments, Return type, Link type, Indicator}>,<Receive message, {Role name, Adornment}>,<Transition, {Event name, Arguments of event, Condition, Action, Arguments of action, Documentation}>,<Connection, {Name}>}
7) Determination of metamodels for individual techniques. In the following bindings for each technique are described. In the class diagram, both associations have four roles, of which a ‘link attribute’ and ‘or’ constraint are optional. Inheritance hierarchies between categories and classes are distinguished. Thus, inheritance hierarchies between these object types can not be mixed. Both of these hierarchies have an optional ‘parallel’ role showing to simultaneous specializations. A use case diagram also allows inheritance among categories, although use cases could also be considered as classes with their own inheritance hierarchy. Moreover, use cases can be related with ‘uses’ and ‘extends’ relationships and connected to actors with ‘participation’ relationships.

Other graph types have simpler bindings: a composite diagram is used for describing the associations and aggregations of objects in the context of a class, and a collaboration diagram focuses on message sending between the objects. A state model is similar to that modeled with SA/SD and an ‘operation table’ has no bindings. Finally, the component and deployment diagrams describe the physical design and apply a dependency structure among all object types as described below.
Class Diagram = {Instantiates, {<Instantiates, {Class}>,<Is instantiated, {Instantiated class, Object}>}>,<Dependency, {<Has dependents, {Category, Class}>, <Is dependent, {Class, Category, Object, Instantiated class }>}>,<Note connection, {<Note part, {Note text}>,<Object part, {Object, Class, Category}>}>,<Inheritance, {<Specialization, {Class}>,<Generalization, {Class}>,<Parallel, {Parallel inheritance}>}>,<Inheritance, {<Specialization, {Category}>,<Generalization, {Category}>,<Parallel, {Parallel inheritance}>}>,<Inheritance, {<Specialization, {Instantiated class}>,<Generalization, {Instantiated class}>,<Parallel, {Parallel inheritance}>}>,<Aggregation, {<Whole, {Class}>,<Part, {Class}>}>,<Association, {<Associates, {Class}>,<Associates, {Class}>,<Or, {Or-constraint}>,<Link attribute, {Class}>}>,<Ternary association, {<Associates, {Class}>,<Associates, {Class}>,<Or, {Or-constraint}>,<Link attribute, {Class}>}>}

Use case diagram = {<Dependency, {<Has dependents, {Category}>,<Is dependent, {Category}>}>,<Uses, {<Uses, {Use case}>,<Is used, {Use case}>}>,<Note connection, {<Note part, {Note text}>,<Object part, {Actor, Use case, Category}>}>, <Extends, {<Extends, {Use case}>,<Is extended, {Use case}>}>,<Inheritance, {<Specialization, {Category}>, <Generalization, {Category}>}>,<Participation, {<Participates, {Actor}>,<Participates, {Use case}>}>}

Composite diagram = {<Aggregation, {<Whole, {Object}>,<Part, {Object}>}>,<Association, {<Associates, {Object}>,<Associates, {Object}>}>}

Collaboration Diagram = {<Message link, {<Send message, {Object}>,<Receive message, {Object}>}>,<Note connection, {<Note part, {Note text}>,<Object part, {Object}>}>}

State Diagram = {<Transition, {<Sends, {Start, State}>,<Receives, {Stop, State}>}>,<Note connection, {<Note part, {Note text}>,<Object part, {State}>}>}

Component Diagram = {<Dependency, {<Has dependents, {Category, Specification, Main program, Body}>,<Is dependent, {Category, Specification, Main program, Body}>}>,<Note connection, {<Note part, {Note text}>,<Object part, {Category, Specification, Main program, Body}>}>} Deployment Diagram = {<Connection, {<Connected, {Node}>,<Connected, {Node}>}>,<Dependency, {<Has dependents, {Node}>,<Has dependents, {Node}>}>,<Note connection, {<Note part, {Note text}>,<Object part, {Node, Category}>}>,<Dependency, {<Has dependents, {Category}>,<Is dependent, {Category}>}>}

8) Determination of linkages between techniques. Because UML suggests several modeling techniques, linkages between them are vital to integrate models. The following explosion and decomposition operators were specified: categories can be attached to class diagrams which can also contain other categories. A class can also be exploded to a collaboration diagram showing the interaction between its objects, to an operation table for describing a functional model (also applicable for actors, use cases, states and for objects of a collaboration diagram), and to a state model for describing the temporal evolution of an object of a given class. A class can also be decomposed into a composite diagram to describe a specific context for its instances. Similarly classes, actors and use cases can have related state models through an explosion link. State models can be nested through decompositions of states into substates. Finally, a decomposition of categories into instances of the same graph type is added to class, use case, component and deployment diagrams.
Class Diagram:
Explosions = {<Class, {Collaboration diagram, Operation table, State diagram}>}
Decompositions = {<Class, {Composite diagram}>,<Category, {Class diagram}>}
Use Case diagram:
Explosions = {<Actor, {Operation table, State diagram}>,<Use case, {Operation table, State diagram}>}
Decompositions = {<Category, {Use Case diagram}>}
Collaboration Diagram:
Explosions = {<Object, {Operation table}>}
Decompositions = {}
State Diagram:
Explosions = {<State, {Operation table}>}
Decompositions = {<State, {State diagram}>}
Component Diagram:
Explosions = {}
Decompositions = {<Category, {Component diagram}>}
Deployment Diagram:
Explosions = {}
Decompositions = {<Category, {Deployment diagram}>}
9) Determination of the representational part of the method. On the notational side, the following aspects could not be represented. First, nested forms could not be specified in the same diagram with categories, composites and state diagrams. As the definitions show this was partly solved by using explosion and decomposition structures, even though the relationships between the components of two or more categories can not then be represented. Second, concurrent substates could not be represented by partitioning the state symbol. Third, different symbols for classes could not be defined based on the values of their properties, such as an additional box above the class symbol if parameters are defined (i.e. a symbol for the parameterized class).

10) Analysis and evaluation of the metamodel. In addition to the representation dependent aspects, the metamodel of UML could have been made differently. Some aspects of the textual method description were not included, since they were not supported by the parallel metamodel definition given by Booch and Rumbaugh (1995). Metamodels could also include additional programming language specific constructs. In fact, Booch and Rumbaugh, even though seeking for a standard notation for object-oriented methods, recommend situation-bound modifications to align concepts closer to a specific programming language (e.g. Booch and Rumbaugh 1995, p. 4).

A more important aspect of evaluation is how completely UML could be adapted in a CASE tool. This aspect is discussed in the following. The modeling of UML emphasizes the need of scopes for identity and uniqueness of properties. An identifier consisting of two property type instances could not be modeled, nor could the dependency between partial identifiers: the same category should not have more than one class with the same name, and the same class should not have more than one instantiated object with the same name. Modeling of these would require additional constructs in the metamodeling language.

The design orientation of UML and its close relationship to programming languages necessitates support for the naming policy of attributes and operations, such as the naming of classes in Smalltalk with a capitalized first letter (Hopkins and Horan 1995). Some of these syntax definitions would require dynamic changes in other property types. For example, if a parameter is not defined a colon should be omitted from the operation specification. These would require a specific syntax for property values and for checking of property type values (cf. Section 4.4.1.4). The GOPRR model could not describe the multiplicity rules which were applied in the OPRR metamodel. For example, the UML metamodel does not include restrictions on multiple inheritance (i.e. a class can participate several times in a specialization role) or that a class can be part of multiple classes through the aggregation relationship. To model multiplicity rules of methods an additional metamodeling construct would be needed (cf. Section 4.4.1.6).

Because of the wide variety of different graph types, the modeling of UML also highlights requirements to model interconnected methods and complex objects. In interconnections, the metamodel does not allow an operation to be exploded into an operation table. Instead this is carried out by exploding the whole class. Nor can we represent that each state diagram needs to be connected to a class diagram (through an explosion), or to a higher-level state (through decomposition). Modeling of these would necessitate a more detailed specification of interconnections (as discussed in Section 4.4.2.3). In a similar vein, complex objects could not be specified adequately with a decomposition, or an explosion. An example of such a situation is when a component in a complex object (e.g. a substate) can belong to many aggregate objects (e.g. to composite states). Among states, the substates can belong only to one composite state, whereas an object can belong to more than one composite class (Booch and Rumbaugh 1995, p 11, 33). Modeling these complex objects completely would require additional constructs in metamodeling languages (as discussed in Section 4.4.2.2). Finally, modeling UML requires a specification of related properties; i.e. two or more property instances have the same value. An example of this is the requirement specifying that a state model should not have an action that is not defined as an operation in the related class, or that a state should not have attribute values that are not equivalent to those defined in a related class. Similarly, an operation in a class diagram and a message in a collaboration diagram can have several common values, such as name and arguments, which refer to the same property instances. To model this sharing of the same values among different types would require additional constructs in the metamodeling language(cf. Section 4.4.2.4).

4.3.3.2 Example models

Part of the tool adaptation for UML is shown in Figure 4-4. The figure illustrates a class diagram for a banking application in which all classes belong to a stereotype interface that enables code generation for Corba IDL (Iona 1997). The cardinalities of the aggregation relationship are shown between classes named a bank and an account: a bank has multiple accounts, but each account must belong to only one bank. Inheritance relationships based on single and multiple inheritance are shown as lines with an arrowhead. Multiple inheritance is illustrated as the class named premium account inherits both current account and deposit account.

Since UML includes more complex data types than earlier methods, we show dialogs below the class diagram to illustrate the properties of a class and an attribute. The property dialog of an attribute newAccount refines the instance selected from the attribute list of the bank class.
 
FIGURE 4-4 An example class diagram of UML.

4.3.4 Summary

Metamodeling, if properly performed, leads to a detailed understanding of the phenomena under examination. In this section we inspected the conceptual structure of methods in computer-aided modeling tools. Of all 17 methods modeled, three were taken into a closer examination. The structures of the methods were identified, classified and represented with meta-data models. Moreover, CASE tool support was created using the metamodel to validate the method specifications. These efforts form the background for our study of requirements for method modeling languages in the next section.

[18] Hereafter we use apostrophes in the text to denote the types of a method.

[19] The analysis of distributed information systems is an extension of a basic BSP and thus excluded from our method analysis. For the same reason, an optional technique for analysis of critical success factors was also excluded. Similarly, techniques for ranking development priorities and project management were not included.

[20] It must be noted that not all method knowledge described with the GOPRR model is included into the set-based definitions. These include cardinality constraints of roles, data types of properties, identifiers of types, and uniqueness of property types. These are, however, implemented in the tool-based metamodels and contained into the discussion of the essential constructs of metamodeling languages in Section 4.4.

[21] Modeling of these concepts, however, is taken into account and specified in the metamodel of UML (cf. Section 4.3.3).

[22] We also excluded the event trace diagram since it is based on the same underlying semantics as the collaboration diagram (Booch and Rumbaugh 1995).

Up Previous Next Title Page Contents