Data, context and interaction: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Alter: url, template type. URLs might have been anonymized. Add: volume, series, s2cid, isbn. | Use this bot. Report bugs. | Suggested by AManWithNoPlan | #UCB_CommandLine
Importing Wikidata short description: "Architectural pattern in computer software development"
 
(One intermediate revision by one other user not shown)
Line 1:
{{Short description|Architectural pattern in computer software development}}
'''Data, context, and interaction''' ('''DCI''') is a paradigm used in computer software to program systems of communicating [[Object (computer science)|objects]]. Its goals are:
* To improve the readability of [[Object-oriented programming|object-oriented]] code by giving system behavior first-class status;
Line 85 ⟶ 86:
The challenges of object-oriented programming can also be met by addressing its issues on the paradigm level.
 
* [[Aspect-oriented programming]] (AOP) is perhaps the closest historic relative to DCI. Most use of Aspects is closely tied to the programmer perspective and require strong tool support to provide good understanding of the software's behavivourbehaviour on any given [[pointcut]]. The main difference is that in DCI, the structure of the algorithm is primary, with a strong emphasis on its isolation from code outside itself, improving code readability. In AOP, the [[pointcut]] and [[Advice in aspect-oriented programming|advice]] carry equal importance and though physically disjoint, must be understood together to understand the code, because the advice is invasive at the [[pointcut]]. While AOP provides an administrative grouping of a related collection of individual local modifications that together cross-cut the primary structure of the code, DCI is a semantic expression of an algorithm with first-class analysis standing that invokes existing object methods. DCI can be thought of as a way of taking a large [[Advice in aspect-oriented programming|advice]] and allowing parts of it to be injected into a number of regularized [[pointcut]]s.{{citation needed|date=February 2016}}
* [[Role-oriented programming]] brings together ideas from [[Aspect-oriented programming]], conceptual modeling <ref>Friedrich Steimann, On the representation of roles in object-oriented and conceptual modelling, 2000, http://www.fernuni-hagen.de/ps/veroeffentlichungen/zeitschrift_46129.shtml {{Webarchive|url=https://web.archive.org/web/20161007005544/http://www.fernuni-hagen.de/ps/veroeffentlichungen/zeitschrift_46129.shtml |date=2016-10-07 }}</ref> and more. Early attempts (1991) defined roles in an independent fashion,<ref>Joel Richardson and Peter Schwarz, Aspects: extending objects to support multiple, independent roles, 1991, http://www.informatik.uni-trier.de/~ley/db/conf/sigmod/RichardsonS91.html {{Webarchive|url=https://web.archive.org/web/20071017185308/http://www.informatik.uni-trier.de/~ley/db/conf/sigmod/RichardsonS91.html |date=2007-10-17 }}</ref> but more recent approaches (2002 and onward) converge in emphasizing that roles depend on context (also "teams" <ref>Stephan Herrmann, Object Teams: Improving Modularity for Crosscutting Collaborations, http://www.objectteams.org/publications/index.html#NODe02, 2002</ref> or "institutions" <ref>Guido Baldoni et al., Roles as a coordination construct: introducing powerJava, 2005, http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.77.6337</ref>). In role-oriented programming, roles are defined with respect to some intrinsic (or base) entity, which corresponds to the data-role dichotomy in DCI. The concept of context is essentially the same in both approaches. Both approaches emphasize the interaction among a group of roles.