Skip to main content

Developing highly complex distributed systems: a software engineering perspective


What is a highly complex distributed system in the future era? What are the needs that may drive the development of such systems? And what is their life cycle? Is there any new challenge for Software Engineering (SE)? In this paper, we try to provide a partial answer to the above questions by characterizing few application domains that we consider of raising interest in the next years. Our thesis is that there is a need to rethink the whole software process for such systems. The traditional boundaries between static and dynamic activities disappear and development support mingles with run time support thus invading the middleware territory.


  1. 1.

    Azeez A, Perera S, Gamage D, Linton R, Siriwardana P, Leelaratne D, Weerawarana S, Fremantle P (2010) Multi-tenant SOA middleware for cloud computing. In: Proceedings of CLOUD’2010, pp 458–465

    Google Scholar 

  2. 2.

    Baldauf M, Dustdar S, Rosenberg F (2007) A survey on context-aware systems. Int J Ad Hoc Ubiquitous Comput 2(4):263–277

    Article  Google Scholar 

  3. 3.

    Baresi L, Ghezzi C (2010) The disappearing boundary between development-time and run-time. In: Proceedings of FoSER’10. ACM, New York, pp 17–22

    Google Scholar 

  4. 4.

    Bencomo N, Blair GS (2009) Using architecture models to support the generation and operation of component-based adaptive systems. In: Software engineering for self-adaptive systems, pp 183–200

    Google Scholar 

  5. 5.

    Blair GS, Coulson G, Andersen A, Blair L, Clarke M, Costa F, Duran-Limon H, Fitzpatrick T, Johnston L, Moreira R, Parlavantzas N, Saikoski K (2001) The design and implementation of open ORB 2. IEEE Distrib Syst Online 2:2001

    Google Scholar 

  6. 6.

    Blair G, Bencomo N, France RB (2009) Models@run.time. Computer 42:22–27.

    Article  Google Scholar 

  7. 7.

    Bucchiarone A, Pelliccione P, Vattani C, Runge O (2009) Self-Repairing systems modeling and verification using AGG. In: WICSA/ECSA’09, pp 181–190

    Google Scholar 

  8. 8.

    Caporuscio M, Marco AD, Inverardi P (2007) Model-based system reconfiguration for dynamic performance management. J Syst Softw 80(4)

  9. 9.

    Caporuscio M, Raverdy PG, Issarny V (2011) UbiSOAP: a service oriented middleware for ubiquitous networking. IEEE Trans Serv Comput 99

  10. 10.

    Capra L, Emmerich W, Mascolo C (2003) Carisma: context-aware reflective middleware system for mobile applications. IEEE Trans Softw Eng 29:929–945

    Article  Google Scholar 

  11. 11.

    Cardellini V, Casalicchio E, Grassi V, Lo Presti F, Mirandola R (2009) Qos-driven runtime adaptation of service oriented architectures. In: ESEC/FSE ’09. ACM, New York

    Google Scholar 

  12. 12.

    wen Cheng S, cheng Huang A, Garlan D, Schmerl B, Steenkiste P (2004) Rainbow: architecture-based self-adaptation with reusable infrastructure. IEEE Comput 37:46–54

    Article  Google Scholar 

  13. 13.

    Cheng BHC, de Lemos R, Giese H, Inverardi P, Magee J (eds) (2009) Software engineering for self-adaptive systems (outcome of a Dagstuhl Seminar). LNCS, vol 5525. Springer, Berlin

    Google Scholar 

  14. 14.

    Cirne W, Brasileiro F, Andrade N, Costa L, Andrade A, Novaes R, Mowbray M (2006) Labs of the world, unite!!! J Grid Comput 4

  15. 15.

    Cowan C, Black A, Krasic C, Pu C, Walpole J, Consel C, Volanschi E (1996) Specialization classes: an object framework for specialization. In: Proceedings of IWOOOS’96, Seattle, Washington

    Google Scholar 

  16. 16.

    Epifani I, Ghezzi C, Mirandola R, Tamburrelli G (2009) Model evolution by run-time parameter adaptation. In: Proceedings of the 31st ICSE, pp 111–121

    Google Scholar 

  17. 17.

    Eramo R, Malavolta I, Muccini H, Pelliccione P, Pierantonio A (2011) A model-driven approach to automate the propagation of changes among Architecture Description Languages. Softw Syst Model

  18. 18.

    Gamma E, Helm R, Johnson R, Vlissides JM (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, Reading

    Google Scholar 

  19. 19.

    Garlan D, Cheng SW, Huang AC, Schmerl B, Steenkiste P (2004) Rainbow: architecture-based self-adaptation with reusable infrastructure. Computer 37(10):46–54

    Article  Google Scholar 

  20. 20.

    Henricksen K, Indulska J (2005) Developing context-aware pervasive computing applications: models and approach. Pervasive Mob Comput 2:2005

    Google Scholar 

  21. 21.

    Hirschfeld R, Costanza P, Nierstrasz O (2008) Context-oriented programming. J Object Technol 7(3):125–151

    Article  Google Scholar 

  22. 22.

    yi Hong J, ho Suh E, Kim SJ (2009) Context-aware systems: a literature review and classification. Expert Syst Appl 36(4):8509–8522

    Article  Google Scholar 

  23. 23.

    Inverardi P (2007) Software of the future is the future of software. In: Trustworthy global computing. LNCS, vol 4661, pp 69–85

    Google Scholar 

  24. 24.

    Inverardi P, Tivoli M (2009) Software engineering. In: The future of software: adaptation and dependability. Springer, Berlin, pp 1–31

    Google Scholar 

  25. 25.

    Issarny V, Caporuscio M, Georgantas N (2007) A perspective on the future of middleware-based software engineering. In: Future of software engineering

    Google Scholar 

  26. 26.

    Issarny V, Georgantas N, Hachem S, Zarras A, Vassiliadist P, Autili M, Gerosa M, Hamida A (2011) Service-oriented middleware for the future Internet: state of the art and research directions. J Internet Serv Appl 2:23–45

    Article  Google Scholar 

  27. 27.

    Keays R, Rakotonirainy A (2003) Context-oriented programming. In: Proceedings of MobiDe’03. ACM, New York

    Google Scholar 

  28. 28.

    Kochan S (2003) Programming in Objective-C. Sams, Indianapolis

    Google Scholar 

  29. 29.

    Liu H, Parashar M, Member S (2005) Accord: a programming framework for autonomic applications. IEEE Trans Syst Man Cybern 36:341–352

    Article  Google Scholar 

  30. 30.

    Peper C, Schneider D (2008) Component engineering for adaptive ad-hoc systems. In: SEAMS’08. ACM, New York

    Google Scholar 

  31. 31.

    Piec M (2011) Platform-as-a-service private cloud with oracle fusion middleware. Last ac: 28 Oct, 2011

  32. 32.

    Rouvoy R, Barone P, Ding Y, Eliassen F, Hallsteinsen SO, Lorenzo J, Mamelli A, Scholz U (2009) Music: middleware support for self-adaptation in ubiquitous and service-oriented environments. In: Software engineering for self-adaptive systems, pp 164–182

    Google Scholar 

  33. 33.

    da Silva e Silva FJ, Kon F, Goldman A, Finger M, de Camargo RY, Filho FC, Costa FM (2010) Application execution management on the InteGrade opportunistic grid middleware. J Parallel Distrib Comput 70

  34. 34.

    Tanter É, Gybels K, Denker M, Bergel A (2006) Context-aware aspects. In: Software composition. LNCS, vol 4089, pp 227–242

    Google Scholar 

  35. 35.

    Villazón A, Binder W, Ansaloni D, Moret P (2009) Advanced runtime adaptation for java. In: Proceedings of GPCE’09. ACM, New York, pp 85–94

    Google Scholar 

  36. 36.

    Villazón A, Binder W, Ansaloni D, Moret P (2009) Hotwave: creating adaptive tools with dynamic aspect-oriented programming in java. In: Proceedings of GPCE’09. ACM, New York, pp 95–98

    Google Scholar 

  37. 37.

    Volanschi EN, Consel C, Muller G, Cowan C (1997) Declarative specialization of object-oriented programs. In: OOPSLA, pp 286–300

    Google Scholar 

  38. 38.

    Zhang Q, Cheng L, Boutaba R (2010) Cloud computing: state of the art and research challenges. J Int Serv Appl 1(1)

Download references

Author information



Corresponding author

Correspondence to Patrizio Pelliccione.

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Autili, M., Inverardi, P., Pelliccione, P. et al. Developing highly complex distributed systems: a software engineering perspective. J Internet Serv Appl 3, 15–22 (2012).

Download citation


  • Future Internet
  • Service-oriented computing
  • Service-oriented middleware
  • Cloud computing
  • Middleware-based software process