Abstract
Slicing is a technique, traditionally applied to programs, for extracting the parts of a program that affect the values computed at a statement of interest. In recent years authors have begun to consider slicing at model level. We present a detailed review of existing work on slicing at the level of finite-state-machine-based models. We focus on state-based modeling notations because these have received sufficient attention from the slicing community that there is now a coherent body of hitherto unsurveyed work. We also identify the challenges that state-based slicing presents and how the existing literature has addressed these. We conclude by identifying problems that remain open either because of the challenges involved in addressing them or because the community simply has yet to turn its attention to solving them.
- Agrawal, H., Demillo, R. A., and Spafford, E. H. 1991. Dynamic slicing in the presence of unconstrained pointers. In Proceedings of the 4th ACM Symposium on Testing, Analysis, and Verification (TAV4'91). 60--73. Google ScholarDigital Library
- Agrawal, H. and Horgan, J. R. 1990. Dynamic program slicing. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation. 246--256. Google ScholarDigital Library
- Aho, A. V., Sethi, R., and Ullman, J. D. 1986. Compilers, Principles, Techniques, and Tools. Addison-Wesley, Pearson Education. Google ScholarDigital Library
- Alur, R. and Dill, D. L. 1990. Automata for modeling real-time systems. In Proceedings of the 17th International Colloquium on Automata, Languages and Programming. Springer, New York, 322--335. Google ScholarDigital Library
- Androutsopoulos, K., Binkley, D., Clark, D., Gold, N., Harman, M., Lano, K., and Li, Z. 2011. Model projection: Simplifying models in response to restricting the environment. In Proceedings of the 33rd International Conference on Software Engineering (ICSE'11). 291--300. Google ScholarDigital Library
- Androutsopoulos, K., Gold, N., Harman, M., Li, Z., and Tratt, L. 2009a. A theoretical and empirical study of efsm dependence. In Proceedings of the International Conference on Software Maintenance (ICSM'09).Google Scholar
- Androutsopoulos, K., Clark, D., Harman, M., Li, Z., and Tratt, L. 2009b. Control dependence for extended finite state machines. In Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering held in Conjunction with the European Conference Joint Conferences on the Theory and Practice of Software. Springer, 216--230. Google ScholarDigital Library
- Ball, T. and Horwitz, S. 1993. Slicing programs with arbitrary control--flow. In Proceedings of the 1st Conference on Automated Algorithmic Debugging. P. Fritzson, Ed., Springer, 206--222. Google ScholarDigital Library
- Binkley, D. 1998. The application of program slicing to regression testing. Inf. Softw. Technol. 40, 11, 583--594.Google ScholarCross Ref
- Binkley, D. and Gallagher, K. B. 1996. Program slicing. Adv. Comput. 43, 1--50.Google ScholarCross Ref
- Binkley, D. and Harman, M. 2003. A large-scale empirical study of forward and backward static slice size and context sensitivity. In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society Press, 44--53. Google ScholarDigital Library
- Binkley, D. and Harman, M. 2004. A survey of empirical results on program slicing. Adv. Comput. 62, 105--178.Google ScholarCross Ref
- Binkley, D. and Harman, M. 2005. Forward slices are smaller than backward slices. In Proceedings of the 5th IEEE International Workshop on Source Code Analysis and Manipulation. IEEE Computer Society Press, 15--24. Google ScholarDigital Library
- Binkley, D., Harman, M., and Krinke, J. 2007. Empirical study of optimization techniques for massive slicing. ACM Trans. Program. Lang. Syst. 30, 1. Google ScholarDigital Library
- Binkley, D., Horwitz, S., and Reps, T. 1995. Program integration for languages with procedure calls. ACM Trans. Softw. Engin. Methodol. 4, 1, 3--35. Google ScholarDigital Library
- Binkley, D. W. 2007. Source code analysis: A road map. In Proceedings of the Workshop on Future of Software Engineering (FOSE'07). L. Briand and A. Wolf, Eds., IEEE Computer Society Press, 104--119. Google ScholarDigital Library
- Bozga, M., Fernandez, J.-C., and Ghirvu, L. 2000. Using static analysis to improve automatic test generation. In Proceedings of the 6th International Conference on Tools and Algorithms for Construction and Analysis of Systems (TACAS'00). Springer, 235--250. Google ScholarDigital Library
- Bozga, M., Fernandez, J.-C., and Ghirvu, L. 2003. Using static analysis to improve automatic test generation. Int. J. Softw. Tools Technol. Transfer 4, 142--152.Google ScholarCross Ref
- Bozga, M., Fernandez, J.-C., Ghirvu, L., Graf, S., Pierre Krimm, J., Mounier, L., and Sifakis, J. 1999. If: An intermediate representation for sdl and its applications. In Proceedings of the SDL-Forum. Elsevier Science, 423--440.Google Scholar
- Canfora, G., Cimitile, A., and De Lucia, A. 1998. Conditioned program slicing. Inf. Softw. Technol. 40, 11, 595--607.Google ScholarCross Ref
- Chan, W., Anderson, R. J., Beame, P., and Notkin, D. 1998. Improving efficiency of symbolic model checking for state-based system requirements. SIGSOFT Softw. Engin. Not. 23, 2, 102--112. Google ScholarDigital Library
- Chan, W., Anderson, R. J., Beame, P., Notkin, D., Jones, D. H., and Warner, W. E. 2001. Optimizing symbolic model checking for statecharts. IEEE Trans. Softw. Engin. 27, 2, 170--190. Google ScholarDigital Library
- Clarke, E. M. and Emerson, E. A. 1982. Design and synthesis of synchronization skeletons using branching-time temporal logic. In Proceedings of the Workshop on Logic of Programs. Springer, 52--71. Google ScholarDigital Library
- Clarke, E. M., Grumberg, O., and Peled, D. A. 1999. Model Checking. CMIT Press. Google ScholarDigital Library
- Colangelo, D., Compare, D., Inverardi, P., and Pelliccione, P. 2006. Reducing software architecture models complexity: A slicing and abstraction approach. In Proceedings of the IFIP WG 6.1 International Conference on Formal Techniques for Networked and Distributed Systems (FORTE'06). Lecture Notes in Computer Science, vol. 4229, Springer, 243--258. Google ScholarDigital Library
- Corbett, J. C., Dwyer, M. B., Hatcliff, J., Laubach, S., Pasareanu, C. S., Robby, and Zheng, H. 2000. Bandera: Extracting finite-state models from java source code. In Proceedings of the 22nd International Conference on Software Engineering (ICSE'00). IEEE Computer Society Press, 439--448. Google ScholarDigital Library
- De Lucia, A. 2001. Program slicing: Methods and applications. In Proceedings of the International Workshop on Source Code Analysis and Manipulation. IEEE Computer Society Press, 142--149.Google ScholarCross Ref
- Dong, W., Wang, J., Qi, X., and Qi, Z.-C. 2001. Model checking UML statecharts. In Proceedings of the 8th Asia-Pacific Software Engineering Conference. IEEE Computer Society, 363. Google ScholarDigital Library
- Dubrovin, J. 2006. Jumbala—An action language for uml state machines. Res. rep. HUT-TCSA101, Helsinki University of Technology, Laboratory for Theoretical Computer Science, Espoo, Finland.Google Scholar
- Dwyer, M. B., Hatcliff, J., Hoosier, M., Ranganath, V., and Wallentine, T. 2006. Evaluating the effectiveness of slicing for model reduction of concurrent object-oriented programs. In Proceedings of International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS'06). Springer, 73--89. Google ScholarDigital Library
- Ferrante, J., Ottenstein, K. J., and Warren, J. D. 1987. The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9, 3, 319--349. Google ScholarDigital Library
- Field, J., Ramalingam, G., and Tip, F. 1995. Parametric program slicing. In Proceedings of the 22nd ACM Symposium on Principles of Programming Languages. ACM Press, New York, 379--392. Google ScholarDigital Library
- Fox, C., Danicic, S., Harman, M., and Hierons, R. M. 2004. ConSIT: A fully automated conditioned program slicer. Softw. Pract. Exper. 34, 15--46. Google ScholarDigital Library
- Fox, C., Harman, M., Hierons, R. M., and Danicic, S. 2001. Backward conditioning: A new program specialisation technique and its application to program comprehension. In Proceedings of the 9th IEEE International Workshop on Program Comprehension. IEEE Computer Society Press, 89--97. Google ScholarDigital Library
- Fox, C. and Luangsodsai, A. 2005. And-or dependence graphs for slicing statecharts. In Beyond Program Slicing. Internationales Begegnungs- und Forschungszentrum fuer Informatik (IBFI), Schloss Dagstuhl, Germany.Google Scholar
- Gallagher, K. B. and Lyle, J. R. 1991. Using program slicing in software maintenance. IEEE Trans. Softw. Engin. 17, 8, 751--761. Google ScholarDigital Library
- Ganapathy, V. and Ramesh, S. 2002. Slicing synchronous reactive programs. Electron. Notes Theor. Comput. Sci. 65, 5, 50--64.Google ScholarCross Ref
- Gaston, C., Gall, P. L., Rapin, N., and Touil, A. 2006. Symbolic execution techniques for test purpose definition. In Proceedings of the 18th IFIP TC6/WG6.1 International Conference on Testing of Communicating Systems (TestCom'06). Lecture Notes in Computer Science, vol. 3964, Springer, 1--18. Google ScholarDigital Library
- Grammatech Inc. 2002. The CodeSurfer slicing system. http://www.grammatech.com/.Google Scholar
- Guo, L. and Roychoudhury, A. 2008. Debugging statecharts via model-code traceability. In Proceedings of the 3rd International Symposium on Leveraging Applications of Formal Methods, Verification and Validation (ISoLA'08). Springer, 292--306.Google Scholar
- Gupta, R., Harrold, M. J., and Soffa, M. L. 1992. An approach to regression testing using slicing. In Proceedings of the IEEE Conference on Software Maintenance. IEEE Computer Society Press, 299--308.Google Scholar
- Gupta, R. and Soffa, M. L. 1995. Hybrid slicing: An approach for refining static slices using dynamic information. In Proceedings of 3rd ACM SIGSOFT Symposium on the Foundations of Software Engineering (SIGSOFT'95). 29--40. Google ScholarDigital Library
- Hamon, G. 2005. A denotational semantics for stateflow. In Proceedings of the 5th ACM International Conference on Embedded Software (EMSOFT'05). ACM Press, New York, 164--172. Google ScholarDigital Library
- Harel, D. 1987. Statecharts: A visual formalism for complex systems. Sci. Comput. Program. 8, 3, 231--274. Google ScholarDigital Library
- Harel, D. and Kugler, H. 2004. The rhapsody semantics of statecharts (or, on the executable core of the UML). In Proceedings of the Priority Program SoftSpez of the German Research Foundation (DFG) on Integration of Software Specification Techniques for Applications in Engineering. Lecture Notes in Computer Science, vol. 3147, Springer, 325--354.Google ScholarCross Ref
- Harel, D. and Naamad, A. 1996. The statemate semantics of statecharts. ACM Trans. Softw. Engin. Methodol. 5, 4, 293--333. Google ScholarDigital Library
- Harman, M., Binkley, D., and Danicic, S. 2003. Amorphous program slicing. J. Syst. Softw. 68, 1, 45--64. Google ScholarDigital Library
- Harman, M. and Danicic, S. 1997. Amorphous program slicing. In Proceedings of the 5th IEEE International Workshop on Program Comprehesion (IWPC'97). IEEE Computer Society Press, 70--79. Google ScholarDigital Library
- Harman, M. and Danicic, S. 1998. A new algorithm for slicing unstructured programs. J. Softw. Maint. Evolut. 10, 6, 415--441. Google ScholarDigital Library
- Harman, M., Danicic, S., Sivagurunathan, Y., and Simpson, D. 1996. The next 700 slicing criteria. In Proceedings of the 2nd UK Workshop on Program Comprehension. M. Munro, Ed.Google Scholar
- Harman, M. and Hierons, R. M. 2001. An overview of program slicing. Softw. Focus 2, 3, 85--92.Google ScholarCross Ref
- Harman, M., Hierons, R. M., Danicic, S., Howroyd, J., and Fox, C. 2001. Pre/post conditioned slicing. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01). IEEE Computer Society Press, 138--147. Google ScholarDigital Library
- Harman, M., Hu, L., Hierons, R. M., Wegener, J., Sthamer, H., Baresel, A., and Roper, M. 2004. Testability transformation. IEEE Trans. Softw. Engin. 30, 1, 3--16. Google ScholarDigital Library
- Hatcliff, J., Dwyer, M. B., and Zheng, H. 2000. Slicing software for model construction. Higher-Order Symbol. Comput. 13, 4, 315--353. Google ScholarDigital Library
- Heimdahl, M. P. E., Leveson, N., and Reese, J. D. 1996. Experiences and lessons from the analysis of TCAS II. SIGSOFT Softw. Engin. Notes 21, 3, 79--83. Google ScholarDigital Library
- Heimdahl, M. P. E. and Leveson, N. G. 1995. Completeness and consistency analysis of state-based requirements. In Proceedings of the 17th International Conference on Software Engineering. ACM Press, New York, 3--14. Google ScholarDigital Library
- Heimdahl, M. P. E., Thompson, J. M., and Whalen, M. W. 1998. On the effectiveness of slicing hierarchical state machines: A case study. In Proceedings of the 24th Euromicro Conference (EUROMICRO'98). IEEE Computer Society, 10435--10444. Google ScholarDigital Library
- Heimdahl, M. P. E. and Whalen, M. W. 1997. Reduction and slicing of hierarchical state machines. In Proceedings of the 5th ACM SIGSOFT Symposium on the Foundations of Software Engineering. Springer. Google ScholarDigital Library
- Holzmann, G. J. 1997. The model checker spin. IEEE Trans. Softw. Engin. 23, 279--295. Google ScholarDigital Library
- Horwitz, S., Reps, T., and Binkley, D. 1990. Interprocedural slicing using dependence graphs. ACM Trans. Program. Lang. Syst. 12, 1, 26--61. Google ScholarDigital Library
- Horwitz, S., Reps, T., Rosay, G., Das, M., Hasti, B., Lampert, J., Melski, D., Shapiro, M., Siff, M., Turnidge, T., Ball, T., Binkley, D., Barger, V., Bates, S., Bricker, T., Cai, J., Paige, R., Pfeiffer, P., Prins, J., Yang, W., Ramalingam, G., and Sagiv, M. 2000. Wisconsin program slicing project. http://www.cs.wisc.edu/wpis/html/.Google Scholar
- Hromkovic, J. and Schnitger, G. 2007. Comparing the size of NFAs with and without epsilontransitions. Theor. Comput. Sci. 380, 1--2, 100--114. Google ScholarDigital Library
- Ilie, L. and Yu, S. 2003. Reducing nfas by invariant equivalences. Theor. Comput. Sci. 306, 1--3, 373--390. Google ScholarDigital Library
- Janowska, A. and Janowski, P. 2006. Slicing of timed automata with discrete data. Fundam. Informaticae 72, 1--3, 181--195. Google ScholarDigital Library
- Jhala, R. and Majumdar, R. 2005. Path slicing. SIGPLAN Not. 40, 6, 38--47. Google ScholarDigital Library
- Knapp, A. and Merz, S. 2002. Model checking and code generation for UML state machines and collaborations. In Proceeding 5th Workshop on Tools for System Design and Verification (FM-Tools'02). D. Haneberg, G. Schellhorn, and W. Reif, Eds, 59--64.Google Scholar
- Komondoor, R. and Horwitz, S. 2000. Semantics-preserving procedure extraction. In Proceedings of the 27th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'00). ACM Press, New York, 155--169. Google ScholarDigital Library
- Korel, B. and Laski, J. 1988. Dynamic program slicing. Inf. Process. Lett. 29, 3, 155--163. Google ScholarDigital Library
- Korel, B., Singh, I., Tahat, L., and Vaysburg, B. 2003. Slicing of state based models. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM'03). IEEE Computer Society Press, 34--43. Google ScholarDigital Library
- Krinke, J. 1998. Static slicing of threaded programs. In Proceedings of the ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE'98). ACM Press, New York, 35--42. Google ScholarDigital Library
- Kuck, D. J., Kuhn, R. H., Padua, D. A., Leasure, B., and Wolfe, M. 1981. Dependence graphs and compiler optimizations. In Proceedings of the 8th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'81). ACM Press, New York, 207--218. Google ScholarDigital Library
- Labbe, S. and Gallois, J.-P. 2008. Slicing communicating automata specifications: Polynomial algorithms for model reduction. Formal Aspects Comput. 20, 6, 563--595. Google ScholarCross Ref
- Labbe, S., Gallois, J.-P., and Pouzet, M. 2007. Slicing communicating automata specifications for efficient model reduction. In Proceedings of the 18th Australian Software Engineering Conference (ASWEC'07). IEEE Computer Society, 191--200. Google ScholarDigital Library
- Lakhotia, A. and Singh, P. 2003. Challenges in getting formal with viruses. Virus Bull. 9, 1, 14--18.Google Scholar
- Lamport, L. 1978. Time, clocks, and the ordering of events in a distributed system. Comm. ACM 21, 7, 558--565. Google ScholarDigital Library
- Lamport, L. 1983. What good is temporal logic? In Proceedings of the 9th IFIP World Congress on Information Processing 83. R. E. A. Mason, Ed., 657--668.Google Scholar
- Langenhove, S. V. 2006. Towards the correctness of software behavior in uml: A model checking approach based on slicing. Ph.D. thesis, Ghent University. http://lib.ugent.be/fulltxt/RUG01/000/970/662/RUG01-000970662_2010_0001_AC.pdf.Google Scholar
- Langenhove, S. V. and Hoogewijs, A. 2007. SVtL: System verification through logic tool support for verifying sliced hierarchical statecharts. In Proceedings of the 18th International Workshop on Recent Trends in Algebraic Development Techniques. Lecture Notes in Computer Science, vol. 4409, Springer, 142--155. Google ScholarDigital Library
- Lano, K. and Clark, D. 1999. Demonstrating preservation of safety properties in reactive control system development. In Proceedings of the 4th Australian Workshop on Industrial Experience with Safety Critical Systems and Software.Google Scholar
- Lano, K. and Kolahdouz-Rahimi, S. 2011. Slicing techniques for uml models. J. Object Technol. 10, 11:1--49.Google ScholarCross Ref
- Leveson, N., Heimdahl, M., Hildreth, H., and Reese, J. 1994. Requirements specification for process-control systems. IEEE Trans. Softw. Engin. 20, 9, 684--706. Google ScholarDigital Library
- Maraninchi, F. 1991. The Argos language: graphical representation of automata and description of reactive systems. In IEEE Workshop on Visual Languages.Google Scholar
- Mealy, G. H. 1955. A method to synthesizing sequential circuits. Bell Syst. Tech. J. 34, 5, 1045--1075.Google ScholarCross Ref
- Millett, L. and Teitelbaum, T. 1998. Slicing promela and its applications to model checking. In Proceedings of the 4th International SPIN Workshop. 75--83.Google Scholar
- Millett, L. I. and Teitelbaum, T. 1999. Channel dependence analysis for slicing promela. In Proceedings of the International Symposium on Software Engineering for Parallel and Distributed Systems (PDSE'99). IEEE Computer Society, 52--61. Google ScholarDigital Library
- Mock, M., Atkinson, D. C., Chambers, C., and Eggers, S. J. 2002. Improving program slicing with dynamic points-to data. In Proceedings of the 10th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE-02). ACM Press, New York, 71--80. Google ScholarDigital Library
- Moore, E. F. 1956. Gedanken experiments on sequential machines. In Automata Studies, Princeton University Press, Princeton, NJ, 129--153.Google Scholar
- Muller-Olm, M., Schmidt, D., and Steffen, B. 1999. Model-checking: A tutorial introduction. In Proceedings of the 6th International Static Analysis Symposium. Vol. 1694, 331--354. Google ScholarDigital Library
- Nobe, C. and Bingle, M. 1998. Model-based development: Five processes used at boeing. In Proceedings of the IEEE International Conference and Workshop: Engineering of Computer-Based Systems.Google Scholar
- Ojala, V. 2007. A slicer for UML state machines. Tech. rep. HUT-TCS-25, Helsinki University of Technology Laboratory for Theoretical Computer Science, Espoo, Finland.Google Scholar
- Omg. 2001. OMG unified modeling language specification 1.4. http://www.omg.org/cgi-bin/doc?formal/01-09-67.Google Scholar
- Ottenstein, K. J. and Ottenstein, L. M. 1984. The program dependence graph in software development environments. ACM/SIGPLAN Not. 19, 5, 177--184. Google ScholarDigital Library
- Pelliccione, P., Muccini, H., Bucchiarone, A., and Facchini, F. 2005. Testor: Deriving test sequences from model-based specifications. In Proceedings of the 8th International SIGSOFT Symposium on Component Based Software Engineering. Lecture Notes in Computer Science, vol. 3489, Springer, 267--282. Google ScholarDigital Library
- Praxis Ltd. 2008. The SPADE program analyser. http://docs.adacore.com/sparkdocs-docs/Checker_UM.htm.Google Scholar
- Ranganath, V. P., Amtoft, T., Banerjee, A., Hatcliff, J., and Dwyer, M. B. 2007. A new foundation for control dependence and slicing for modern program structures. ACM Trans. Program. Lang. Syst. 29, 5, 27. Google ScholarDigital Library
- Silva, J. 2012. A vocabulary of program slicing-based techniques. ACM Comput. Surv. 44, 3, 12:1--12:41. Google ScholarDigital Library
- Tip, F. 1995. A survey of program slicing techniques. J. Program. Lang. 3, 3, 121--189.Google Scholar
- Venkatesh, G. A. 1991. The semantic approach to program slicing. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'91). ACM Press, New York, 107--119. Google ScholarDigital Library
- Wang, J., Dong, W., and Qi, Z.-C. 2002. Slicing hierarchical automata for model checking UML statecharts. In Proceedings of the 4th International Conference on Formal Engineering Methods (ICFEM'02). Springer, 435--446. Google ScholarDigital Library
- Wang, T. and Roychoudhury, A. 2004. Using compressed byte code traces for slicing java programs. In Proceedings of the 26th International Conference on Software Engineering (ICSE'04). 512--521. Google ScholarDigital Library
- Wang, T., Roychoudhury, A., and Guo, L. 2008. JSlice, version 2.0. http://jslice.sourceforge.net/.Google Scholar
- Ward, M. 2003. Slicing the scam mug: A case study in semantic slicing. In Proceedings of the IEEE International Workshop on Source Code Analysis and Manipulation (SCAM'03). IEEE Computer Society Press, 88--97.Google ScholarCross Ref
- Ward, M. and Zedan, H. 2007. Slicing as a program transformation. ACM Trans. Program. Lang. Syst. 29, 2, 7. Google ScholarDigital Library
- Weiser, M. 1979. Program slices: Formal, psychological, and practical investigations of an automatic program abstraction method. Ph.D. thesis, University of Michigan, Ann Arbor, MI. Google ScholarDigital Library
- Xu, B., Qian, J., Zhang, X., Wu, Z., and Chen, L. 2005. A brief survey of program slicing. ACM SIGSOFT Softw. Engin. Not. 30, 2, 1--36. Google ScholarDigital Library
Index Terms
- State-based model slicing: A survey
Recommendations
Slicing-based Reductions for Rebeca
Slicing is a program analysis technique which can be used for reducing the size of the model and avoid state explosion in model checking. In this work a static slicing technique is proposed for reducing Rebeca models with respect to a property. For ...
Amorphous Slicing of Extended Finite State Machines
Slicing is useful for many software engineering applications and has been widely studied for three decades, but there has been comparatively little work on slicing extended finite state machines (EFSMs). This paper introduces a set of dependence-based ...
Thin slicing
PLDI '07: Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and ImplementationProgram slicing systematically identifies parts of a program relevant to a seed statement. Unfortunately, slices of modern programs often grow too large for human consumption. We argue that unwieldy slices arise primarily from an overly broad definition ...
Comments