SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Downloaden Sie, um offline zu lesen
International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014
DOI : 10.5121/ijsea.2014.5301 1
TYPE VARIABILITY AND COMPLETENESS OF
INTERFACES IN JAVA APPLICATIONS
Hani Abdeen and Osama Shata
Department of Computer Science Engineering, Qatar University, Doha, Qatar
ABSTRACT
Interfaces are widely used as central design elements of Java applications. Although interfaces are abstract
types similar to abstract classes, the usage of interfaces in Java applications may considerably differ from
the usage of abstract classes. Unlike abstract classes, interfaces are meant to enable multiple inheritance
in Java programs. Hence, interfaces are meant to encode shared similarities between classes belonging to
different class-type hierarchies. Therefore, it is frequent to use interfaces as partial types, where an
interface specifies one specific aspect or usage of its implementing classes. In this paper, we investigate
interfaces' usage in Java applications from two perspectives. First, we investigate the usage of interfaces as
types of classes belonging to different class-type hierarchies (i.e., interface's type variability). Second, we
investigate the usage of interfaces as partial types of implementing classes (i.e., interface's type
completeness).
KEYWORDS
Interfaces Design, Java Applications, Metrics
1. INTRODUCTION
Software Interfaces represent abstract service contracts governing interactions between logic
modules. Formally, they are reference types used to encode similarities among classes of different
types. Interfaces are widely used as central design elements of Java applications. Although
interfaces are abstract types similar to pure abstract classes, the usage of interfaces in Java
applications may considerably differ from the usage of abstract (pure abstract) classes [1], [2].
Unlike classes, and abstract classes, interfaces are meant to enable multiple inheritance in Java
programs. Hence, interfaces are meant to encode shared similarities between classes belonging to
different class-type hierarchies. Therefore, it is frequent to use interfaces as partial types, where
an interface specifies one specific aspect or usage of its implementing classes [3] [4]. A good
design of interfaces is a fundamental key to understand the whole application services, and the
interactions between modules and subsystems [8]. Despite the importance of interfaces, only a
few research efforts investigate interfaces' design in Java applications. Most existing work largely
investigated program design at the class level without focusing on the specifics of interfaces [8].
Contributions. In this paper, we investigate interfaces' usage in Java applications from two
perspectives:
・ We investigate the usage of interfaces as types of classes belonging to different
classtype hierarchies (i.e., interface's type variability).
・ We investigate the usage of interfaces as partial types of implementing classes (i.e.,
interface's type completeness).
International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014
2
The results show that interfaces are, surprisingly, often used as types for classes belonging to the
same class-type. Indeed, a considerable body of analyzed interfaces are implemented by only one
implementing class. Hence, their type variability is null. In the same vein, the results show that
interfaces are most frequently used as complete types of their implementing classes.
2. VOCABULARIES
Java tutorial defines an interface as a reference type that, in its most common form, declares a
group of related methods with empty bodies. An interface can be implemented by different
classes that do not, necessarily, belong to the same hierarchy. A class may implement different
interfaces. Indeed, interfaces enable multi-inheritance mechanism in Java programs. The type
variability of an interface is hence defined by the variability of types (i.e., classes) which
implement that interface (see Section 3).
It is frequent to see classes that are used by their clients for accessing specific functionality of
those used classes [4]. Hence, it is better to restrict the access to those functionality that are
actually required by the clients. For this purpose, the type of variables (or access points) should
be declared as interfaces which specifies only the functionality that is actually used in the
contexts clients. Such interfaces are usually defined as partial types since they focus on a specific
functionality of their implementing classes.
3. INTERFACE'S TYPE VARIABILITY
Since interfaces are meant to enable multi-inheritance in Java programs, they are expected to be
used mainly to encode similarities among classes of different types. To measure this expectation
of interfaces we define the Type Variability measurement, TV. Let IC(i) denote the set of all
implementing classes of the interface i. Let root_type(c) be the predicate which returns the root
class-type of the class c. The type variability of an interface i, TV(i), is defined by the number of
different root-types of its implementing classes:
According to the above-mentioned definition, if an interface i is implemented by 3 different
classes (c1, c2, and c3), and if c1 and c2 belong to the same class-type hierarchy (i.e., inherit from
the same root-type t1 --which could be any class except the default root class in Java, Object), but
the class c3 belong to another root-type, t2, then the TV of i is equal to 2. It is worth noting that
classes which do not inherit from other classes (i.e., they are direct subclasses of Object) are by
default different root-types. The root-types of such classes are the classes themselves.
An interface that all its implementing classes belong to (inherit from) the same root-type has thus
the minimal type variability, which is 1 --this is by excluding interfaces which are not
implemented, at all, and which their TV value is 0.
The larger the TV value for an interface is, the larger the usage context of the interface. An
interface that has a TV value higher than 1 indicate a place where the usage of interface concept
International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014
3
instead of (abstract) class concept is well justified to enable multi-inheritance. Interfaces which
have a TV value equal to 1 indicate places where the interface concept might be overused: where
using the abstract-class concept might be more appropriate.
4. INTERFACE'S TYPE COMPLETENESS
As discussed earlier, interfaces are also meant to restrict the access of clients to specific
functionality of used classes, the type of access points should be declared as interfaces which
specifies only the functionality that is actually used in the contexts clients. Such interfaces are
usually defined as partial types since they focus on a specific functionality of their implementing
classes. To measure the type partiality/completeness of an interface, we define the Type
Completeness measurement, TC. Let PM(x) denote the set of all public methods
declared/implemented in the interface/class x. Let IC(i) denote the set of all implementing classes
of the interface i. The type completeness of an interface i is defined as the average ratio of
number of declared methods in i to the number of public implemented methods in its
implementing classes:
According to the above definition, if an interface i declares 2 methods is implemented by 2
classes, c1 and c2, that each one implement the interface methods, and defines additional methods
as follows: c1 defines in total 2 public methods (only the methods that are declared in i); c2
defines in total 4 public methods (2 methods in addition to the methods that are declared in i).
The TC value for i is thus: ((2/2) + (2/4)) / 2 = 0.75. This shows that i can be considered
somewhat as a complete type rather than as a partial type. Indeed, i is implemented by only 2
classes and it declares all the public methods of its first implementing class, but only 50% of the
public methods of its second implementing class.
The TC metric takes its values in [0..1], where the larger the value of TC is, the higher the type
completeness of the considered interface. An interface with a TC value that is equal to 1 is thus
said a complete type interface since it declares all the functionality of its implemented classes.
Such an interface is expected to violate the Role Decoupling pattern [4].
5. STUDY
Our study aims at investigating the design and use of interfaces in Java applications from two
perspectives:
・ Interface's Type Variability: we investigate whether interfaces are used as types of
classes belonging to different class-type hierarchies (to enable multi-inheritance), or they
are overused to encode shared similarity between classes belonging to the same class
family.
International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014
4
・ Interface's Type Completeness: we investigate the usage of interfaces as partial types
of implementing classes.
5.1. Case-studies
We conduct our study analysing interfaces design an usage in three well-known Java opensource
applications: ArgoUML is a UML modelling tool; Hibernate is a Relational persistence for
idiomatic Java; JHotDraw is a graphics framework for structured drawing editors. Table 1 shows
additional information about the number of interfaces, classes and implemented classes
considered in each case-study.
Table 1. Information about studied software projects.
Application Interfaces Classes Implementations
ArgoUML 88 1793 358
Hibernate 319 2658 745
JHotdraw 42 396 169
5.2. Results Analysis
・ Interface Type Variability: Figure 1 shows the histogram of interface type variability in
analyzed applications: (null, TV = 1) (tiny, TV = 2); (small, 2 < TV ≤ 5); (medium, 5 < TV ≤ 10);
(large, 10 < TV ≤ 15); (huge, 15 < TV). The figure shows that for all analyzed applications a
considerable subset of interfaces have null type variability. This shows that interfaces are
considerably used (overused) to encode shared similarity of classes belonging to the same type-
family, where abstract classes can be used instead of interfaces. Hence, this shows that Java
developers prefer interfaces than abstract to design the abstract types of their concrete
implementations. We conjecture that the advantage of interfaces over abstract classes, which is
enabling multi-inheritance, lead Java developers to use interfaces even though the multi-
inheritance mechanism is not really needed -- at least not in the current version of the software
project. Indeed, this point is demonstrated in Figure 1, which shows that most interfaces in
studied applications do not have a null type variability. In fact, the largest subset of interfaces are
those which have tiny or small type variability. In all these cases, abstract classes cannot be used
instead of interfaces. Moreover, the figure shows that interfaces which have a medium to huge
type variability are noticeably present in studied applications (specially in large projects such as
Argouml and Hibernate). Such interfaces represent shared similarities between (and/or define
contracts for) a large variety of classes that belong to different type-families.
International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014
5
Figure 1. Histogram of Interface Type Variability in studied applications
・ Interface Type Completeness: Figure 1 shows the histogram of interface type completeness in
analyzed applications: (partial, TC < 0.40) (semi-partial, 0.40 ≤ TC ≤ 0.60); (semi-complete, 0.60
< TC < 1); (complete, TC = 1). Surprisingly, the figure shows that for all analyzed applications
the presence of interfaces which can be considered as complete types of all their implementations
is considerable. More specifically, the figure shows that interfaces which are categorized as
complete (or semi-complete) types of their implementations are present in all studied applications
as (or more than) those which are partial or semi-partial types. This shows that there is
(approximately) a 50% of chance that an interface can be used as a reference type instead of all its
implementations, and this is in all their usage contexts. Still that for around 25% of interfaces,
they are really partial types of their implementations since they specify (focus on) a small subset
(a specific functionality) of their implementing classes.
Figure 3 shows that the density of interfaces which have very high TC values and of those which
have very low TV values is considerably larger than the density of smaller/greater values of
TC/TV. This surprising results show that interfaces are often used to declare all (or almost all) the
APIs of their implementing classes rather than focusing on specific functionality. Moreover, they
are often used to encode shared similarity between classes belonging to the same type-family,
rather than being implemented by classes of different type-families. This leads us to conjecture
that the motivation beyond using interfaces is not limited to the fact that interfaces enable multi-
inheritance mechanism.
Figure 2. Histogram of Interface Type Completeness in studied applications
International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014
6
Figure 3. Density 2D of Interface Type Completeness values and Interface Type Variability values for all
interfaces in studied applications
3. RELATED WORK
The authors in [5] define a set of primitive metrics that measure the complexity and usage of
interfaces: the number of interface methods, all arguments of the interface methods, and the
number of interface client classes. More complex metrics are defined in [6, 9] to assess existing
similarities among interfaces, and evaluate the redundancy in interface sub-class hierarchies.
From another perspective, the authors in [7] investigated the relations between interface
duplications and code clones in implementation methods. The study reports that there is a positive
correlation between these variables. In [8], the authors investigate the adherence of interfaces'
design in real-world software systems to the well known design principles, "Interface
Segregation" principle (ISP), "Program to an Interface, not an Implementation" principle (PTIP),
and the Cohesion principle. The study reports a strong evidence that software developers
definitely abide by the ISP and PTIP, but they neglect the Cohesion property at interface design.
It also reports that the negligence of the Cohesion property at interface design leads to a degraded
Cohesion in classes which implement interfaces.
4. CONCLUSION
In this paper, we empirically analysed the type completeness and variability of interfaces in 3
well known Java projects. For this purpose, we designed two new metrics, the Type Variability
(TV) metric and the Type Completeness (TC) metric. Surprisingly, the results showed that
interfaces are most often characterized by (very) high type completeness and (very) low type
variability.
ACKNOWLEDGEMENTS
This publication was made possible by NPRP grant #09-1205-2-470 from the Qatar National
Research Fund (a member of Qatar Foundation).
International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014
7
REFERENCES
[1] N. Warren and P. Bishop, “Java in Practice”. Addison Wesley, 1999.
[2] B. Meyer, “Object-oriented software construction” (2nd ed.). Prentice-Hall, Inc., 1997.
[3] F. Steimann and R. Wissensverarbeitung, “Role = interface a merger of concepts,” Journal of Object-
Oriented Programming, vol. 14, no. 4, pp. 23–32, 2001.
[4] D. D’Souza and A. Wills, “Objects, components, and frameworks with UML: the catalysis approach”.
The Addison-Wesley object technology series. Addison-Wesley, 1999.
[5] M. A. S. Boxall and S. Araban, “Interface metrics for reusability analysis of components,” in
Proceedings of ASWEC ’04, ser. ASWEC ’04. IEEE Computer Society, 2004, pp. 40–51.
[6] H. Abdeen and O. Shata, “Metrics for assessing the design of software interfaces,” International
Journal of Advanced Research in Computer and Communication Engineering, vol. 1, no. 10, pp. 737–
745, Dec. 2012.
[7] H. Abdeen and O. Shata, “Characterizing and evaluating the impact of software interface clones,”
International Journal of Software Engineer-ing & Applications (IJSEA), vol. 4, no. 1, pp. 67–77, Jan.
2013.
[8] H. Abdeen, H. Sahraoui, and O. Shata, “How we design interfaces, and how to assess it,” in
Proceedings of the 29th IEEE International Conference on Software Maintenance (ICSM’ 13). IEEE
Computer Society, 2013, pp. 80–89.
[9] H. Abdeen, O. Shata, and A. Erradi, “Software interfaces: On the impact of interface design
anomalies,” in Computer Science and Information Technology (CSIT), 2013 5th International
Conference on, 2013, pp. 184–193.

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Lecture 17
Lecture 17Lecture 17
Lecture 17
 
Lecture 12
Lecture 12Lecture 12
Lecture 12
 
Interface
InterfaceInterface
Interface
 
C# Unit 2 notes
C# Unit 2 notesC# Unit 2 notes
C# Unit 2 notes
 
java-06inheritance
java-06inheritancejava-06inheritance
java-06inheritance
 
Java chapter 1
Java   chapter 1Java   chapter 1
Java chapter 1
 
Core java questions
Core java questionsCore java questions
Core java questions
 
Ppt chapter08
Ppt chapter08Ppt chapter08
Ppt chapter08
 
Training 8051Report
Training 8051ReportTraining 8051Report
Training 8051Report
 
Interface in java ,multiple inheritance in java, interface implementation
Interface in java ,multiple inheritance in java, interface implementationInterface in java ,multiple inheritance in java, interface implementation
Interface in java ,multiple inheritance in java, interface implementation
 
Basics of Java
Basics of JavaBasics of Java
Basics of Java
 
Java interface
Java interface Java interface
Java interface
 
Towards Improving Interface Modularity in Legacy Java Software Through Automa...
Towards Improving Interface Modularity in Legacy Java Software Through Automa...Towards Improving Interface Modularity in Legacy Java Software Through Automa...
Towards Improving Interface Modularity in Legacy Java Software Through Automa...
 
Interface in java
Interface in javaInterface in java
Interface in java
 
Master of Computer Application (MCA) – Semester 4 MC0078
Master of Computer Application (MCA) – Semester 4  MC0078Master of Computer Application (MCA) – Semester 4  MC0078
Master of Computer Application (MCA) – Semester 4 MC0078
 
Ppt chapter02
Ppt chapter02Ppt chapter02
Ppt chapter02
 
UML01
UML01UML01
UML01
 
8 abstract classes and interfaces
8   abstract classes and interfaces 8   abstract classes and interfaces
8 abstract classes and interfaces
 
Opps
OppsOpps
Opps
 
C# c# for beginners crash course master c# programming fast and easy today
C# c# for beginners crash course master c# programming fast and easy todayC# c# for beginners crash course master c# programming fast and easy today
C# c# for beginners crash course master c# programming fast and easy today
 

Andere mochten auch

Compositional testing for fsm based models
Compositional testing for fsm based modelsCompositional testing for fsm based models
Compositional testing for fsm based modelsijseajournal
 
A systematic review of uncertainties in
A systematic review of uncertainties inA systematic review of uncertainties in
A systematic review of uncertainties inijseajournal
 
Meffortmob a effort size measurement
Meffortmob a effort size measurementMeffortmob a effort size measurement
Meffortmob a effort size measurementijseajournal
 
Transaction handling in com, ejb and .net
Transaction handling in com, ejb and .netTransaction handling in com, ejb and .net
Transaction handling in com, ejb and .netijseajournal
 
Adaptive guidance model based similarity for software process development pro...
Adaptive guidance model based similarity for software process development pro...Adaptive guidance model based similarity for software process development pro...
Adaptive guidance model based similarity for software process development pro...ijseajournal
 
How Predictive Insights Unlock Expansive Growth in New Markets
How Predictive Insights Unlock Expansive Growth in New Markets How Predictive Insights Unlock Expansive Growth in New Markets
How Predictive Insights Unlock Expansive Growth in New Markets Radius
 
Tập thơ " Hương tình " của Nhà thơ Thái Minh Tuyến
Tập thơ " Hương tình " của Nhà thơ Thái Minh TuyếnTập thơ " Hương tình " của Nhà thơ Thái Minh Tuyến
Tập thơ " Hương tình " của Nhà thơ Thái Minh TuyếnThi đàn Việt Nam
 
Funnel Drawings from Dreamforce
Funnel Drawings from DreamforceFunnel Drawings from Dreamforce
Funnel Drawings from DreamforceRadius
 
Funnel slideshare
Funnel slideshareFunnel slideshare
Funnel slideshareRadius
 

Andere mochten auch (20)

Compositional testing for fsm based models
Compositional testing for fsm based modelsCompositional testing for fsm based models
Compositional testing for fsm based models
 
A systematic review of uncertainties in
A systematic review of uncertainties inA systematic review of uncertainties in
A systematic review of uncertainties in
 
Meffortmob a effort size measurement
Meffortmob a effort size measurementMeffortmob a effort size measurement
Meffortmob a effort size measurement
 
Transaction handling in com, ejb and .net
Transaction handling in com, ejb and .netTransaction handling in com, ejb and .net
Transaction handling in com, ejb and .net
 
Adaptive guidance model based similarity for software process development pro...
Adaptive guidance model based similarity for software process development pro...Adaptive guidance model based similarity for software process development pro...
Adaptive guidance model based similarity for software process development pro...
 
Duyên thầm
Duyên thầmDuyên thầm
Duyên thầm
 
How Predictive Insights Unlock Expansive Growth in New Markets
How Predictive Insights Unlock Expansive Growth in New Markets How Predictive Insights Unlock Expansive Growth in New Markets
How Predictive Insights Unlock Expansive Growth in New Markets
 
Có tình ta trong đó
Có tình ta trong đóCó tình ta trong đó
Có tình ta trong đó
 
Quy che dai hoi
Quy che dai hoiQuy che dai hoi
Quy che dai hoi
 
Tập thơ " Hương tình " của Nhà thơ Thái Minh Tuyến
Tập thơ " Hương tình " của Nhà thơ Thái Minh TuyếnTập thơ " Hương tình " của Nhà thơ Thái Minh Tuyến
Tập thơ " Hương tình " của Nhà thơ Thái Minh Tuyến
 
Chuyen gau va meo 4
Chuyen gau va meo 4Chuyen gau va meo 4
Chuyen gau va meo 4
 
4 trang anh
4 trang anh4 trang anh
4 trang anh
 
Hương xuânđất việt.
Hương xuânđất việt.Hương xuânđất việt.
Hương xuânđất việt.
 
Chuyen gau va meo
Chuyen gau va meoChuyen gau va meo
Chuyen gau va meo
 
Funnel Drawings from Dreamforce
Funnel Drawings from DreamforceFunnel Drawings from Dreamforce
Funnel Drawings from Dreamforce
 
Bang
BangBang
Bang
 
Ct&qc
Ct&qcCt&qc
Ct&qc
 
Tâm sự thường ngày
Tâm sự thường ngàyTâm sự thường ngày
Tâm sự thường ngày
 
Funnel slideshare
Funnel slideshareFunnel slideshare
Funnel slideshare
 
Ben tinh
Ben tinhBen tinh
Ben tinh
 

Ähnlich wie Type variability and completeness of interfaces in java applications

what is differance between abstract class and interface ppt
what is differance between abstract class and interface pptwhat is differance between abstract class and interface ppt
what is differance between abstract class and interface pptmanojsharma469262
 
Ingles proyecto traducido
Ingles proyecto traducidoIngles proyecto traducido
Ingles proyecto traducidoJoseph Manuelth
 
OOFeatures_revised-2.pptx
OOFeatures_revised-2.pptxOOFeatures_revised-2.pptx
OOFeatures_revised-2.pptxssuser84e52e
 
Java interfaces & abstract classes
Java interfaces & abstract classesJava interfaces & abstract classes
Java interfaces & abstract classesShreyans Pathak
 
Form Follows Function
Form Follows FunctionForm Follows Function
Form Follows FunctionKevlin Henney
 
20 most important java programming interview questions
20 most important java programming interview questions20 most important java programming interview questions
20 most important java programming interview questionsGradeup
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singhdheeraj_cse
 
abstract class and interface.Net
abstract class and interface.Netabstract class and interface.Net
abstract class and interface.NetBGSBU Rajouri
 
Data Structure Interview Questions & Answers
Data Structure Interview Questions & AnswersData Structure Interview Questions & Answers
Data Structure Interview Questions & AnswersSatyam Jaiswal
 
Java J2EE Interview Questions Part-1
Java J2EE Interview Questions Part-1Java J2EE Interview Questions Part-1
Java J2EE Interview Questions Part-1javatrainingonline
 
Java Interview Questions
Java Interview QuestionsJava Interview Questions
Java Interview QuestionsKuntal Bhowmick
 

Ähnlich wie Type variability and completeness of interfaces in java applications (20)

what is differance between abstract class and interface ppt
what is differance between abstract class and interface pptwhat is differance between abstract class and interface ppt
what is differance between abstract class and interface ppt
 
Ingles proyecto traducido
Ingles proyecto traducidoIngles proyecto traducido
Ingles proyecto traducido
 
Core_Java_Interview.pdf
Core_Java_Interview.pdfCore_Java_Interview.pdf
Core_Java_Interview.pdf
 
Lecture 18
Lecture 18Lecture 18
Lecture 18
 
Asp.net main
Asp.net mainAsp.net main
Asp.net main
 
OOFeatures_revised-2.pptx
OOFeatures_revised-2.pptxOOFeatures_revised-2.pptx
OOFeatures_revised-2.pptx
 
Java interfaces & abstract classes
Java interfaces & abstract classesJava interfaces & abstract classes
Java interfaces & abstract classes
 
Java_presesntation.ppt
Java_presesntation.pptJava_presesntation.ppt
Java_presesntation.ppt
 
Form Follows Function
Form Follows FunctionForm Follows Function
Form Follows Function
 
Java notes jkuat it
Java notes jkuat itJava notes jkuat it
Java notes jkuat it
 
Java notes(OOP) jkuat IT esection
Java notes(OOP) jkuat IT esectionJava notes(OOP) jkuat IT esection
Java notes(OOP) jkuat IT esection
 
20 most important java programming interview questions
20 most important java programming interview questions20 most important java programming interview questions
20 most important java programming interview questions
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singh
 
abstract class and interface.Net
abstract class and interface.Netabstract class and interface.Net
abstract class and interface.Net
 
JAVA PROGRAMMING – Packages - Stream based I/O
JAVA PROGRAMMING – Packages - Stream based I/O JAVA PROGRAMMING – Packages - Stream based I/O
JAVA PROGRAMMING – Packages - Stream based I/O
 
Data Structure Interview Questions & Answers
Data Structure Interview Questions & AnswersData Structure Interview Questions & Answers
Data Structure Interview Questions & Answers
 
Java_Interview Qns
Java_Interview QnsJava_Interview Qns
Java_Interview Qns
 
Java J2EE Interview Questions Part-1
Java J2EE Interview Questions Part-1Java J2EE Interview Questions Part-1
Java J2EE Interview Questions Part-1
 
Java J2EE Interview Questions Part-1
Java J2EE Interview Questions Part-1Java J2EE Interview Questions Part-1
Java J2EE Interview Questions Part-1
 
Java Interview Questions
Java Interview QuestionsJava Interview Questions
Java Interview Questions
 

Kürzlich hochgeladen

How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 

Kürzlich hochgeladen (20)

How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 

Type variability and completeness of interfaces in java applications

  • 1. International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014 DOI : 10.5121/ijsea.2014.5301 1 TYPE VARIABILITY AND COMPLETENESS OF INTERFACES IN JAVA APPLICATIONS Hani Abdeen and Osama Shata Department of Computer Science Engineering, Qatar University, Doha, Qatar ABSTRACT Interfaces are widely used as central design elements of Java applications. Although interfaces are abstract types similar to abstract classes, the usage of interfaces in Java applications may considerably differ from the usage of abstract classes. Unlike abstract classes, interfaces are meant to enable multiple inheritance in Java programs. Hence, interfaces are meant to encode shared similarities between classes belonging to different class-type hierarchies. Therefore, it is frequent to use interfaces as partial types, where an interface specifies one specific aspect or usage of its implementing classes. In this paper, we investigate interfaces' usage in Java applications from two perspectives. First, we investigate the usage of interfaces as types of classes belonging to different class-type hierarchies (i.e., interface's type variability). Second, we investigate the usage of interfaces as partial types of implementing classes (i.e., interface's type completeness). KEYWORDS Interfaces Design, Java Applications, Metrics 1. INTRODUCTION Software Interfaces represent abstract service contracts governing interactions between logic modules. Formally, they are reference types used to encode similarities among classes of different types. Interfaces are widely used as central design elements of Java applications. Although interfaces are abstract types similar to pure abstract classes, the usage of interfaces in Java applications may considerably differ from the usage of abstract (pure abstract) classes [1], [2]. Unlike classes, and abstract classes, interfaces are meant to enable multiple inheritance in Java programs. Hence, interfaces are meant to encode shared similarities between classes belonging to different class-type hierarchies. Therefore, it is frequent to use interfaces as partial types, where an interface specifies one specific aspect or usage of its implementing classes [3] [4]. A good design of interfaces is a fundamental key to understand the whole application services, and the interactions between modules and subsystems [8]. Despite the importance of interfaces, only a few research efforts investigate interfaces' design in Java applications. Most existing work largely investigated program design at the class level without focusing on the specifics of interfaces [8]. Contributions. In this paper, we investigate interfaces' usage in Java applications from two perspectives: ・ We investigate the usage of interfaces as types of classes belonging to different classtype hierarchies (i.e., interface's type variability). ・ We investigate the usage of interfaces as partial types of implementing classes (i.e., interface's type completeness).
  • 2. International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014 2 The results show that interfaces are, surprisingly, often used as types for classes belonging to the same class-type. Indeed, a considerable body of analyzed interfaces are implemented by only one implementing class. Hence, their type variability is null. In the same vein, the results show that interfaces are most frequently used as complete types of their implementing classes. 2. VOCABULARIES Java tutorial defines an interface as a reference type that, in its most common form, declares a group of related methods with empty bodies. An interface can be implemented by different classes that do not, necessarily, belong to the same hierarchy. A class may implement different interfaces. Indeed, interfaces enable multi-inheritance mechanism in Java programs. The type variability of an interface is hence defined by the variability of types (i.e., classes) which implement that interface (see Section 3). It is frequent to see classes that are used by their clients for accessing specific functionality of those used classes [4]. Hence, it is better to restrict the access to those functionality that are actually required by the clients. For this purpose, the type of variables (or access points) should be declared as interfaces which specifies only the functionality that is actually used in the contexts clients. Such interfaces are usually defined as partial types since they focus on a specific functionality of their implementing classes. 3. INTERFACE'S TYPE VARIABILITY Since interfaces are meant to enable multi-inheritance in Java programs, they are expected to be used mainly to encode similarities among classes of different types. To measure this expectation of interfaces we define the Type Variability measurement, TV. Let IC(i) denote the set of all implementing classes of the interface i. Let root_type(c) be the predicate which returns the root class-type of the class c. The type variability of an interface i, TV(i), is defined by the number of different root-types of its implementing classes: According to the above-mentioned definition, if an interface i is implemented by 3 different classes (c1, c2, and c3), and if c1 and c2 belong to the same class-type hierarchy (i.e., inherit from the same root-type t1 --which could be any class except the default root class in Java, Object), but the class c3 belong to another root-type, t2, then the TV of i is equal to 2. It is worth noting that classes which do not inherit from other classes (i.e., they are direct subclasses of Object) are by default different root-types. The root-types of such classes are the classes themselves. An interface that all its implementing classes belong to (inherit from) the same root-type has thus the minimal type variability, which is 1 --this is by excluding interfaces which are not implemented, at all, and which their TV value is 0. The larger the TV value for an interface is, the larger the usage context of the interface. An interface that has a TV value higher than 1 indicate a place where the usage of interface concept
  • 3. International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014 3 instead of (abstract) class concept is well justified to enable multi-inheritance. Interfaces which have a TV value equal to 1 indicate places where the interface concept might be overused: where using the abstract-class concept might be more appropriate. 4. INTERFACE'S TYPE COMPLETENESS As discussed earlier, interfaces are also meant to restrict the access of clients to specific functionality of used classes, the type of access points should be declared as interfaces which specifies only the functionality that is actually used in the contexts clients. Such interfaces are usually defined as partial types since they focus on a specific functionality of their implementing classes. To measure the type partiality/completeness of an interface, we define the Type Completeness measurement, TC. Let PM(x) denote the set of all public methods declared/implemented in the interface/class x. Let IC(i) denote the set of all implementing classes of the interface i. The type completeness of an interface i is defined as the average ratio of number of declared methods in i to the number of public implemented methods in its implementing classes: According to the above definition, if an interface i declares 2 methods is implemented by 2 classes, c1 and c2, that each one implement the interface methods, and defines additional methods as follows: c1 defines in total 2 public methods (only the methods that are declared in i); c2 defines in total 4 public methods (2 methods in addition to the methods that are declared in i). The TC value for i is thus: ((2/2) + (2/4)) / 2 = 0.75. This shows that i can be considered somewhat as a complete type rather than as a partial type. Indeed, i is implemented by only 2 classes and it declares all the public methods of its first implementing class, but only 50% of the public methods of its second implementing class. The TC metric takes its values in [0..1], where the larger the value of TC is, the higher the type completeness of the considered interface. An interface with a TC value that is equal to 1 is thus said a complete type interface since it declares all the functionality of its implemented classes. Such an interface is expected to violate the Role Decoupling pattern [4]. 5. STUDY Our study aims at investigating the design and use of interfaces in Java applications from two perspectives: ・ Interface's Type Variability: we investigate whether interfaces are used as types of classes belonging to different class-type hierarchies (to enable multi-inheritance), or they are overused to encode shared similarity between classes belonging to the same class family.
  • 4. International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014 4 ・ Interface's Type Completeness: we investigate the usage of interfaces as partial types of implementing classes. 5.1. Case-studies We conduct our study analysing interfaces design an usage in three well-known Java opensource applications: ArgoUML is a UML modelling tool; Hibernate is a Relational persistence for idiomatic Java; JHotDraw is a graphics framework for structured drawing editors. Table 1 shows additional information about the number of interfaces, classes and implemented classes considered in each case-study. Table 1. Information about studied software projects. Application Interfaces Classes Implementations ArgoUML 88 1793 358 Hibernate 319 2658 745 JHotdraw 42 396 169 5.2. Results Analysis ・ Interface Type Variability: Figure 1 shows the histogram of interface type variability in analyzed applications: (null, TV = 1) (tiny, TV = 2); (small, 2 < TV ≤ 5); (medium, 5 < TV ≤ 10); (large, 10 < TV ≤ 15); (huge, 15 < TV). The figure shows that for all analyzed applications a considerable subset of interfaces have null type variability. This shows that interfaces are considerably used (overused) to encode shared similarity of classes belonging to the same type- family, where abstract classes can be used instead of interfaces. Hence, this shows that Java developers prefer interfaces than abstract to design the abstract types of their concrete implementations. We conjecture that the advantage of interfaces over abstract classes, which is enabling multi-inheritance, lead Java developers to use interfaces even though the multi- inheritance mechanism is not really needed -- at least not in the current version of the software project. Indeed, this point is demonstrated in Figure 1, which shows that most interfaces in studied applications do not have a null type variability. In fact, the largest subset of interfaces are those which have tiny or small type variability. In all these cases, abstract classes cannot be used instead of interfaces. Moreover, the figure shows that interfaces which have a medium to huge type variability are noticeably present in studied applications (specially in large projects such as Argouml and Hibernate). Such interfaces represent shared similarities between (and/or define contracts for) a large variety of classes that belong to different type-families.
  • 5. International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014 5 Figure 1. Histogram of Interface Type Variability in studied applications ・ Interface Type Completeness: Figure 1 shows the histogram of interface type completeness in analyzed applications: (partial, TC < 0.40) (semi-partial, 0.40 ≤ TC ≤ 0.60); (semi-complete, 0.60 < TC < 1); (complete, TC = 1). Surprisingly, the figure shows that for all analyzed applications the presence of interfaces which can be considered as complete types of all their implementations is considerable. More specifically, the figure shows that interfaces which are categorized as complete (or semi-complete) types of their implementations are present in all studied applications as (or more than) those which are partial or semi-partial types. This shows that there is (approximately) a 50% of chance that an interface can be used as a reference type instead of all its implementations, and this is in all their usage contexts. Still that for around 25% of interfaces, they are really partial types of their implementations since they specify (focus on) a small subset (a specific functionality) of their implementing classes. Figure 3 shows that the density of interfaces which have very high TC values and of those which have very low TV values is considerably larger than the density of smaller/greater values of TC/TV. This surprising results show that interfaces are often used to declare all (or almost all) the APIs of their implementing classes rather than focusing on specific functionality. Moreover, they are often used to encode shared similarity between classes belonging to the same type-family, rather than being implemented by classes of different type-families. This leads us to conjecture that the motivation beyond using interfaces is not limited to the fact that interfaces enable multi- inheritance mechanism. Figure 2. Histogram of Interface Type Completeness in studied applications
  • 6. International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014 6 Figure 3. Density 2D of Interface Type Completeness values and Interface Type Variability values for all interfaces in studied applications 3. RELATED WORK The authors in [5] define a set of primitive metrics that measure the complexity and usage of interfaces: the number of interface methods, all arguments of the interface methods, and the number of interface client classes. More complex metrics are defined in [6, 9] to assess existing similarities among interfaces, and evaluate the redundancy in interface sub-class hierarchies. From another perspective, the authors in [7] investigated the relations between interface duplications and code clones in implementation methods. The study reports that there is a positive correlation between these variables. In [8], the authors investigate the adherence of interfaces' design in real-world software systems to the well known design principles, "Interface Segregation" principle (ISP), "Program to an Interface, not an Implementation" principle (PTIP), and the Cohesion principle. The study reports a strong evidence that software developers definitely abide by the ISP and PTIP, but they neglect the Cohesion property at interface design. It also reports that the negligence of the Cohesion property at interface design leads to a degraded Cohesion in classes which implement interfaces. 4. CONCLUSION In this paper, we empirically analysed the type completeness and variability of interfaces in 3 well known Java projects. For this purpose, we designed two new metrics, the Type Variability (TV) metric and the Type Completeness (TC) metric. Surprisingly, the results showed that interfaces are most often characterized by (very) high type completeness and (very) low type variability. ACKNOWLEDGEMENTS This publication was made possible by NPRP grant #09-1205-2-470 from the Qatar National Research Fund (a member of Qatar Foundation).
  • 7. International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.3, May 2014 7 REFERENCES [1] N. Warren and P. Bishop, “Java in Practice”. Addison Wesley, 1999. [2] B. Meyer, “Object-oriented software construction” (2nd ed.). Prentice-Hall, Inc., 1997. [3] F. Steimann and R. Wissensverarbeitung, “Role = interface a merger of concepts,” Journal of Object- Oriented Programming, vol. 14, no. 4, pp. 23–32, 2001. [4] D. D’Souza and A. Wills, “Objects, components, and frameworks with UML: the catalysis approach”. The Addison-Wesley object technology series. Addison-Wesley, 1999. [5] M. A. S. Boxall and S. Araban, “Interface metrics for reusability analysis of components,” in Proceedings of ASWEC ’04, ser. ASWEC ’04. IEEE Computer Society, 2004, pp. 40–51. [6] H. Abdeen and O. Shata, “Metrics for assessing the design of software interfaces,” International Journal of Advanced Research in Computer and Communication Engineering, vol. 1, no. 10, pp. 737– 745, Dec. 2012. [7] H. Abdeen and O. Shata, “Characterizing and evaluating the impact of software interface clones,” International Journal of Software Engineer-ing & Applications (IJSEA), vol. 4, no. 1, pp. 67–77, Jan. 2013. [8] H. Abdeen, H. Sahraoui, and O. Shata, “How we design interfaces, and how to assess it,” in Proceedings of the 29th IEEE International Conference on Software Maintenance (ICSM’ 13). IEEE Computer Society, 2013, pp. 80–89. [9] H. Abdeen, O. Shata, and A. Erradi, “Software interfaces: On the impact of interface design anomalies,” in Computer Science and Information Technology (CSIT), 2013 5th International Conference on, 2013, pp. 184–193.