skip to main content
research-article

Pushouts in software architecture design

Published:26 September 2012Publication History
Skip Abstract Section

Abstract

A classical approach to program derivation is to progressively extend a simple specification and then incrementally refine it to an implementation. We claim this approach is hard or impractical when reverse engineering legacy software architectures. We present a case study that shows optimizations and pushouts---in addition to refinements and extensions---are essential for practical stepwise development of complex software architectures.

References

  1. M. Abi-Antoun and N. Medvidovic. Enabling the Refinement of a Software Arch. into a Design. In UML, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. M. Aldinucci, M. Coppola, and M. Danalutto. Rewriting skeleton programs: how to evaluate the data-parallel stream-parallel tradeoff. In CMPP, 1998.Google ScholarGoogle Scholar
  3. S. Apel, C. Kästner, and C. Lengauer. Featurehouse: Language-independent, automated software composition. In ICSE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. R. Banach, M. Poppleton, C. Jeske, and S. Stepney. Engineering and theoretical underpinnings of retrenchment. Sci. Comput. Program., 67(2--3): 301--329, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. D. Batory, J. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. IEEE TSE, June 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. I. D. Baxter. Design Maintenance Systems. CACM, April 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J. P. Bernhard and B. Rumpe. Stepwise Refinement of Data Flow Architectures. Technical Report TUM-19746, TU München, 1997.Google ScholarGoogle Scholar
  8. R. V. Book. Confluent and other types of thue systems. J. ACM, 29: 171--182, January 1982. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Broy. Compositional Refinement of Interactive Systems. JACM, 44(6), 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. E. Bruneton, T. Coupaye, and J. Stefani. The Fractal Component Model. http://fractal.ow2.org, 2004.Google ScholarGoogle Scholar
  11. R. Bruni, A. Bucchiarone, S. Gnesi, D. Hirsch, and A. L. Lafuente. Graph-Based Design and Analysis of Dynamic Software Arch. In LNCS. Springer-Verlag, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. R. Burstall and J. Darlington. A transformation system for developing recursive programs. J. ACM, 24(1): 44--67, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. Castro. Practical Byzantine Fault Tolerance. PhD thesis, MIT, Jan. 2001.Google ScholarGoogle Scholar
  14. A. Clement, M. Kapritsos, S. Lee, Y. Wang, L. Alvisi, M. Dahlin, and T. L. Riché. UpRight Cluster Services. In SOSP, Oct. 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. M. Cole. Algorithmic skeletons: structured management of parallel computation. MIT Press, Cambridge, MA, USA, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. Dean and S. Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. In OSDI, Dec. 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. S. Ducasse, D. Pollet, and L. Poyet. A Process-Oriented Software Arch. Reconstruction Taxonomy. In CSMR, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. A. Egyed, N. Mehta, and N. Medvidovic. SW Connectors and Refinement in Family Arch. In IWSAPF, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. J. Favre. Cacophony: Metamodel-driven architecture recovery. In WCRE, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. M. J. Fischer, N. A. Lynch, and M. S. Paterson. Impossibility of Distributed Consensus with One Faulty Process. J. ACM, 32: 374--382, April 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Code Generator. http://code.google.com/p/stepwise-ft/.Google ScholarGoogle Scholar
  22. D. Garlan. Style-Based Refinement for Software Architecture. In ISAW, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. M. M. Gorlick and R. R. Razouk. Using Weaves for Software Construction and Analysis. In ICSE, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. C. Green, D. Luckham, R. Balzer, T. Cheatham, and C. Rich. Report on a knowledge-based software assistant. Kestrel Institute Technical Report KES.U.83.2, 1983.Google ScholarGoogle Scholar
  25. Hadoop. http://hadoop.apache.org/core/.Google ScholarGoogle Scholar
  26. R. Heckel and S. Thöne. Behavior-Preserving Refinement Relations Between Dynamic Soft. Arch. In WADT, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. E. Hehner. Predicative Programming Part 1. CACM, 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. R. Holt, A. Winter, and A. Schurr. GXL: Toward a Standard Exchange Format. In Reverse Engineering, Nov. 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. K. Kang, S. Cohen, J. Hess, W. Novak, and A. Peterson. Feature-oriented domain analysis (foda) feasibility study. CMU/SEI-90-TR-021, 1990.Google ScholarGoogle Scholar
  30. I. Kassios. A Theory of Object Oriented Refinement. PhD thesis, University of Toronto, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. C. Kästner, S. Apel, and M. Kuhlemann. Granularity in software product lines. In ICSE, 2008.Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. E. Kohler, R. Morris, B. Chen, J. Jannotti, and M. F. Kaashoek. The Click Modular Router. ACM Trans. Comput. Syst., 18(3): 263--297, Aug. 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. R. Koschke. Architecture Reconstruction: Tutorial on Reverse Engineering to the Architectural Level. In LNCS 5413, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. R. Kotla. xbft: Bzyantine Fault Tolerance with High Performance, Low Cost, and Aggressive Fault Isolation. PhD thesis, The University of Texas at Austin, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. R. Kotla, L. Alvisi, M. Dahlin, A. Clement, and E. Wong. Zyzzyva: Speculative Byzantine Fault Tolerance. In SOSP, Oct. 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. L. Lamport. The Part-Time Parliament. ACM ToCS, 16(2): 133--169, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. H. C. Li, A. Clement, A. S. Aiyer, and L. Alvisi. The Paxos Register. In IEEE SRDS, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. M. R. Lowry, A. Philpot, T. Pressburger, and I. Underwood. Amphion: Automatic programming for scientific subroutine libraries. In ISMIS, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. O. Maqbool and H. Babri. Hierarchical Clustering for Software Arch. Recovery. IEEE TSE, pages 759--780, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. T. Mens and et al. A Taxonomy of Model Transformations. In GraMoT, 2005.Google ScholarGoogle Scholar
  41. D. L. Métayer. Describing Software Arch. Styles Using Graph Grammars. IEEE TSE, 24(7): 521--533, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. M. Moriconi, X. Qian, and R. A. Riemenschneider. Correct Architectural Refinement. IEEE TSE, 21: 356--372, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. S. Mullender, editor. Distributed Systems. Addision-Wesley, 2nd edition, 2003.Google ScholarGoogle Scholar
  44. National Instruments LabVIEW 2011. http://www.ni.com/labview/.Google ScholarGoogle Scholar
  45. Future of Software Engineering Research. http://www.nitrd.gov/SUBCOMMITTEE%5Csdp%5Cfoser%5CFOSER%20December%202011.pdf, 2011.Google ScholarGoogle Scholar
  46. C. H. Papadimitriou. The Serializability of Concurrent Database Updates. J. ACM, 26(4): 631--653, 1979. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. B. Pierce. Basic Category Theory for Computer Scientists. MIT Press, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. M. Poppleton. Private Correspondence. Private Correspondence, 2010.Google ScholarGoogle Scholar
  49. F. B. Schneider. Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial. ACM Computing Surveys, 22(4): 299--319, Sept. 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. M. Shaw and D. Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. D. Smith. Mechanizing the development of software. In Proc. of the Marktoberdorf Int. Summer School, 1999.Google ScholarGoogle Scholar
  52. J. Spivey. The Z Notation: A Reference Manual. Prentice Hall, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. J. M. Spivey. The Z Notation: A Reference Manual, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. W. Thies. Lang. and Compiler Support for Stream Programs. PhD thesis, MIT, Feb. 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. S. Trujillo, D. Batory, and O. Diaz. Feature Oriented Model Driven Develop.: A Case Study for Portlets. In ICSE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. T. Tseng, J. Aldrich, D. Garlan, and B. Schmerl. Semantic Issues in Arch. Refinement. Technical report, CMU, 2004.Google ScholarGoogle Scholar
  57. M. Volter and I. Groher. Product Line Implementation using AO and MD Software Development. In SPLC, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. S. Wang, G. S. Avrunin, and L. A. Clarke. Arch. Building Blocks for Plug-and-Play System Design. In CBSE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. N. Wirth. Program Development by Stepwise Refinement. CACM, 1971. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. J. Yin, J.-P. Martin, A. Venkataramani, L. Alvisi, and M. Dahlin. Separating Agreement from Execution for Byzantine Fault Tolerant Servers. In SOSP, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Zookeeper. http://hadoop.apache.org/zookeeper.Google ScholarGoogle Scholar
  62. S. Zschaler and et. al. VML*: A Family of Languages for Variability Management in Software Product Lines. In SLE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Pushouts in software architecture design

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image ACM SIGPLAN Notices
              ACM SIGPLAN Notices  Volume 48, Issue 3
              GPCE '12
              March 2013
              140 pages
              ISSN:0362-1340
              EISSN:1558-1160
              DOI:10.1145/2480361
              Issue’s Table of Contents
              • cover image ACM Conferences
                GPCE '12: Proceedings of the 11th International Conference on Generative Programming and Component Engineering
                September 2012
                148 pages
                ISBN:9781450311298
                DOI:10.1145/2371401

              Copyright © 2012 ACM

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 26 September 2012

              Check for updates

              Qualifiers

              • research-article

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!