Talk:Separation of concerns

From Wikipedia, the free encyclopedia

The article says that "the term separation of concerns was coined by David Parnas in his paper 'On The Criteria To Be Used in Decomposing Systems into Modules'." However, I could not find the expression in the paper. --Picuinhas 5 July 2005 18:24 (UTC)

Contents

[edit] Source for early reference

The term "separation of concerns" is used in the 1974 paper from Edsger W. Dijkstra, On the role of scientific thought:

http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD447.html

Eddie Burris

[edit] Disputed: Accuracy, Verifiability and Original Research

This whole article strikes me as original research. Is there a verifiable source for the content of this article? Dijkstra's use of the term to mean separating concerns like the concern for correctness, the concern for performance, the concern for safety, the concern for concurrency etc. bears little resemblance to the article here. Arbitrary features are not concerns--all relevant concerns affect all features. While one can use abstraction, functional decomposition and information hiding as implementation techniques to separate concerns within a language, considering separate concerns in isolation can use entirely different languages for each concern.

This use of separate languages for separate concerns is, in fact, quite common--even though, not always readily apparent. Thus one might deal with the concern for correctness with a high-level language. One might deal with the concern for performance in other languages comprising make-file syntax, command-line switches and pragmas, while the compiler itself addresses the concern for performance by transforming the original program through a series of other internal languages using symbolic manipulation.

Equating the separation of concerns with abstraction, functional decomposition or information hiding, as this article seems to, strikes me as a very limiting misconception.

Bob Badour 17:46, 25 June 2006 (UTC)

To further amplify my comments above, I offer this excerpt from another of Dijkstra's papers this time from 1979, My hopes of computing science:
         My hope became more articulate, when programming emerged as an application area par excellence of the techniques that are well-known because we struggle with the small sizes of our heads as long as we exist. they are roughly of three different forms:
1)       separation of concerns and effective use of abstraction
2)       the design and use of notations, tailored to one's manipulative needs
3)       avoiding case analyses, in particular combinatorially exploding ones.
The second point above suggests (to me at least) that separate concerns address different needs and one can tailor one's notations to address those needs separately. Doing so is vastly different from information hiding. Bob Badour 15:52, 26 June 2006 (UTC)
It appears Edsger W. Dijkstra coined this term and the concept forms a theme running through many of his papers, some of which I cite here:
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD02xx/EWD288.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD303.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD316.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD340.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD361.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD389.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD447.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD450.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD454.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD05xx/EWD512.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD05xx/EWD514.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD05xx/EWD526.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD611.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD641.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD07xx/EWD709.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD07xx/EWD716.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD07xx/EWD791.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD09xx/EWD932c.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD09xx/EWD963.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1013.html
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1024.html
http://www.cs.utexas.edu/~EWD/transcriptions/EWD12xx/EWD1298.html
http://www.cs.utexas.edu/users/EWD/obituary.html
The concerns Dijkstra mentions apply to entire systems (even systems of systems -- perhaps even universally) and would concern everyone affected by the system. Thus, when I approach the ATM with my bank card, I am concerned with correctness, performance, availability, concurrency, security, need, relevance, cost etc. I have no concern whatsoever for source code, implementations, design patterns, use cases, any sort of diagram or any grouping of same.
Concerns can have different importance and the importance can vary over time. Thus availability of the ATM is less of a concern when stopping at the ATM while passing by than it is when I have no money in my pocket needing something from a store about to close. Correctness, on the other hand, is always an important concern.
Sometimes one can break down a concern into other concerns. Thus, a concern for reliability might comprise concerns for correctness, availability and durability as one cannot rely on anything incorrect, unavailable or broken.
More than anything else, the Separation of Concerns is an intellectual discipline.
The term is in no way limited to object-orientation, to aspect-orientation or to any other buzzword.
This article redefines the term from its original meaning and offers no citations for verification. If one has a verifiable source for some redefinition, both the original meaning and the new meaning need mention to avoid POV.
Bob Badour 17:59, 26 June 2006 (UTC)

I found the article very informative. Mr. Badour's criticisms seem muddled.

If his complaint is that the information is original research (i.e., not based on peer-reviewed published research), then his numerous references to Mr. Dijkstra's unpublished, non-peer-reviewed, informal e-mails seem only to exacerbate the problem.

If his point is that neither object-orientation nor aspect-orientation have standing as an intellectual discipline, but are merely buzzwords, then perhaps he can back this idiosyncratic assertion with some citations. I find that any review of, e.g., aspect oriented research shows it has separation of concerns as a primary concern, and thus is entirely relevant to a discussion of Separation of Concerns as a topic in the Wikipedia.

-- June 29, 2006

The issues of Original Research and Point of View have very well-defined meanings within the context of Wikipedia. Reliable sources include peer reviewed journals and many other sources as well. The point is the current article has not one single citation to any external source--let alone to a reliable, verifiable source.
Whether any particular person finds an article informative is irrelevant to the issues of original research and point of view. I could write an article claiming the separation of concerns relates to separating the clinical treatment of anxiety from the clinical treatment of phobias, and someone might find the article informative -- perhaps even entertaining or even useful in their practice. Since I could provide no verifiable source for the assertion, however, any editor could rightly delete the whole thing.
The links I gave above are not to a personal website and are not emails. They are numbered manuscripts published and edited by the University of Texas at Austin Computer Science Department. While many of the manuscripts are informal, some of them have indeed been published under peer review: e.g. EWD450 and EWD709.
One could argue that it is wrong to use primary sources. However, there are exceptions to this rule. It would be wrong to cite the Edsger W. Dijkstra Papers, 1948-2002, Archives of American Mathematics, Center for American History, The University of Texas at Austin because it is an unedited archive of primary source documents. However, I cited the E. W. Dijkstra Archive website edited under the supervision of the University of Texas at Austin Computer Science Department. Wikipedia allows historic documents that appear in edited collections that have been published by a reliable publisher.
Further, Dijkstra was "a well-known professional researcher writing within his field of expertise." His work has "frequently been published by credible, third-party publications, and he wrote under his own name not a pseudonym."[1] One of the sited sources, EWD340, is Dijkstra's ACM Turing Lecture from 1972. One might stop for a moment to consider what giving an ACM Turing Lecture means with respect to the concerns for reliability, professionalism and recognition.
Finally, I am reasonably certain the obituary qualifies as a secondary source.
Instead of making claims about what you find in alleged, unnamed reviews, wikipedia expects you to cite verifiable sources: "It is always appropriate to ask other editors to produce their sources. The burden of evidence lies with the editor who has made the edit in question, and any unsourced material may be removed by any editor. However, some editors may object if you remove material without giving people a chance to find a source, particularly when the material is not obviously wrong, absurd, or harmful."[2]
I hope the issues now seem much less muddled to you and to any other readers. Please, anyone reading this, consider this your chance to find a verifiable source.
Bob Badour 21:20, 9 July 2006 (UTC)
The AOSD wiki, I think explains the term very well:
http://www.aosd.net/wiki/index.php?title=Glossary#Separation_of_Concerns
Yes, Dijkstra did coin the term, but the meaning has now evolved over time to mean both what Dijkstra says and what the article says.
So, to summarize. No, this page is not original research. Yes, this page is missing sources and references. I just added some. There are more, I'm sure. Feel free to add them.
Also, I am removing all the disputed categories. If anyone disagrees with me, you are welcome to put them back and explain why they belong there. --Andrew Eisenberg 06:18, 7 August 2006 (UTC)

[edit] Removal

I removed the 'Real Life Examples' Section. It talks about artificial concerns and such like that aren't referenced in the main article and is just plain confusing. I don't know the subject well enough to write a section but I really think a 'Real Life Examples' section could be very handy, if someone can think of a related analogy 212.56.97.238 16:44, 31 January 2007 (UTC)

Whoops. Forgot to login. That was me. NatashaUK 16:45, 31 January 2007 (UTC)

[edit] Lumping or Splitting

Every time there is a change in human affairs, it usually involves lumping or splitting. I learned this very early in life and saw the concept repeated as programming principles: "coupling and cohesion", "orthogonality", "DRY (don't repeat yourself)", "normalization", "etc.", and now "Separation of Concerns". Is there some fundamental principle that everyone is overlooking? Is SoC orthogonal in a meta-sense?

--jwalling 01:56, 5 February 2007 (UTC)

[edit] Copyright violation

I removed some text that's a direct copy from another Wiki (http://www.aosd.net/wiki/index.php?title=Glossary#Separation_of_Concerns). That wiki has CC-licensed text and "users own their edits" too. I was going to email the webmaster asking for permission to use the text, but thought it would be better to find similar language in a book or to paraphrase it. Unfortunately, it's already simple and straightforward and I can't come up with a good way to rephrase it without making it incorrect. I'll check through any books I have referring to SoC, but please help in replacing this text with a verifiable source. Thanks! mordel (talk) 14:05, 12 February 2008 (UTC)