Advertisement

Software Architecture: Past, Present, Future

  • Wilhelm Hasselbring
Open Access
Chapter

Abstract

Software architecture work should be integrated with all software development activities. In this context, the past emergence of software architecture as a discipline is discussed with emphasis on the formalization of architectural models and the reuse of reference architectures in software product line engineering. At present, various architectures are established for many domains and applications. Exemplary, we will take a closer look at recent microservice architectures with a focus on quality requirements. As a look into the future, the envisioned role of an architecture owner in agile teams, the relationship between software development and operations, achieving reliability with agile development, runtime adaptivity with architecture information in the running system, and keeping architecture knowledge up to date for long-living software systems are discussed.

References

  1. 1.
    Abbott, M., Fisher, M.: The Art of Scalability, 2nd edn. Addison-Wesley, Reading (2015)Google Scholar
  2. 2.
    Abowd, G., Allen, R., Garlan, D.: Formalizing style to understand descriptions of software architecture. ACM Trans. Softw. Eng. Methodol. 4(4), 319–364 (1995)Google Scholar
  3. 3.
    Allen, R., Garlan, D.: A formal basis for architectural connection. ACM Trans. Softw. Eng. Methodol. 6(3), 213–249 (1997)Google Scholar
  4. 4.
    Babar, M., Gorton, I.: Comparison of scenario-based software architecture evaluation methods. In: Proceedings of the 11th Asia-Pacific Software Engineering Conference, pp. 600–607 (2004)Google Scholar
  5. 5.
    Balalaie, A., Heydarnoori, A., Jamshidi, P.: Microservices architecture enables DevOps: migration to a cloud-native architecture. IEEE Softw. 33(3), 42–52 (2016)Google Scholar
  6. 6.
    Bass, L., Weber, I., Zhu, L.: DevOps: A Software Architect’s Perspective. Addison-Wesley, Reading (2015)Google Scholar
  7. 7.
    Bencomo, N., France, R., Cheng, B.H.C., As̈mann, U. (eds.): Models@run.time. Lecture Notes in Computer Science, vol. 8378. Springer, Cham (2014)Google Scholar
  8. 8.
    Bennett, K.H., Rajlich, V.T.: Software maintenance and evolution: a roadmap. In: Proceedings of the Conference on The Future of Software Engineering, ICSE ’00, pp. 73–87. ACM, New York (2000)Google Scholar
  9. 9.
    Bernardo, M., Inverardi, P. (eds.): Formal Methods for Software Architectures. Lecture Notes in Computer Science, vol. 2804. Springer, Berlin (2003)Google Scholar
  10. 10.
    Bertolino, A., Corradini, F., Inverardi, P., Muccini, H.: Deriving test plans from architectural descriptions. In: Proceedings of the 22th International Conference on Software Engineering, pp. 220–229. IEEE Computer Society Press, Limerick (2000)Google Scholar
  11. 11.
    Bosch, J.: Design & Use of Software Architectures: Adopting and Evolving a Product-Line Approach. Addison-Wesley, Harlow (2000)Google Scholar
  12. 12.
    Brunnert, A., van Hoorn, A., Willnecker, F., Danciu, A., Hasselbring, W., Heger, C., Herbst, N., Jamshidi, P., Jung, R., von Kistowski, J., Koziolek, A., Kroß, J., Spinner, S., Vögele, C., Walter, J., Wert, A.: Performance-oriented devOps: a research agenda. Technical report, Standard Performance Evaluation Corporation (SPEC) (2015)Google Scholar
  13. 13.
    Buschmann, F., Henney, K., Schmidt, D.C.: Pattern-Oriented Software Architecture: On Patterns and Pattern Languages, vol. 5. Wiley, Chichester (2007)Google Scholar
  14. 14.
    Christensen, H.B., Hansen, K.M.: An empirical investigation of architectural prototyping. J. Softw. Syst. 83(1), 133–142 (2010)Google Scholar
  15. 15.
    Clements, P., Shaw, M.: The golden age of software architecture revisited. IEEE Softw. 26(4), 70–72 (2009). https://doi.org/10.1109/MS.2009.83
  16. 16.
    Clements, P., Kazman, R., Klein, M.: Evaluating Software Architectures: Methods and Case Studies. Addison-Wesley, Reading (2001)Google Scholar
  17. 17.
    Conway, M.E.: How do committees invent? Datamation 14(4), 28–31 (1968)Google Scholar
  18. 18.
    Crnkovic, I., Larsson, M., Preiss, O.: Concerning predictability in dependable component-based systems: classification of quality attributes. In: Architecting Dependable Systems II. Lecture Notes in Computer Science, vol. 3549. Springer, Berlin (2005)Google Scholar
  19. 19.
    Dahl, O.J., Dijkstra, E.W., Hoare, C.A.R.: Structured Programming. Academic, London (1972)Google Scholar
  20. 20.
    Evans, E.: Domain-Driven Design. Addison-Wesley, Reading (2004)Google Scholar
  21. 21.
    Fittkau, F., Roth, S., Hasselbring, W.: ExplorViz: visual runtime behavior analysis of enterprise application landscapes. In: 23rd European Conference on Information Systems (ECIS 2015 Completed Research Papers), pp. 1–13. AIS Electronic Library (2015)Google Scholar
  22. 22.
    Fittkau, F., Krause, A., Hasselbring, W.: Software landscape and application visualization for system comprehension with ExplorViz. Inf. Softw. Technol. 87, 259–277 (2017)Google Scholar
  23. 23.
    Ford, N.: Evolutionary architecture and emergent design: environmental considerations for design, part 2 (2010). https://www.ibm.com/developerworks/java/library/j-eaed18/index.html
  24. 24.
    Frakes, W.B., Kang, K.: Software reuse research: status and future. IEEE Trans. Softw. Eng. 31(7), 529–536 (2005)Google Scholar
  25. 25.
    Galster, M., Weyns, D., Tofan, D., Michalik, B., Avgeriou, P.: Variability in software systems – a systematic literature review. IEEE Trans. Softw. Eng. 40(3), 282–306 (2014)Google Scholar
  26. 26.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns – Elements of Reusable Object-Oriented Software. Addison Wesley, Reading (1995)Google Scholar
  27. 27.
    Goltz, U., Reussner, R., Goedicke, M., Hasselbring, W., Märtin, L., Vogel-Heuser, B.: Design for future: managed software evolution. Comput. Sci. Res. Dev. 30(3), 321–331 (2015)Google Scholar
  28. 28.
    Hasselbring, W.: Information system integration. Commun. ACM 43(6), 32–36 (2000)Google Scholar
  29. 29.
    Hasselbring, W.: Component-based software engineering. In: Handbook of Software Engineering and Knowledge Engineering, pp. 289–305. World Scientific Publishing, Singapore (2002)Google Scholar
  30. 30.
    Hasselbring, W.: Web data integration for E-commerce applications. IEEE Multimedia 9(1), 16–25 (2002)Google Scholar
  31. 31.
    Hasselbring, W.: Formalization of federated schema architectural style variability. J. Softw. Eng. Appl. 8(2), 72–92 (2015)Google Scholar
  32. 32.
    Hasselbring, W.: Microservices for scalability: keynote talk abstract. In: Proceedings of the 7th ACM/SPEC on International Conference on Performance Engineering (ICPE 2016), pp. 133–134. ACM, New York (2016)Google Scholar
  33. 33.
    Hasselbring, W., Steinacker, G.: Microservice architectures for scalability, agility and reliability in e-commerce. In: Proceedings 2017 IEEE International Conference on Software Architecture Workshops (ICSAW), pp. 243–246. IEEE, Gothenburg (2017)Google Scholar
  34. 34.
    Hasselbring, W., Reussner, R., Jaekel, H., Schlegelmilch, J., Teschke, T., Krieghoff, S.: The Dublo architecture pattern for smooth migration of business information systems. In: Proceedings of the 26th International Conference on Software Engineering (ICSE 2004), pp. 117–126. IEEE Computer Society Press, Edinburgh (2004)Google Scholar
  35. 35.
    Heinrich, R., Schmieders, E., Jung, R., Rostami, K., Metzger, A., Hasselbring, W., Reussner, R., Pohl, K.: Integrating run-time observations and design component models for cloud system analysis. In: Proceedings of the 9th Workshop on Models@run.time, Workshop Proceedings, vol. 1270, pp. 41–46. CEUR, Aachen (2014)Google Scholar
  36. 36.
    IEEE recommended practice for architectural description of software-intensive systems (2000). (also ISO/IEC DIS 25961 (2006))Google Scholar
  37. 37.
    Keeling, M.: Lightweight and flexible: emerging trends in software architecture from the SATURN conferences. IEEE Softw. 32(3), 7–11 (2015)Google Scholar
  38. 38.
    Kruchten, P., Obbink, H., Stafford, J.: The past, present, and future of software architecture. IEEE Softw. 23(2), 22–30 (2006)Google Scholar
  39. 39.
    Kruchten, P., Nord, R.L., Ozkaya, I.: Technical debt: from metaphor to theory and practice. IEEE Softw. 29(6), 18–21 (2012)Google Scholar
  40. 40.
    Lange, C.F.J., Chaudron, M.R.V., Muskens, J.: In practice: UML software architecture and design description. IEEE Softw. 23(2), 40–46 (2006)Google Scholar
  41. 41.
    Lewis, J., Fowler, M.: Microservices (2014). http://martinfowler.com/articles/microservices.html
  42. 42.
    Medvidovic, N., Taylor, R.N.: A classification and comparison framework for software architecture description languages. IEEE Trans. Softw. Eng. 26(1), 70–93 (2000)Google Scholar
  43. 43.
    Meyer, M.: Continuous integration and its tools. IEEE Softw. 31(3), 14–16 (2014)Google Scholar
  44. 44.
    Muccini, H., Bertolino, A., Inverardi, P.: Using software architecture for code testing. IEEE Trans. Softw. Eng. 30(3), 160–171 (2004)Google Scholar
  45. 45.
    Müller, H., Wong, K., Tilley, S.: Dimensions of software architecture for program understanding. In: Proceedings of the International Workshop on Software Architecture (IWSA ’95), Dagstuhl (1995)Google Scholar
  46. 46.
    Newman, S.: Building Microservices. O’Reilly, Sebastopol (2015)Google Scholar
  47. 47.
    Nygard, M.T.: Release It! – Design and Deploy Production-Ready Software. The Pragmatic Bookshelf, Raleigh (2007)Google Scholar
  48. 48.
    Pahl, C., Giesecke, S., Hasselbring, W.: Ontology-based modelling of architectural styles. Inf. Softw. Technol. 51(12), 1739–1749 (2009)Google Scholar
  49. 49.
    Parnas, D.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)Google Scholar
  50. 50.
    Perry, D., Wolf, A.: Foundations for the study of software architecture. ACM SIGSOFT Softw. Eng. Notes 17(4), 40–52 (1992)Google Scholar
  51. 51.
    Reussner, R.H., Becker, S., Happe, J., Heinrich, R., Koziolek, A., Koziolek, H., Kramer, M., Krogmann, K.: Modeling and Simulating Software Architectures: The Palladio Approach. MIT Press, Cambridge (2016)Google Scholar
  52. 52.
    Rodriguez, P., Haghighatkhah, A., Lwakatare, L.E., Teppola, S., Suomalainen, T., Eskeli, J., Karvonen, T., Kuvaja, P., Verner, J.M., Oivo, M.: Continuous deployment of software intensive products and services: a systematic mapping study. J. Syst. Softw. 123, 263–291 (2017)Google Scholar
  53. 53.
    Shaw, M.: Architectural issues in software reuse: it’s not just the functionality, it’s the packaging. Softw. Eng. Notes 20, 3–6 (1995)Google Scholar
  54. 54.
    Shaw, M., Clements, P.: A field guide to boxology: preliminary classification of architectural styles for software systems. In: Proceedings of the Twenty-First Annual International Computer Software and Applications Conference (COMPSAC 1997), pp. 6–13 (1997)Google Scholar
  55. 55.
    Shaw, M., Garlan, D.: Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, Upper Saddle River (1996)Google Scholar
  56. 56.
    Shaw, M., DeLine, R., Klein, D., Ross, T., Young, D., Zelesnik, G.: Abstractions for software architecture and tools to support them. IEEE Trans. Softw. Eng. 21(4), 314–335 (1995)Google Scholar
  57. 57.
    Taylor, R., Tracz, W., Coglianese, L.: Software development using domain-specific software architectures. ACM SIGSOFT Softw. Eng. Notes 20(5), 27–38 (1995)Google Scholar
  58. 58.
    Taylor, R.N., Medvidovic, N., Dashofy, E.M.: Software Architecture: Foundations, Theory, and Practice. Wiley, Hoboken (2009)Google Scholar
  59. 59.
    ThoughtWorks Inc.: Technology Radar (2015). http://www.thoughtworks.com/radar
  60. 60.
    Vaisman, A., Zimányi, E.: Data Warehouse Systems: Design and Implementation. Springer, Berlin (2014)CrossRefGoogle Scholar
  61. 61.
    van Hoorn, A., Frey, S., Goerigk, W., Hasselbring, W., Knoche, H., Köster, S., Krause, H., Porembski, M., Stahl, T., Steinkamp, M., Wittmüss, N.: Dynamod project: dynamic analysis for model-driven software modernization. In: Proceedings of the 1st International Workshop on Model-Driven Software Migration (MDSM 2011), vol. 708, pp. 12–13. CEUR, Aachen (2011)Google Scholar
  62. 62.
    van Hoorn, A., Waller, J., Hasselbring, W.: Kieker: a framework for application performance monitoring and dynamic software analysis. In: Proceedings of the 3rd ACM/SPEC International Conference on Performance Engineering (ICPE 2012), pp. 247–248. ACM, New York (2012)Google Scholar
  63. 63.
    von Massow, R., van Hoorn, A., Hasselbring, W.: Performance simulation of runtime reconfigurable component-based software architectures. In: Crnkovic, I., Gruhn, V., Book, M. (eds.) Software Architecture (Proceedings ECSA 2011). Lecture Notes in Computer Science, vol. 6903, pp. 43–58. Springer, Heidelberg (2011)Google Scholar
  64. 64.
    Waller, J., Ehmke, N.C., Hasselbring, W.: Including performance benchmarks into continuous integration to enable DevOps. SIGSOFT Softw. Eng. Notes 40(2), 1–4 (2015)CrossRefGoogle Scholar

Copyright information

© The Author(s) 2018

Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.

The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.

Authors and Affiliations

  1. 1.Kiel UniversityKielGermany

Personalised recommendations