Lab Assignment 2
Lab Assignment 2
Lab Assignment 2
1. Choose an application (from any open source site)? Explain what is the application?
o it is free/.
o we have full control over the diagrams and can merge various tools
o it is extensible, and the external tools may be developed in C++ or Java, using BOUML
for their definition as any other program.
o it is very fast and doesn't require much memory to manage several thousands of classes.
This software is sufficiently advanced for the process of reverse engineering. It is capable of
generating class and artifact diagrams from a given source code. The complete process is as
follows:
When you start the application, it asks you for directories where the code is located. Then it
reads all the sources placed under the selected directories and sub-directories. The sources read
by the application are the ones having the extension specified in the settings. The tree formed
by the directories and sub-directories produce an equivalent tree of sub-packages, on whose the
needed class view and artifact view are made to support the classes and artifacts.
The software tries to produce the definitions made in BOUML at the artifact / class / operation /
relation / attribute levels. When it is possible it creates a relation rather than an attribute.
o To examine how a product works, what components it consists of, estimate costs, and
identify potential legal issues
o Learn from others' mistakes so that we do not make the same mistakes that others have
already made and subsequently corrected
o Reverse engineering often is done because the documentation of a particular device has
been lost (or was never written), and the person who built it is no longer available.
6. Describe if application borrows from anything(any API, Header file, component etc)
o Class.h
o ClassContainer.h
o Namespace.h, etc.
o UMLActivity.h
o UMLClass.h
o UMLFlow.h, etc
BOUML has plug-outs for integration . Plug-outs, written by hand help us in our daily tasks:
7. Were there any other versions of application you are able to find?
8. Describe the key component of the application and how they function.
o GUI framework: The complete graphic interface has been designed by a user "Qt". it is
responsible for diagrams, menu systems etc.
o Usecase view: A use case view may contain other use case views, use cases, actors,
classes, class instances, activities, state machines, use case diagrams, object
diagrams,sequence diagrams, collaboration diagrams and class diagrams in any order
o Class view: A class view is used to design the classes and may contain classes, class
instances, states, activities, class diagrams, object diagrams, sequence diagrams
andcollaboration diagrams in any order
o C++ generator: When the code generation is applied on a artifact associated to several
classes, the code generation is made for all these classes. Nevertheless the C++ code
generator produces first the code in memory and update the appropriate files only
when it is necessary, to not change the last write date of the files for nothing
o C++ utilities: When it is applied to a class, it allows to add specific operations not yet
defined, such as, Constructors, Destructors, operator overloading etc.
BOUML is a wonderful tool that helps in modelling of already written code and vice-versa. We
can use various components like C++ Code Generator, C++ Reverse, JAVA Generator,JAVA
reverse etc. to automate many tedious processes and generate an efficient and a well-
documented application.
The complex task of reverse engineering is made simple by this application. The C++ Reverse
tool is especially beneficial for us as we have been working with C++ for a long time.
For real time projects, having a proper documentation of software applications is of prime
importance. Having tools like BOUML proves to be handy at that time. Majority of indian IT
companies today do not have proper documentation of their software. Understanding huge
projects manually is a tedious and time-consuming task. Hence UML modelling tools are used.
10. Provide suggestion for changes that would improve the application. EXAMPLE: How to
improve the functionality of the application?
One major task for automation is the ease of Multi-user programming. A feature for real time
multi-user handling in BOUML should be introduced to enhance the functionality and purpose of
the application.
Currently, to share the same project files, all the users work on the same project files, this
means that no one has a copy of the project files. This is possible because when we save, only
the modified files are written. However, atmost one user modifies a given project file, else
modifications made by several will quickly be done.
There are two ways to allow at most one user to modify a file : to use the write permission set
using your OS (difficult under Windows) with the help of File Control, or to use Project Control.
11. Describe what you would change if you could design and implement this application from
scratch.
The application gets pretty complicated to use because of its innumerable features. Installing
the application from its source code by compilation is cumbersome and time-consuming.
If I were to implement this application from scratch, I would, first of all, include a help within the
application.
Secondly, the UML designing is not very intuitive and needs a lot time to master. This can
resolved by using existing code fragments which support better graphics and user interfaces like
zooming, flick panning etc.
Thirdly, the code generated is very complex and sometimes quite buggy. It would be better to
generate simpler code with fewer errors.
Website references: