Abstract
Unlike code refactoring of programs, architectural refactoring of systems is not commonly practiced yet. However, legacy systems typically have to be refactored when migrating them to the cloud; otherwise, these systems may run in the cloud, but cannot fully benefit from cloud properties such as elasticity. One reason for the lack of adoption of architectural refactoring is that many of the involved artefacts are intangible—architectural refactoring therefore is harder to grasp than code refactoring. To overcome this inhibitor, we take a task-centric view on the subject and introduce an architectural refactoring template that highlights the architectural decisions to be revisited when refactoring application architectures for the cloud; in this approach, architectural smells are derived from quality stories. We also present a number of common architectural refactorings and evaluate existing patterns regarding their cloud affinity. The final contribution of this paper is the identification of an initial catalog of architectural refactorings for cloud application design. This refactoring catalog was compiled from the cloud patterns literature as well as project experiences. Cloud knowledge and supporting templates have been validated via action research and implementation in cooperation with practitioners.
Similar content being viewed by others
References
Ali Babar, M., Dingsøyr, T., Lago, P., van Vliet, H. (eds.) Software architecture knowledge management: theory and practice. Springer-Verlag (2009)
Bass, L., Clements, P., Kazman, R.: Software architecture in practice, 2nd edn. Addison Wesley (2003)
Bisig, C.: Ein werkzeugunterstütztes Knowledge Repository für Architectural Refactoring. Masters thesis, HSR Hochschule für Technik Rapperswil (2016). https://github.com/bisigc/art
Booch. G.: On design. https://www.ibm.com/developerworks/community/blogs/gradybooch/entry/on_design
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M.: Pattern-oriented software architecture—a system of patterns. Wiley (1996)
Cohn, M.: User stories applied. Addison Wesley (2004)
Doodle Blog.: Doodle’s technology landscape. http://en.blog.doodle.com/2011/04/14/doodles-technology-landscape/ and http://en.blog.doodle.com/2013/11/18/doodles-technology-landscape-2
Fairbanks, G.: What agilists should know about software architecture. http://georgefairbanks.com/blog/hangout-what-agilists-should-know-about-software-architecture/
Fehling, C., Leymann, F., Retter R., Schupeck, W., Arbitter, P.: Cloud computing patterns. Springer (2014)
Fowler M.: http://martinfowler.com/bliki/DefinitionOfRefactoring.html
Fowler, M.: Patterns of enterprise application architecture. Addison Wesley (2003)
Furda, A., Fidge C., Barros A., Zimmermann, O.: Re-engineering data-centric information systems for the cloud—a method and architectural patterns promoting multi-tenancy, book chapter accepted for Mistrik, I., et al, SABDC, Elsevier (2017) (to appear)
Garlan, D., Allen, R., Ockerbloom, J.: Architectural mismatch: why reuse is still so hard. IEEE Softw 26(4) (2009)
Gessert F., et al.: NoSQL database systems: a survey and decision guidance. In: Proc. Of SummerSoC 2016, Computer Science—Research and Development, Springer (to appear)
Haberle, T., Charissis, L., Fehling, C., Nahm, J., Leymann, F.: The connected car in the cloud: a platform for prototyping telematics services. IEEE Softw 32(6) (2015)
Höllwarth, T. (ed) Migrating to the cloud. http://www.cloud-migration.eu/en.html
Hohpe, G., Woolf B.: Enterprise integration patterns. Addison Wesley (2004)
ISO/IEC/IEEE, Systems and software engineering—architecture description, ISO/IEC/IEEE 42010:2011(E) (2011)
Jamshidi, P.: Cloud migration patterns: a multi-cloud architectural perspective. http://de.slideshare.net/pooyanjamshidi/cloud-migrationpatterns
Josuttis, N.: SOA in practice. O’Reilly Media (2007)
Julisch, K., Suter, C., Woitalla T., Zimmermann, O.: Compliance by design—bridging the chasm between auditors and IT architects. In: Computers and Security, vol. 30, Issue 6–7. Elsevier (2011)
Kelly, F.: AWS migration patterns. http://java.dzone.com/articles/aws-migration-patterns
Kerievsky, J.: Refactoring to patterns. Addison Wesley (2014)
Kruchten, P.: The 4 + 1 view model of architecture. IEEE Software, vol. 12, number 6 (1995)
Kruchten, P.: Contextualizing Agile Software Development. J. Softw. Maintenance Evol: Res. Pract 25(4):351–361 (2011)
Rozanski, N., Woods, E.: Software systems architecture: working with stakeholders using viewpoints and perspectives. Addison Wesley (2005)
Stal, M.: Software Architecture Refactoring, OOP and OOPSLA tutorials and blog post, via; http://www.sigs.de/download/oop_08/Stal%20Mi3-4.pdf
Stal, M.: Refactoring Software architectures. In: Babar, A., Brown, A.W., Mistrik, I. (eds.) Agile Software Architecture. Morgan Kaufman (2014)
Strauch, S., Andrikopoulos, V., Karastoyanova, D., Leymann, F., Nachev, N., Staebler, A.: Migrating enterprise applications to the cloud: methodology and evaluation. In: International Journal of Big Data Intelligence, vol. 1(3). Perpetual Innovation Media Pvt. Ltd. (2014)
Widmer, T.: Unleashing the power of refactoring. Eclipse Magazine, July 2006 (2006)
Wilkes, L.: Application migration patterns for the service oriented cloud, CBDI. http://everware-cbdi.com/ampsoc
Zimmermann O., Architectural refactoring—a task-centric view on software evolution. IEEE Softw 32(2) (2015)
Zimmermann, O.: Architectural refactoring and cloud computing aus der Sicht des Anwendungsarchitekten, OOP Presentations, 2014. English presentation material available from http://www.ifs.hsr.ch/Architectural-Refactoring-for.12044.0.html?&L=4
Zimmermann O, Miksovic C, Küster J.: Reference architecture, metamodel and modeling principles for architectural knowledge management in information technology services. J. Syst. Softw., Elsevier. 85(9):2014–2033 (2012)
Zimmermann, O. Wegmann, L., Koziolek, H., Goldschmidt, T.: Architectural decision guidance across projects. In: Proceedings of the 12th Working IEEE/IFIP Conference on Software Architecture (WICSA), pp. 85–92 (2015). IEEE Computer Society
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Zimmermann, O. Architectural refactoring for the cloud: a decision-centric view on cloud migration. Computing 99, 129–145 (2017). https://doi.org/10.1007/s00607-016-0520-y
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00607-016-0520-y
Keywords
- Architectural decisions
- Architectural patterns
- Cloud computing
- Knowledge management
- Reengineering
- Refactoring
- Software evolution and Maintenance