Combat System Modeling:Modeling Large-Scale Software and Hardware Application Using UML
Maintaining large-scale legacy applications has been a major challenge for software producers. As the application evolves and gets more complicated, it becomes harder to understand, debug, or modify the code. Moreover, as new members are joining the development team, and others are leaving, the need for a well-documented code arises. Good documentation necessitates the visualization of the code in an easy to understand manner. The Unified Modeling Language (UML), an Object Management Group's (OMG) standard, is a graphical modeling language used for specifying, visualizing, constructing, and documenting software intensive artifacts. UML, which has been accepted as an industry standard in November 1997, has aided the design and maintenance of object-oriented legacy applications. While the software developers were building UML models for their existing applications as part of a reverse-engineering process, development of next generation software applications started from the models (forward-engineering process). In the forward engineering process, the system's code is specified and constructed from the UML models, which evolve as the system evolves in order to maintain consistent documentation and visualization of the system. Moreover, UML has the power of hiding unnecessary details of the system by the ability to model its different views. This enables visualizing the system at different levels of hierarchy.
This thesis documents how to use UML to model a software-intensive simulation for the combat systems of a fully automated naval "digital ship". This process started with building the use case diagrams based on the system requirements given by the domain experts. Then activity diagrams were used to describe the exact performance of the use cases. The logical view of the system was built using class, interaction, and activity diagrams. Then, the physical view of the system was built using component diagrams. Finally, an example of the code generation process from the UML models was carried out for one of the system components.
These models are to be maintained as the application evolves. Using UML has aided in building a well-structured object-oriented application, validating the use cases of the application with the domain experts, visualizing and validating the structure of the source code before writing it, communicating between different members of the development team, and providing an easily understandable documentation of the system.