This document analyzes the impact of frameworks on the structural quality of 496 Java EE applications totaling 152 million lines of code. It finds that applications using only Hibernate tend to be higher quality, while those combining Hibernate and Spring are larger in size. The majority of Java EE applications do not use frameworks. Overall quality also tends to degrade when Java EE applications incorporate other technologies like C/C++. Pure Java EE applications generally have higher quality than those with mixed technology components.
3. CRASH Special Report – JEE Framework Analysis Overview
Objective:
– Understand the impact of frameworks on structural quality – reliability, security and
performance of applications
– Understand the impact on structural quality of combining JEE applications with other
technology
Data Sample:
– Source: CAST Appmarq benchmarking database
– 496 JEE-based business applications
– 152 million lines of code
– Frameworks analyzed: Hibernate, Spring, Struts
Findings:
– Applications with only Hibernate tend to be of higher quality
– Applications with Hibernate + Spring tend be of larger size
– Huge variation in quality of applications with no frameworks
– Majority of JEE applications don’t use frameworks
– Overall quality tends to degrade for JEE applications when combined with C/C++
– Pure JEE applications tend to be of higher quality
CAST Confidential
5. Appmarq benchmarking repository – largest database of its kind
with structural quality data from source code analysis
Application Quality Central Benchmarking
Data From CASTAIP Database
Benchmarking
Application Source Code Analyzed
Across Industries
Across Industry
Technologies Trends
Across Best
Development Anonymized / Practices &
Regions Normalized Standards
Development
CAST Confidential
6. All data gathered from the automated analysis of business
applications using CAST Application Intelligence Platform (AIP)
CAST AIP - Leading Software Analysis and Measurement Platform
The CAST Application Intelligence Center
Actionable visibility &
measures for all:
Compliance
Checks
Reports on application
Quality &
Sizing health, team
Measures performance,
Code, benchmarking …
Architecture & CxOs and VPs
Data structure
Analysis
… Dashboard featuring
software characteristics,
CAST Application Intelligence Platform cost and risk drivers, root
cause analysis…
Management
WEB RDBMS .NET DB2 Cobol
… and feedback & advice
C++ Oracle on software quality and
engineering
BI
SAP Siebel Java EAI Dev Teams
CAST Confidential
Copyright CAST 2011 6
7. CAST AIP: Structural Quality Characteristics
1. Robustness: the stability of an application and the likelihood of
introducing defects when modifying it
2. Performance: the responsiveness of an application
3. Security: an application’s ability to prevent unauthorized
intrusions
4. Transferability: the ease with which a new team can
understand the application and quickly become productive
working on it
5. Changeability: an application’s ability to be easily modified
6. Total Quality Index: a composite score computed from the five
Quality Characteristics listed above
CAST Confidential
9. Data Sample for this Report
JEE Applications by
different frameworks
JEE Frameworks Sum of
Groups # Apps # Cos KLoC
Struts 1.x 64 33 11,713.39
Hibernate 24 13 3,265.23
Hibernate-Spring 29 20 14,439.43
JEE Applications in combination
Hibernate-Struts 1.x 37 19 10,319.72 with other technologies
No Frameworks 170 49 31,323.39 JEE Sum of
Technology Mix # Apps # Cos KLoC
Grand Total 324 - 71,061.16
JEE-.NET 18 11 9,343.66
JEE-C 19 9 8,186.32
JEE-C++ 17 7 15,247.45
JEE-Cobol 50 9 20,975.09
JEE-Mixed 29 16 17,689.99
JEE 120 20 16,914.93
JEE-DB 243 56 63,992.35
Grand Total 496 - 152,349.79
CAST Confidential
10. JEE Frameworks: Wide range by application size
Wide range of applications: 10 KLOC to > 2,4 MLOC
CAST Confidential
11. JEE Frameworks: Primarily from 6 industry segments
Hibernate- Hibernate- No Frame- Grand
Industry Segment Struts 1.x Hibernate Spring Struts 1.x works Total
Financial Services 9 3 10 5 67 94
Government 5 3 2 2 9 21
Insurance 9 4 2 7 13 35
Manufacturing 11 7 2 2 12 34
Telecommunications 13 3 8 9 32 65
Utilities 5 0 1 1 13 20
Other 12 4 1 11 17 45
Grand Total 64 24 29 37 170 324
CAST Confidential
12. JEE Frameworks: Good representation of shoring & sourcing type
Hibernate- Hibernate- No Frame- Grand
Sourcing Type Struts 1.x Hibernate Spring Struts 1.x works Total
Primarily In-House 29 9 10 18 62 128
Primarily Outsourced 34 15 15 19 85 168
Grand Total 63 24 25 37 147 324
Hibernate- Hibernate- No Frame- Grand
Shoring Type Struts 1.x Hibernate Spring Struts 1.x works Total
Primarily Offshore 16 3 7 8 30 64
Primarily Onshore 47 21 16 29 117 230
Grand Total 64 24 29 37 170 324
CAST Confidential
13. JEE with Technology Mix: Primarily from 6 industry segments
JEE - JEE – JEE – JEE – JEE – JEE – Grand
Industry Segment .NET C C++ COBOL Mixed JEE DB Total
Financial Services 9 1 7 44 10 37 70 178
Government 0 0 0 0 0 12 9 21
Insurance 4 1 0 3 1 8 30 47
Manufacturing 0 2 0 0 3 20 26 51
Telecommunications 1 3 8 0 10 14 57 93
Utilities 3 6 1 0 1 10 10 31
Other 1 6 1 3 4 19 32 66
Grand Total 18 19 17 50 29 120 243 496
CAST Confidential
14. JEE Technology Mix: Good representation of shoring &
sourcing type
JEE- JEE- JEE- JEE- JEE- Grand
Sourcing Type .NET JEE-C C++ Cobol Mixed JEE DB Total
Primarily In-House 6 6 12 29 16 37 112 218
Primarily Outsourced 10 12 5 20 12 66 120 245
Unknown 2 1 0 1 1 17 11 33
Grand Total 16 18 17 49 28 103 232 496
JEE- JEE- JEE- JEE- JEE- Grand
Shoring Type .NET JEE-C C++ Cobol Mixed JEE DB Total
Primarily Offshore 7 1 8 7 8 26 48 105
Primarily Onshore 9 17 8 41 20 77 180 352
Unknown 2 1 1 2 1 17 15 39
Grand Total 16 18 16 48 28 103 228 496
CAST Confidential
16. Sample indicates that majority of JEE applications still don’t use
frameworks
JEE Applications by different frameworks
Combined
JEE Frameworks Size of all Average App
Groups # Apps # Cos Apps (KLoC) Size (KLoC)
Struts 1.x 64 33 11,713 183
Hibernate 24 13 3,265 136
Hibernate-Spring 29 20 14,439 498
Hibernate-Struts 1.x 37 19 10,320 279
No Frameworks 170 49 31,323 184
Grand Total 324 - 71,061 219
Majority of the applications that don’t use frameworks could be part of older
generation applications
As one of the first frameworks, Struts could be used on more applications than
other frameworks
Applications with Hibernate-Spring combination are significantly larger in size
than other JEE applications
CAST Confidential
17. Applications that use Hibernate have higher quality scores than
other frameworks
CAST Confidential
18. JEE applications that don’t use Hibernate or Spring have big
variance in quality
Reasons for this variation could be:
– These application tend to be of older generation, as discussed earlier (or)
– Hibernate and Spring enable developers to build applications in a more
consistent manner
CAST Confidential
20. Applications with cross technology components are larger than
pure JEE applications
JEE Average
Technology Sum of App Size
Groups # Apps # Cos KLoC KLoC
JEE-.NET 18 11 9,344 519
JEE-C 19 9 8,186 431
JEE-C++ 17 7 15,247 897
JEE-Cobol 50 9 20,975 420
JEE-Mixed 29 16 17,690 610
JEE 120 20 16,915 141
JEE-DB 243 56 63,992 263
Grand Total 496 152,350 307
Applications with C++ components are significantly larger than other
combinations of technologies
CAST Confidential
21. JEE-Technology Mix: Distribution across industries
JEE- JEE- JEE- JEE- JEE- Grand
Industry Segment .NET JEE-C C++ Cobol Mixed JEE DB Total
Financial Services 9 1 7 44 10 37 70 178
Government 0 0 0 0 0 12 9 21
Insurance 4 1 0 3 1 8 30 47
Manufacturing 0 2 0 0 3 20 26 51
Telecommunications 1 3 8 0 10 14 57 93
Utilities 3 6 1 0 1 10 10 31
Grand Total 17 13 16 47 25 101 202 421
Pure JEE applications are spread across industries
As expected, JEE-Cobol apps are concentrated in the Financial Services sector
C, C++ are more popular in Financial Services and Telecom industries
– They are frequently used in embedded systems in telecom equipment
– They are also the language of choice for low-level programming needed for speed in
trading systems
CAST Confidential
22. JEE applications with C/C++ tend to be of lower quality
This finding is consistent with 2011 CRASH Report
C/C++ programming languages tend to be lower level, closer to machine
language, harder to program, and have more scope for making mistakes
CAST Confidential
23. JEE + .NET behave similar to pure JEE applications
This may be because they both are newer generation languages with higher
level of abstraction
They also simplify development and the bulk of common development tasks are
standardized
CAST Confidential
25. Conclusions
In addition to ease of development, frameworks do enable higher
quality of applications
Larger more complex applications tend to use a combination of
frameworks in their architecture (Hibernate + Spring)
Special attention should be given to quality when mixing JEE
with different technologies
– Cross-technology applications tend to be more complex
– Developers are often familiar with only one technology
– Applications with older generation low-level languages like C, C++
can be of lower quality to begin with
CAST Confidential
26. Contact Information
Pete Pizzutillo
p.pizzutillo@castsoftware.com
www.castsoftware.com
blog.castsoftware.com/
linkedin.com/company/cast
@OnQuality
slideshare.net/castsoftware
CAST Confidential