Abstract
Significant portions of software life cycle resources are devoted to program maintenance, which motivates the development of automated techniques and tools to support the tedious, error-prone tasks. Natural language clues from programmers’ naming in literals, identifiers, and comments can be leveraged to improve the effectiveness of many software tools. For example, they can be used to increase the accuracy of software search tools, improve the ability of program navigation tools to recommend related methods, and raise the accuracy of other program analyses by providing access to natural language information. This chapter focuses on how to capture, model, and apply the programmers’ conceptual knowledge expressed in both linguistic information as well as programming language structure and semantics. We call this kind of analysis Natural Language Program Analysis (NLPA) since it combines natural language processing techniques with program analysis to extract information for analysis of the source program.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Abadi, A., Nisenson, M., Simionovici, Y.: A Traceability Technique for Specifications. In: ICPC 2008: Proceedings of the 16th IEEE International Conference on Program Comprehension, pp. 103–112 (2008)
Abebe, S., Haiduc, S., Marcus, A., Tonella, P., Antoniol, G.: Analyzing the Evolution of the Source Code Vocabulary, pp. 189–198 (2009)
Antoniol, G., Gueheneuc, Y.G., Merlo, E., Tonella, P.: Mining the Lexicon Used by Programmers during Sofware Evolution. In: IEEE International Conference on Software Maintenance, pp. 14–23 (2007)
Antoniol, G., Canfora, G., Casazza, G., Lucia, A.D., Merlo, E.: Recovering Traceability Links between Code and Documentation. IEEE Transactions on Software Engineering 28(10), 970–983 (2002)
Antoniol, G., Gueheneuc, Y.: Feature Identification: An Epidemiological Metaphor. IEEE Transactions on Software Engineering 32(9), 627–641 (2006)
Ball, T., Larus, J.R.: Branch Prediction for Free. In: PLDI 1993: Proceedings of the ACM SIGPLAN 1993 Conference on Programming Language Design and Implementation, pp. 300–313. ACM Press, New York (1993)
Biggerstaff, T.J.: Design Recovery for Maintenance and Reuse. Computer 22(7), 36–49 (1989)
Biggerstaff, T.J., Mitbander, B.G., Webster, D.: The Concept Assignment Problem in Program Understanding. In: ICSE 1993: Proceedings of the 15th International Conference on Software Engineering, pp. 482–498 (1993)
Binkley, D., Lawrie, D., Maex, S., Morrell, C.: Impact of Limited Memory Resources. In: Proceedings of the 16th IEEE International Conference on Program Comprehension (2008)
Booch, G.: Object-oriented Design. Ada Lett. I(3), 64–76 (1982)
Buse, R.P., Weimer, W.R.: Automatic Documentation Inference for Exceptions. In: International Symp. on Software Testing and Analysis, 2008, pp. 273–282. ACM (2008)
Caprile, B., Tonella, P.: Nomen Est Omen: Analyzing the Language of Function Identifiers. In: WCRE 1999: Proceedings of the 6th Working Conference on Reverse Engineering, pp. 112–122 (1999)
Caprile, B., Tonella, P.: Restructuring Program Identifier Names. In: ICSM 2000: Proceedings of the International Conference on Software Maintenance (ICSM 2000), p. 97. IEEE Computer Society, Washington, DC (2000)
Carroll, J., Briscoe, T.: High Precision Extraction of Grammatical Relations. In: 7th International Workshop on Parsing Technologies (2001), citeseer.ist.psu.edu/article/carroll01high.html
Chen, K., Rajlich, V.: Case Study of Feature Location Using Dependence Graph. In: IWPC 2000: Proceedings of the 8th International Workshop on Program Comprehension, pp. 241–249 (2000)
Crosby, M.E., Scholtz, J., Wiedenbeck, S.: The Roles Beacons Play in Comprehension for Novice and Expert Programmers. In: 14th Workshop of the Psychology of Programming Interest Group, pp. 18–21. Brunel University (2002)
De Lucia, A., Oliveto, R., Tortora, G.: Assessing IR-based Traceability Recovery Tools through Controlled Experiments. Empirical Softw. Engg. 14(1), 57–92 (2009)
Deissenboeck, F., Pizka, M.: Concise and Consistent Naming. Software Quality Control 14(3), 261–282 (2006)
Eaddy, M., Aho, A.V., Antoniol, G., Gueheneuc, Y.: Cerberus: Tracing Requirements to Source Code Using Information Retrieval, Dynamic Analysis, and Program Analysis. In: ICPC 2008: Proceedings of the 16th IEEE International Conference on Program Comprehension. IEEE Computer Society, Washington, DC (2008)
Enslen, E., Hill, E., Pollock, L., Vijay-Shanker, K.: Mining Source Code to Automatically Split Identifiers for Software Analysis. In: Proceedings of the 6th International Working Conference on Mining Software Repositories, MSR 2009, pp. 71–80 (2009)
Erickson, T.E.: An Automated FORTRAN Documenter. In: Proceedings of the 1st Annual International Conference on Systems Documentation, pp. 40–45. ACM, New York (1982)
Erlikh, L.: Leveraging Legacy System Dollars for E-Business. IT Professional 2(3), 17–23 (2000)
Falleri, J.-R., Huchard, M., Lafourcade, M., Nebut, C., Prince, V., Dao, M.: Automatic Extraction of a WordNet-Like Identifier Network from Software. In: 18th Int’l Conf. on Program Comprehension, pp. 4–13. IEEE (2010)
Feild, H., Binkley, D., Lawrie, D.: An Empirical Comparison of Techniques for Extracting Concept Abbreviations from Identifiers. In: Proceedings of IASTED International Conference on Software Engineering and Applications, SEA 2006 (2006)
Feng, F., Croft, W.B.: Probabilistic Techniques for Phrase Extraction. Information Processing and Management 37(2), 199–220 (2001)
Fischer, G., Nieper-Lemke, H.: Helgon: Extending the Retrieval by Reformulation Paradigm. In: CHI 1989: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp. 357–362 (1989)
Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley (1999)
Fry, Z.P., Shepherd, D., Hill, E., Pollock, L., Vijay-Shanker, K.: Analysing Source Code: Looking for Useful Verb-Direct Object Pairs in all the Right Places. Software, IET 2(1), 27–36 (2008)
Furnas, G.W., Landauer, T.K., Gomez, L.M., Dumais, S.T.: The Vocabulary Problem in Human-System Communication. Communications of the ACM 30(11), 964–971 (1987)
Gosling, J., Joy, B., Steele, G.: Java Language Specification, (September 2006), http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html
Haiduc, S., Marcus, A.: On the Use of Domain Terms in Source Code. In: ICPC 2008: Proceedings of the 16th IEEE International Conference on Program Comprehension, pp. 113–122 (2008)
Hayase, Y., Kashima, Y., Manabe, Y., Inoue, K.: Building Domain Specific Dictionaries of Verb-Object Relation from Source Code. In: 15th European Conference on Software Maintenance and Reengineering (CSMR 2011), pp. 93–100. IEEE Computer Society (2011)
Henninger, S.: Using Iterative Refinement to Find Reusable Software. IEEE Software 11(5), 48–59 (1994)
Hill, E.: Integrating Natural Language and Program Structure Information to Improve Software Search and Exploration. Ph.D. thesis, University of Delaware (2010)
Hill, E., Fry, Z.P., Boyd, H., Sridhara, G., Novikova, Y., Pollock, L., Vijay- Shanker, K.: AMAP: Automatically Mining Abbreviation Expansions in Programs to Enhance Software Maintenance Tools. In: MSR 2008: Proceedings of the 5th International Working Conference on Mining Software Repositories, IEEE Computer Society, Washington, DC (2008)
Hill, E., Pollock, L., Vijay-Shanker, K.: Exploring the Neighborhood with Dora to Expedite Software Maintenance. In: ASE 2007: Proceedings of the 22nd IEEE International Conference on Automated Software Engineering (ASE 2007), pp. 14–23. IEEE Computer Society, Washington, DC (2007)
Hill, E., Pollock, L., Vijay-Shanker, K.: Automatically Capturing Source Code Context of NL-Queries for Software Maintenance and Reuse. In: ICSE 2009: Proceedings of the 31st International Conference on Software Engineering (2009)
Høst, E., Østvold, B.: Canonical Method Names for Java. In: Malloy, B., Staab, S., van den Brand, M. (eds.) SLE 2010. LNCS, vol. 6563, pp. 226–245. Springer, Heidelberg (2011)
Høst, E.W., Østvold, B.M.: The Programmer’s Lexicon, Volume I: The Verbs. In: SCAM 2007: Proceedings of the 7th IEEE International Working Conference on Source Code Analysis and Manipulation, pp. 193–202. IEEE Computer Society, Washington, DC (2007)
Høst, E.W., Østvold, B.M.: Debugging Method Names. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 294–317. Springer, Heidelberg (2009)
Høst, E.W., Østvold, B.M.: The Java Programmer’s Phrase Book. In: Gašević, D., Lämmel, R., Van Wyk, E. (eds.) SLE 2008. LNCS, vol. 5452, pp. 322–341. Springer, Heidelberg (2009)
IBM: Eclipse IDE (2010), http://www.eclipse.org
Ishio, T., Niitani, R., Murphy, G.C., Inoue, K.: A Program Slicing Approach for Locating Functional Concerns. Tech. rep., Graduate School of Information Science and Technology, Osaka University (March 2007), http://sel.ist.osaka-u.ac.jp/~ishio/TR-slicing2007.pdf
Kajko-Mattsson, M.: A Survey of Documentation Practice within Corrective Maintenance. Empirical Software Engineering 10(1), 31–55 (2005)
Knuth, D.E.: Literate Programming. The Computer Journal 27(2), 97–111 (1984)
Kuhn, A., Ducasse, S., Gírba, T.: Semantic Clustering: Identifying Topics in Source Code. Information Systems and Technologies 49(3), 230–243 (2007)
Lawrance, J., Bellamy, R., Burnett, M., Rector, K.: Using Information Scent to Model the Dynamic Foraging Behavior of Programmers in Maintenance Tasks. In: CHI 2008: Proceeding of the Twenty-Sixth Annual SIGCHI Conference on Human Factors in Computing Systems, pp. 1323–1332. ACM, New York (2008)
Lawrie, D., Feild, H., Binkley, D.: An Empirical Study of Rules for well-formed Identifiers. Journal of Software Maintenance and Evolution 19(4), 205–229 (2007)
Lawrie, D., Feild, H., Binkley, D.: Extracting Meaning from Abbreviated Identifiers. In: SCAM 2007: Proceedings of the 7th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007), pp. 213–222 (2007)
Lawrie, D., Morrell, C., Feild, H., Binkley, D.: What’s in a Name? A Study of Identifiers. In: ICPC 2006: Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC 2006), pp. 3–12. IEEE Computer Society, Washington, DC (2006)
Lawrie, D., Binkley, D., Morrell, C.: Normalizing Source Code Vocabulary. In: Working Conference on Reverse Engineering (WCRE), pp. 3–12 (2010)
Lawrie, D., Feild, H., Binkley, D.: Leveraged Quality Assessment using Information Retrieval Techniques. In: ICPC 2006: Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC 2006), pp. 149–158. IEEE Computer Society, Washington, DC (2006)
Liblit, B., Begel, A., Sweetser, E.: Cognitive Perspectives on the Role of Naming in Computer Programs. In: Proceedings of the 18th Annual Psychology of Programming Workshop (2006)
Linstead, E., Bajracharya, S., Ngo, T., Rigor, P., Lopes, C., Baldi, P.: Sourcerer: Mining and searching internet-scale software repositories. Data Mining and Knowledge Discovery 18(2), 300–336 (2009)
Linstead, E., Rigor, P., Bajracharya, S., Lopes, C., Baldi, P.: Mining Concepts from Code with Probabilistic Topic Models. In: ASE 2007: Proceedings of the Twenty-Second IEEE/ACM International Conference on Automated Software Engineering, pp. 461–464. ACM, New York (2007)
Long, F., Wang, X., Cai, Y.: API Hyperlinking via Structural Overlap. In: ACM SIGSOFT Symposium on the Foundations of Software Engineering. ACM (2009)
Lukins, S., Kraft, N., Etzkorn, L.: Source Code Retrieval for Bug Localization Using Latent Dirichlet Allocation. In: WCRE 2008: Proceedings of the 15th Working Conference on Reverse Engineering, pp. 155–164 (2008)
Maarek, Y.S., Berry, D.M., Kaiser, G.E.: An Information Retrieval Approach for Automatically Constructing Software Libraries. IEEE Transactions on Software Engineering 17(8), 800–813 (1991)
Madani, N., Guerrouj, L., Penta, M.D., Gueheneuc, Y.G., Antoniol, G.: Recognizing Words from Source Code Identifiers using Speech Recognition Techniques. In: European Conference on Software Maintenance and Reengineering, CSMR (2010)
Malik, S.: Parsing Java Method Names for Improved Software Analysis. Tech. rep., University of Delaware (Senior Thesis) (2011)
Mani, I.: Automatic Summarization. John Benjamins (2001)
Manning, C., Schütze, H.: Foundations of Statistical Natural Language Processing. MIT Press, Cambridge (1999)
Manning, C.D., Raghavan, P., Schütze, H.: Introduction to Information Retrieval. Cambridge University Press, New York (2008)
Marcus, A., Maletic, J.I.: Recovering Documentation-to-Source-Code Traceability Links using Latent Semantic Indexing. In: ICSE 2003: Proceedings of the 25th International Conference on Software Engineering, pp. 125–135 (2003)
Marcus, A., Poshyvanyk, D.: The Conceptual Cohesion of Classes. In: ICSM 2005: Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM 2005), pp. 133–142. IEEE Computer Society, Washington, DC (2005)
Marcus, A., Sergeyev, A., Rajlich, V., Maletic, J.I.: An Information Retrieval Approach to Concept Location in Source Code. In: WCRE 2004: Proceedings of the 11th Working Conference on Reverse Engineering (WCRE 2004), pp. 214–223 (2004)
Maskeri, G., Sarkar, S., Heafield, K.: Mining Business Topics in Source Code using Latent Dirichlet Allocation. In: ISEC 2008: Proceedings of the 1st India Software Engineering Conference, pp. 113–120 (2008)
McMillan, C., Poshyvanyk, D., Revelle, M.: Combining Textual and Structural Analysis of Software Artifacts for Traceability Link Recovery. In: TEFSE 2009: Proceedings of the 2009 ICSE Workshop on Traceability in Emerging Forms of Software Engineering, pp. 41–48. IEEE Computer Society, Washington, DC (2009)
Michail, A., Notkin, D.: Assessing Software Libraries by Browsing Similar Classes, Functions and Relationships. In: ICSE 1999: Proceedings of the 21st International Conference on Software Engineering, pp. 463–472. IEEE Computer Society Press, Los Alamitos (1999)
Miller, G.: WordNet: a lexical database for English. Communications of the ACM, pp. 39–41 (1995)
Ohba, M., Gondow, K.: Toward Mining “Concept Keywords” from Identifiers in Large Software Projects. In: MSR 2005: Proceedings of the 2005 International Workshop on Mining Software Repositories, pp. 1–5 (2005)
Poshyvanyk, D., Marcus, A.: Combining Formal Concept Analysis with Information Retrieval for Concept Location in Source Code. In: ICPC 2007: Proceedings of the 15th IEEE International Conference on Program Comprehension, pp. 37–48. IEEE Computer Society, Washington, DC (2007)
Poshyvanyk, D., Marcus, A., Dong, Y.: JIRiSS – an Eclipse Plug-in for Source Code Exploration. In: Proceedings of the 14th International Conference on Program Comprehension (ICPC 2006), pp. 252–255 (2006)
Poshyvanyk, D., Petrenko, M., Marcus, A., Xie, X., Liu, D.: Source Code Exploration with Google. In: ICSM 2006: Proceedings of the 22nd IEEE International Conference on Software Maintenance (ICSM 2006), pp. 334–338 (2006)
Rao, S., Kak, A.: Retrieval from Software Libraries for Bug Localization: a Comparative Study of Generic and Composite Text Models. In: Proceeding of the 8th Working Conference on Mining Software Repositories, MSR 2011, pp. 43–52. ACM, New York (2011), http://doi.acm.org/10.1145/1985441.1985451
Ratanotayanon, S., Sim, S.E., Raycraft, D.J.: Cross-artifact Traceability using Lightweight Links. In: TEFSE 2009: Proceedings of the 2009 ICSE Workshop on Traceability in Emerging Forms of Software Engineering, pp. 57–64. IEEE Computer Society, Washington, DC (2009)
Reiter, E., Dale, R.: Building Natural Language Generation Systems. Cambridge University Press (2000)
Revelle, M., Dit, B., Poshyvanyk, D.: Using Data Fusion and Web Mining to Support Feature Location in Software. In: IEEE 18th International Conference on Program Comprehension, ICPC 2010 (2010)
Roach, D., Berghel, H., Talburt, J.R.: An Interactive Source Commenter for Prolog Programs. SIGDOC Asterisk J. Comput. Doc. 14(4), 141–145 (1990)
Robillard, M.P.: Automatic Generation of Suggestions for Program Investigation. In: ESEC/FSE-13: 10th European Software Engineering Conference Held Jointernationaly with 13th ACM SIGSOFT International Symp on Foundations of Software Engineering, pp. 11–20 (2005)
Robillard, M.P., Coelho, W.: How Effective Developers Investigate Source Code: An Exploratory Study. IEEE Transactions on Software Engineering 30(12), 889–903 (2004)
Robillard, M.P., Murphy, G.C.: Concern Graphs: Finding and Describing Concerns using Structural Program Dependencies. In: ICSE 2002: Proceedings of the 24th International Conference on Software Engineering, pp. 406–416 (2002)
Robillard, M.P., Shepherd, D., Hill, E., Vijay-Shanker, K., Pollock, L.: An Empirical Study of the Concept Assignment Problem. Tech. Rep. SOCS-TR-2007.3, School of Computer Science, McGill University (2007), http://www.cs.mcgill.ca/~martin/concerns/
Robillard, P.N.: Schematic pseudocode for program constructs and its computer automation by SCHEMACODE. Commun. ACM 29(11), 1072–1089 (1986)
Runeson, P., Alexandersson, M., Nyholm, O.: Detection of Duplicate Defect Reports Using Natural Language Processing. In: ICSE 2007: Proceedings of the 29th International Conference on Software Engineering, pp. 499–510. IEEE Computer Society, Washington, DC (2007)
Saul, Z.M., Filkov, V., Devanbu, P., Bird, C.: Recommending Random Walks. In: ESEC-FSE 2007: Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp. 15–24. ACM Press, New York (2007)
Shepherd, D., Fry, Z.P., Hill, E., Pollock, L., Vijay-Shanker, K.: Using Natural Language Program Analysis to Locate and Understand Action-Oriented Concerns. In: AOSD 2007: Proceedings of the 6th International Conference on Aspect-Oriented Software Development (2007)
Shepherd, D., Pollock, L., Vijay-Shanker, K.: Towards Supporting on-demand Virtual Remodularization using Program Graphs. In: AOSD 2006: Proceedings of the 5th International Conference on Aspect-Oriented Software Development, pp. 3–14 (2006)
Sinha, V., Karger, D., Miller, R.: Relo: Helping Users Manage Context during Interactive Exploratory Visualization of Large Codebases. In: Visual Languages and Human-Centric Computing, VL/HCC 2006 (2006)
de Souza, S.C.B., Anquetil, N., de Oliveira, K.M.: A Study of the Documentation Essential to Software Maintenance. In: 23rd Annual International Conference on Design of Communication, pp. 68–75. ACM (2005)
Sridhara, G., Hill, E., Muppaneni, D., Pollock, L., Vijay-Shanker, K.: Towards Automatically Generating Summary Comments for Java Methods. In: ASE 2010: Proceedings of the 25th IEEE International Conference on Automated Software Engineering (ASE 2010) (2010)
Sridhara, G., Hill, E., Pollock, L., Vijay-Shanker, K.: Identifying Word Relations in Software: A Comparative Study of Semantic Similarity Tools. In: Proceedings of the 16th IEEE International Conference on Program Comprehension. IEEE (2008)
Sridhara, G., Pollock, L., Vijay-Shanker, K.: Automatically Detecting and Describing High Level Actions within Methods. In: ICSE 2011: Proceedings of the 33rd International Conference on Software Engineering, ICSE 2011, pp. 101–110. ACM, New York (2011)
Sridhara, G., Pollock, L., Vijay-Shanker, K.: Generating Parameter Comments and Integrating with Method Summaries. In: International Conference on Program Comprehension, ICPC 2011 (2011)
Sridharan, M., Fink, S., Bodik, R.: Thin Slicing. In: PLDI 2007: Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation (2007)
SUN: How to Write Doc Comments for the Javadoc Tool, http://java.sun.com/j2se/javadoc/writingdoccomments/
Takang, A.A., Grubb, P.A., Macredie, R.D.: The effects of comments and identifier names on program comprehensibility: an experimental investigation. J. Prog. Lang. 4(3), 143–167 (1996)
Tan, L., Yuan, D., Krishna, G., Zhou, Y.: /*iComment: Bugs or Bad Comments?*/. In: SOSP 2007: Proceedings of Twenty-First ACM SIGOPS Symposium on Operating Systems Principles, pp. 145–158. ACM, New York (2007)
Tan, L., Zhou, Y., Padioleau, Y.: aComment: Mining Annotations from Comments and Code to Detect Interrupt Related Concurrency Bugs. In: Proceeding of the 33rd International Conference on Software Engineering, ICSE 2011, pp. 11–20. ACM, New York (2011)
Tarr, P., Ossher, H., Harrison, W., Stanley, M., Sutton, J.: N Degrees of Separation: Multi-Dimensional Separation of Concerns. In: ICSE 1999: Proceedings of the 21st International Conference on Software Engineering, pp. 107–119. IEEE Computer Society Press, Los Alamitos (1999)
Tenny, T.: Program Readability: Procedures Versus Comments. IEEE Trans. Softw. Eng. 14(9), 1271–1279 (1988)
Tip, F.: A Survey of Program Slicing Techniques. Journal of Programming Languages 3(3), 121–189 (1995)
Wang, X., Lai, G., Liu, C.: Recovering Relationships between Documentation and Source Code based on the Characteristics of Software Engineering. Electron. Notes Theor. Comput. Sci. 243, 121–137 (2009)
Warr, F.W., Robillard, M.P.: Suade: Topology-Based Searches for Software Investigation. In: ICSE 2007: Proceedings of the 29th International Conference on Software Engineering, pp. 780–783 (2007)
Woodfield, S.N., Dunsmore, H.E., Shen, V.Y.: The Effect of Modularization and Comments on Program Comprehension. In: Proceedings of the 5th International Conference on Software Engineering. IEEE Press (1981)
Xu, B., Qian, J., Zhang, X., Wu, Z., Chen, L.: A Brief Survey of Program Slicing. SIGSOFT Software Engineering Notes 30(2), 1–36 (2005)
Ying, A.T.T., Tarr, P.L.: Filtering out methods you wish you hadn’t navigated. In: Eclipse 2007: Proceedings of the 2007 OOPSLA Workshop on Eclipse Technology Exchange, pp. 11–15. ACM, New York (2007)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Pollock, L., Vijay-Shanker, K., Hill, E., Sridhara, G., Shepherd, D. (2013). Natural Language-Based Software Analyses and Tools for Software Maintenance. In: De Lucia, A., Ferrucci, F. (eds) Software Engineering. ISSSE ISSSE ISSSE 2010 2009 2011. Lecture Notes in Computer Science, vol 7171. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-36054-1_4
Download citation
DOI: https://doi.org/10.1007/978-3-642-36054-1_4
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-36053-4
Online ISBN: 978-3-642-36054-1
eBook Packages: Computer ScienceComputer Science (R0)