Thursday, September 25, 2008

Thursday, September 18, 2008

Understanding Balanced Scorecards

Understanding Balanced Scorecards

More than 50 percent of Fortune 1000 companies use balanced scorecards to measure business performance. Kaplan and Norton created a way to look at business strategy that digs deeper than just the financials.

Speaker: Jay Gulick, Director, BNET

Length: 02:30




What is SOA


What is SOA?



Service oriented architecture may be over-hyped, but it does offer lower-cost and easier integration.





Length: 02:10











Tuckman's Model: Fight Right

Tuckman's Model: Fight Right

Conflict isn't necessarily a bad thing, in fact, it can create highly performing teams. Bruce Tuckman's theory of team development suggests that all groups progress through various stages of performance: from forming to storming, then norming, and finally performing. By learning to fight about the right things--goals, roles, and strategies—teams can reach the final stage more quickly.

Speaker: Edward Muzio, President & CEO, Group Harmonics

Length: 03:10







Tuesday, September 2, 2008

Workflow Modelling

Foundations - Workflow Modelling WfMC and Workflow Specification Languages | XML Process Definition Language (XPDL) | Basic Workflow Concepts | Extended Workflow Concepts This section provides a short introduction into workflow management by giving an overview on common terminology and the description of the standards of the Workflow Management Coalition. WfMC and Workflow Specification Languages The Workflow Management Coalition (WfMC) was founded in 1993 as an alliance of companies and organisations dealing with workflow management. The mission of the WfMC is to establish a common terminology and standardised interfaces for workflow management. These interfaces comprise the definition, execution and management of workflows as well as references to external documents and applications [Jung01, pp. 126]. The conceptualisation of the interfaces is given by the WfMC's reference model depicted in the figure below. The workflow enactment services - using one or more workflow engines for the execution of workflows - represent the core of the reference model [Holl95]. A workflow engine is a software managing workflows with respect to given workflow definitions. WfMC Reference Model
WfMC Reference Model [Holl95, p. 20]
The five different interface definitions correspond to the integration of external aspects:
  • Interface 1 specifies the exchange of workflow models between external modelling tools and a workflow management system. External tools might be graphical or textual editors for workflow definitions. Some general purpose process modelling tools supporting the WfMC standard can be used for the specification of workflows, too [Holl95, p. 20].
  • Interface 2 describes the communication between a WfMS and workflow client applications. Workflow client applications are applications directly correlated with the workflow engine. They usually implement basic functionality of workflow applications like notification and data transfer [Holl95, pp. 31].
  • Interface 3 addresses the need to integrate external applications. Usually, the needed functionality is not provided by the WfMS itself. Hence, there has to be an interface to other applications already running in the enterprise [Holl95, pp. 35]. Examples for such kind of applications are business related software and special software tools.
  • Goal of interface 4 is to integrate other workflow management systems. The specification comprises the invocation of remote activities, data transfer as well as synchronisation aspects between different workflow enactment services [Jung01, p. 126] [Holl95, pp. 41].
  • Interface 5 describes the communication between the workflow enactment services and external monitoring and administration tools [Jung01, p. 126].
Interface 1 is the most relevant specification for the purpose of mapping business process models to workflows. It concentrates on the specification of different types of workflows (processes) as well as associated organisational units and applications. The system-specific integration of applications is done using interface 2/3 [Holl95, p. 20].
The Workflow Process Definition Language (WPDL) is the first attempt of the WfMC to specify of a standard for the interchange of workflow definitions. Being a standard for exchanging models, it does not comprise a graphical notation. Meanwhile, WPDL has been replaced by the XML Process Definition Language (XPDL), an XML-based document definition for workflows (see [Nori02]). Top XML Process Definition Language (XPDL) Concepts supported by XPDL are represented by the meta-model shown in the figure below. This meta-model generally comprises static entities (e.g. data or applications) as well as dynamic concepts (processes). Static entities are represented by the meta-types
  • Workflow Relevant Data,

  • Workflow Participant Specification and

  • Workflow Application Declaration.
Workflow-relevant data is initialised, created, read from external applications, and used during the execution of workflows [Nori02, p. 10]. It might be produced by an activity within a workflow or extracted from an external data source (e.g. an enterprise information system). For example, corporate databases are typical external data sources. These data sources are represented by the meta-type System and Environmental Data.
The workflow participant specification describes the resources which perform the given workflow processes [Nori02, p. 9]. This specification does not necessarily correspond to a human or a single person. It actually represents an abstract resource or a role which can be filled by one or more humans as well as an automated machine. Hence, the specification of a workflow participant corresponds to a resource available in an organisation or an entity in an organisational chart (Resource Repository or Organisational Model). The workflow application declaration provides the description of software applications needed for the execution of a workflow process [Nori02, p. 9]. Those applications are usually invoked by the workflow engine and workflow-relevant data has to be passed as a parameter (e.g. internal or external applications like corporate information systems or common office applications). Internal applications are usually provided as part of a workflow management system or can be developed using a proprietary development environment or language. XPDL Meta-Model
XPDL Meta-Model [Nori02, p. 12]
A workflow process definition is an aggregation of static entities (data, applications, participants) as well as the description of the system's dynamic behaviour. Dynamic aspects of the meta-model are represented by the entity-types Transition Information as well as Workflow Process Activity and its concrete subtypes
  • Block Activity,
  • Atomic Activity and
  • Sub-Process Definition.
An activity is a given unit of work which will be executed by a participant using computer applications and relevant data (see [Nori02, p. 8]). Additionally, every activity is characterised by a start- and end-time as well as the fact whether it can be executed automatically by the WfMS or by a workflow participant. The transition information specifies the control flow between activities [Nori02, p. 9]. It consists of a starting activity, an end-activity and a condition under which the transition is made. An atomic activity is an indivisible unit of work which has to be done at one go. A sub-process definition allows the embedding of another workflow process definition. A block activity consists of a set of other activities (type Activity Set). The semantics of an activity set is similar to the one of a macro. If an activity set is called during the execution of a workflow process, the activities contained in the set are copied into the calling process definition [Mato03, p. 13]. Basic Workflow Concepts Main concepts for the description of the dynamic aspects of a workflow system are activities and transitions. Activities correspond to defined units of work which can be atomic or consist of a set of activities. The control flow between activities is specified by transitions. Hence, a transition relation between two activities defines the ordering of these activities. An activity can be started if its preceding activities (connected by transitions) have terminated. Transitions, activities, and static entities (i.e. IT-related resources) are grouped by a so called workflow process definition. Workflow Process Definition A workflow process definition groups all elements necessary for the execution of a workflow. As shown in the meta-model depicted in the figure above, these elements comprise dynamic (activities and transitions) and static aspects (data, applications and participants). Additional attributes are a unique identifier, a name and two headers:
  • The process header comprises the creation date, a textual description and different time-related properties (e.g. estimated duration of a process' execution) of a workflow process.
  • The redefinable header consists of information about the author of the process definition, a country key, its publication status, responsible participants and a version number.
An activity set is a set of activities and transitions. All transitions contained in this set can only start from activities within this set and end in activities within this set. In other words, there are no transitions leaving an activity set or coming from outside. Properties of an activity set are a list of activities, a list of transitions and a unique identifier. Workflow Process Activities As shown in the figure below there are different types of activities within a workflow process definition. An atomic activity is an indivisible unit of work executed under the control of a WfMS. Such an activity can be executed automatically or by a human participant and usually works on workflow-relevant data. In contrast to this, block and route activities do not refer to workflow-relevant data. A block activity executes an activity set and has no own behaviour. Invoking an activity set means the start of the first activity in the set. The execution terminates with the last activity in the activity set (see the figure below [Nori02, p.30]). A route activity is an activity with no behaviour. It only serves as a dummy activity for cascading transition conditions (see subsequent section on transitions). Different kinds of activities in XPDL [Nori02, p.30]
Different kinds of activities in XPDL [Nori02, p. 30]
According to XPDL there is only one general XML-element for activities called Activity. Specific elements for route, block or sub-flow activities are missing. The differentiation between different types of activities is done by the annotation of alternative attributes. Those attributes are named Route, Implementation and BlockActivity. Activities can additionally be specified in terms of their level of automation (automatic or manual) as well as their implementation alternatives (no implementation, tool or subflow):
  • An automatic activity can be fully controlled by the workflow engine using internal and external applications.
  • Manual activities require the involvement of a human being.
  • Activities corresponding to the no-implementation alternative cannot be supported by an WfMS (e.g. manual tasks).
  • A tool supported implementation implies the usage of a software application.
  • If the implementation type is set to subflow, the execution has to be delegated to another workflow process definition. Parameters can be passed to such a sub-flow activity and the synchronisation can be specified with respect to a synchronous or asynchronous execution. Synchronous execution requires the calling process to wait for the termination of the called process. After its termination the called process might pass output values to the calling process. During an asynchronous execution the calling process does not have to wait for the termination of the called process and no output values can be returned.
Additional information for activities are deadlines and simulation information:
  • A deadline is the expiration of a given period of time. A deadline might for example be a milestone (given a project management context) or a specific appointment. The occurrence of a deadline can be handled synchronously (the current activity is interrupted by the deadline) or asynchronously (the handling of the deadline has to be done parallel to the currently running activity).
  • Simulation information extends the model by giving specific data for the simulation of models. Examples for specific data are average costs, expected duration and average waiting time.
As shown in the figure above, every activity is a join-point for several incoming transitions (join element) and specifies the type of splitting for outgoing transitions (split element). Both - join and split - can refer to parallel or alternative executions of workflows. An alternative split (XOR) represents a fork specifying that exactly one of the given alternatives can be executed. An alternative join corresponds to the synchronisation of an alternative split . The parallel execution of activities is started by an AND-split and ended by an AND-join. Rules for the construction of workflow descriptions regarding parallel and alternative connectors (splits and joins) are classified by so called conformance classes:
  • A NON-BLOCKED conformance class implies no formal properties of a diagram regarding the relationships between splits and joins.
  • If the conformance class is set to LOOP-BLOCKED, the graph build by the activities and transitions is a directed acyclic graph (DAG).
  • A FULL-BLOCKED graph implies that every AND-split has exactly one AND-join, every XOR-split exactly one XOR-join and vice versa. Additionally every path starting from the split will reach the corresponding join.
Transitions A transition is partly specifies the control flow between activities. As shown above the information whether incoming transitions of an activity are disjoint (alternative) or conjoint (parallel) is assigned to the activity. Additional information about a transition is assigned to the so called transition information [Nori02, p. 40]. Basic elements of such a transition are
  • its name (i.e. a character string),
  • a textual description and
  • a condition.
A condition should be a (semi-)formal specification - represented by a Boolean expression - of the circumstances enabling or disabling a transition. Additionally, a starting and an ending node are assigned to transition information. Consequently, every transition is characterised by exactly one source activity (from), exactly one destination activity (to), and a Boolean expression representing a firing condition. There are four different kinds of conditions in XPDL:
  • CONDITION: A transition can fire if its condition is evaluated to true.
  • OTHERWISE: Indicates a default transition which will fire if no other transition's condition evaluates to true.
  • EXCEPTION: An exception is a special transition indicating an abnormal behaviour. An exception-condition can trigger the rising of a special condition.
  • DEFAULTEXCEPTION: A default exception is triggered if all other exception conditions are evaluated to false.
Top Extended Workflow Concepts
Workflows are managed by a workflow management system by assigning tasks (as parts of workflow instances) to given resources. Such a resource might be either a human participant or a workflow application. A human resource usually corresponds to a role filled by a specific person in an organisation. A workflow application might be categorised into internal and external applications. An internal application is usually implemented by the WfMC itself and is closely coupled to the workflow system. An external application is an application independent from the WfMS.

Regarding the specification of resources for the execution of workflows there is one major problem. On the one hand, XPDL aims to be a language for a system-independent workflow definition interchange. Hence, a workflow model described using XPDL should be independent from any specific workflow engine. On the other hand, the description given by an XPDL-document should be sufficiently precise for the execution of workflows. This aspect might require the annotation of specific users or applications which are subject to a proprietary definition by a WfMS. Consequently, the XPDL-definition only provides an abstract mechanism for the specification of human resources and software-applications. Workflow Participants The XPDL-specification describes workflow participants as "an abstraction level between the real performer and the activity, which has to be performed" [Nori02, p. 43]. The engine has to map every abstract participant to a user given in the workflow management system's environment. The characterisation of every abstract participant includes its unique name and type. Possible types of workflow participants are:
  • RESOURCE: A specific resource given in a workflow management system's environment.
  • RESOURCE_SET: A set of resources.
  • ROLE: A role description that directly corresponds to a role given in an organisational chart. Such a role might be a function or some kind of qualification filled by a human.
  • ORGANIZATIONAL_UNIT: An arbitrary element of an organisational chart.
  • HUMAN: A human being interacting with the WfMS by worklists and/or applications (i.e. a concrete human being, like 'John Miller')
  • SYSTEM: A software application representing the participant of a fully automated workflow.
Those participants are assigned to activities of a workflow model using the Performer-attribute of an activity [Nori02, p. 31]. Hence, an activity keeps a reference to an abstract participant using the performer-attribute (which is rather a character string than a reference to a workflow participant). Workflow Application Declaration According to Junginger, workflow applications can be divided into internal and external applications [Jung01].
  • An internal workflow application is implemented as part of the WfMS. They are usually implemented using a programming language given by the WfMS. In the context of XPDL, those applications are called procedures.
  • An external application is an individual software package which can be used by a WfMS.
Using XPDL, a workflow application is specified by a unique identifier, its type and a list of parameters. The name of an application represents a unique id and does not necessarily correspond to its physical location or a specific implementation. Like the description of workflow participants, the identification of a workflow application is only a symbolic link. The interpretation of such a symbolic link representing a workflow application depends on the WfMS at hand. There are workflow engines supporting internal applications, external applications, or both [Jung01]

Business Process Modelling

Foundations - Business Process Modelling Introduction | Business Process Modelling with MEMO-OrgML | Further Business Modelling Concepts Introduction The analysis, representation, and management of knowledge about an organisation and its processes has always been very important [KoPl00]. A lot of work has been done on the development and evaluation of ontologies for process modelling, the specification of process modelling languages as well as on business process modelling methods and concepts (see e.g. [WaWe93], [Web97], [GrRo99], [EJLT99], [SuOs97], [Herb97], and [Öst95]). Business process models can be used for various purposes:
  • Documentation of processes of an organisation to foster communication
  • Analysis of business processes
  • Simulation of processes
  • Support for business process re-engineering
  • Software development of process-oriented applications
Business process models represent a common medium for the communication of domain experts and novices. They offer domain level concepts and enable a broader distribution of knowledge.The analysis of business processes relies on a detailed description of process models and related concepts with respect to the analysis' purpose.
Depending on the analysis' purpose, a modelling language has to offer language features for modelling the facts which are in its scope. Analysis might for example support the detection of weaknesses in existing processes. Appropriate language features provided by a process modelling language support the identification of media clashes, unnecessary processes, or potentials for further optimisations. The potential for further optimisations relies on the degree of formal description of the business process model. Depending on identified weaknesses, business process re-engineering might be applicable. Business Process Modelling with MEMO-OrgML
Multi-Perspective Enterprise Modelling (MEMO) is a method for modelling organisations according to different views as well as different levels of abstraction. MEMO includes several languages for modelling static, functional, and dynamic aspects of an enterprise. One of these languages is MEMO-OrgML (Organisation Modelling Language), which supports modelling of organisational structures and processes. Resource modelling has not been subject of the first conceptualisation of MEMO-OrgML, but will be added shortly.

An introductory example for a process that has been modelled using MEMO-OrgML is given in the figure below. An order is received by the distribution department and the data will be checked directly afterwards (process No. 1 called 'Check Data'). The order will be further processed if the given data is valid (event No. 4 called 'Valid Data') or aborted if the data seems to be invalid (event No. 3). Aborting an order results in sending a rejection message to the customer in process No. 9 ('Compose Rejection Message'). Further processing of the order comprises entering data into the order-management-system (process No. 2: 'Enter Order') followed by the parallel execution of the processes 6, 7 and 8. Process No. 6 is a composed process which consists of one or more sub processes. The process called 'Compose Acceptance Message' (No. 7) is a semi-automated process executed by the distribution department. Process No. 8 is a fully automated process sending a default email-message to the customer. The following list gives a brief overview of language concepts and their notation in MEMO OrgML. Symbols depicting processes
Abstract process
Aggregated process
Manual process


Semi-automatic process
Automatic process
Continuing process


Process performed by contractor
Process performed by an autonomous institution
Externally managed process('Black Box')
Hierarchie of composed processes
Displays processes as components of abstract or aggregated processes.
Symbols depicting events
Start-Event
End-Event
Relevant change of information change
(unspecified event)


Message arrived
Temporal event -
certain time interval has exceeded

Temporal event -
certain point in time has been reached
Control structures
Process produces event
Event triggers process


Parallel execution
Synchronization after termination of one of the parallel processes


Synchronization after termination of all parallel processes
Exceptions
Exceptions are defined for the entire system
(e.g. collapse of communication channel, time out)
Annotations (natural language)
Constraints Other comments
Top Further Business Modelling Concepts In addition to the process-oriented concepts given above, there are two further concepts relevant for process-oriented modelling of organisations. Organisational units correspond to departments, divisions or roles assigned to a particular business process. Resources are actors or tools which are required for the execution of a business process. Organisation units
The static structure of organisations can be described by an organisational chart. Such a chart shows an organisation by its sub-units and their respective relationships. The meta-model for the modelling of organisational charts is given in part a) of the figure to your right. An abstract organisation unit might either be a position or an organisational unit. Every organisational unit is a composition of other abstract organisational units. A position is an elementary description of the responsibilities of an employee. An example for an organisational chart is given in part b) of the figure to your right: An imaginary company consists of three departments (procurement, production, and distribution).

Organisational units and roles are elements assigned to business processes and refer to human actors which are responsible for the execution of a business process. Organisational units and positions as described here can be assigned to business processes. Roles are not necessarily defined in an organisational chart but can be assigned to business processes.

Resources Resources are essential for modelling processes [PSO99]. Processes and their relationships mainly describe dynamic aspects and the order of events. Resources assigned to processes additionally specify objects required or used by business processes. Resources are usually not available in an unlimited amount (see [Nübe01],[PSO99]). Hence, the usage of scarce resources has to be taken into account for the analysis or simulation of processes as well as for the development of a workflow application or an information system. As the resource-modelling-language for MEMO-OrgML is currently under development, no graphical notation will be given here but a short introduction into the underlying meta-model. An excerpt from this meta-model is shown in the figure below. The class AbstractResource is the root of the generalisation hierarchy on resources. Every resource has a name (name : String), a textual description (description : String) and a list of resource attributes (attributes[0..*]:ResourceAttribute). Every resource attribute is a name-type pair for the specification of user-defined attributes on resources.
Within the context of process modelling, we generally distinguish human, physical, and intangible resources. A human resource is an abstraction of different perspectives on staff. Examples for such perspectives are concrete employees, roles filled by employees or business-oriented functions. Physical resources comprise all tangible objects used within a business process. Examples for physical resources are production plants, raw material, or computer hardware. In contrast to this, intangible resources do not have a physical manifestation. Examples for intangible resources are data, information, software, or even knowledge.

Human resources might be associated with concrete persons or employees of an organisation as well as abstract organisational units in an organisational chart. Hence, a human resource can be characterised by different aspects; it
  • can play an active role
  • may be responsible for the execution of e-business processes
  • needs some qualification and competences for its job
The type HumanResource is a subtype of AbstractResource and has the two attributes qualification and competenceProfile, both of type String. The qualification is an objectively describable criterion for the capabilities of a human resource. Usually, the qualification certificate is issued by an established educational body. The competence of a human resource reflects personal skills of human beings. Hence, a competence profile corresponds to a set of skills or competences of a particular role or person.

Physical resources comprise all tangible objects used within a business process and are neither human nor intangible. According to Heinen [Hei88, p. 242] - in the context of industrial production - it can be differentiated between non-consumable resources (Potentialfaktoren) and consumable resources (Repetierfaktoren). Non-consumable resources are not used up during a manufacturing process and are still available afterwards, whereas consumable resources either become a part of the resulting product or are used up and therefore not available anymore [SS01, pp. 89 f]. At this point we abstract from physical resources, because these are not relevant in our context of workflow applications and the perspectives we present on it.

Intangible resources are resources without a physical manifestation. Software in terms of a set of programs that run on a computer hardware is a key resource in the process of supporting workflows. The meta-type Software has two attributes: systemRequirements and scalability, both of type String. The system requirements are modelled as text and describe the environment for the execution of a software system (i.e. processor architecture, minimum main memory or operating system). Scalability corresponds to the ability of supporting growing numbers of clients. The meta-type Information was created to represent information or knowledge that is relevant within workflows. It has the attributes name (a symbolic reference to an information instance) and typeDefinition of type String which describes how the information is structured. Examples for information are certain customer data or enterprise knowledge of some kind.

Tuesday, August 26, 2008

Scott Ambler talks about Agile Software Development

Get Clipmarks - The easiest way to email text, images and videos you find on the web.
Sent with Clipmarks

UML-Class Diagrams

UML 2 Class Diagrams


UML 2 class diagrams are the
mainstay of object-oriented analysis and design. UML 2 class diagrams show
the classes of the system, their interrelationships (including inheritance , aggregation, and association), and the operations and attributes of the classes. Class diagrams are used for a wide variety of purposes, including both conceptual/domain modeling and detailed design modeling. Although I prefer to create class diagrams on whiteboards because simple tools are more inclusive most of the diagrams that I'll show in this article are drawn using a software-based drawing tool so you may see the exact notation.

In this article I discuss:

1. Conceptual Class Diagrams

Figure 1 depicts a start at a simple UML class diagram for the conceptual model for a university. Classes are depicted as boxes with three sections, the top one indicates the name of the class, the middle one lists the attributes of the class, and the third one lists the methods. By including both an attribute and a method box in the class I'm arguably making design decisions in my model, something I shouldn't be doing if my goal is conceptual modeling. Another approach would be to have two sections, one for the name and one listing responsibilities. This would be closer to a CRC model (so if I wanted to take this sort of approach I'd use CRC cards instead of a UML class diagram). I could also use class boxes that show just the name of the class, enabling me to focus on just the classes and their relationships. However, if that was my goal I'd be more likely to create an ORM diagram instead. In short, I prefer to follow AM's Apply the Right Artifact(s) practice and use each modeling technique for what it's best at.

Figure 1. Sketch of a conceptual class diagram.

Enrollment is an associative class, also called a link class, which is used to model associations that have methods and attributes. Associative classes are typically modeled during analysis and then refactored into what I show in Figure 2 during design (Figure 2 is still a conceptual diagram, albeit one with a design flavor to it). To date, at least to my knowledge, no mainstream programming language exists that supports the notion of associations that have responsibilities. Because you can directly build your software in this manner, I have a tendency to stay away from using association classes and instead resolve them during my analysis efforts. This is not a purist way to model, but it is pragmatic because the other members on the team, including project stakeholders, don't need to learn the notation and concepts behind associative classes.

Figure 2 depicts a reworked version of Figure 1, the associative class has been resolved. I could have added an attribute in the Seminar class called Waiting List but, instead, chose to model it as an association because that is what it actually represents: that seminar objects maintain a waiting list of zero or more student objects. Attributes and associations are both properties in the UML 2.0 so they're treated as basically the same sort of thing. I also showed associations are implemented as a combination of attributes and operations - I prefer to keep my models simple and assume that the attributes and operations exist to implement the associations. Furthermore that would be a detailed design issue anyway, something that isn't appropriate on a conceptual model.

Figure 2. Initial conceptual class diagram.

The on waiting list association is unidirectional because there isn't yet a need for collaboration in both directions. Follow the AM practice of Create Simple Content and don't over model - you don't need a bi-directional association right now so don't model it. The enrolled in association between the Student and Enrollment classes is also uni-directional for similar reasons. For this association it appears student objects know what enrollment records they are involved with, recording the seminars they have taken in the past, as well as the seminars in which they are currently involved. This association would be traversed to calculate their student object's average mark and to provide information about seminars taken. There is also an enrolled in association between Enrollment and Seminar to support the capability for student objects to produce a list of seminars taken. The instructs association between the Professor class and the Seminar class is bidirectional because professor objects know what seminars they instruct and seminar objects know who instruct them.

When I'm conceptual modeling my style is to name attributes and methods using the formats Attribute Name and Method Name, respectively. Following a consistent and sensible naming convention helps to make your diagrams readable, an important benefit of AM's Apply Modeling Standards practice. Also notice in Figure 2 how I haven't modeled the visibility of the attributes and methods to any great extent. Visibility is an important issue during design but, for now, it can be ignored. Also notice I haven't defined the full method signatures for the classes. This is another task I typically leave to design.

I was able to determine with certainty, based on this information, the multiplicities for all but one association and for that one I marked it with a note so I know to discuss it further with my stakeholders. Notice my use of question marks in the note. My style is to mark unknown information on my diagrams this way to remind myself that I need to look into it.

In Figure 2 I modeled a UML constraint, in this case {ordered FIFO} on the association between Seminar and Student. The basic idea is that students are put on the waiting list on a first-come, first-served/out (FIFO) basis. In other words, the students are put on the waiting list in order. UML constraints are used to model complex and/or important information accurately in your UML diagrams. UML constraints are modeled using the format "{constraint description}" format, where the constraint description may be in any format, including predicate calculus. My preference is to use UML notes with English comments, instead of formal constraints, because they're easier to read.

2. Design Class Diagrams

Coming soon

Figure 3. A design class diagram.

3. How to Create Class Diagrams

To create and evolve a conceptual class diagram, you need to iteratively model:

To create and evolve a design class diagram, you need to iteratively model:

3.1 Classes

An object is any person, place, thing, concept, event, screen, or report applicable to your system. Objects both know things (they have attributes) and they do things (they have methods). A class is a representation of an object and, in many ways, it is simply a template from which objects are created. Classes form the main building blocks of an object-oriented application. Although thousands of students attend the university, you would only model one class, called Student, which would represent the entire collection of students.

3.2 Responsibilities

Classes are typically modeled as rectangles with three sections: the top section for the name of the class, the middle section for the attributes of the class, and the bottom section for the methods of the class. The initial classes of your model can be identified in the same manner as they are when you are CRC modeling, as will the initial responsibilities (its attributes and methods). Attributes are the information stored about an object (or at least information temporarily maintained about an object), while methods are the things an object or class do. For example, students have student numbers, names, addresses, and phone numbers. Those are all examples of the attributes of a student. Students also enroll in courses, drop courses, and request transcripts. Those are all examples of the things a student does, which get implemented (coded) as methods. You should think of methods as the object-oriented equivalent of functions and procedures.

An important consideration the appropriate level of detail. Consider the Student class modeled in Figure 2 which has an attribute called Address. When you stop and think about it, addresses are complicated things. They have complex data, containing street and city information for example, and they potentially have behavior. An arguably better way to model this is depicted in Figure 4. Notice how the Address class has been modeled to include an attribute for each piece of data it comprises and two methods have been added: one to verify it is a valid address and one to output it as a label (perhaps for an envelope). By introducing the Address class, the Student class has become more cohesive. It no longer contains logic (such as validation) that is pertinent to addresses. The Address class could now be reused in other places, such as the Professor class, reducing your overall development costs. Furthermore, if the need arises to support students with several addresses¾during the school term, a student may live in a different location than his permanent mailing address, such as a dorm¾information the system may need to track. Having a separate class to implement addresses should make the addition of this behavior easier to implement.

Figure 4. Student and address (Conceptual class diagram).

An interesting feature of the Student class is its Is Eligible to Enroll responsibility. The underline indicates that this is a class-level responsibility, not an instance-level responsibility (for example Provide Seminars Taken). A good indication that a responsibility belongs at the class level is one that makes sense that it belongs to the class but that doesn't apply to an individual object of that class. In this case this operation implements BR129 Determine Eligibility to Enroll called out in the Enroll in Seminar system use case.

The Seminar class of Figure 2 is refactored into the classes depicted in Figure 5. Refactoring such as this is called class normalization (Ambler 2004), a process in which you refactor the behavior of classes to increase their cohesion and/or to reduce the coupling between classes. A seminar is an offering of a course, for example, there could be five seminar offerings of the course "CSC 148 Introduction to Computer Science." The attributes name and fees where moved to the Course class and courseNumber was introduced. The getFullName() method concatenates the course number, "CSC 148" and the course name "Introduction to Computer Science" to give the full name of the course. This is called a getter method, an operation that returns a data value pertinent to an object. Although getter methods, and the corresponding setter methods, need to be developed for a class they are typically assumed to exist and are therefore not modeled (particularly on conceptual class diagrams) to not clutter your models.

Figure 5. Seminar normalized (Conceptual class diagram).

Figure 6 depicts Course from Figure 5 as it would appear with its getter and setter methods modeled. Getters and setters are details that are not appropriate for conceptual models and in my experience aren't even appropriate for detailed design diagrams - instead I would set a coding guideline that all properties will have getter and setter methods and leave it at that. Some people do choose to model getters and setters but I consider them visual noise that clutter your diagrams without adding value.

Figure 6. Course with accessor methods (Inching towards a design class diagram).

3.3 Associations

Objects are often associated with, or related to, other objects. For example, as you see in Figure 2 several associations exist: Students are ON WAITING LIST for seminars, professors INSTRUCT seminars, seminars are an OFFERING OF courses, a professor LIVES AT an address, and so on. Associations are modeled as lines connecting the two classes whose instances (objects) are involved in the relationship.

When you model associations in UML class diagrams, you show them as a thin line connecting two classes, as you see in Figure 6. Associations can become quite complex; consequently, you can depict some things about them on your diagrams. The label, which is optional, although highly recommended, is typically one or two words describing the association. For example, professors instruct seminars.

Figure 6. Notation for associations.

It is not enough simply to know professors instruct seminars. How many seminars do professors instruct? None, one, or several? Furthermore, associations are often two-way streets: not only do professors instruct seminars, but also seminars are instructed by professors. This leads to questions like: how many professors can instruct any given seminar and is it possible to have a seminar with no one instructing it? The implication is you also need to identify the multiplicity of an association. The multiplicity of the association is labeled on either end of the line, one multiplicity indicator for each direction (Table 1 summarizes the potential multiplicity indicators you can use).

Table 1. Multiplicity Indicators.

Indicator

Meaning

0..1

Zero or one

1

One only

0..*

Zero or more

1..*

One or more

n

Only n (where n > 1)

0..n

Zero to n (where n > 1)

1..n

One to n (where n > 1)

Another option for associations is to indicate the direction in which the label should be read. This is depicted using a filled triangle, called a direction indicator, an example of which is shown on the offering of association between the Seminar and Course classes of Figure 5. This symbol indicates the association should be read "a seminar is an offering of a course," instead of "a course is an offering of a seminar." Direction indicators should be used whenever it isn't clear which way a label should be read. My advice, however, is if your label is not clear, then you should consider rewording it.

The arrowheads on the end of the line indicate the directionality of the association. A line with one arrowhead is uni-directional whereas a line with either zero or two arrowheads is bidirectional. Officially you should include both arrowheads for bi-directional assocations, however, common practice is to drop them (as you can see, I prefer to drop them).

At each end of the association, the role, the context an object takes within the association, may also be indicated. My style is to model the role only when the information adds value, for example, knowing the role of the Student class is enrolled student in the enrolled in association doesn't add anything to the model. I follow the AM practice Depict Models Simply and indicate roles when it isn't clear from the association label what the roles are, if there is a recursive association, or if there are several associations between two classes.

3.4 Inheritance Relationships

Similarities often exist between different classes. Very often two or more classes will share the same attributes and/or the same methods. Because you don't want to have to write the same code repeatedly, you want a mechanism that takes advantage of these similarities. Inheritance is that mechanism. Inheritance models "is a" and "is like" relationships, enabling you to reuse existing data and code easily. When A inherits from B, we say A is the subclass of B and B is the superclass of A. Furthermore, we say we have "pure inheritance" when A inherits all the attributes and methods of B. The UML modeling notation for inheritance is a line with a closed arrowhead pointing from the subclass to the superclass.

Many similarities occur between the Student and Professor classes of Figure 2. Not only do they have similar attributes, but they also have similar methods. To take advantage of these similarities, I created a new class called Person and had both Student and Professor inherit from it, as you see in Figure 7. This structure would be called the Person inheritance hierarchy because Person is its root class. The Person class is abstract: objects are not created directly from it, and it captures the similarities between the students and professors. Abstract classes are modeled with their names in italics, as opposed to concrete classes, classes from which objects are instantiated, whose names are in normal text. Both classes had a name, e-mail address, and phone number, so these attributes were moved into Person. The Purchase Parking Pass method is also common between the two classes, something we discovered after Figure 2 was drawn, so that was also moved into the parent class. By introducing this inheritance relationship to the model, I reduced the amount of work to be performed. Instead of implementing these responsibilities twice, they are implemented once, in the Person class, and reused by Student and Professor.

Figure 7. Inheritance hierarchy.

3.5 Composition Associations

Sometimes an object is made up of other objects. For example, an airplane is made up of a fuselage, wings, engines, landing gear, flaps, and so on. Figure 8 presents an example using composition, modeling the fact that a building is composed of one or more rooms, and then, in turn, that a room may be composed of several subrooms (you can have recursive composition). In UML 2, aggregation would be shown with an open diamond.

Figure 8. Modeling composition.

I'm a firm believer in the "part of" sentence rule -- if it makes sense to say that something is part of something else then there's a good chance that composition makes sense. For example it makes sense to say that a room is part of a building, it doesn't make sense to say that an address is part of a person. Another good indication that composition makes sense is when the lifecycle of the part is managed by the whole -- for example a plane manages the activities of an engine. When deciding whether to use composition over association, Craig Larman (2002) says it best: If in doubt, leave it out. Unfortunately many modelers will agonize over when to use composition when the reality is little difference exists among association and composition at the coding level.

3.6 Vocabularies

In Agile Database Techniques (Ambler 2004) I discussed the importance of vocabularies when it comes to modeling XML data structures. A vocabulary defines the semantics of entity types and their responsibilities, the taxonomical relationships between entity types, and the ontological relationships between entity types. Semantics is simply a fancy word for meaning - when we're defining the semantics of something we're defining it's meaning. Taxonomies are classifications of entity types into hierarchies, an example of which is presented for persons Figure 9. Ontology goes beyond taxonomy. Where taxonomy addresses classification hierarchies ontology will represent and communicate knowledge about a topic as well as a set of relationships and properties that hold for the entities included within that topic.

Figure 9. A taxonomy for people within the university.

The semantics of your conceptual model are best captured in a glossary. There are several interesting aspects of Figure 9:

  • It takes a "single section" approach to classes, instead of the three section approach that we've seen in previous diagrams, because we're exploring relationships between entity types but not their responsibilities.

  • It uses UML 2.0's generalization set concept, basically just an inheritance arrowhead with a label representing the name of the set. In UML 1.x this label was called a discriminator. There are three generalization sets for Person: Nationality, Role, and Gender.

  • These generalization sets overlap - a person can be classified via each of these roles (e.g. someone can be a male foreign student). This is called multiple classification.

  • You can indicate "sub generalization" sets, for example Student within the Role generalization set.

  • Some generalization sets are mutually exclusive from others, not shown in the example, where an entity type may only be in one set. This is referred to as single classification and would be modeled using an XOR (exclusive OR) constraint between the two (or more) discriminators.

Source

This artifact description is excerpted from Chapters 8 and 12 of The Object Primer 3rd Edition: Agile Model Driven Development with UML 2.

Monday, August 25, 2008

Uncovering Requirements With UML Class Diagrams

Uncovering Requirements With UML Class Diagrams Part 1
Uncovering Requirements With UML Class Diagrams Part 2
Uncovering Requirements With UML Class Diagrams Part 3
Uncovering Requirements With UML Class Diagrams Part 4
Uncovering Requirements With UML Class Diagrams Part 5

Requirements Maturity Model (RMM) mapping to CMMI

CMMI to RMM Mapping

Foundation Series: CMMI Levels Explained

Foundation Series: CMMI Levels Explained

CMU classroom

CMMI is the initialism for Capability Maturity Model Integration.

CMMI is a numeric scale used to "rate" the maturity of a software development process or team. Maturity can be thought of like enlightenment. An immature process is not much different from the old "infinite monkeys" yarn - maybe we get it right, but probably not. A fully matured or enlightened process not only does it right, but improves itself over time.

The Software Engineering Institute (SEI) at Carnegie Mellon (Go Tartans! BSME90) created the CMM model for software engineering in the late 80's and early 90's. In an effort to consolidate multiple CMM models for different process areas, the SEI team created the CMMI in 2002. In this post, we will understand what each level represents.

Technically, the name of the model is the Capability Maturity Model Integration for Software Engineering, or SW-CMM, but in practice people just use CMM. The 645 page document can be found on the CMU SEI site.

Five levels of maturity in CMMI

The folks at the SEI created five classifications or levels of process maturity. Every software project can be classified into one of the levels. The levels are progressively harder to achieve, and each builds on the previous level. To be classified in a particular level, a process must meet all of the criteria of that level. If a process meets all the criteria of level 2, and some of the criteria of level 3, then that process is considered to be a level 2 process.

Note that there is a level 0, or incomplete. This level represents the absence or incompleteness of activity. If we are developing software, we are at least at level 1.

  1. Performed.
  2. Managed.
  3. Defined.
  4. Quantitatively Managed.
  5. Optimizing.

CMMI Level 1: Performed

superstar photo

The lowest possible CMMI level (there is no level 0) represents software development essentially in the absence of a process. Specifically, the SEI defines level 1 as being achieved if the goals of the process are met. If we are trying to write software, and we write software, then we are at level 1. In practice, level 1 processes are the ones described as chaotic and unordered. A team with a level 1 process can easily be dependent upon individual effort for success.

Most small software companies, independent developers, as well as many corporate IT departments operate at level 1. If we can point to projects that were "saved" by a superstar on the team, we are probably operating at CMMI level 1. We love having superstars on our teams - we hate being dependent upon them for survival.

CMMI Level 2: Managed

Manager

SEI defines CMMI level two as follows:

A managed process is a performed (capability level 1) process that is also planned and executed in accordance with policy, employs skilled people having adequate resources to produce controlled outputs, involves relevant stakeholders; is monitored, controlled, and reviewed; and is evaluated for adherence to its process description.

Our interpretation: take a CMMI level one process, and add a project manager to coordinate the chaos. The distinction is that at this level, the activities are planned, and then managed according to the plan. No additional insight is applied, just orchestration.

CMMI Level 3: Defined

cookie cutter

To achieve CMMI level three, we have to take a process that qualifies for CMMI level two, and institute it as a corporate standard. Then we tailor and apply that standard process to individual projects.

CMMI Level 4: Quantitatively Managed

measuring gage

When we incorporate quantitative measurement or statistical analysis tools as part of our process management process, we are operating at CMMI level four. This level represents "hard" introspection that utilizes quantified data to improve the management of the current project within our defined project.

CMMI Level 5: Optimizing

introspective robot

When we analyze the quantitative data from our projects and apply it to refining our processes for the future, we are operating CMMI level five. This level represents an introspective approach to quantitative project management, combined with a continuous improvement objective.