Advertisement

The modular and feature toggle architectures of Google Chrome

  • Md Tajmilur Rahman
  • Peter C. Rigby
  • Emad Shihab
Article

Abstract

Software features often span multiple directories and conceptual modules making the extraction of feature architectures difficult. In this work, we extract a feature toggle architectural view and show how features span the conceptual, concrete, and reference architectures. Feature toggles are simple conditional flags that allow developers to turn a feature on or off in a running system. They are commonly used by large web companies, including Google, Netflix and Facebook to selectively enable and disable features. Recently, libraries to help inject and manage toggles have been created for all the major programming languages. We extract the feature toggles from the Google Chrome web browser to illustrate their use in understanding the architecture of a system. Since there is no high-level conceptual and concrete architectures for Chrome, we had to manually derive these representations from available documentation and map them into the source code. These modular representations of a modern web browser allowed us to update the 12 year old research on browser reference architectures with current technologies and browser concepts. Mining the usages of feature toggles in the source code, we were able to map them on to the modular representation to create a feature toggle architectural view of Chrome. We are also able to show which features are contained in a module and which modules a feature spans. Throughout the paper, we show how the feature toggle view can give new perspectives into the feature architecture of a system.

Keywords

Software architecture Architecture extraction Feature architecture Toggles Switches Flags 

Notes

Acknowledgements

We would like to thank Sumit Sarkar, Alexey Moujeer, Taiseem Ahmed and Gautam Sidharth Verma for their assistance in mapping architectural entities in the documentation to the concrete source files and directories.

References

  1. Adams B, McIntosh S (2016) Modern release engineering in a nutshell–why researchers should care. In: 2016 IEEE 23rd International conference on software analysis, evolution, and reengineering (SANER), vol 5. IEEE, pp 78–90Google Scholar
  2. Andritsos P, Tzerpos V (2005) Information-theoretic software clustering. IEEE Trans Softw Eng 31(2):150–165.  https://doi.org/10.1109/TSE.2005.25 CrossRefGoogle Scholar
  3. Anquetil N, Lethbridge TC (2003) Comparative study of clustering algorithms and abstract representations for software remodularisation. IEE Proc Softw 150(3):185–201.  https://doi.org/10.1049/ip-sen:20030581 CrossRefGoogle Scholar
  4. Antoniol G, Canfora G, Casazza G, De Lucia A, Merlo E (2002) Recovering traceability links between code and documentation. IEEE Trans Softw Eng 28(10):970–983CrossRefGoogle Scholar
  5. Batory D, Liu J, Sarvela JN (2003) Refinements and multi-dimensional separation of concerns. In: Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on foundations of software engineering ESEC/FSE-11. ACM, New York, pp 48–57,  https://doi.org/10.1145/940071.940079
  6. Benavides D, Trinidad P, Ruiz-Cortés A (2005) Automated reasoning on feature models. In: Proceedings of the 17th international conference on advanced information systems engineering CAiSE’05. Springer, Berlin, pp 491–503,  https://doi.org/10.1007/11431855_34
  7. Bowman IT, Holt RC, Brewster NV (1999) Linux as a case study: its extracted software architecture. In: Proceedings of the 21st international conference on software engineering ICSE ’99. ACM, New York, pp 555–563,  https://doi.org/10.1145/302405.302691
  8. Bravo (2012) List of chromium command line switches (for 2012-09-26). http://peter.sh/experiments/chromium-command-line-switches/?date=2012-09-26
  9. Chen K, Rajlich V (2000) Case study of feature location using dependence graph. In: Proceedings IWPC 2000. 8th International workshop on program comprehension, pp 241–247.  https://doi.org/10.1109/WPC.2000.852498
  10. Chrome (2015a) The chromium projects: design documents. http://www.chromium.org/developers/design-documents
  11. Chrome (2015b) Google chrome developers’ documentation. https://developer.chrome.com/extensions/devguide
  12. Chrome (2016a) The chromium projects: Nacl and pnacl. http://www.chromium.org/native-client/nacl-and-pnacl
  13. Chrome (2016c) What are extensions. https://developer.chrome.com/extensions
  14. Chrome G (2013) Saying goodbye to our old friend npapi. http://bit.ly/2fgG8UX
  15. ChromeWiki (2015) Google chrome official wiki page. http://en.wikipedia.org/wiki/Chrome
  16. Corazza A, Di Martino S, Scanniello G (2010) A probabilistic based approach towards software system clustering. In: Proceedings of the 2010 14th European conference on software maintenance and reengineering CSMR ’10. IEEE Computer Society, Washington, DC, pp 88–96.  https://doi.org/10.1109/CSMR.2010.36
  17. Corazza A, Martino SD, Maggio V, Scanniello G (2011) Investigating the use of lexical information for software system clustering. In: Proceedings of the 2011 15th European conference on software maintenance and reengineering CSMR ’11. IEEE Computer Society, Washington, DC, pp 35–44.  https://doi.org/10.1109/CSMR.2011.8
  18. CSAcademy (2017) Graph editor. https://csacademy.com/app/graph_editor
  19. Czarnecki K, Helsen S, Eisenecker U (2004) Staged configuration using feature models. Springer, Berlin, pp 266–283Google Scholar
  20. Dagenais B, Robillard MP (2012) Recovering traceability links between an API and its learning resources. In: Proceedings of the 34th ACM/IEEE international conference on software engineering, pp 47 –57Google Scholar
  21. Dintzner N, v Deursen A, Pinzger M (2016) Fever: extracting feature-oriented changes from commits. In: 2016 IEEE/ACM 13th Working conference on mining software repositories (MSR), pp 85–96.  https://doi.org/10.1109/MSR.2016.018
  22. Dit B, Revelle M, Gethers M, Poshyvanyk D (2013) Feature location in source code: a taxonomy and survey. J Softw Evol Process 25(1):53–95CrossRefGoogle Scholar
  23. Dixon E, Enos E, Brodmerkle S (2011) A/b testing of a webpage. US Patent 7,975,000Google Scholar
  24. Dubinsky Y, Rubin J, Berger T, Duszynski S, Becker M, Czarnecki K (2013) An exploratory study of cloning in industrial software product lines. In: Proceedings of the 2013 17th European conference on software maintenance and reengineering CSMR ’13. IEEE Computer Society, Washington, DC, pp 25–34,  https://doi.org/10.1109/CSMR.2013.13
  25. Ethertank, DBaron, Kohei, Kennykaiyinyu (2013) https://mzl.la/2i7M1vp
  26. FeatureFlags (2018) Feature flags, toggles, controls: Libraries/sdks. https://featureflags.io/feature-flags/
  27. Firefox (2015) Multi-process Firefox - technical overview. https://mzl.la/2AwsuJp
  28. Fitzgerald B, Stol KJ (2014) Continuous software engineering and beyond: trends and challenges. In: Proceedings of the 1st international workshop on rapid continuous software engineering RCoSE 2014. ACM, New York, pp 1–9,  https://doi.org/10.1145/2593812.2593813
  29. Garcia J, Popescu D, Mattmann C, Medvidovic N, Cai Y (2011) Enhancing architectural recovery using concerns. In: Proceedings of the 2011 26th IEEE/ACM international conference on automated software engineering ASE ’11. IEEE Computer Society, Washington, DC, pp 552–555.  https://doi.org/10.1109/ASE.2011.6100123
  30. Garcia J, Ivkovic I, Medvidovic N (2013) A comparative analysis of software architecture recovery techniques. In: Proceedings of the 28th IEEE/ACM international conference on automated software engineering ASE’13. IEEE Press, Piscataway, pp 486–496,  https://doi.org/10.1109/ASE.2013.6693106
  31. Griss ML, Favaro J, Alessandro Md (1998) Integrating feature modeling with the rseb. In: Proceedings of the 5th international conference on software reuse ICSR ’98. IEEE Computer Society, Washington, DC, pp 76–. http://dl.acm.org/citation.cfm?id=551789.853486
  32. Grosskurth A, Godfrey MW (2005) A reference architecture for web browsers. In: Proceedings of the 21st IEEE international conference on software maintenance ICSM ’05. IEEE Computer Society, Washington, DC, pp 661–664,  https://doi.org/10.1109/ICSM.2005.13
  33. Jansen A, Bosch J (2005) Software architecture as a set of architectural design decisions. In: Proceedings of the 5th Working IEEE/IFIP conference on software architecture WICSA ’05. IEEE Computer Society, Washington, DC, pp 109–120,  https://doi.org/10.1109/WICSA.2005.61
  34. Kang K, Cohen S, Hess J, Novak W, Peterson S (1990) Feature–oriented domain analysis (FODA) feasibility study. Tech. Rep CMU/SEI-90-TR-21. Software Engineering Institute, Carnegie Mellon UniversityGoogle Scholar
  35. Kellens A, Mens K, Tonella P (2007) A survey of automated code-level aspect mining techniques. Transactions on aspect-oriented software development IV, 143–162Google Scholar
  36. Kiczales G, Hilsdale E, Hugunin J, Kersten M, Palm J, Griswold WG (2001) An overview of aspectj. In: Proceedings of the 15th European conference on object-oriented programming ECOOP ’01. Springer, London, pp 327–353. http://dl.acm.org/citation.cfm?id=646158.680006
  37. Kobayashi K, Kamimura M, Kato K, Yano K, Matsuo A (2012) Feature-gathering dependency-based software clustering using dedication and modularity. In: Proceedings of the 2012 IEEE international conference on software maintenance (ICSM) ICSM ’12. IEEE Computer Society, Washington, DC, pp 462–471,  https://doi.org/10.1109/ICSM.2012.6405308
  38. Krikhaar RL (1999) Software architecture reconstruction. Philips ElectronicsGoogle Scholar
  39. Kruchten P (1995) Architecture Blueprints&Mdash;the&Ldquo;4 + 1&Rdquo; view model of software architecture. TRI-Ada ’95. ACM, New YorkGoogle Scholar
  40. Laforge (2011) Chrome release cycle. http://www.slideshare.net/Jolicloud/chrome-release-cycle, job title: Technical Program Manager (Chrome) at Google
  41. Lindvall M, Sandahl K (1996) Practical implications of traceability. Softw Pract Exper 26(10):1161–1180.  https://doi.org/10.1002/(SICI)1097-024X(199610)26:10<1161::AID-SPE58>3.3.CO;2-O
  42. Mancoridis S, Mitchell BS, Chen Y, Gansner ER (1999) Bunch: a clustering tool for the recovery and maintenance of software system structures. In: Proceedings of the IEEE international conference on software maintenance ICSM ’99. IEEE Computer Society, Washington, DC, pp 50–. http://dl.acm.org/citation.cfm?id=519621.853406
  43. Maqbool O, Babri HA (2004) The weighted combined algorithm: a linkage algorithm for software clustering. In: Proceedings of the Eighth Euromicro working conference on software maintenance and reengineering (CSMR’04) CSMR ’04. IEEE Computer Society, Washington, DC, pp 15–. http://dl.acm.org/citation.cfm?id=977397.977725
  44. Marcus A, Maletic J (2003) Recovering documentation-to-source-code traceability links using latent semantic indexing. In: Proceedings of the 25th ACM/IEEE International conference on software engineering, pp 125–135Google Scholar
  45. Mirakhorli M, Cleland-Huang J (2011) Transforming trace information in architectural documents into re-usable and effective traceability links. In: Proceedings of the 6th International workshop on SHAring and reusing architectural knowledge SHARK ’11. ACM, New York, pp 45–52.  https://doi.org/10.1145/1988676.1988685
  46. MozillaWiki (2015) javascript:spidermonkey:odinmonkey. https://mzl.la/2A4K5YQ
  47. Naseem R, Maqbool O, Muhammad S (2011) Improved similarity measures for software clustering. In: Proceedings of the 2011 15th European conference on software maintenance and reengineering CSMR ’11. IEEE Computer Society, Washington, DC, pp 45–54,  https://doi.org/10.1109/CSMR.2011.9
  48. Queille JP, Voidrot JF, Wilde N, Munro M (1994) The impact analysis task in software maintenance: a model and a case study. In: Proceedings of the International conference on software maintenance ICSM ’94. IEEE Computer Society, Washington, DC, pp 234–242. http://dl.acm.org/citation.cfm?id=645543.655725
  49. Rahman AAU, Helms E, Williams L, Parnin C (2015) Synthesizing continuous deployment practices used in software development. In: 2015 Agile Conference, pp 1–10.  https://doi.org/10.1109/Agile.2015.12
  50. Rahman MT (2017) Chrome architecture replication package. https://github.com/tajmilur-rahman/chrome-architecture
  51. Rahman MT, Querel LP, Rigby PC, Adams B (2016) Feature toggles: practitioner practices and a case study. In: Proceedings of the 13th international conference on mining software repositories MSR ’16. ACM, New York, pp 201–211,  https://doi.org/10.1145/2901739.2901745
  52. Rigby PC, Robillard MP (2013) Discovering essential code elements in informal documentation. In: Proceedings of the 2013 International conference on software engineering, ICSE ’13, pp 832–841Google Scholar
  53. Rubin J, Czarnecki K, Chechik M (2015) Cloned product variants: from ad-hoc to managed software product lines. Int J Softw Tools Technol Transf 17(5):627–646.  https://doi.org/10.1007/s10009-014-0347-9 CrossRefGoogle Scholar
  54. Scitools (2016) Understand source code analyzer. https://scitools.com
  55. Sochos P, Philippow I, Riebisch M (2004) Feature-oriented development of software product lines: mapping feature models to the architecture. In: Object-Oriented and internet-based technologies: 5th annual international conference on object-oriented and internet-based technologies, concepts, and applications for a networked world, Net. ObjectDays 2004 Erfurt, Germany, September 27–30, 2004 Proceedings, vol 3263. Springer, pp 138Google Scholar
  56. TheRegisterCOUK (2011) Google’s native client goes live in chrome. http://www.theregister.co.uk/2011/09/16/native_client_debuts_in_chrome/
  57. Tzerpos V, Holt RC (2000) Acdc: an algorithm for comprehension-driven clustering. In: Proceedings of the seventh working conference on reverse engineering (WCRE’00) WCRE ’00. http://dl.acm.org/citation.cfm?id=832307.837118. IEEE Computer Society, Washington, DC, pp 258–
  58. Wu J, Hassan AE, Holt RC (2005) Comparison of clustering algorithms in the context of software evolution. In: Proceedings of the 21st IEEE international conference on software maintenance ICSM ’05. IEEE Computer Society, Washington, DC, pp 525–535,  https://doi.org/10.1109/ICSM.2005.31

Copyright information

© Springer Science+Business Media, LLC, part of Springer Nature 2018

Authors and Affiliations

  1. 1.Concordia UniversityMontrealCanada

Personalised recommendations