Empirical Software Engineering

, Volume 21, Issue 4, pp 1670–1705 | Cite as

Quantifying structural attributes of system decompositions in 28 feature-oriented software product lines

An exploratory study
  • Stefan Sobernig
  • Sven Apel
  • Sergiy Kolesnikov
  • Norbert Siegmund
Article

Abstract

A key idea of feature orientation is to decompose a software product line along the features it provides. Feature decomposition is orthogonal to object-oriented decomposition—it crosscuts the underlying package and class structure. It has been argued often that feature decomposition improves system structure by reducing coupling and by increasing cohesion. However, recent empirical findings suggest that this is not necessarily the case. In this exploratory, observational study, we investigate the decompositions of 28 feature-oriented software product lines into classes, features, and feature-specific class fragments. The product lines under investigation are implemented using the feature-oriented programming language Fuji. In particular, we quantify and compare the internal attributes import coupling and cohesion of the different product-line decompositions in a systematic, reproducible manner. For this purpose, we adopt three established software measures (e.g., coupling between units, CBU; internal-ratio unit dependency, IUD) as well as standard concentration statistics (e.g., Gini coefficient). In our study, we found that feature decomposition can be associated with higher levels of structural coupling in a product line than a decomposition into classes. Although coupling can be concentrated in very few features in most feature decompositions, there are not necessarily hot-spot features in all product lines. Interestingly, feature cohesion is not necessarily higher than class cohesion, whereas features are more equal in serving dependencies internally than classes of a product line. Our empirical study raises critical questions about alleged advantages of feature decomposition. At the same time, we demonstrate how our measurement approach of coupling and cohesion has potential to support static and dynamic analyses of software product lines (i.e., type checking and feature-interaction detection) by facilitating product sampling.

Keywords

Software product lines Feature-oriented programming Fuji Structural coupling Structural cohesion Software measurement 

Notes

Acknowledgments

This work has been supported by the German Research Foundation (AP 206/2, AP 206/4, AP 206/5, and AP 206/6).

References

  1. Ajila S, Dumitrescu R (2007) Experimental use of code delta, code churn, and rate of change to understand software product line evolution. J Syst Softw 80(1):74–91CrossRefGoogle Scholar
  2. Apel S, Beyer D (2011) Feature cohesion in software product lines: an exploratory study. In: Proc. ICSE, pp 421–430Google Scholar
  3. Apel S, Kästner C (2009) An overview of feature-oriented software development. J Object Technol 8(5):49–84CrossRefGoogle Scholar
  4. Apel S, Leich T, Saake G (2008) Aspectual feature modules. IEEE Trans Softw Eng 34(2):162–180CrossRefGoogle Scholar
  5. Apel S, Kästner C, Größlinger A, Lengauer C (2010) Type safety for feature-oriented product lines. Autom Softw Eng 17(3):251–300. doi: 10.1007/s10515-010-0066-8 CrossRefGoogle Scholar
  6. Apel S, Speidel H, Wendler P, von Rhein A, Beyer D (2011) Detection of feature interactions using feature-aware verification. In: Proc. ASE. IEEE CS, pp 372–375Google Scholar
  7. Apel S, Kolesnikov S, Liebig J, Kästner C, Kuhlemann M, Leich T (2012) Access control in feature-oriented programming. Sci Comput Program 77(3):174–187CrossRefGoogle Scholar
  8. Apel S, Batory D, Kästner C, Saake G (2013a) Feature-oriented software product lines: concepts and implementation. SpringerGoogle Scholar
  9. Apel S, Batory DS, Kästner C, Saake G (2013b) Feature-oriented software product lines - concepts and implementation. Springer. doi: 10.1007/978-3-642-37521-7
  10. Apel S, Kästner C, Lengauer C (2013c) Language-independent and automated software composition: the FeatureHouse experience. IEEE Trans Softw Eng 39(1):63–79CrossRefGoogle Scholar
  11. Apel S, Kolesnikov SS, Siegmund N, Kästner C, Garvin B (2013d) Exploring feature interactions in the wild: the new feature-interaction challenge. In: Proc. FOSD. ACM, pp 1–8Google Scholar
  12. Apel S, von Rhein A, Wendler P, Größlinger A, Beyer D (2013e) Strategies for product-line verification: case studies and experiments. In: Proc. ICSE. IEEE, pp 482–491Google Scholar
  13. Batory D, Sarvela J, Rauschmayer A (2004) Scaling step-wise refinement. IEEE Trans Softw Eng 30(6):355–371CrossRefGoogle Scholar
  14. Berger T, Guo J (2013) Towards system analysis with variability model metrics. In: Proc. VaMoS. ACM, pp 23–23Google Scholar
  15. Bouwers E, Correia J, van Deursen A, Visser J (2011) Quantifying the analyzability of software architectures. In: Proc. WICSA. IEEE CS, pp 83–92Google Scholar
  16. Briand L, Daly J, Wüst J (1998) A unified framework for cohesion measurement in object-oriented systems. Empir Softw Eng 3(1):65–117CrossRefGoogle Scholar
  17. Briand L, Daly J, Wüst J (1999) A unified framework for coupling measurement in object-oriented systems. IEEE Trans Softw Eng 25(1):91–121CrossRefGoogle Scholar
  18. Burrows R, Ferrari FC, Garcia A, Taïani F (2010) An empirical evaluation of coupling metrics on aspect-oriented programs. In: Proc. WETSoM, ACM pp 53–58Google Scholar
  19. Clauset A, Shalizi C, Newman M (2009) Power-law distributions in empirical data. SIAM Rev 51(4):661–703MathSciNetCrossRefMATHGoogle Scholar
  20. Clements P, Krueger C (2002) Point – counterpoint: being proactive pays off - eliminating the adoption. IEEE Software 19(4):28–31CrossRefGoogle Scholar
  21. Czarnecki K, Eisenecker U (2000) Generative programming – methods, tools, and applications, 6th edn. Addison-WesleyGoogle Scholar
  22. D’Ambros M, Lanza M, Robbes R (2010) An extensive comparison of bug prediction approaches. In: Proc. MSR, IEEE pp 31–41Google Scholar
  23. Eaddy M, Aho AV, Murphy GC (2007) Identifying, assigning, and quantifying crosscutting concerns. In: Proc. ACoM, IEEE CSGoogle Scholar
  24. Eaddy M, Aho A, Antoniol G, Gueheneuc Y (2008) CERBERUS: Tracing requirements to source code using information retrieval, dynamic analysis, and program analysis. In: Proc. ICPC, IEEE pp 53–62Google Scholar
  25. Emam KE, Melo WL, Machado JC (2001) The prediction of faulty classes using object-oriented design metrics. J Syst Softw 56(1):63–75CrossRefGoogle Scholar
  26. Ferreira K, Bigonha M, Bigonha R, Mendes L, Almeida H (2012) Identifying thresholds for object-oriented software metrics. J Syst Softw 85(2):244–257CrossRefGoogle Scholar
  27. Figueiredo E, Cacho N, Sant’Anna C, Monteiro M, Kulesza U, Garcia A, Soares S, Ferrari F, Khan S, Filho F, Dantas F (2008) Evolving software product lines with aspects: An empirical study on design stability. In: Proc. ICSE, ACM pp 261–270Google Scholar
  28. Garvin B, Cohen M (2011) Feature interaction faults revisited: an exploratory study. In: Proc. ISSRE. IEEE, pp 90–99Google Scholar
  29. Iglewicz B, Hoaglin DC (1993) How to detect and handle outliers, vol 16. ASQC Quality PressGoogle Scholar
  30. Kakwani N (1980) Income inequality and poverty. Oxford University PressGoogle Scholar
  31. Kästner C, Apel S, Ostermann K (2011) The road to feature modularity? In: Proc. FOSD. ACM, pp 5:1–5:8Google Scholar
  32. Kästner C, Apel S, Thüm T, Saake G (2012) Type checking annotation-based product lines. ACM Trans Softw Eng Methodol 21(3):14:1–14:39CrossRefGoogle Scholar
  33. Kiczales G, Mezini M (2005) Aspect-oriented programming and modular reasoning. In: Proc. ICSE. ACM, pp 49–58Google Scholar
  34. Kolesnikov S, Apel S, Siegmund N, Sobernig S, Kästner C, Senkaya S (2013a) Predicting quality attributes of software product lines using software and network measures and sampling. In: Proc. VaMoS. ACM, pp 25–29Google Scholar
  35. Kolesnikov S, von Rhein A, Hunsen C, Apel S (2013b) A comparison of product-based, feature-based, and family-based type checking. In: Proc. GPCE. ACM, pp 115–124Google Scholar
  36. Liebig J, Apel S, Lengauer C, Kästner C, Schulze M (2010) An analysis of the variability in forty preprocessor-based software product lines. In: Proc. ICSE. ACM, pp 105–114Google Scholar
  37. Lilienthal C (2009) Architectural complexity of large-scale software systems. In: Proc. CSMR. IEEE, pp 17–26Google Scholar
  38. Lopez-Herrejon R, Apel S (2007) Measuring and characterizing crosscutting in aspect-based programs: basic metrics and case studies. In: Proc. FASE. Springer pp 423–437Google Scholar
  39. Lopez-Herrejon R, Batory D (2001) A standard problem for evaluating product-line methodologies. In: Proc. GCSE. Springer pp 10–24Google Scholar
  40. Louridas P, Spinellis D, Vlachos V (2008) Power laws in software. ACM Trans Softw Eng Methodol 18(1):2:1–2:26CrossRefGoogle Scholar
  41. Marchesi M, Pinna S, Serra N, Tuveri S (2004) Power laws in Smalltalk. In: Proc. ESUG joint event, ESUGGoogle Scholar
  42. Montagud S, Abrahão S, Insfran E (2012) A systematic review of quality attributes and measures for software product lines. Softw Qual J 20(4–5):425–486. doi: 10.1007/s11219-011-9146-7 CrossRefGoogle Scholar
  43. Nguyen H, Kästner C, Nguyen TN (2014) Exploring variability-aware execution for testing plugin-based web applications. In: Proc. ICSE. ACM, pp 907–918. doi: 10.1145/2568225.2568300
  44. Oster S, Markert F, Ritter P (2010) Automated incremental pairwise testing of software product lines. In: Proc. SPLC. Springer, pp 196–210. doi: 10.1007/978-3-642-15579-6_14
  45. Potanin A, Noble J, Frean M, Biddle R (2005) Scale-free geometry in OO programs. Comm ACM 48(5):99–103CrossRefGoogle Scholar
  46. Revelle M, Gethers M, Poshyvanyk D (2011) Using structural and textual information to capture feature coupling in object-oriented software. Empir Softw Eng 16(6):773–811CrossRefGoogle Scholar
  47. Robillard M, Murphy G (2007) Representing concerns in source code. ACM Trans Softw Eng Methodol 16(1):3–38CrossRefGoogle Scholar
  48. Sant’Anna C, Gracia A, Chavez C, Lucena C, von Staa A (2003) On the reuse and maintenance of aspect-oriented software: an assessment framework. In: Proc. BSSEGoogle Scholar
  49. Sarkar S, Kak A, Rama G (2008) Metrics for measuring the quality of modularization of large-scale object-oriented software. IEEE Trans Softw Eng 34(5):700–720CrossRefGoogle Scholar
  50. Shatnawi R, Li W, Swain J, Newman T (2010) Finding software metrics threshold values using ROC curves. J Softw Maint-Res Pr 22(1):1–16CrossRefGoogle Scholar
  51. Siegmund N, Rosenmüller M, Kästner C, Giarrusso P, Apel S, Kolesnikov S (2011) Scalable prediction of non-functional properties in software product lines. In: Proc. SPLC. IEEE, pp 160–169. doi: 10.1109/SPLC.2011.20
  52. Siegmund N, Kolesnikov S, Kästner C, Apel S, Batory D, Rosenmüller M, Saake G (2012) Predicting performance via automated feature-interaction detection. In: Proc. ICSE. IEEE, pp 167–177. doi: 10.1109/ICSE.2012.6227196
  53. Siegmund N, von Rhein A, Apel S (2013) Family-based performance measurement. In: Proc. GPCE. AM, pp 95–104. doi: 10.1145/2517208.2517209
  54. Smaragdakis Y, Batory D (2002) Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs. ACM Trans Softw Eng Methodol 11(2):215–255. doi: 10.1145/505145.505148 CrossRefGoogle Scholar
  55. Sobernig S (2010) Feature interaction networks. In: Proc. SAC. ACM, pp 2360–2364. doi: 10.1145/1774088.1774574
  56. Sobernig S, Apel S, Kolesnikov S, Siegmund N (2014) Quantifying structural attributes of system decompositions in 28 feature-oriented software product lines. Available at http://epub.wu.ac.at/id/eprint/4186, technical Reports / Institute for Information Systems and New Media (WU Vienna), 2014/01
  57. Stevens W, Myers G, Constantine L (1999) Structured design. IBM Syst J 38(2/3):231–256CrossRefGoogle Scholar
  58. Taube-Schock C, Walker R, Witten I (2011) Can we avoid high coupling? In: Proc. ECOOP. Springer, pp 204–228. doi: 10.1007/978-3-642-22655-7_10
  59. Thüm T, Apel S, Kästner C, Schaefer I, Saake G (2014) A classification and survey of analysis strategies for software product lines. ACM Comput Surv 47(1):6:1–6:45. doi: 10.1145/2580950 CrossRefGoogle Scholar
  60. Vasilescu B, Serebrenik A, van den Brand M (2011) You can’t control the unfamiliar: a study on the relations between aggregation techniques for software metrics. In: Proc. ICSM. IEEE, pp 313–322. doi: 10.1109/ICSM.2011.6080798
  61. Wheeldon R, Counsell S (2003) Power law distributions in class relationships. In: Proc. SCAM> IEEE, pp 45–54. doi: 10.1109/SCAM.2003.1238030
  62. Wong W, Gokhale S, Horgan J (2000) Quantifying the closeness between program components and features. J Syst Softw 54(2):87–98. doi: 10.1016/S0164-1212(00)00029-7 CrossRefGoogle Scholar
  63. Yilmaz C, Cohen M, Porter A (2006) Covering arrays for efficient fault characterization in complex configuration spaces. IEEE Trans Softw Eng 32(1):20–34. doi: 10.1109/TSE.2006.8 CrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media New York 2014

Authors and Affiliations

  • Stefan Sobernig
    • 1
  • Sven Apel
    • 2
  • Sergiy Kolesnikov
    • 2
  • Norbert Siegmund
    • 2
  1. 1.WU ViennaWienAustria
  2. 2.University of PassauPassauGermany

Personalised recommendations