Grande do Norte (UFRN) in Brazil. It has developed
several enterprise large-scale information systems
(SINFO, 2012) which perform full automation of
university management activities. Due to the quality
of these systems, several Brazilian federal
institutions have licensed and extended them to their
needs.
Our main goal was to verify the approach
feasibility of static analysis in practice. In this sense,
the tool should extract useful information in order to
help developers answering some questions, such as:
(i) what scenarios does a specific method belong to?
(ii) what kinds of quality attributes can affect a
specific scenario? (iii) what are the scenarios that
contain potential tradeoff points among quality
attributes?
4.1.1 Choosing Evaluation Scenarios
In the first step we have chosen some specific
scenarios: (i) sending message – scenario used for
sending messages (emails); (ii) authenticated
document generation – scenario used to generate
authenticated documents; (iii) user authentication –
scenario used to authenticate users in the web
application; (iv) mobile user authentication –
scenario used to authenticate users from a mobile
device.
4.1.2 Identifying Scenarios
In this step the starting execution method for each
chosen scenario were identified. They are,
respectively: (i)
sendMessage(); (ii) execute(); (iii)
userAuthentication(); (iv)
mobileUserAuthentication().
4.1.3 Identifying Quality Attributes
The methods and quality attributes selected were: (i)
getJdbcTemplate()
with @Performance – it was
considered to be relevant for performance
requirements because it is accessed by several
database operations; (ii)
enqueue()with @Security
– it is used by the system to enqueue messages that
will be sent over the network; (iii)
createRegistry()
with @Security – it is used to
create the registry of an authenticated document to
ensure its legitimacy; (iv)
toMD5() with @Security
– it is used to create an MD5 hashing of strings, for
example, passwords; (v)
initDataSourceJndi()
with @Reliability – it is used to initialize the
access to the database and was considered critical
for reliability because if the database initialization
fails, the system is not going to work adequately.
4.1.4 Executing the Static Analysis Tool:
Preliminary Results
The tool execution has extracted useful and
interesting information in order to help us answering
the questions highlighted on section 4.1.
Considering the first question – (i) what
scenarios does a specific method belong to? – the
tool can determine that the
getJdbcTemplate()
method, for example, belongs to the following
scenarios: user authentication, mobile user
authentication and authenticated document
generation. This is possible because the tool builds a
static call graph of each scenario and calculates if a
call to a particular method exists in some of the
possible paths of execution.
Regarding the second question – (ii) what kinds
of quality attributes can affect a specific scenario? –
the tool verifies all the paths for a specific scenario
checking which ones have any quality attribute. Our
tool has identified, for example, all the quality
attributes related to the User Authentication
scenario: (i) performance quality attribute – because
the method
getJdbcTemplate() belongs to a
possible path; (ii) the reliability quality attribute
because the method
initDataSourceJndi() also
belongs to a possible path; and (iii) finally, the
security quality attribute for the same reason, the
method
toMD5() is used to encrypt the user
password.
Finally, for answering the third question – (iii)
what are the scenarios that contain potential
tradeoff points among quality attributes? – the tool
looks for scenarios affected by more than one
quality attribute because they contain potentially
tradeoff points among their quality attributes. The
tool has identified that: (i) user authentication and
mobile user authentication are potential scenarios to
have tradeoff because they are affected by
performance, security and reliability; (ii)
authenticated document generation is another
potential tradeoff point because it addresses the
reliability and security quality attributes; on the
other hand (iii) the sending message does not
represent a tradeoff point because it is only affected
by the security quality attribute. These results are
summarized in Table 1.
The information identified automatically by our
tool is useful to indicate to the architects and
developers which specific scenarios and code assets
they need to give more attention when evaluating or
evolving the software architecture through the
conduction of code inspections or the execution of
manual or automated testing. In that way, our
AutomatingtheArchitectureEvaluationofEnterpriseInformationSystems
337