Wednesday, December 27, 2006

 

Principle: Separation of Concerns

** 프로그램을 설계할 때 여러가지 요소들을 동시에 고려하는 것은 어렵다. 따라서 각각의 요소들을 개별적으로 고려하고, 나중에 이러한 요소들을 합치는 것이 효과적인 방법이다. 예를 들어, 어떤 프로그램을 개발할 때 프로그램의 정확성 (correctness), 효율성 (efficiency), 필요성 (necessity)를 한꺼번에 생각한다고 해보자. 보통 사람들은 이렇게 다양한 관점들을 동시에 고려하지 못한다. The separation of concerns 원리는 이러한 관점들을 따로 고민하라는 것이다. 즉, 먼저 필요성을 고민하고, 그 다음 정확성을 그리고 나서 효율성을 고민하라는 것이다.

** Divide and conquer 와 비슷한 뜻인듯

** Software Modeling에서 매우 중요하게 생각하는 원리중의 하나이다.

Origin : From Wikipedia,

The term separation of concerns was probably coined by Edsger W. Dijkstra in his paper On the role of scientific thought.

Let me try to explain to you, what to my taste is characteristic for all intelligent thinking. It is, that one is willing to study in depth an aspect of one's subject matter in isolation for the sake of its own consistency, all the time knowing that one is occupying oneself only with one of the aspects. We know that a program must be correct and we can study it from that viewpoint only; we also know that it should be efficient and we can study its efficiency on another day, so to speak. In another mood we may ask ourselves whether, and if so: why, the program is desirable. But nothing is gained --on the contrary!-- by tackling these various aspects simultaneously. It is what I sometimes have called "the separation of concerns", which, even if not perfectly possible, is yet the only available technique for effective ordering of one's thoughts, that I know of. This is what I mean by "focussing one's attention upon some aspect": it does not mean ignoring the other aspects, it is just doing justice to the fact that from this aspect's point of view, the other is irrelevant. It is being one- and multiple-track minded simultaneously.


Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?