Software Design Manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 17

DownloadSoftware Design Manual
Open PDF In BrowserView PDF
Software Design
Manual
Department of Applied Mathematics
School of Aeronautical and Space Engineering
Technical University of Madrid (UPM)

I
II

User Manual

3

Developer Guidelines

13

2

Part I

User Manual

3

Overview
This software, programmed in Python, has a clear objective of providing a new point of view of the source code
of Fortran or Python programs. This is aimed to multilayer-based FORTRAN 95 or PYTHON 3.x programsThis means that there are several modules in each layer which call to modules in the lower layers, and which
are called from modules in the upper layer. It can handle large amounts of files and directories, so this is
suitable for complex projects, like simulations. In python programs it also includes the files of the directory
where it is installed.
It is intended to present different graphs with the main information of the structure of the program. For
this is necessary for the program to follow some specifications:
For FORTRAN programs
• Every program and module should be in a separated file, whose name should be the same as the module/program name.
• If inside a file there is code after an endmodule or an endprogram line, it will not be read.
• This program distinguishes between upper case and lower case, so if there is a call to a module or function, both call and subroutine name should be with identical cases.
• Because the same reason as before, all statements and commands proper of FORTRAN should be in lower
case.
• All files should avoid the BOM Unicode writing, as it could cause reading problems.
For PYTHON programs
• It only works with any 3.x versions.
• All the used packages should be installed.

Getting started
Firstly, you will need the software involved in the program. This consist of a folder with following items:
• ”bin” folder Includes all the program files and source code.
• ”doc” folder Where this document should be included.
• ”graphs” folder Where the resulting graphs will be written. This folder is necessary for the program to
run, even if it’s empty.
• ”excludes.ini” It is a file which holds the ”USES” to be excluded from the graphs. It is read and updated
by the program. If you open it with the notebook you can read the last session exclusions (as a python
list: [”item1”, ”item2”, ] )
• ”configuration.ini” file Here, data referred to the previous session is stored. This data is the last directory and main file selected.
• ”graphviz-2.28.0.msi” It is compulsory to install this software, since it creates the graphs from DOT
language. It only takes a few steps.
• ”RUN.bat” The BAT file that starts the program.
• Python Portable For the use of this version, it is necessary to have the ”WinPython” folder, which contains the python portable, in the root folder of the program, the folder that contains the program folder.
For a successful use of the program you must start with the following steps:
1. Before start FortranProgram you should install GraphViz by double-clicking on the ”GraphViz.msi” in
the folder you have installed FortranProgram. Then follow the instructions.
2. Once you have installed GraphViz, you can start FortranProgram by double-clicking on the ”RUN.bat”
file of the main directory where you have installed it, and after a few moments the interface will pop up.
Page 5 of 17

The Interface

Figure 1: The interface

The interface has a very simple and intuitive use.
First of all, there are four buttons in the lower area.

Figure 2: Lower buttons

These are used to select the input directory (Select folder... button), to select the main file where it will
start reading (Select main file... button), to start reading the files (Refresh graphs... button) and modify the
exclusion list (USES excluded):
• Select folder... From this button you can select the folder that contains all the .f 90 or the .py files
of source code. In python programs it is not necessary to include the packages installed in the root of
python.
Page 6 of 17

• Select main file... From here you can select the main file of the program which calls to other modules
(which are in other files, but contained in the selected folder). You should select the type of file (.f90 or
.py) before looking for it in your PC.
• Refresh graphs... Refresh the graphs.
• USES excluded In FORTRAN programs: This button opens a window where you can modify the USES
(nodes) of the program to be omitted, so these will not appear in the graphs. In PYTHON programs: it
opens the same file but in this case there are folders instead of files.f90, which content will be omitted.

Figure 3: Window that pop ups when you are going to select the main file. At the right lower corner you can select whether
to see FORTRAN files or PYTHON files.

Note that: The data referred to the selected directory and main file is stored in a file called configuracion.ini.
So, if you run the program after a previous session, configuracion.ini will be read, and you will find that the
directory and main file of the previous session is selected. Then, if you wanted to analyze the same directory
and folder, you could click on ”Refresh Graphs...” directly without selecting directory and folder again.

Page 7 of 17

Then, at the upper left corner we have a list of output graphs. After we first refresh the graphs, the graphs
will be available. We can choose between a use’s graph, a complete use’s graph, a type graph, and a complete
type graph:
• Use’s graph
• Complete use’s graph
• Type graph (Only available for fortran programs)
• Complete type graph (Only available for fortran programs)
These will be explained later

Figure 4: List of available graphs. Only the two first are works with python graphs.

The main area, which is in blank at the beginning, is where the graphs are showed. After reading the files,
the first of the graphs will be presented here automatically. If there is any type of error in any graph, the
graphs will not show up directly, and only by pressing the buttons of the list will pop up the ones successfully
made.
Finally in the lower left corner there are some buttons related to the graph handle, which are not relevant
for the use of the SoftwareDesign program, as the results are stored in the ”graphs” folder. This buttons could
be used to zoom or move the graphs in the display area, or to save the selected graph in a specific format.

Page 8 of 17

Graphs
As we said, the result are four graphs for FORTRAN programs and two graphs for PYTHON programs, which
you can see with the buttons of the left in the white area. Apart from that, the graphs are saved in the folder
graphs, in the same directory as the SoftwareDesign program.

Each graph is saved in three different formats: JPG, PDF and DOT. DOT is the lenguage which is used by
the GraphViz software, a sub-program that creates the graphs.
• Use graph: Files are arranged with main file in the upper layer, followed by the modules in the second
layer, which are used with the use statement by the main file. Down them are the modules used by the
modules from the second layer.
• Complete use graph: This one is the same as the previous one, but with extra information within the
labels. This includes functions, subroutines and types held in each file.
• Type graph: Types are arranged as some of them are extended from others located in the same or in
other file, or because inside of some of them there are other types as a part of the main. Labels of types
are inside square labels that indicates where are they contained. Only for FORTRAN programs.
• Complete type graph: This one is the same as the previous one, but is included in the label the part of
the code that defines each type. Only for FORTRAN programs.
If reached some point it is found that there is a use to a module that isn’t found, it will be represented as
an elliptic label, instead of a box with rounded corners.

Page 9 of 17

Examples
This is the result of the analysing the folder ”Example”, selecting ”main.f90” as the main FORTRAN file.

Figure 5: Use Graph

Figure 6: Complete Use Graph

Page 10 of 17

main
pepito
modulo1
juanito

Figure 7: Type Graph

main
pepito
type pepito
type(juanito):: caca
integer :: n
real :: x
modulo1
juanito
type juanito
integer :: i,j

Figure 8: Complete Type Graph

Page 11 of 17

This is the result of the analysing the folder ”Example”, selecting ”main.py” as the main PYTHON file.

main

module1

module2

time

Figure 9: Complete Type Graph

main
class

Class1

module1
class

Class11

module2
class

class21, class22

time

Figure 10: Complete Type Graph

Page 12 of 17

Part II

Developer Guidelines

13

Overview
This program is writen in python 3.2, and it is written as a project in Visual Studio 2017. In order to execute
it from Visual Studio, you need to have installed the following packages:
• matplolib
• PILLOW
• PyDot
The project consists in three files: One common file that defines the interface (main.py), one that handles
fortran code (fortran.py) and the last one that handles python code (python.py). The fortran.py code and the
python.py code use the library PyDot for managing graphs.

PyDot Library
This is a library downloaded from GitHub, which author is Ero Carrera. It is a python interface to the GraphViz
software, which makes the graphs. More information and installation details are explained in the web page,
but in this case you will not need to install it, as it comes with the Software Design source files.
This file, pydot.py, offers you a few defined classes related to elements of graphs, with which you can build
the graph. These are the more relevant:
• class Graph Basic element that contains the rest of the classes.
• class Dot It is based on the graph, and represents a code writen in dot language
• class Subgraph Class representing a subgraph in Graphviz’s dot language.
• class Cluster Class representing a cluster in Graphviz’s dot language.
• class Node It creates a node, and you must add it to a graph, subgraph, cluster or dot class.
• class Edge It creates a node between two nodes, and it must be added to the graph, subgraph, cluster or
dot class.

Main.py
The main.py file uses the matplotlib library and its widgets, and it interacts with external files, like the configuration file (which saves the previous session parameters), or the list of exclussions excludes.ini. This code
also defines the GUI itself.
Both files fortran.py and python.py have a dynamic of searching in the files key words of the code, and
building the structure of the program in dictionaries and tuples.

Fortran.py
This module is responsible of creating an internal structure by reading the FORTRAN code, and later create
the graphs with the PyDot library.
This module uses mainly the following packages: re (Regular Expressions, this is very important because
it contains many useful tools for handling text), os (for looking for files) and tkinter (Windows that asks for
specific files of directories).
In fortran.py, first searches the U SE statements from the main file, passing through all files and building a tuple of the structure. This action is carried out mainly by the function get project dependencies and
get filedependencies inside the fortran.py code. Later, it searches for the code that defines the types, and it
builds again the structure of the types tree. For more details, there are comments in the code itself.
Page 15 of 17

Python.py
This module is responsible of managing the PYTHON code by reading the code files and creating an internal
structure. Later, it uses the PyDot library for generating the graphs.
After the main file is chosen , the program knows that the file is a python code. The main difference with
fortran.py is that it searches libraries in the python directory.
As fortran.py, it uses packages like re and os

Example of using the PyDot library
The following is a simple python code that imports the PyDot library. It consists of a graph with three nodes
connected, two of which are in a subgraph:

from pydot import *
if

name

== ’

main

’:

g r a f i c o = Dot ( graph name=” Prueba ” , graph type=” digraph ” )

main node=Node ( name=”Nodo1” , shape=” Mrecord ” , l a b e l =”Nodo p r i n c i p a l ” )
s e c n o d e=Node ( name=”Nodo2” , shape=” r e c o r d ” , l a b e l =”Nodo s e c u n d a r i o ” )
t e r n o d e=Node ( name=”Nodo3” , shape=” ” ,
)
l a b e l =” {N | P } ”
sec node . s e t l a b e l ( l a b e l )
main node . s e t l a b e l ( ” { Nodoprincipal | ”+ l a b e l +” } ” )

g r a f i c o . add node ( main node )
g r a f i c o . add node ( s e c n o d e )
g r a f i c o . add node ( t e r n o d e )
edge=Edge ( main node , s e c n o d e )
edge2=Edge ( main node , t e r n o d e )
g r a f i c o . add edge ( edge )
g r a f i c o . add edge ( edge2 )

zona=C l u s t e r ( ” zona1” , l a b e l = ”Zona 1” )
zona . add node ( main node )
zona . add node ( s e c n o d e )
g r a f i c o . add subgraph ( zona )

g r a f i c o . w r i t e p d f ( ’ prueba . pdf ’ )

Example code that uses the PyDot library
Page 16 of 17

The following is the result of running the previous code (prueba.pdf):

Page 17 of 17



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 17
Page Mode                       : UseOutlines
Author                          : 
Title                           : 
Subject                         : 
Creator                         : LaTeX with hyperref
Producer                        : pdfTeX-1.40.19
Create Date                     : 2018:10:15 01:02:02+02:00
Modify Date                     : 2018:10:15 01:02:02+02:00
Trapped                         : False
PTEX Fullbanner                 : This is MiKTeX-pdfTeX 2.9.6839 (1.40.19)
EXIF Metadata provided by EXIF.tools

Navigation menu