Data, context and interaction: Difference between revisions

Content deleted Content added
As110 (talk | contribs)
As110 (talk | contribs)
Added research section.
Line 91:
 
:Several differences can be identified. Role-oriented programming is focused on adding support for roles to object-oriented ''programming languages'' where emphasis is on increasing the expressiveness of a programming language and enabling more designs. In comparison, DCI has stronger focus on the ''method'' of how mental models should be captured, defining this method in part as restrictions on what should be regarded a legal design corresponding to DCI. For example: Authors of DCI tend to discourage some use of inheritance (e.g. "within DCI you do not inherit roles" <ref>J. Coplien, posted in Object-Composition Google group, https://groups.google.com/forum/?hl=en#!topic/object-composition/haza-J2Doz8 21.10.2010</ref>) whereas role-oriented programming embraces (and even enhances) inheritance as a central concept of object-orientated programming, supporting free combination with other concepts. DCI emphasises that [[Schizophrenia (object-oriented programming)|self schizophrenia]] should be avoided, whereas role-oriented programming claimed to manage split objects in such a way that schizophrenia was no longer a problem <ref>Stephan Herrmann, Demystifying Object Schizophrenia, 2010, http://www.objectteams.org/publications/index.html#MASPEGHI10</ref> but a facilitator for more flexible designs. A later paper by the DCI authors claims that self-schizophrenia remains a problem in role-oriented programming using a counter-example based on a modified implementation of [[Dijkstra's algorithm]].<ref>James O. Coplien, and Trygve Mikkjel Heyerdahl Reenskaug, The data, context and interaction paradigm. In Gary T. Leavens (Ed.): Conference on Systems, Programming, and Applications: Software for Humanity, SPLASH '12, Tucson, AZ, USA, October 21–25, 2012. ACM 2012, {{ISBN|978-1-4503-1563-0}}, pp. 227 - 228, http://dl.acm.org/citation.cfm?id=2384782&dl=ACM&coll=DL.</ref> As such, DCI sacrifices the advantages of inheritance for the complete avoidance of its shortcomings, while Role Oriented Programming takes a mitigation approach, awarding importance to the balancing of the dangers with its popular advantages.
 
==Research==
A study in 2017 by Héctor Valdecantos et. al. showed that "The correctness analysis shows that programmers in the DCI group performed better than programmers in the OOjava group. This is aligned with the theories behind DCI and it should encourage further and systematic investigations
concerning the possibilities of this paradigm."<ref name="Empirical Study on Code Comprehension" />
 
According to researchers Bluemke and Stepień at Institute of Computer Science, Warsaw University of Technology, "DCI based systems are very flexible much more than the traditional ones, this is due to the fact that static (Data) and dynamic (Context, Interaction) parts of the system are separated and separation of concerns is very powerful strategy to master the complexity."<ref name="Experiences with DCI Pattern">{{cite web |last1=Bluemke |first1=Ilona |last2=Stepień |first2=Anna |title=Experiences with DCI Pattern |website=Software Engineering in Intelligent Systems |pages=87–96 |doi=10.1007/978-3-319-18473-9_9 |date=2015 |url=https://www.researchgate.net/publication/279199208_Experiences_with_DCI_pattern}}</ref>
 
==References==