[Unified Modeling Language](https://www.omg.org/spec/UML/) (UML) is a standard for creating [[software architecture diagrams]]. UML diagrams are supported by [Lucid Chart](https://www.lucidchart.com/pages/) and [draw.io](https://app.diagrams.net/). Implementations of UML that support the [[diagrams and documentation as code]] philosophy include [[PlantUML]] and [[c4builder]]. UML is less popular than it once was. It is considered too heavy for [[Agile]] development. Teams may use UML-style diagrams in whiteboard sessions for quick design and easy communication, so familiarity with UML can help you work with your team. UML diagrams can describe - [[class|classes]] in [[object oriented programming|OOP]] - [[use case|use cases]] - others (sequence, activity and state) For a full list of diagrams and examples, see the [UML 2.5 Diagrams Overview](https://www.uml-diagrams.org/uml-25-diagrams.html). ## history of UML UML was developed by the "three amigos", James Rumbaugh, Ivar Jacobson, and Grady Booch in the mid-90s after they were hired by Rational. UML was born from attempts at developing an object-oriented [[visual programming language]] in the 90s (another attempt at bringing the power of coding to a non-technical audience). The original intent was to develop a diagramming language that could stand in for a programming language, but in the end was only used to document code after it has been written. However, visual programming was not suitable to developing software at meaningful scales[^1]. > [!Tip]- Additional Resources > - [What is UML](https://www.uml.org/what-is-uml.htm) [^1]: [[No Silver Bullet—Essence And Accident In Software Engineering]]