Roy T. Fielding, Richard N. Taylor, Justin Erenkrantz, Michael M. Gorlick, E. James Whitehead, Rohit Khare, Peyman Oreizy; Reflections on the REST Architectural Style and “Principled Design of the Modern Web Architecture; In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2017); 2017; pages 4-11 (8 pages); landing
Seventeen years after its initial publication at ICSE 2000, the Representational State Transfer (REST) architectural style continues to hold significance as both a guide for understanding how the World Wide Web is designed to work and an example of how principled design, through the application of architectural styles, can impact the development and understanding of large-scale software architecture. However, REST has also become an industry buzzword: frequently abused to suit a particular argument, confused with the general notion of using HTTP, and denigrated for not being more like a programming methodology or implementation framework. In this paper, we chart the history, evolution, and shortcomings of REST, as well as several related architectural styles that it inspired, from the perspective of a chain of doctoral dissertations produced by the University of California’s Institute for Software Research at UC Irvine. These successive theses share a common theme: extending the insights of REST to new domains and, in their own way, exploring the boundary of software engineering as it applies to decentralized software architectures and architectural design. We conclude with discussion of the circumstances, environment, and organizational characteristics that gave rise to this body of work.
There are 59 references.
Roy T. Fielding, Richard N. Taylor. Principled Design of the Modern Web Architecture. In Proceedings of the 22nd International Conference on Software Engineering (ICSE). 2000. pages 407–416. IEEE, Limerick, Ireland.
Justin R. Erenkrantz. Computational REST: A New Model for Decentralized, Internet-Scale Applications. Ph.D. Dissertation. University of California, Irvine, Irvine, California, USA. 2009.
Michael Martin Gorlick. Computational State Transfer: An Architectural Style for Decentralized Systems. Ph.D. Dissertation. Technical Report UCI-ISR-16-3. University of California, Irvine, Irvine, California, USA. 2016.
David Alan Halls. Applying Mobile Code to Distributed Systems. Ph.D. Dissertation. University of Cambridge, Cambridge, UK. 1997.
Michael Hicks. Dynamic Software Updating. Ph.D. Dissertation. Computer and Information Science, University of Pennsylvania, Philadelphia, Pennsylvania, USA. 2001.
Mohsen Vakilian, Raluca Sauciuc, J. David Morgenthaler, Vahab Mirrokni (Google); Automated Decomposition of Build Targets; In Proceedings of the Foundations of Software Engineering (FSE); 2014-03017; 17 pages.
A (build) target specifies the information that is needed to automatically build a software artifact. Managing the dependencies between the targets of a large code base is challenging. This paper focuses on underutilized targets—an important dependency problem that we identified at Google. An underutilized target is one with files not needed by some of its dependents. Underutilized targets result in less modular code, overly large artifacts, slow builds, and unnecessary build and test triggers. To mitigate these problems, programmers decompose underutilized targets into smaller targets. However, manually decomposing a target is tedious and error-prone. Although we prove that finding the best target decomposition is NP-hard, we introduce a greedy algorithm that proposes a decomposition through iterative unification of the strongly connected components of the target. Our tool found 19,994 decomposable targets in a set of 40,000 Java library targets at Google. A decomposable target is one that can be decomposed to at least two targets. Our tool found that decomposing any of the 5,129 decomposable targets would save at least one build or test trigger. The evaluation results show that our tool is (1) efficient because on average, it analyzes a target in two minutes and (2) effective because for each of 1,010 targets, it would save more than 50% of the total execution time of the tests triggered by the target.
H. Abdeen, H. Sahraoui, O. Shata, N. Anquetil, S. Ducasse. Towards Automatically Improving Package Structure while Respecting Original Design Decisions. In Proceedings of the 20th Working Conference on Reverse Engineering (WCRE), pages 212–221, 2013.
B. Adams, H. Tromp, K. De Schutter, W. De Meuter. Design Recovery and Maintenance of Build Systems. In Proceedings of the 23rd IEEE International Conference on Software Maintenance (ICSM), pages 114–123, 2007.
J. M. Al-Kofahi, H. V. Nguyen, A. T. Nguyen, T. T. Nguyen, T. N. Nguyen. Detecting Semantic Changes in Makefile Build Code. In Proceedings of the 28th IEEE International Conference on Software Maintenance (ICSM), pages 150–159, 2012.
N. Anquetil and T. C. Lethbridge. Experiments with Clustering as a Software Remodularization Method. In Proceedings of the 6th Working Conference on Reverse Engineering (WCRE), pages 235–255, 1999.
C. AtLee, L. Blakk, J. O’Duinn, A. Z. Gasparnian. Firefox Release Engineering. In The Architecture of Open Source Applications, volume 2. Lulu. 2012.
G. Bavota, F. Carnevale, A. D. Lucia, M. D. Penta, R. Oliveto. Putting the Developer in-the-Loop: An Interactive GA for Software Re-modularization. In Proceedings of the 4th International Symposium on Search Based Software Engineering (SSBSE), pages 75–89, 2012.
G. Bavota, A. De Lucia, A. Marcus, R. Oliveto. Software Re-Modularization Based on Structural and Semantic Metrics. In Proceedings of the 17th Working Conference on Reverse Engineering (WCRE), pages 195–204, 2010.
C. Chambers, A. Raniwala, F. Perry, S. Adams, R. R. Henry, R. Bradshaw, N. Weizenbaum. FlumeJava: Easy, Efficient Data-Parallel Pipelines. In Proceedings of the 2010 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 363–375, 2010.
T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Elementary Graph Algorithms. InIntroduction to Algorithms. The MIT Press, 2009.
P. M. Duvall, S. Matyas, A. Glover. Continuous Integration: Improving Software Quality and Reducing Risk. Addison-Wesley, 2007.
M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
E. Gamma, R. Helm, R. Johnson, J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
T. L. Graves, M. J. Harrold, J.-M. Kim, A. Porter, G. Rothermel. An Empirical Study of Regression Test Selection Techniques. In ACM Transactions on Software Engineering and Methodology, 10:184–208. 2001.
M. J. Harrold, J. A. Jones, T. Li, D. Liang, A. Gujarathi. Regression Test Selection for Java Software. In Proceedings of the 2001 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). pages 312–326. 2001.
M. J. Harrold and M. L. Souffa. An Incremental Approach to Unit Testing during Maintenance. In Proceedings of the Conference on Software Maintenance (ICSM). pages 362–367. 1988.
C. H. P. Kim, D. Marinov, S. Khurshid, D. Batory, S. Souto, P. Barros, M. d’Amorim. SPLat: Lightweight Dynamic Analysis for Reducing Combinatorics in Testing Configurable Systems. In Proceedings of the ACM SIGSOFT Symposium on Foundations of Software Engineering (FSE). pages 257–267. 2013.
J. I. Maletic and A. Marcus. Supporting Program Comprehension Using Semantic and Structural Information. In Proceedings of the 23rd International Conference on Software Engineering (ICSE), pages 103–112, 2001.
O. Maqbool and H. Babri. Hierarchical Clustering for Software Architecture Recovery. In IEEE Transactions on Software Engineering.pages 759–780. 2007.
S. McIntosh, B. Adams, A. E. Hassan. The Evolution of Java Build Systems. In Empirical Software Engineering. pages 578–608. 2012.
S. McIntosh, B. Adams, T. H. Nguyen, Y. Kamei, A. E. Hassan. An Empirical Study of Build Maintenance Effort. In Proceedings of the 33rd International Conference on Software Engineering (ICSE). pages 141–150. 2011.
B. S. Mitchell and S. Mancoridis. On the Automatic Modularization of Software Systems Using the Bunch Tool. In IEEE Transactions on Software Engineering. pages 193–208. 2006.
J. D. Morgenthaler, M. Gridnev, R. Sauciuc, S. Bhansali. Searching for Build Debt: Experiences Managing Technical Debt at Google. In Proceedings of the 3rd International Workshop on Managing Technical Debt (MTD), pages 1–6, 2012.
W. F. Opdyke. Refactoring Object-Oriented Frameworks. Ph.D Thesis. University of Illinois at Urbana-Champaign. 1992.
A. Orso, N. Shi, M. J. Harrold. Scaling Regression Testing to Large Software Systems. In ,em>Proceedings of the ACM SIGSOFT International Symposium on Foundations of Software Engineering(FSE). pages 241–251. 2004.
K. Praditwong, M. Harman, X. Yao. Software Module Clustering as a Multi-Objective Search Problem. In IEEE Transactions on Software Engineering. pages 264–282. 2011.
C. Prasad and W. Schulte. Taking Control of Your Engineering Tools. In Computer. pages 63–66. 2013.
G. Rothermel and M. J. Harrold. Analyzing Regression Test Selection Techniques. In IEEE Transactions on Software Engineering. 22(8):529–551. 1996.
G. Rothermel and M. J. Harrold. Empirical Studies of a Safe Regression Test Selection Technique. In IEEE Transactions on Software Engineering. 24:401–419. 1998.
A. Tamrawi, H. A. Nguyen, H. V. Nguyen, T. N. Nguyen. Build Code Analysis with Symbolic Evaluation. In Proceedings of the 34th International Conference on Software Engineering (ICSE). 2012. pages 650–660.
A. Telea and L. Voinea. A Tool for Optimizing the Build Performance of Large Software Code Bases. In Proceedings of the 12th European Conference on Software Maintenance and Reengineering (CSMR), pages 323–325, 2008.
T. Wiggerts. Using Clustering Algorithms in Legacy Systems Remodularization. In Proceedings of the 4th Working Conference on Reverse Engineering (WCRE), pages 33–43, 1997.
J. Wu, A. E. Hassan, R. C. Holt. Comparison of Clustering Algorithms in the Context of Software Evolution. In Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM), pages 525–535, 2005.
J. Zheng, B. Robinson, L. Williams, K. Smiley. Applying Regression Test Selection for COTS-based Applications. In Proceedings of the 28th International Conference on Software Engineering (ICSE), pages 512–522, 2006.