CASTのレポートが,Hibernateのみを使用したJEEエンタープライズソフトウェアに比較して,SpringあるいはStrutsを使用したものが品質面で劣っている,という調査結果を公開している。さらにJavaとC,あるいはC++を併用した場合の品質低下も確認されている。
CAST Softwareは先日,"Java Application and Coffee: The Variations are Endless" というレポートをリリースした。CAST CRASHレポートの目的は,さまざまなフレームワークの採用,および他のテクノロジとの併用といったことが,JEEアプリケーションの構造的品質 – 信頼性,セキュリティ,パフォーマンス,メンテナンス性などで測定される – に与える影響を理解することだ。レポートでは,Fortune 500企業に関連するものとを中心とした496のビジネスアプリケーション(オープンソースではない),ソースコードにして1億5200万行を対象に,特にHibernate,SpringおよびStrutsの影響について分析を行っている。
調査結果は次のとおりだ。
-
JEEアプリケーションの約半数はフレームワークを使用していない。これほど数が多いのは,フレームワークの利用が一般化する以前に開発の始まったものが相当数含まれているためとも考えられる。
-
フレームワークを使用しないアプリケーションの品質には,1~4のスケールで2.7から3.7という大きなばらつきがある。これについて同社では,フレームワークには制約の設定や特定のアーキテクチャの適用によって品質を高める効果がある,と解釈している。
-
StrutsあるいはSpringをHibernateと併用するアプリケーションは,Hibernateのみを使用するものより品質レベルが低い。理由のひとつは,そのようなアプリケーションが大規模なコードベースを持ち,より複雑な構造であるためだろう。しかし各カテゴリの平均値はすべて,次のグラフに見るように3.25周辺の値に密集している。(薄い灰色線はカテゴリに属するアプリケーション全体の分散を,中央の白い横線はカテゴリの平均値を示す。)
-
SpringとHibernateを採用したJEEアプリケーションの規模は,他の構成に比べて2ないし3倍の大きさである – フレームワークを使用しない場合の184KLoC,Strutsを使用する場合の183KLoCに対して,498KLoCに達している (下図を参照)。
-
次に示すように,ピュアJEEアプリケーションのコードベースサイズは,JEEとC++の場合に比較すると,最少の場合1/6の大きさである。
- ピュアJEEアプリケーション(Java以外のテクノロジを含まない)は,より
-
JEEアプリケーションの品質は,他のテクノロジとの併用によって低下する傾向がある。特にC/C++ではそれが顕著だ。古い/レベルの低いテクノロジが,アプリケーションの品質を下げるものと思われる。.NETと併用した場合には,品質の低下はほとんど見られない。
このレポートは,CASTが多くのFortune 500エンタープライズソフトウェアの品質評価で使用している,ソースコードの解析結果に基づくものである。