First and for most let me discuss UML and Use Cases.
UML is just a graphical way of describing software systems. There are two types of UML namely:
- UML Sketching - here you only want to communicate an idea and go through different alternative approaches. It's not specific but it only gives the basic ideas.
- UML Blueprint - This is a very detailed type of modeling in which everything is well laid out and there is a definite time of completion.
Next up is the UML Development Process.
- Waterfall Model - The development process must follow the Analysis, Design, Coding, and Testing Process strictly. Meaning you can't do the coding without the design, and so on. You must start with the Analysis, Design, Coding and Testing (ADCT) Process. Overlapping within this processes is not allowed.
- Iterative (Most Common) - The iterative way is kinda different from the waterfall model in a sense that it is more flexible. You can divide the system into pieces and run the ADCT Process on each piece. Meaning you will not do Analysis just once, which will make your system flexible to changes. No wonder this is a more common type of approach.
Then there's the UML Planning Process
Predictive Planning - outcome is known for the whole duration of the project and everything should run smoothly with all the stakeholders involve, 'on the same page'. If you can easily list all requirements and you are pretty sure that it will not change, Use predictive Planning.
Adaptive Planning (Agile Development) - here the developer continually works with the user for possible changes. They act as 'adaptor' -- to changes. It's flexibility makes it a better option from the predictive planning.
Finally Use Case Diagrams. Use Case Diagrams define how your program will solve problems or provide some functionality.
Here's an example:
Use Case Diagrams usually deals with the interaction of Actors which could be a Human, or an External system. The Use cases are represented by the Elipses like "Insert Card".
The line from the actor towards the Use Cases are called communication lines.
The 'include' part means that two or more use case will try to access a single use case. whereas the 'extend' part is when a use case will try to access an optional use case.
The 'Select Amount' Use case is a general use case while under it are two specific use cases.
After this is the Use Case Description. Basically just a description of your use case. like " The user enters their card and inputs the pin. The system security will then check if the card is active or not stolen and/or if the inputted Pin is correct", etc. It will be wrapped up by saying that the system (security) will provide the funds and the receipt.
Another thing to note is the
Triggers (Machine receives the card/User enters Pin)
- Preconditions (e.g., bank has sufficient funds)
- Goals (e.g., Successful conclusions like being able to provide the user funds).
- List failed conclusion (ex: invalid card)
- Extensions (ex: If pin is invalid after three 3 tries)
- Steps of Execution (ex: From customer Inserts card up to the ejection of the card)
Activity Diagrams basically just describes what actions occurred to achieve an ultimate goal. If you are familiar with flow charts, then it will be easier to understand the concepts behind Activity Diagrams.
Initial Nodes is the starting point of the Activity Diagram which is symbolize by a shaded circle.The purple colored notes simply describes the different components of an activity diagram.
Classes describes types of objects your program will use while Class Diagrams describe those classes and how they relate.
I will just upload some slide shows to make the tutorial faster:
Sequence diagrams model interactions in your program and provide you with a logical way to layout your system. They are about showing the order of interactions between the parts of your program.
In making sequence diagrams, you describe which interactions are triggered and when. They focus in on the order of events in all interactions.
Again, here are the sequence diagrams of the tutorial:
Communication diagrams are used to show links between participants. They focus in on which interactions are triggered and when. They also describe the order of events in all interactions.
These ideas is from the video tutorials of Derek Banas
Here is a list of UML Tools. Some are free. :)