| Separation Of Concerns |
Article Index for Separation Of |
Shopping Concerns |
Website Links For Separation |
Information AboutSeparation Of Concerns |
| CATEGORIES ABOUT SEPARATION OF CONCERNS | |
| programming paradigms | |
|
SoC is a long standing idea that simply means a large problem is easier to manage if it can be broken down into pieces; particularly so if the solutions to the sub-problems can be combined to form a solution to the large problem. SoC can be supported in many ways: by process, by notation, by organization, by language mechanism and others. {Link without Title} ''All'' Programming Paradigms aid developers in the process of SoC. For example, Object-oriented Programming languages such as Java can separate concerns into Objects , and a Design Pattern like MVC can Separate Content From Presentation and data-processing (model) from content. Service-oriented Design can separate concerns into Services . Procedural Programming languages such as C and Pascal can separate concerns into Procedure s. Aspect-oriented Programming languages can separate concerns into Aspects and Objects . Progress towards SoC is traditionally achieved through Modularity and encapsulation, with the help of Information Hiding . Separation of concerns is an important design principle in many other areas as well, such as Urban Planning , Architecture and Information Design . The goal is to design systems so that functions can be optimized independently of other functions, so that failure of one function does not cause other functions to fail, and in general to make it easier to understand, design and manage complex interdependent systems. Common examples include using corridors to connect rooms rather than having rooms open directly into each other, and keeping the stove on one circuit and the lights on another. ORIGIN The term ''separation of concerns'' was probably coined by Edsger W. Dijkstra in his 1974 paper On the role of scientific thought .
15 years later, it was evident the term Separation of Concerns was becoming an accepted idea. In 1989, Chris Reade wrote a book titled '''Elements of Functional Programming''' that describes separation of concerns:
Reade continues to say,
EXAMPLES EXtensible HyperText Markup Language and Cascading Style Sheets are languages intended to separate style from content. Where XHTML elements define the abstract structure of a document, CSS directives are interpreted by the Web Browser to render those elements in visual form. In practice, one must sometimes alter XHTML in order to obtain the desired result with CSS , in part because style and content are not completely Orthogonalized by any existing Browser implementation of CSS , and in part because CSS does not allow one to remap the document tree. Aspect-oriented Programming allows Cross-cutting Concerns to be addressed as secondary concerns. For example, most programs require some form of Security and Logging . Security and logging are often secondary concerns, whereas the primary concern is often on accomplishing business goals. Most project organization tasks are seen as secondary tasks. For example, Build Automation is an approach to automating the process of compiling source code into binary code. The primary goals in build automation are reducing the risk of human error and saving time. SEE ALSO
EXTERNAL REFERENCES
|
|
|