We know UML is unified modeling language. So does it can model any kind of software(like Linux kernel, open office, any web application, etc)? or only can model a software which uses Object Oriented language(Java, c++, etc)?
I think modeling is good way to figure out software. If we do not use UML for modeling, what other modeling methods can we use?
And do you know what kind of modeling methods is used for giant open source projects(Linux kernel, Openoffice.org, Firefox, Apache http, MySQL, Eclipse, VIM, etc) and where do we can find out the modeling documents of them?
Thanks any answers!
UML diagrams can be used as a way to visualize a project before it takes place or as documentation for a project afterward. But the overall goal of UML diagrams is to allow teams to visualize how a project is or will be working, and they can be used in any field, not just software engineering.
The main aim of UML is to define a standard way to visualize the way a system has been designed. It is quite similar to blueprints used in other fields of engineering. UML is not a programming language, it is rather a visual language. We use UML diagrams to portray the behavior and structure of a system.
Structural UML Diagram The Pareto Principle seems to apply in terms of UML diagram usage as well – 20% of the diagrams are being used 80% of the time by developers. The most frequently used ones in software development are: Use Case diagrams, Class diagrams, and Sequence diagrams.
UML is first and foremost a communication tool, it helps you communicate ideas to other people on your team (or to yourself three months in the future), and as such, should be evaluated based on how easy it can express whatever you have in mind.
Being language-independent, UML cannot be used to express the expected, idiomatic way to use a given API or module, yet this is an essential part of the design: ignoring it can often end up with code that accurately models the underlying problem but requires dozens of lines of boilerplate code to interact with.
Also, UML cannot easily capture some specific properties of data structures that are relied on by algorithms. A red-black tree, for instance, is more easily represented by small tree-like sketches with "this is a red-black tree" or "this isn't a red black tree because" descriptions, than the corresponding UML class diagram.
Finally, languages may have features that are not represented elegantly in UML at all - for instance, Objective Caml module functors, or closures in any language that has them.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With