27.03.2014 Views

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SEKE 2012 Proceedings - Knowledge Systems Institute

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

licenses in a machine understandable manner. Such approaches<br />

can assist in automated license compatibility checks. The<br />

aforementioned LIDESC uses the sets of “license stamps” to<br />

model licenses. If one license fulfills the requirements<br />

expressed in the license stamps of another license, then the two<br />

licenses can be considered compatible. In [12], the authors<br />

propose a metamodel for licenses refined using empirical data.<br />

A license is considered as a set of rights, where each right may<br />

refer to a set of obligations. A s et of rules helps to extract<br />

license compatibilities. A similar approach is described in [13]<br />

in the framework of the Qualipso (Quality Platform for Open<br />

Source Software) project, where an ontology is used to model a<br />

set of well-known FLOSS licenses and their rights (8 FLOSS<br />

licenses were included). The ontology contains appropriate<br />

classes represented in a hierarchical model. The semantics of<br />

each license are modeled as a set of rights and conditions.<br />

B. Inferring possible licenses<br />

One of the most important issues in terms of deciding if two<br />

or more components are compatible lies on how the connection<br />

among them is modeled and under which conditions they can<br />

be connected. Software libraries may be linked statically or<br />

dynamically, whereas APIs may be used t o hide client-server<br />

connections, middleware or protocol implementations. These<br />

different types of connections may affect specific rights or<br />

obligations defined within a license. For example, an email<br />

client needs to connect to an email server via the corresponding<br />

protocol. The license of the email server should not affect the<br />

possible licenses of the client. Additionally, when the email<br />

client needs to be tested, specific libraries can be used in the<br />

development of the test cases. Nevertheless, these libraries<br />

have no e ffect on the rights and obligations related to the<br />

distribution, since they are n ot integrated within the software<br />

but constitute external tools. Generally, license restrictions<br />

come to play, when software distribution needs to be<br />

addressed, but they should not affect actions performed in the<br />

framework of internal activities, such as testing. This does not<br />

exclude the presence of additional constraints imposed in<br />

policies within an organization that need to be considered. In<br />

order to tackle these issues and avoid conflicts, it is imperative<br />

to provide a model of the software system under question.<br />

A simple approach for modeling the related licenses in a<br />

software system is to use the directed graph described<br />

previously. The possible licenses for the resulting software<br />

systems can be found among the ones that satisfy the<br />

compatibility criteria for the licenses of all system components.<br />

Consider for i nstance a proj ect having two dependencies, one<br />

with license C and one with license E that may even belong to<br />

different license categories. Initially, all known licenses (A to H<br />

as in Fig. 3) can be regarded possible licenses. However, since<br />

the first dependency’s license is C (Fig. 3(a)), the project can<br />

only have one of the licenses of the following set: L1 = {C, F,<br />

H}. In the same manner, since the second dependency’s license<br />

is E (Fig. 3(b)), the project can only have one of the licenses<br />

among L2 = {E, G, F, H}. By using the intersection of the two<br />

license sets, it is concluded that the project is allowed to have<br />

one of the following licenses: L1 . If there is no<br />

information about the license of a dependency, the same<br />

process can be used recursively using transitive dependencies.<br />

Please note again that when organization policies on license<br />

Figure 3. License compatibility graph<br />

use are present (e.g., use of strong copyleft licenses is<br />

prohibited), this simplified graph approach needs to be adapted<br />

in order to take into account the additional constraints.<br />

More detailed graph-based models for software systems can<br />

also be employed in this part of the process. Such models are<br />

useful in order to discover which rights and/or obligations may<br />

apply to the resulting software. Instead of checking for the<br />

possible licenses of the resulting system, all rights and<br />

obligations that result from using one of the license relation<br />

schemas described earlier are detected. In the Qualipso<br />

ontology [13], rules expressed in a l egal rule language are<br />

applied to the model and possible licenses are detected<br />

automatically. Compatible licenses are found through the<br />

introduced reasoner that searches for the licenses that provide<br />

the required rights and/or belong to a specific class of the<br />

hierarchy.<br />

VI. A BUILD TOOL CASE STUDY<br />

The approaches presented are applicable to a large number<br />

of use cases. In order to evaluate the process of integrating the<br />

aforementioned techniques in a ful ly functional system, a<br />

prototype assistance system addressed mainly to s oftware<br />

engineers that employ various components has been<br />

implemented. An interesting fact is that most of the above<br />

components are used for validating the result of the<br />

development process, and not for assisting during the actual<br />

implementation of the application. The prototype system has<br />

been implemented as part of a build tool, since build tools are<br />

widely employed in software engineering activities. By adding<br />

an extension to an existing build tool the system is a ble to<br />

support both stand-alone and team development, it can be used<br />

as part of continuous integration builds and can be easily<br />

incorporated in existing well known Integrated Development<br />

Environments (IDEs). In this section information on the design<br />

decisions and problems encountered during the development of<br />

the prototype are given.<br />

Initially an appropriate build tool to support the process had<br />

to be selected. Since the community of Java software engineers<br />

is one of the largest, we decided to focus on Java-related<br />

technologies. Under the available Java-friendly solutions<br />

Maven 9 from Apache was selected. Maven’s main advantage is<br />

9 maven.apache.org/<br />

203

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!