<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.5/uma.ecore"
    xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="-qyfAeChj5qzBMDwwd23uRw"
    name="facilitated_workshops,_CCwbMFkiEdul8L-IGeA7TA" guid="-qyfAeChj5qzBMDwwd23uRw"
    changeDate="2006-10-27T03:31:06.047-0700" version="1.0.0">
  <mainDescription>&lt;h3>&#xD;
    &lt;a id=&quot;Introduction&quot; name=&quot;Introduction&quot;>Introduction&lt;/a>&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Facilitated Workshops have been used in business and systems development in particular for years. Initially they were&#xD;
    used for JRP (Joint Requirements Planning) and JAD (Joint Application Design) but their usefulness was quickly seen in&#xD;
    other areas.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    They are a core technique in DSDM for speed and efficiency as a way of making high quality team-based decisions in&#xD;
    short timescales.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    &lt;span>&amp;#160;Whether they are used for DSDM or any other business project, they are run in the same way. This section&#xD;
    examines how the approach maps directly onto DSDM and where in DSDM they can be used. It seeks to show the potential of&#xD;
    possible use of Facilitated Workshops in a DSDM project, rather than mandate their use at any particular point. It is&#xD;
    up to the project members themselves to decide whether a workshop is necessary, or whether another technique, such as&#xD;
    interviewing or research is more applicable.&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Used properly, Facilitated Workshops are a useful tool for effecting cultural change in an organisation because they&#xD;
    promote buy-in from and empowerment of participants. When used effectively, they can set the tone for the whole&#xD;
    project.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    Note: It is not intended to explain here how to set up and run facilitated workshops but to show how the technique can&#xD;
    be applied to DSDM projects.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    &lt;a id=&quot;What_are_Facilitated_Workshops&quot; name=&quot;What_are_Facilitated_Workshops&quot;>What are Facilitated Workshops?&lt;/a>&#xD;
&lt;/h3>&#xD;
&lt;h4>&#xD;
    Definition&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    A facilitated workshop is a structured approach to ensure that a group of people can reach a predetermined objective in&#xD;
    a compressed timeframe, supported by an impartial facilitator.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Benefits&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Using Facilitated Workshops brings both direct and indirect benefits to a project.&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;strong>Rapid, quality decision-making.&lt;/strong> Because all stakeholders are present at the same time, there is&#xD;
        great confidence in the result. The group is focused on the objectives to be achieved in the session so that the&#xD;
        information gathering and review cycle is performed at a greater speed. Also, misunderstandings and disagreements&#xD;
        can be worked out at the time. Any concerns should therefore have been raised and resolved or noted by the end of&#xD;
        the workshop.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Greater user buy-in.&lt;/strong> Workshops, run effectively, lead to participants feeling more involved in the&#xD;
        project and decisions being made. They build and maintain enthusiasm.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Building team spirit.&lt;/strong>&amp;#160;Facilitated workshops&amp;#160;are a controlled way of building rapport as&#xD;
        well as delivering the primary objectives of the workshop.&amp;#160;They can promote understanding and co-operation&#xD;
        between departments, which is particularly important when a development involves many groups.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Process redesign by the user community&lt;/strong> If practices are reviewed as a result of a workshop,&#xD;
        participants gain a greater understanding of the inputs and implications of their work. This leads to improved&#xD;
        efficiencies that are&amp;#160;driven by the participants themselves, giving greater buy-in and commitment and&#xD;
        therefore a greater chance of successful implementation.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Clarification of requirements when they are unclear&lt;/strong> Business users can be led through their&#xD;
        objectives and processes to define what they may require. In the facilitated environment, participants can explore&#xD;
        and model ideas. This is successful through a combination of structured discussion and the presence of&#xD;
        knowledgeable participants.&lt;br />&#xD;
    &lt;/li>&#xD;
&lt;/ul>&lt;br />&#xD;
&lt;br />&#xD;
&lt;table class=&quot;mainframe&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;100%&quot; summary=&quot;markup&quot; border=&quot;0&quot;>&#xD;
    &lt;tbody>&#xD;
        &lt;tr>&#xD;
            &lt;td class=&quot;margin&quot; valign=&quot;top&quot; align=&quot;right&quot; width=&quot;88&quot;>&#xD;
            &lt;/td>&#xD;
            &lt;td class=&quot;content&quot; valign=&quot;top&quot; width=&quot;100%&quot; colspan=&quot;2&quot;>&#xD;
                &lt;h3>&#xD;
                    &lt;a id=&quot;Aligning_Workshops_to_the_DSDM_framework&quot; name=&quot;Aligning_Workshops_to_the_DSDM_framework&quot;>Aligning Workshops to the DSDM framework&lt;/a>&#xD;
                &lt;/h3>&#xD;
                &lt;h4>&#xD;
                    Aligning Workshop Roles to DSDM Roles&#xD;
                &lt;/h4>&#xD;
            &lt;/td>&#xD;
        &lt;/tr>&#xD;
    &lt;/tbody>&#xD;
&lt;/table>&lt;br />&#xD;
&lt;br />&#xD;
 &#xD;
&lt;p>&#xD;
    This section gives some guidance on which DSDM roles would fill the roles of a workshop. These are defined as being&#xD;
    Workshop Owner, Facilitator, Participants, Scribe and Observer.&lt;br />&#xD;
    &lt;br />&#xD;
&lt;/p>&#xD;
&lt;h5>&#xD;
    Workshop Owner&#xD;
&lt;/h5>&#xD;
&lt;p>&#xD;
    This is the owner of the problem that the workshop is set to solve. It is up to them to set the objectives and&#xD;
    deliverables of the workshop, although these should also be agreed by the participants.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    The owner of a Feasibility Study workshop could well be the Executive Sponsor whereas the owner of a timebox planning&#xD;
    session could be the Project Manager or Team Leader or even the Ambassador User.&#xD;
&lt;/p>&#xD;
&lt;h5>&#xD;
    &lt;a id=&quot;Facilitator&quot; name=&quot;Facilitator&quot;>&lt;/a>Facilitator&#xD;
&lt;/h5>&#xD;
&lt;p>&#xD;
    The Facilitator should be impartial, with no stake in the outcome of the workshop, and therefore should come from&#xD;
    outside the project. The Facilitator maps directly onto the DSDM role.&#xD;
&lt;/p>&#xD;
&lt;h5>&#xD;
    Participant&#xD;
&lt;/h5>&#xD;
&lt;p>&#xD;
    Participants represent the views of the project stakeholders (e.g. the business and software development community).&#xD;
    They are the individuals who are knowledgeable in the areas under consideration. They manage and operate the system and&#xD;
    include managers, supervisors, clerical staff, and IT staff.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    A participant could be one of many roles within the business or IT side. They could be a business user, a customer, a&#xD;
    supplier, a business analyst or data modeller or systems architect, a member of the financial staff, an auditor, or&#xD;
    indeed any of the core DSDM or specialist roles.&#xD;
&lt;/p>&#xD;
&lt;h5>&#xD;
    Observer&#xD;
&lt;/h5>&#xD;
&lt;p>&#xD;
    Observers are not allowed to contribute towards the output of the workshop. If they need to take part at all, they&#xD;
    should be Participants. Examples of the use of an Observer are therefore limited but could include someone auditing the&#xD;
    workshop process or the facilitator's ability, or a trainee facilitator who would want to observe the group dynamics&#xD;
    without being part of the group. Observers could also be development or support staff gathering useful background, but&#xD;
    in these cases it should be checked whether they should really be contributing to the session.&#xD;
&lt;/p>&#xD;
&lt;h5>&#xD;
    &lt;a id=&quot;Scribe&quot; name=&quot;Scribe&quot;>&lt;/a>Scribe&#xD;
&lt;/h5>&#xD;
&lt;p>&#xD;
    The Scribe records what is happening within the workshop. The role could be held by a co-facilitator, a business&#xD;
    analyst, developer or user so long as the individual has the required understanding of the issues in order to know what&#xD;
    to record. There may be two Scribes in a workshop. For example, one of the Developers might use a CASE tool to directly&#xD;
    model what's being discussed while another scribe takes down the discussion notes for later reference.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Applying the DSDM principles&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    Facilitated Workshops are like a DSDM project in miniature with defined deliverables in a tight timescale and empowered&#xD;
    users. Early workshops can build the foundation for this approach to continue throughout the project. This list below&#xD;
    shows how the DSDM Principles apply in Facilitated Workshops.&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
    &lt;li>&#xD;
        &lt;strong>Active user involvement is imperative.&lt;/strong> Workshops provide an ideal format for the business to be&#xD;
        directly involved in planning, designing and implementing a solution.&lt;br />&#xD;
        &lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>DSDM teams must be empowered to make decisions.&lt;/strong> Workshop participants need to be empowered and&#xD;
        have the right level of knowledge and authority within the scope of the workshop, so that decisions can be made&#xD;
        without delay.&lt;br />&#xD;
        &lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>The focus is on frequent delivery of products.&lt;/strong> It is good practice to structure a workshop so that&#xD;
        there are intermediate deliverables. It helps to order participants' thinking as they progress in logical steps.&#xD;
        This enables them to work towards an ultimate goal and gives them a growing sense of achievement as the workshop&#xD;
        progresses.&lt;br />&#xD;
        &lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Fitness for purpose is the essential criterion for acceptance of deliverables.&lt;/strong> The Facilitator&#xD;
        checks that fitness for purpose is achieved by keeping participants focused on delivery against an agreed set of&#xD;
        objectives. They ensure all are involved in decision-making.&lt;br />&#xD;
        &lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Iterative and incremental prototyping is necessary to converge on an accurate business solution.&lt;/strong>&#xD;
        One of the strengths of workshops is the synergy achieved by the group. Ideas do not have to be born fully&#xD;
        developed but can grow during discussion. In effect, they are being prototyped. It is an ideal setting to try out&#xD;
        ideas with all stakeholders and it is up to the facilitator to provide a safe environment in which this may&#xD;
        happen.&lt;br />&#xD;
        &lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>All changes during development are reversible.&lt;/strong> Information and decisions should be recorded as&#xD;
        necessary by either one or both of the facilitator and scribe so that ideas can be backtracked where necessary.&#xD;
        Often what happens in practice is that an idea or decision is redeveloped.&lt;br />&#xD;
        &lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Requirements are baselined at a high level.&lt;/strong> Objectives must be set during the preparation for a&#xD;
        workshop. As the workshop progresses, information is gathered, analysed and interpreted so that discussion can be&#xD;
        effective and a decision reached as a result of an increased understanding of the issues involved.&lt;br />&#xD;
        &lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>Testing is integrated throughout the lifecycle.&lt;/strong> Because all stakeholders are present, this&#xD;
        provides the quality control approach of testing ideas and deliverables as they are discussed. Participants have&#xD;
        the opportunity to challenge or agree.&lt;br />&#xD;
        &lt;br />&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        &lt;strong>A collaborative and co-operative approach between all stakeholders is essential.&lt;/strong> The facilitator&#xD;
        is responsible for creating the climate of co-operation within the workshop and enforcing any ground rules for the&#xD;
        group to behave effectively. This is only possible with the co-operation and commitment of all stakeholders. It is&#xD;
        an effective way of achieving either compromise or consensus.&#xD;
    &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;h4>&#xD;
    &lt;a id=&quot;Workshops_in_the_DSDM_lifecycle&quot; name=&quot;Workshops_in_the_DSDM_lifecycle&quot;>Workshops in the DSDM lifecycle&lt;/a>&#xD;
&lt;/h4>&#xD;
&lt;p>&#xD;
    The list below gives suggestions for the types of workshop that could be run during a project. Some of them could be&#xD;
    combined and become sessions within a longer workshop. Depending on the size and complexity of the problems being&#xD;
    addressed, it may not be necessary to obtain answers and decisions through a formal workshop although workshop&#xD;
    techniques could still be used in an interactive session. The duration of workshops varies from project to project.&#xD;
&lt;/p>&lt;br />&#xD;
&lt;br />&#xD;
&lt;table class=&quot;inline&quot; bordercolor=&quot;#990000&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;95%&quot; border=&quot;1&quot;>&#xD;
    &lt;tbody>&#xD;
        &lt;tr valign=&quot;top&quot;>&#xD;
            &lt;td>&#xD;
                Business case&lt;br />&#xD;
                 Context setting&lt;br />&#xD;
                 Configuration management strategy&lt;br />&#xD;
                 Contingency planning&lt;br />&#xD;
                 Cutover plans&lt;br />&#xD;
                 Data conversion requirements&lt;br />&#xD;
                 Data modelling&lt;br />&#xD;
                 Escalation procedure definition&lt;br />&#xD;
                 Estimates&lt;br />&#xD;
                 Feasibility prototype&lt;br />&#xD;
                 Feasibility prototype review&lt;br />&#xD;
                 Functional modelling&lt;br />&#xD;
                 Implementation plan&lt;br />&#xD;
                 Outline planning&lt;br />&#xD;
                 Development planning&lt;br />&#xD;
                 Prioritisation&lt;br />&#xD;
                 Problem definition&lt;br />&#xD;
                 Problem resolution&lt;br />&#xD;
                 Process and roles&lt;br />&#xD;
                 Process modelling&lt;br />&#xD;
                 Increment review&#xD;
            &lt;/td>&#xD;
            &lt;td>&#xD;
                Prototype design&lt;br />&#xD;
                 Prototype review&lt;br />&#xD;
                 Prototyping strategy&lt;br />&#xD;
                 Requirements change control&lt;br />&#xD;
                 Requirements gathering&lt;br />&#xD;
                 Risk mitigation planning&lt;br />&#xD;
                 Roles and responsibilities&lt;br />&#xD;
                 Scenario modelling&lt;br />&#xD;
                 Solution options evaluations&lt;br />&#xD;
                 Suitability/Risk List&lt;br />&#xD;
                 Support level definition&lt;br />&#xD;
                 System architecture definition&lt;br />&#xD;
                 Test plans&lt;br />&#xD;
                 Test reviews&lt;br />&#xD;
                 Test strategy&lt;br />&#xD;
                 Timebox planning&lt;br />&#xD;
                 Timeboxing strategy&lt;br />&#xD;
                 Training needs analysis&lt;br />&#xD;
                 Training plans&lt;br />&#xD;
                 User classes&lt;br />&#xD;
                 User documentation requirements&#xD;
            &lt;/td>&#xD;
        &lt;/tr>&#xD;
    &lt;/tbody>&#xD;
&lt;/table>&#xD;
&lt;h3>&#xD;
    &lt;br />&#xD;
     &lt;span>&lt;a id=&quot;How_to_achieve_successful_workshops&quot; name=&quot;How_to_achieve_successful_workshops&quot;>How to achieve successful&#xD;
    workshops&lt;/a>&lt;/span>&#xD;
&lt;/h3>&#xD;
&lt;h4>&#xD;
    The Facilitator&lt;br />&#xD;
    &lt;br />&#xD;
&lt;/h4>&#xD;
&lt;table class=&quot;mainframe&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;100%&quot; summary=&quot;markup&quot; border=&quot;0&quot;>&#xD;
    &lt;tbody>&#xD;
        &lt;tr>&#xD;
            &lt;td class=&quot;margin&quot; valign=&quot;top&quot; align=&quot;right&quot; width=&quot;88&quot;>&#xD;
            &lt;/td>&#xD;
            &lt;td class=&quot;content&quot; valign=&quot;top&quot; width=&quot;100%&quot; colspan=&quot;2&quot;>&#xD;
                &lt;p>&#xD;
                    Workshops should be run by skilled facilitators. They should be impartial to the issues under&#xD;
                    discussion with no stake in the outcome. An ineffective facilitator can bias a workshop or at worst&#xD;
                    lead to its failure. It is a highly skilled role requiring sensitivity, diplomacy, quick thinking and&#xD;
                    highly developed communication skills. The role of the Facilitator is not one to be taken lightly. It&#xD;
                    is a skilled job and is instrumental in ensuring a workshop is successful. One way to ensure an&#xD;
                    effective facilitator is to use one who has been accredited by&amp;#160;GlobalNF (&lt;a href=&quot;http://www.globalfn.org/&quot; target=&quot;_blank&quot;>www.globalfn.org&lt;/a>).&#xD;
                &lt;/p>&#xD;
            &lt;/td>&#xD;
        &lt;/tr>&#xD;
    &lt;/tbody>&#xD;
&lt;/table>&#xD;
&lt;p>&#xD;
    The role of the Facilitator is to concentrate on the workshop process so that all participants have an equal&#xD;
    opportunity to contribute. The main task of the Facilitator is to deal with all of the &quot;people&quot; aspects of the&#xD;
    workshops by getting participants to work as a team. The Facilitator documents results and decisions on flip-charts,&#xD;
    for example, that act as &quot;group memory&quot;. The Facilitator does not contribute to the content of the workshop.&#xD;
&lt;/p>&#xD;
&lt;h4>&#xD;
    Objectives&#xD;
&lt;/h4>&lt;br />&#xD;
&lt;br />&#xD;
&lt;table class=&quot;mainframe&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;100%&quot; summary=&quot;markup&quot; border=&quot;0&quot;>&#xD;
    &lt;tbody>&#xD;
        &lt;tr>&#xD;
            &lt;td class=&quot;margin&quot; valign=&quot;top&quot; align=&quot;right&quot; width=&quot;88&quot;>&#xD;
            &lt;/td>&#xD;
            &lt;td class=&quot;content&quot; valign=&quot;top&quot; width=&quot;100%&quot; colspan=&quot;2&quot;>&#xD;
                &lt;p>&#xD;
                    Objectives should be set for the workshop and checked for their alignment with the scope of the whole&#xD;
                    project. They should be set by the Owner and agreed by Participants, but the Facilitator should check&#xD;
                    for measurability and any priority.&#xD;
                &lt;/p>&#xD;
                &lt;h4>&#xD;
                    Scope&#xD;
                &lt;/h4>&#xD;
                &lt;p>&#xD;
                    Along with the objectives, the scope of the workshop should be defined. This could be described in&#xD;
                    terms of business functions, organisational lines or other defining limits.&#xD;
                &lt;/p>&#xD;
                &lt;h4>&#xD;
                    Participants&#xD;
                &lt;/h4>&#xD;
                &lt;p>&#xD;
                    Without the right people present for the workshop, a quality solution cannot be reached. The Owner&#xD;
                    should suggest who the participants should be but this should be reviewed by the participants&#xD;
                    themselves. They need to be committed, empowered and prepared.&#xD;
                &lt;/p>&#xD;
                &lt;h4>&#xD;
                    Intermediate deliverables&#xD;
                &lt;/h4>&#xD;
                &lt;p>&#xD;
                    &lt;span>If the workshop is structured so that the road to the final deliverable is staged, it will make&#xD;
                    it easier to review progress is in the right direction.&lt;/span>&#xD;
                &lt;/p>&#xD;
                &lt;h4>&#xD;
                    Workshop reports&#xD;
                &lt;/h4>&#xD;
            &lt;/td>&#xD;
        &lt;/tr>&#xD;
    &lt;/tbody>&#xD;
&lt;/table>Workshop outputs should be produced as soon as possible after the workshop. An efficient Scribe, working with a&#xD;
computer during the sessions, may be able to provide outputs for participants to go away with.&lt;br /></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
