Concern (computer science)
From Wikipedia, the free encyclopedia
This article needs additional citations for verification. Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (July 2007) |
-
For other uses, see Concern (disambiguation).
In computer science, a concern is a particular set of behaviors needed by a computer program, the conceptual sections. A concern can be as general as database interaction or as specific as performing a calculation, depending on the level of conversation between developers and the program being discussed. IBM uses the term concern space to describe this sectioning of concepts.[1]
Usually these needs can be separated from each other into logical sections and allow the program to be modularized. Edsger W. Dijkstra coined the term "separation of concerns"[2] to describe the mentality behind this modularization, which allows the programmer to reduce the complexity of the system being designed. Two different concerns that intermingle in the same section of code are called "highly coupled". Sometimes the chosen module divisions do not allow for one concern to be completely separated from another, resulting in cross-cutting concerns.[3] The various programming paradigms address the issue of cross-cutting concerns to different degrees. Data logging is a common cross-cutting concern, being used in many other parts of the program other than the particular module(s) that actually log the data. Since changes to the logging code can effect other sections, it could introduce bugs in the operation of the program.
Paradigms that specifically address the issue of concern separation:
- Object-oriented programming, describing concerns as objects
- Functional programming, describing concerns as functions
- Aspect-oriented programming, which collections cross-cutting concerns in one place
[edit] References
- ^ Concern Spaces at IBM
- ^ Dijkstra, Edsger W. (1982), “On the role of scientific thought”, in Dijkstra, Edsger W., Selected writings on Computing: A Personal Perspective, New York, NY, USA: Springer-Verlag New York, Inc., pp. 60–66, ISBN 0-387-90652-5
- ^ Mendhekar, Anurag, Gregor Kiczales, and John Lamping. "RG: A Case-Study For Aspect-Oriented Programming" Xerox Palo Alto Research Center. Feb 1997.