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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Tennenhouse, D.: Proactive computing. Communications of the ACM 43(5), 43–50 (2000)
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)
Favre, J.: Understanding-In-The-Large. In: Proc. Int’l Workshop on Program Comprehension, p. 29. IEEE CS (1997)
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)
Spencer, H., Collyer, G.: #ifdef Considered Harmful or Portability Experience With C News. In: Proc. USENIX Conf., pp. 185–198. USENIX Association (1992)
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)
Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling Step-Wise Refinement. IEEE Trans. Softw. Eng. 30(6), 355–371 (2004)
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)
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)
Standish, T.: An Essay on Software Reuse. IEEE Trans. Softw. Eng. SE-10(5), 494–497 (1984)
Tiarks, R.: What Programmers Really Do: An Observational Study, pp. 36–37 (2011)
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)
Pennington, N.: Stimulus Structures and Mental Representations in Expert Comprehension of Computer Programs. Cognitive Psychology 19(3), 295–341 (1987)
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)
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)
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)
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)
Apel, S., Leich, T., Saake, G.: Aspectual Feature Modules. IEEE Trans. Softw. Eng. 34(2), 162–180 (2008)
Shaft, T., Vessey, I.: The Relevance of Application Domain Knowledge: The Case of Computer Program Comprehension. Information Systems Research 6(3), 286–299 (1995)
Soloway, E., Ehrlich, K.: Empirical Studies of Programming Knowledge. IEEE Trans. Softw. Eng. 10(5), 595–609 (1984)
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)
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)
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)
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)
Henderson-Sellers, B.: Object-Oriented Metrics: Measures of Complexity. Prentice Hall (1995)
McConnell, S.: Code Complete, 2nd edn. Microsoft Press (2004)
Robillard, M., Murphy, G.: Representing Concerns in Source Code. ACM Trans. Softw. Eng. & Methodology 16(1), 1–38 (2007)
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)
Boysen, J.: Factors Affecting Computer Program Comprehension. PhD thesis, Iowa State University (1977)
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)
Likert, R.: A Technique for the Measurement of Attitudes. Archives of Psychology 22(140), 1–55 (1932)
Dunsmore, A., Roper, M.: A Comparative Evaluation of Program Comprehension Measures. Technical Report EFoCS 35-2000, Department of Computer Science, University of Strathclyde (2000)
Shneiderman, B.: Measuring Computer Program Quality and Comprehension. International Journal of Man-Machine Studies 9(4), 465–478 (1977)
Someren, M., Barnard, Y., Sandberg, J.: The Think Aloud Method: A Practical Guide to Modelling Cognitive Processes. Academic Press (1994)
Shaft, T., Vessey, I.: The Relevance of Application Domain Knowledge: The Case of Computer Program Comprehension. Information Systems Research 6(3), 286–299 (1995)
Tichy, W.F.: Should Computer Scientists Experiment More? Computer 31(5), 32–40 (1998)
Goldstein, B.: Sensation and Perception, 5th edn. Cengage Learning Services (2002)
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)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)