UML Class Diagram
Design the application structure, how the classes are related, and the following:
- Class names
- Attributes and methods
- Visibility: public (+), private (-), protected (#)
- Inheritance relationships - "is-a" relation (Dog --------▷ Animal )
- Association relationships - "uses / has a reference to" relation (Product -------> ProductCategory)
- Aggregation relationships - weak "has a" relation (Car ◇------ Engine)
- Composition relationships - strong "has a" relation (House ◆------ Room)

ERD Diagram
Shows the structure of the database and has the following:
- Entities (tables)
- Attributes (columns)
- PK: primary key
- FK: foreign key
- UNIQUE: unique constraint
- NOT NULL: not null constraint
- Relationships between entities
- One-to-One (1:1)
- One-to-Many (1:N)
- Many-to-Many (N:M)

RAG and Wait-Graph
RAG (Resource Allocation Graph): Shows resource allocation to help identify deadlocks in multithread systems:
- Arrows indicate either the processor requesting the resource (P → R), or resource allocated to a processor (R → P)


RAG to Wait-Graph
To convert a RAG diagram to a wait-graph by removing all resource nodes and collapsing the appropriate arrows/edges. If a cycle can be formed with any set of processors, then there is a deadlock
