SlideShare uma empresa Scribd logo
1 de 64
UsingActivityDiagrams toModel Use Cases VisuallyPart 1: TheBasics by Declan Chellar
START POINT
TheStart Point representstheEVENT that triggersthe use case.
LabeltheStart Point to makethe INTENT and TRIGGER of the use case explicit.
Actor elects to AddCustomer
Actor elects to AddCustomer END POINT
Actor elects to AddCustomer LabeltheEnd Point to EXPLICITLY confirm that theintent of the use case has beenachieved.
Actor elects to AddCustomer Customeradded
Actor elects to AddCustomer This makesitclear to thereader that the use case is complete and that nothingfurther is needed in order to fulfiltheintent. Customeradded
Actor elects to AddCustomer NOT a goodlabelforanEnd Point End of process
To reachtheEnd Point…
… you need to model STEPS.
Link thestepswith TRANSITIONS.
Transitions use arrowheads to show thedirection of  processflow.
I like to put a note againstanystep that achievesthegoal of the use case. Goal  X achieved
Goal  X achieved … becauseitmightnotbethelaststep.
Themostcommonroutefromthestartpoint to theendpoint has manynames.
Buttheyeffectively mean thesamething.
Combine anywordontheleftwithanyphraseontheright. PRIMARY… …PATH BASIC… …FLOW TYPICAL… …COURSE OF EVENTS …SCENARIO
Often in a use case theSystem has to make a decisionbasedonbusiness rules...
The actual decisiontakes place within a STEP
System determines whether X or Y The actual decisiontakes place within a STEP
System determines whether X or Y A DECISION POINT is then used to helpthereadernavigatethediagram.
DECISION POINT
DecisionPointscontaintextwhich describes thenature of thedecision to bemade.
So wasit X or Y?
Decisionpointsallowtheflow to branchawayfromthePrimaryPath.
Transitionscomingout of DecisionPointsmust have a GUARD. [Condition 2] [Condition 1]
[IT WAS “Y”] [IT WAS “X”] A Guardneeds to explicitly describe a conditionwhichmustbe true in order to proceeddown that path.
IftheflowrejoinsthePrimaryPath, it is known as anAlternatePath. [Condition 2] [Condition 1]
[Condition 2] [Condition 1] WithAlternatePaths, thegoal of the Use Case is stillachieved.
There are othernamesforAlternatePaths. [Condition 2] [Condition 1]
Combine anywordontheleftwithanyphraseontheright. ALTERNATE… …PATH ALTERNATIVE… …FLOW SECONDARY… …COURSE OF EVENTS …SCENARIO [Condition 2] [Condition 1]
[Condition 2] [Condition 1] You can show howpathsrejoinbyusing a MERGE POINT.
[Condition 2] [Condition 1] You can show howpathsrejoinbyusing a MERGE POINT.
I don’tlikeMergePointsbecausetheytake up spacewithoutaddingclarity. [Condition 2] [Condition 1]
I prefer to modelmergingpathslikethis. [Condition 2] [Condition 1]
MergePoints can sometimesbeparticularlysuperfluous. [Condition 2] [Condition 1]
[Condition 2] [Condition 1] I thinkit is neater to show themergethisway.
Iftheflowdoes NOT rejointhePrimaryPath, it is known as anExceptionPath. [Condition 2] [Condition3] [Condition 1]
WithExceptionPaths, thegoal of the Use Case is NOT achieved. [Condition 2] [Condition3] [Condition 1] Goal  X achieved
WithExceptionPaths, thegoal of the Use Case is NOT achieved. [Condition 2] [Condition3] [Condition 1] Uh, oh! Goal  X achieved
I like to use colour to highlightthedifferentpaths. [Condition 2] [Condition3] [Condition 1]
[Condition 2] [Condition3] [Condition 1]
[Condition 2] [Condition3] [Condition 1]
This makesiteasy to identify test scenarios at a glance. [Condition3] [Condition 2] [Condition 1]
I alsolike to labeltheGuards in order to easilyidentifythepaths. A1: [Condition 2] E1: [Condition 3] P: [Condition 1]
And I like to labeltheStepsforeasybackwardreferencefrom Business Rules and a Logical Data Model. P1: A1: [Condition 2] E1: [Condition 3] P: [Condition 1] P2: A1.1: E1.1:
PrimaryPath: 	P1, P2. P1: A1: [Condition 2] E1: [Condition 3] P: [Condition 1] P2: A1.1: E1.1:
PrimaryPath: 	P1, P2. AlternatePath 1: 	P1, A1.1, P2. P1: A1: [Condition 2] E1: [Condition 3] P: [Condition 1] P2: A1.1: E1.1:
PrimaryPath: 	P1, P2. AlternatePath 1: 	P1, A1.1, P2. ExceptionPath 1: 	P1, E1.1. P1: A1: [Condition 2] E1: [Condition 3] P: [Condition 1] P2: A1.1: E1.1:
In some Use Cases, you willneed to modelparallelsteps [Condition 2] [Condition3] [Condition 1]
[Condition 2] [Condition3] [Condition 1] X A B In thisexample, steps A and B mustbothstartafterstep X finishes and mustbothfinishbeforethe Use Case ends.
[Condition 2] [Condition3] [Condition 1] X A B Butwe do notcareabouttheorder in which A and B happen.
A and B couldevenhappen at thesame time. [Condition 2] [Condition3] [Condition 1] X A B
In thisexample, B mustfollow A, butwe do notcarewhen C happens in relation to (A + B). [Condition 2] [Condition3] [Condition 1] A C B
In some Use Cases, you willneed to modelrepeatedsteps. [Condition 2] [Condition3] [Condition 1] A B
[Condition 2] [Condition3] [Condition 1] Foreach X: A In thisexample, you repeat (A + B) untilthere is no more X. B
[Condition 2] [Condition3] [Condition 1] Foreach X: A Forexample, you might do thiswhenaddingpassengers to a holidaybooking. B
Let’sreviewtheshapes
START POINT DECISION POINT [Condition] END POINT GUARD STEP PARALLEL STEPS Foreach X: TRANSITION REPEATED STEPS
www.chellar.com/blog

Mais conteúdo relacionado

Mais procurados (20)

Overview of UML Diagrams
Overview of UML DiagramsOverview of UML Diagrams
Overview of UML Diagrams
 
UML
UMLUML
UML
 
Introduction to UML
Introduction to UMLIntroduction to UML
Introduction to UML
 
Activity diagram model
Activity diagram modelActivity diagram model
Activity diagram model
 
Uml class Diagram
Uml class DiagramUml class Diagram
Uml class Diagram
 
Unified modeling language diagrams
Unified modeling language diagramsUnified modeling language diagrams
Unified modeling language diagrams
 
Uml
UmlUml
Uml
 
Uml class-diagram
Uml class-diagramUml class-diagram
Uml class-diagram
 
Timing diagram
Timing diagramTiming diagram
Timing diagram
 
Object oriented modeling and design
Object oriented modeling and designObject oriented modeling and design
Object oriented modeling and design
 
Uml structural diagrams
Uml structural diagramsUml structural diagrams
Uml structural diagrams
 
Use Case Diagram
Use Case DiagramUse Case Diagram
Use Case Diagram
 
Sequence diagram- UML diagram
Sequence diagram- UML diagramSequence diagram- UML diagram
Sequence diagram- UML diagram
 
Collaboration diagram- UML diagram
Collaboration diagram- UML diagram Collaboration diagram- UML diagram
Collaboration diagram- UML diagram
 
Presentation on uml
Presentation on umlPresentation on uml
Presentation on uml
 
Sequence Diagram
Sequence DiagramSequence Diagram
Sequence Diagram
 
CS8592-OOAD Lecture Notes Unit-3
CS8592-OOAD Lecture Notes Unit-3CS8592-OOAD Lecture Notes Unit-3
CS8592-OOAD Lecture Notes Unit-3
 
Sequence diagram
Sequence diagramSequence diagram
Sequence diagram
 
11 deployment diagrams
11 deployment diagrams11 deployment diagrams
11 deployment diagrams
 
Uml with detail
Uml with detailUml with detail
Uml with detail
 

Semelhante a Activity diagram tutorial

Copy of dti2143/dam31303 chap 1 problem solving and program design
Copy of dti2143/dam31303 chap 1 problem solving and program designCopy of dti2143/dam31303 chap 1 problem solving and program design
Copy of dti2143/dam31303 chap 1 problem solving and program designalish sha
 
C# Tutorial MSM_Murach chapter-05-slides
C# Tutorial MSM_Murach chapter-05-slidesC# Tutorial MSM_Murach chapter-05-slides
C# Tutorial MSM_Murach chapter-05-slidesSami Mut
 
Railway Orientated Programming In C#
Railway Orientated Programming In C#Railway Orientated Programming In C#
Railway Orientated Programming In C#Tama000
 
Implementing the Adapter Design Pattern
Implementing the Adapter Design PatternImplementing the Adapter Design Pattern
Implementing the Adapter Design PatternProdigyView
 
Use of Classes and functions#include iostreamusing name.docx
 Use of Classes and functions#include iostreamusing name.docx Use of Classes and functions#include iostreamusing name.docx
Use of Classes and functions#include iostreamusing name.docxaryan532920
 
Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2
Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2
Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2Philip Schwarz
 
Testing survival Guide
Testing survival GuideTesting survival Guide
Testing survival GuideThilo Utke
 

Semelhante a Activity diagram tutorial (11)

Copy of dti2143/dam31303 chap 1 problem solving and program design
Copy of dti2143/dam31303 chap 1 problem solving and program designCopy of dti2143/dam31303 chap 1 problem solving and program design
Copy of dti2143/dam31303 chap 1 problem solving and program design
 
OLT open script
OLT open script OLT open script
OLT open script
 
C# Tutorial MSM_Murach chapter-05-slides
C# Tutorial MSM_Murach chapter-05-slidesC# Tutorial MSM_Murach chapter-05-slides
C# Tutorial MSM_Murach chapter-05-slides
 
Railway Orientated Programming In C#
Railway Orientated Programming In C#Railway Orientated Programming In C#
Railway Orientated Programming In C#
 
Implementing the Adapter Design Pattern
Implementing the Adapter Design PatternImplementing the Adapter Design Pattern
Implementing the Adapter Design Pattern
 
Savitch ch 02
Savitch ch 02Savitch ch 02
Savitch ch 02
 
AUTOCAD RAHUL
AUTOCAD  RAHULAUTOCAD  RAHUL
AUTOCAD RAHUL
 
Use of Classes and functions#include iostreamusing name.docx
 Use of Classes and functions#include iostreamusing name.docx Use of Classes and functions#include iostreamusing name.docx
Use of Classes and functions#include iostreamusing name.docx
 
Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2
Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2
Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2
 
Testing survival Guide
Testing survival GuideTesting survival Guide
Testing survival Guide
 
TDD
TDDTDD
TDD
 

Mais de Declan Chellar

Business analysis is about more than software requirements
Business analysis is about more than software requirementsBusiness analysis is about more than software requirements
Business analysis is about more than software requirementsDeclan Chellar
 
BPMN 2.0 - an introduction to the Level 1 Palette
BPMN 2.0 - an introduction to the Level 1 PaletteBPMN 2.0 - an introduction to the Level 1 Palette
BPMN 2.0 - an introduction to the Level 1 PaletteDeclan Chellar
 
Defining process scope
Defining process scopeDefining process scope
Defining process scopeDeclan Chellar
 
BPMN in Pegasystems' PRPC Flow Rules
BPMN in Pegasystems' PRPC Flow RulesBPMN in Pegasystems' PRPC Flow Rules
BPMN in Pegasystems' PRPC Flow RulesDeclan Chellar
 
Process Model versus PRPC Discovery Map
Process Model versus PRPC Discovery MapProcess Model versus PRPC Discovery Map
Process Model versus PRPC Discovery MapDeclan Chellar
 
Activity Diagram tutorial part 3
Activity Diagram tutorial part 3Activity Diagram tutorial part 3
Activity Diagram tutorial part 3Declan Chellar
 
Tracing Data Requirements
Tracing Data RequirementsTracing Data Requirements
Tracing Data RequirementsDeclan Chellar
 
The Importance of Data Analysis in Producing a Robust Physical Data Model
The Importance of Data Analysis in Producing a Robust Physical Data ModelThe Importance of Data Analysis in Producing a Robust Physical Data Model
The Importance of Data Analysis in Producing a Robust Physical Data ModelDeclan Chellar
 
Activity diagram tutorial part 2
Activity diagram tutorial part 2Activity diagram tutorial part 2
Activity diagram tutorial part 2Declan Chellar
 
A Tale Of Two Projects
A Tale Of Two ProjectsA Tale Of Two Projects
A Tale Of Two ProjectsDeclan Chellar
 

Mais de Declan Chellar (11)

Business analysis is about more than software requirements
Business analysis is about more than software requirementsBusiness analysis is about more than software requirements
Business analysis is about more than software requirements
 
BPMN 2.0 - an introduction to the Level 1 Palette
BPMN 2.0 - an introduction to the Level 1 PaletteBPMN 2.0 - an introduction to the Level 1 Palette
BPMN 2.0 - an introduction to the Level 1 Palette
 
Defining process scope
Defining process scopeDefining process scope
Defining process scope
 
Iliad Book 1
Iliad Book 1Iliad Book 1
Iliad Book 1
 
BPMN in Pegasystems' PRPC Flow Rules
BPMN in Pegasystems' PRPC Flow RulesBPMN in Pegasystems' PRPC Flow Rules
BPMN in Pegasystems' PRPC Flow Rules
 
Process Model versus PRPC Discovery Map
Process Model versus PRPC Discovery MapProcess Model versus PRPC Discovery Map
Process Model versus PRPC Discovery Map
 
Activity Diagram tutorial part 3
Activity Diagram tutorial part 3Activity Diagram tutorial part 3
Activity Diagram tutorial part 3
 
Tracing Data Requirements
Tracing Data RequirementsTracing Data Requirements
Tracing Data Requirements
 
The Importance of Data Analysis in Producing a Robust Physical Data Model
The Importance of Data Analysis in Producing a Robust Physical Data ModelThe Importance of Data Analysis in Producing a Robust Physical Data Model
The Importance of Data Analysis in Producing a Robust Physical Data Model
 
Activity diagram tutorial part 2
Activity diagram tutorial part 2Activity diagram tutorial part 2
Activity diagram tutorial part 2
 
A Tale Of Two Projects
A Tale Of Two ProjectsA Tale Of Two Projects
A Tale Of Two Projects
 

Último

Top Rated Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...Call Girls in Nagpur High Profile
 
Pokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy TheoryPokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy Theorydrae5
 
WOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptxWOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptxpadhand000
 
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,dollysharma2066
 
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)Delhi Call girls
 
The Selfspace Journal Preview by Mindbrush
The Selfspace Journal Preview by MindbrushThe Selfspace Journal Preview by Mindbrush
The Selfspace Journal Preview by MindbrushShivain97
 
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)Delhi Call girls
 
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girlsPooja Nehwal
 
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Morcall Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Morvikas rana
 
LC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdfLC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdfpastor83
 
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)Delhi Call girls
 
2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)Delhi Call girls
 
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...PsychicRuben LoveSpells
 

Último (15)

Top Rated Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Tingre Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
Pokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy TheoryPokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy Theory
 
WOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptxWOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptx
 
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
8377087607 Full Enjoy @24/7-CLEAN-Call Girls In Chhatarpur,
 
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
 
(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...
(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...
(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...
 
The Selfspace Journal Preview by Mindbrush
The Selfspace Journal Preview by MindbrushThe Selfspace Journal Preview by Mindbrush
The Selfspace Journal Preview by Mindbrush
 
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
 
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
9892124323, Call Girls in mumbai, Vashi Call Girls , Kurla Call girls
 
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Morcall Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
 
LC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdfLC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdf
 
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
 
2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)
 
(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7
(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7
(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7
 
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
$ Love Spells^ 💎 (310) 882-6330 in West Virginia, WV | Psychic Reading Best B...
 

Activity diagram tutorial