No Silver Bullet Revisted

  • Post author:
  • Post category:
  • Post comments:0 Comments
  • Post last modified:October 1, 2005

No Silver Bullet Revisted를 읽은 감상과 발췌문이다.

관련 글

Crises versus Silver Bullets

we’ll step outside of this frame to examine it from a human-centric viewpoint.

The bad news is that, exactly as with the silver bullets that eliminated other crises throughout history, our silver bullet will also be a paradigm shift, not a technology.

기술중심적인 견해에서 벗어서 인간중심적인 시각에서 Brooks가 지적한 문제, 특히 Essential difficulties에 대한 해결책을 모색하고자 함을 밝히고 있다. 그리고 현재, 즉 1995년 무렵에 소프트웨어 산업계가 직면한 위기를 해결해 줄 Silver Bullet이 있다고 역설한다. 다만 Silver bullet은 어떠한 기술의 발전이 아닌 패러다임의 전환이라고 말한다.

No Silver Bullet?

As Brooks suggests, “The complexity of software is an essential property, not an accidental one.” We observe that this inherent complexity derives from four elements: the complexity of the problem domain, the difficulty of managing the development process, the flexibility possible through software, and the problems of characterizing the behavior of discrete systems.

— Grady Booch
Object-oriented Design with Applications
Benjamin Cummings; 1991

The ‘essential’ differences in these quotations are actually symptoms, not causes.

This underlying difference is that electronic goods are made of bits but tangible goods are made of atoms.

we have been unable to mobilize a similar structure of production for reusable software subcomponents.

Brook의 Essential difficulties라는 것은 문제의 증상이지, 원인이 아니라고 말한다. 좋은 논리다. 상당한 경우, 사고의 전환은 원인과 결과에 대한 색다른 접근에서 시작된다. 성공적인 산업분야와 소프트웨어 산업간의 차이는 결국 제품의 구성요소라는 지극히 뻔해 보이는 주장을 펼친다. 이 또한 신선한 접근이다. 때로는 너무나 당연한 것을 인지 못하기도 한다. 과거에는 공기의 존재를 증명할 생각조차 못했듯이 말이다.

벽돌, 강철과 같은 손에 잡히는 구성요소를 바탕으로 기존산업이 일어났듯이, 소프트웨어 산업에서도 재사용 가능한 구성요소를 만들어내야 한다고 한다. 오늘날 재사용성은 하나의 철학이 되었고, 이 글에서 그 시작을 보는 것 같다.

Manufacturing’s Silver Bullet

What does is realizing that encapsulated complexity is no longer complexity at all.

Encapsulation을 통해 이미 만들어진 구성요소의 복잡도는 숨겨야 한다고 한다. 재사용성과 추상화.

Pencils as the Fruit of the Pencil Tree

This line of argument helps to see that complexity is not the fundamental cause of the software crisis.

In other words, the system that’s operating here is recursive in a particularly powerful way.

Demand for computer software is high, so high prices encourage us to provide large granularity computer software like word processors.

Brooks는 소프트웨어의 본질적인 복잡도는 해결할 수 없는 문제라고 했다. 하지만 복잡도는 문제의 원인이 아니라고 말한다. 앞서 재사용성과 추상화에 대해 역설한 것을 기억해보자. 한가지 주의할 점은 단순히 프로그래밍 차원에서만 재사용성과 추상화를 강조하는 것이 아니라는 점이다. 하나의 건물을 지으려면 수십, 수백가지 종류의 업체가 힘을 모아야 한다. 벽돌공장, 제철소, 건축설계업체 등등이 각각의 영역에서 자신만의 역할을 한다. 이것은 더 높은 차원의 재사용성과 추상화다.

Out of the Crisis

But even in tangible domains, acquisition of atoms is not the only basis of owning. The path out of the software crisis involves another interpretation of owning, which is based on acquisition of use instead.

That is to say that my transaction involves not only copyright as enforced in the case of tangible goods by natural law. My transaction also involves implicit useright, which is rarely articulated as a separate right.

소프트웨어 산업계가 기존 산업계처럼 분업화되고 조직화되려면 라이센스 문제를 해결해야 한다고 말한다. 몇년전부터 세계적으로 소프트웨어의 저작권에 대한 법제화가 이뤄지고, 일반인들도 이에 대한 인식을 해나가고 있다. 이 글이 쓰여진 1995년, 또는 그 이전부터 현대적인 소프트웨어 저작권에 대한 논의가 이뤄지고 있었던 것 같다.

if (query()) { /* is this a paid up customer? */
   ... /* deliver requested service */
   commit(); /* record successful delivery */
} else { /* refuse service */
   ...
} 

Those query and commit calls rely on communication infrastructure that doesn’t exist today.

오늘날에는 위와 같은 Infrastructure 가 거의 대부분의 개발환경에서 지원된다. 다시 한번 선배들에게 감사할 따름이다.

감상

워낙 소프트웨어 산업 분야의 변화가 빠르기 때문인지 10년 정도 지난 글도 고전이라고 말한다. 현재의 유행이라던가, 보다 세련된 지식을 얻기 위해서는 근래의 쓰여진 글을 읽는 것이 최고다. 하지만 과거에서 오늘날까지의 변화를 알고 싶거나, 선배들이 문제를 해결하기 위해 어떤 노력을 했는지 알고 싶다면 고전을 읽어야 한다. 이미 상식이나 다름없이 되어버린 무엇인가도 선배들의 뛰어난 통찰력에 힘입은 것이고, 우리는 오늘날의 문제를 해결하는데 그들의 길을 뛰따라 밟아갈 수 있다.

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments