Skip to main content

Program Comprehension in Preprocessor-Based Software

  • Conference paper
Computer Safety, Reliability, and Security (SAFECOMP 2012)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 7613))

Included in the following conference series:

Abstract

To adapt to heterogeneous hardware, software of embedded systems provides customization capacities. Typically, this customization is achieved using conditional compilation with preprocessors. However, preprocessor usage can lead to obfuscated source code that can be difficult to comprehend, which in turn cause increased maintenance costs, bugs, and security vulnerabilities. To profit from the benefit of preprocessors usage, we need to improve their comprehensibility. In this paper, we describe how program comprehension can be improved and, to that end, measured. We show that reliably measuring program comprehension requires considerably effort. However, the benefit is that we can apply concepts that have proven to improve program comprehension, and thus can e.g. improve maintainability, reliability, and security of source code.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Tennenhouse, D.: Proactive computing. Communications of the ACM 43(5), 43–50 (2000)

    Article  Google Scholar 

  2. Siegmund, N., Feigenspan, J., Soffner, M., Fruth, J., Köppen, V.: Challenges of Secure and Reliable Data Management in Heterogeneous Environments. In: Proc. Int’l Workshop on Digital Engineering, pp. 17–24. ACM Press (2010)

    Google Scholar 

  3. Favre, J.: Understanding-In-The-Large. In: Proc. Int’l Workshop on Program Comprehension, p. 29. IEEE CS (1997)

    Google Scholar 

  4. Muthig, D., Patzke, T.: Generic Implementation of Product Line Components. In: Aksit, M., Awasthi, P., Unland, R. (eds.) NODe 2002. LNCS, vol. 2591, pp. 313–329. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  5. Spencer, H., Collyer, G.: #ifdef Considered Harmful or Portability Experience With C News. In: Proc. USENIX Conf., pp. 185–198. USENIX Association (1992)

    Google Scholar 

  6. Lohmann, D., Scheler, F., Tartler, R., Spinczyk, O., Schröder-Preikschat, W.: A Quantitative Analysis of Aspects in the eCos Kernel. In: Proc. Europ. Conf. Computer Systems (EuroSys), pp. 191–204. ACM Press (2006)

    Google Scholar 

  7. Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE Trans. Softw. Eng. 30(6), 355–371 (2004)

    Article  Google Scholar 

  8. Apel, S., Kästner, C., Lengauer, C.: FeatureHouse: Language-Independent, Automatic Software Composition. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 221–231. IEEE CS (2009)

    Google Scholar 

  9. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Lee, S.H. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  10. Standish, T.: An Essay on Software Reuse. IEEE Trans. Softw. Eng. SE-10(5), 494–497 (1984)

    Article  Google Scholar 

  11. Tiarks, R.: What Programmers Really Do: An Observational Study, pp. 36–37 (2011)

    Google Scholar 

  12. Brooks, R.: Using a Behavioral Theory of Program Comprehension in Software Engineering. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 196–201. IEEE CS (1978)

    Google Scholar 

  13. Pennington, N.: Stimulus Structures and Mental Representations in Expert Comprehension of Computer Programs. Cognitive Psychology 19(3), 295–341 (1987)

    Article  Google Scholar 

  14. Liebig, J., Apel, S., Lengauer, C., Kästner, C., Schulze, M.: An Analysis of the Variability in Forty Preprocessor-Based Software Product Lines. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 105–114. ACM Press (2010)

    Google Scholar 

  15. Harrison, W., Ossher, H.: Subject-oriented Programming: A Critique of Pure Objects. In: Proc. Int’l Conf. Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pp. 411–428. IEEE CS (1993)

    Google Scholar 

  16. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopez, C., Loingtier, J.M., Irwin, J.: Aspect-Oriented Programming. In: Aksit, M., Auletta, V. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)

    Chapter  Google Scholar 

  17. Smaragdakis, Y., Batory, D.: Implementing Layered Designs with Mixin Layers. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 550–570. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  18. Apel, S., Leich, T., Saake, G.: Aspectual Feature Modules. IEEE Trans. Softw. Eng. 34(2), 162–180 (2008)

    Article  Google Scholar 

  19. Shaft, T., Vessey, I.: The Relevance of Application Domain Knowledge: The Case of Computer Program Comprehension. Information Systems Research 6(3), 286–299 (1995)

    Article  Google Scholar 

  20. Soloway, E., Ehrlich, K.: Empirical Studies of Programming Knowledge. IEEE Trans. Softw. Eng. 10(5), 595–609 (1984)

    Article  Google Scholar 

  21. Shneiderman, B., Mayer, R.: Syntactic/Semantic Interactions in Programmer Behavior: A Model and Experimental Results. International Journal of Parallel Programming 8(3), 219–238 (1979)

    MATH  Google Scholar 

  22. von Mayrhauser, A., Vans, A.: From Program Comprehension to Tool Requirements for an Industrial Environment. In: Proc. Int’l Workshop Program Comprehension (IWPC), pp. 78–86. IEEE CS (1993)

    Google Scholar 

  23. Koenemann, J., Robertson, S.: Expert Problem Solving Strategies for Program Comprehension. In: Proc. Conf. Human Factors in Computing Systems (CHI), pp. 125–130. ACM Press (1991)

    Google Scholar 

  24. Figueiredo, E., Cacho, N., Monteiro, M., Kulesza, U., Garcia, R., Soares, S., Ferrari, F., Khan, S., Filho, F., Dantas, F.: Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability. In: Proc. Int’l Conf. Software Engineering (ICSE), pp. 261–270. ACM Press (2008)

    Google Scholar 

  25. Henderson-Sellers, B.: Object-Oriented Metrics: Measures of Complexity. Prentice Hall (1995)

    Google Scholar 

  26. McConnell, S.: Code Complete, 2nd edn. Microsoft Press (2004)

    Google Scholar 

  27. Robillard, M., Murphy, G.: Representing Concerns in Source Code. ACM Trans. Softw. Eng. & Methodology 16(1), 1–38 (2007)

    Article  Google Scholar 

  28. Figueiredo, E., Whittle, J., Garcia, A.: ConcernMorph: Metrics-based Detection of Crosscutting Patterns. In: Proc. Europ. Software Engineering Conf./Foundations of Software Engineering (ESEC/FSE), pp. 299–300. ACM Press (2009)

    Google Scholar 

  29. Boysen, J.: Factors Affecting Computer Program Comprehension. PhD thesis, Iowa State University (1977)

    Google Scholar 

  30. Feigenspan, J., et al.: Exploring Software Measures to Assess Program Comprehension. In: Proc. Int’l Symposium Empirical Software Engineering and Measurement (ESEM), pp. 1–10, paper 3. IEEE CS (2011)

    Google Scholar 

  31. Likert, R.: A Technique for the Measurement of Attitudes. Archives of Psychology 22(140), 1–55 (1932)

    Google Scholar 

  32. Dunsmore, A., Roper, M.: A Comparative Evaluation of Program Comprehension Measures. Technical Report EFoCS 35-2000, Department of Computer Science, University of Strathclyde (2000)

    Google Scholar 

  33. Shneiderman, B.: Measuring Computer Program Quality and Comprehension. International Journal of Man-Machine Studies 9(4), 465–478 (1977)

    Article  Google Scholar 

  34. Someren, M., Barnard, Y., Sandberg, J.: The Think Aloud Method: A Practical Guide to Modelling Cognitive Processes. Academic Press (1994)

    Google Scholar 

  35. Shaft, T., Vessey, I.: The Relevance of Application Domain Knowledge: The Case of Computer Program Comprehension. Information Systems Research 6(3), 286–299 (1995)

    Article  Google Scholar 

  36. Tichy, W.F.: Should Computer Scientists Experiment More? Computer 31(5), 32–40 (1998)

    Article  MathSciNet  Google Scholar 

  37. Goldstein, B.: Sensation and Perception, 5th edn. Cengage Learning Services (2002)

    Google Scholar 

  38. Feigenspan, J., Kästner, C., Apel, S., Leich, T.: How to Compare Program Comprehension in FOSD Empirically - An Experience Report. In: Proc. Int’l Workshop on Feature-Oriented Software Development, pp. 55–62. ACM Press (2009)

    Google Scholar 

  39. Feigenspan, J., Schulze, M., Papendieck, M., Kästner, C., Dachselt, R., Köppen, V., Frisch, M.: Using Background Colors to Support Program Comprehension in Software Product Lines. In: Proc. Int’l Conf. Evaluation and Assessment in Software Engineering (EASE), pp. 66–75. Institution of Engineering and Technology (2011)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Siegmund, J., Siegmund, N., Fruth, J., Kuhlmann, S., Dittmann, J., Saake, G. (2012). Program Comprehension in Preprocessor-Based Software. In: Ortmeier, F., Daniel, P. (eds) Computer Safety, Reliability, and Security. SAFECOMP 2012. Lecture Notes in Computer Science, vol 7613. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-33675-1_49

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-33675-1_49

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-33674-4

  • Online ISBN: 978-3-642-33675-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics