Software & Systems Modeling

, Volume 17, Issue 3, pp 717–752 | Cite as

Model development guidelines for UML-RT: conventions, patterns and antipatterns

  • Tuhin Kanti DasEmail author
  • Juergen Dingel
Special Section Paper


Software development guidelines are a set of rules which can help improve the quality of software. These rules are defined on the basis of experience gained by the software development community over time. This paper discusses a set of design guidelines for model-based development of complex real-time embedded software systems. To be precise, we propose nine design conventions, three design patterns and thirteen antipatterns for developing UML-RT models. These guidelines have been identified based on our analysis of around 100 UML-RT models from industry and academia. Most of the guidelines are explained with the help of examples, and standard templates from the current state of the art are used for documenting the design rules.


UML-RT Patterns AntiPatterns Model development guidelines 



We would like to thank Dr. Ron Smith from Royal Military College of Canada for giving us access to a student repository of UML-RT models. We would like to express our gratitude to Bran Selic from Malina Software Corp. for his valuable feedback on our work. We would also like to thank our industrial research partner Ericsson Inc. for their great support. In addition, this work is supported in part by NSERC, as part of the NECSIS Automotive Partnership with General Motors, IBM Canada and Malina Software Corp.


  1. 1.
    Abbes, M., Khomh, F., Gueheneuc, Y., Antoniol, G.: An empirical study of the impact of two antipatterns, Blob and Spaghetti Code, on program comprehension. In: Proceedings of the 15th European Conference on Software Maintenance and Re-engineering (CSMR ’11). IEEE Computer Society, pp. 181–190, Washington (2011)Google Scholar
  2. 2.
    Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques, and Tools. Addison-Wesley Longman Publishing Co., Inc., Boston (1986)zbMATHGoogle Scholar
  3. 3.
    Akroyd, M.: Antipatterns Session Notes. Object World West, San Francisco (1996)Google Scholar
  4. 4.
    Ambler, S.W.: UML 2 state machine diagrams: an agile introduction. Accessed 20 Jan 2016
  5. 5.
    Arcelli, D., Cortellessa, V., Trubiani, C.: Antipattern-based model refactoring for software performance improvement. In: ACM (QoSA ’12), pp. 33–42 (2012)Google Scholar
  6. 6.
    Balaban, M., Maraee, A., Sturm, A., Jelnov, P.: A pattern-based approach for improving model quality. Softw. Syst. Model. (SoSyM) 14(4), 1527–1555 (2015)CrossRefGoogle Scholar
  7. 7.
    Bellekens, G.: UML best practice: 5 rules for better UML diagrams. Accessed 20 Jan 2016
  8. 8.
    B’far, R.: Mobile Computing Principles: Designing and Developing Mobile Applications with UML and XML. Cambridge University Press, New York (2004)CrossRefGoogle Scholar
  9. 9.
    Brown, W.J., Malveau, R.C., McCormick, H.W., Mowbray, T.J.: AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley, New York (1998)Google Scholar
  10. 10.
    Budinsky, F.J., Finnie, M.A., Vlissides, J.M., Yu, P.S.: Automatic code generation from design patterns. IBM Syst. J. 35(2), 151–171 (1996)CrossRefGoogle Scholar
  11. 11.
    Cortellessa, V., Di Marco, A., Eramo, R., Pierantonio, A., Trubiani, C.: Digging into UML models to remove performance antipatterns. In: Proceedings of the 2010 ICSE Workshop on Quantitative Stochastic Models in the Verification and Design of Software Systems, QUOVADIS ’10, ACM, pp. 9–16, New York, 2010Google Scholar
  12. 12.
    Cunningham and Cunningham Inc.: Global variables are bad. Accessed 20 Jan 2016
  13. 13.
    Das, T.K., Dingel, J.: State machine antipatterns for UML-RT. In: ACM/IEEE 18th International Conference on Model Driven Engineering Languages and Systems (MODELS’15), pp. 54–63 (2015)Google Scholar
  14. 14.
    Douglass, B.P.: Doing Hard Time: Developing Real-Time Systems with UML, Objects, Frameworks, and Patterns. Addison-Wesley Longman Publishing Co., Inc., Boston (1999)Google Scholar
  15. 15.
    Eclipse.: Papyrus for real time (Papyrus-RT). Accessed 20 Jan 2016
  16. 16.
    Emilio, M.D.P.: Embedded Systems Design for High-Speed Data Acquisition and Control. Springer Publishing Company, Cham (2014). IncorporatedGoogle Scholar
  17. 17.
    International Organization for Standardization. ISO/IEC 25000:2005: Software Engineering—Software product Quality Requirements and Evaluation (SQuaRE)—Guide to SQuaRE. Accessed 20 Jan 2016
  18. 18.
    Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Longman Publishing Co. Inc., Boston (1999)zbMATHGoogle Scholar
  19. 19.
    France, R., Rumpe, B.: Model-driven development of complex software: a research roadmap. In: IEEE Computer Society on Future of Software Engineering (FOSE ’07), pp. 37–54, Washington (2007)Google Scholar
  20. 20.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co. Inc., Boston (1995)zbMATHGoogle Scholar
  21. 21.
    Gopinath, S.: Real-time UML to XMI conversion. Master’s thesis, KTH Computer Science and Communication, Stockholm, Sweden (2006)Google Scholar
  22. 22.
    GrammaTech.: FDA recommends static analysis for medical devices., 2010. Accessed 20 Jan 2016
  23. 23.
    Henzinger, T.A., Sifakis, J.: The embedded systems design challenge. In: Proceedings of the 14th international conference on Formal Methods (FM’06), pp. 1–15. Springer-Verlag, Berlin, Heidelberg (2006)Google Scholar
  24. 24.
  25. 25.
    IBM.: Rational Rose Real Time (RT) documentation: capsule instances and capsule behavior. Accessed 20 Jan 2016
  26. 26.
  27. 27.
    Jetley, R.P., Jones, P.L., Anderson, P.: Static analysis of medical device software using codesonar. In: Proceedings of the 2008 Workshop on Static Analysis, SAW ’08, ACM, pp. 22–29, New York (2008)Google Scholar
  28. 28.
    Khomh, F., Penta, M.D., Guéhéneuc, Y., Antoniol, G.: An exploratory study of the impact of antipatterns on class change- and fault-proneness. Empir Softw. Eng. 17(3), 243–275 (2012)CrossRefGoogle Scholar
  29. 29.
    Kopetz, H.: Real-Time Systems: Design Principles for Distributed Embedded Applications, 1st edn. Kluwer Academic Publishers, Norwell (1997)zbMATHGoogle Scholar
  30. 30.
    Nancy Leveson.: Medical devices: the therac-25. Accessed 20 Jan 2016
  31. 31.
    Sparx Systems Pty Ltd.: UML 2 state machine diagram. Accessed 20 Jan 2016
  32. 32.
    MathWorks Automotive Advisory Board (MAAB).: Control algorithm modeling guidelines using MATLAB Simulink and Stateflow version 2.0. (2007). Accessed 20 Jan 2016
  33. 33.
  34. 34.
    Ogheneovo, E.E.: Software dysfunction: why do software fail? J. Comput. Commun. 2, 25–35 (2014)CrossRefGoogle Scholar
  35. 35.
    Object Management Group (OMG).: How to deliver resilient, secure, efficient, and easily changed it systems in line with CISQ recommendations. Accessed 20 Jan 2016
  36. 36.
  37. 37.
  38. 38.
    Oracle.: Naming conventions. Accessed 13 June 2016
  39. 39.
    Oracle.: Code conventions for the Java programming language. (1999). Accessed 20 Jan 2016
  40. 40.
    Parsons, T., Murphy, J.: Detecting performance antipatterns in component based enterprise systems. J. Object Technol. 7, 55–90 (2008)CrossRefGoogle Scholar
  41. 41.
    Pressman, R.S.: Software Engineering: A Practitioner’s Approach, 2nd edn. McGraw-Hill Inc., New York (1986)zbMATHGoogle Scholar
  42. 42.
    Kepler Project.: Software development guidelines. Accessed 20 Jan 2016
  43. 43.
    Romano, D., Raila, P., Pinzger, M., Khomh, F.: Analyzing the impact of antipatterns on change-proneness using fine-grained source code changes. In: IEEE Computer Society on (WCRE ’12), pp. 437–446 (2012)Google Scholar
  44. 44.
    Safyan, M.: Avoid global variables, environment variables, and singletons. Accessed 20 Jan 2016
  45. 45.
    Samek, M.: Practical UML Statecharts in C/C++, Second Edition: Event-Driven Programming for Embedded Systems. Newnes, Newton (2008)Google Scholar
  46. 46.
    Selic, B.: Using UML for modeling complex real-time systems. In: Proceedings of the ACM SIGPLAN Workshop on Languages, Compilers, and Tools for Embedded Systems (LCTES ’98), pp. 250–260. Springer-Verlag, London (1998)Google Scholar
  47. 47.
    Selic, B., Gullekson, G., McGee, J., Engelberg, I.: ROOM: an object-oriented methodology for developing real-time systems. In: Proceedings of Computer-Aided Software Engineering, Fifth International Workshop, pp. 230–240 (1992)Google Scholar
  48. 48.
    Selic, B., Gullekson, G., Ward, P.T.: Real-Time Object-Oriented Modeling. Wiley, New York (1994)zbMATHGoogle Scholar
  49. 49.
    Selic, B.: An architectural pattern for real-time control software. In: Pattern Languages of Program Design 2, pp. 4–6. Addison-Wesley (1996)Google Scholar
  50. 50.
    Smith, C.U., Williams, L.G.: More new software performance antipatterns: Even more ways to shoot yourself in the foot. In: CMG Conference, pp. 717–725 (2011)Google Scholar
  51. 51.
    Thunderstone Software.: Variable scope: Global vs. local. Accessed 20 Jan 2016
  52. 52.
    Sunyé, G., Guennec, A.L., Jézéquel, J.: Design Patterns Application in UML. Springer, Berlin, Heidelberg (2000)CrossRefGoogle Scholar
  53. 53.
    Sunyé, G., Pollet, D., Traon, Y.L., Jézéquel, J.: Refactoring UML models. In: Proceedings of the 4th International Conference on The Unified Modeling Language, Modeling Languages, Concepts, and Tools, pp. 134–148. Springer-Verlag, London (2001)Google Scholar
  54. 54.
    Taba, S.E.S., Khomh, F., Zou, Y., Hassan, A.E., Nagappan, M.: Predicting bugs using antipatterns. In: Proceedings of the 2013 IEEE International Conference on Software Maintenance (ICSM ’13), IEEE Computer Society, pp. 270–279. Washington (2013)Google Scholar
  55. 55.
    Trubiani, C., Koziolek, A.: Detection and solution of software performance antipatterns in Palladio architectural models. In: ACM (ICPE ’11), pp. 19–30 (2011)Google Scholar
  56. 56.
    Tsantalis, N., Chaikalis, T., Chatzigeorgiou, A.: Jdeodorant: Identification and removal of type-checking bad smells. In: Proceedings of the 2008 12th European Conference on Software Maintenance and Reengineering, CSMR ’08, IEEE Computer Society, pp. 329–331. Washington (2008)Google Scholar
  57. 57.
    WEBster.: Software development guidelines. Accessed 20 Jan 2016
  58. 58.
    Wong, S., Vassiliadis, S., Vassiliadis, S., Cotofana, S.: Embedded processors: Characteristics and trends. Technical report. In: Proceedings of the 2001 ASCI Conference (2004)Google Scholar
  59. 59.
    Wulf, W., Shaw, M.: Global variable considered harmful. SIGPLAN Not. 8(2), 28–34 (1973)CrossRefGoogle Scholar
  60. 60.
    Xi, H.: Dead code elimination through dependent types. In: Proceedings of the First International Workshop on Practical Aspects of Declarative Languages, PADL ’99, pp. 228–242. Springer-Verlag, London (1998)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2016

Authors and Affiliations

  1. 1.School of ComputingQueen’s UniversityKingstonCanada

Personalised recommendations