Software design blueprint and more
Computer software development has to deal with ever lasting process of software becoming more versatile and offering more and more functionality. Nowadays being far beyond the idea of a soft configuration layer of some computing machines.
More complex software is affected by various anomalies being result of software not being fully tailored to deal with possible conditions during its execution. It has to be addressed with more careful software development process being able to address its complexity. For humans the most suitable way to address complexity is to apply abstraction and express ideas at higher levels especially during the initial stages like specification and software design.
While the initial software designs may not directly contribute to creation of executable code they put in place a blueprint that communicate the intended program structure and behavior. It sets some frames that will help avoid problems in subsequent stages of software development. Of course UML is not the only solution to the problem and even using some informal text description could work. Nevertheless UML being well defined and standardized brings a lot of verified and reusable ideas like object orientation, well defined model perspectives or design patterns making the entire process more robust and streamlined. Additionally the strong emphasis on the visual representation follows the principle that the humans have a strong visual perception and “a picture may be worth more than 1000 words”. Obviously it is not a coincidence that blueprints applied in most domains are based on some form of visual representation.
Finally it is noteworthy that due to usage of various UML diagrams one may also capture dynamics of the modelled software. It can be used to present how the software changes in response to events like user interaction and while it does not fits the traditional definition of a blueprint it is a crucial feature of designing a well behaving software.
Having a standardized blueprint is a great advantage that eases communication in the team and even with external stakeholders like clients or managers. In UML all design elements have clear meaning and various models and diagrams expose specific parts of the system that can be comprehended without knowing other parts. Also applying some well known building blocks like design patterns introduces some well defined and understood form of abstraction allowing to effectively communicate program design at a higher level.
Standardized, reusable design process supported by software
UML was designed from the beginning to be supported by specialized tools in CASE environments. This implies good integration with all help that can be provided by specialized software in creating and communicating designs, reusing existing designs and minimizing the probability of introducing errors. Thanks to the usage of programs many streamlined tasks like verifying the integrity of models, updating documentation or generating code templates can be automatized and always performed in a repetitive manner.
Designs easy to be automatically converted into or reversed from the real code
Of course the ultimate goal of designing software is to produce compilable and executable code. With UML basing on object orientation and other programming oriented constructs it is possible to design an unambiguous mapping between a UML model and its representation in a specific programming language. Such a mapping may be already embedded in a UML tool. With such a feature it is possible to generate code out of a diagram without any manual coding or symmetrically parse existing code to create its diagram representation. It all seems like a big productivity gain minimizing the cost of modeling while creating software.
StarUML proved to be a good entry level UML tool and of course is used well beyond that scope in many organizations in serious projects and nowadays very likely is the most often downloaded and used of all UML tools.
It offers most functionality expected from a UML tool like a large selection of supported diagrams, ready to use design patterns, model verification, code generation and still provides multiple ways of extensibility through plugins, scripts or profiles making it even usable in a way not initially previewed by its creators. It all is delivered with no compromise on quality or usability giving the overall look and feel of a serious programming environment on par with the leading IDEs.
With the original StarUML not being updated anymore WhiteStarUML is a project basing directly on its code base and offering all its features adapted to the modern environment like support of Unicode strings or being developed and tested on Windows 7 and 8. As this is an active project new features and bug fixes are provided on regular basis.