Frederick  P.  Brooks  Jr

 

 (미국 소프트웨어공학 컴퓨터과학자 1931~)

....... 컴퓨터구조, 운영체제, 소프트웨어공학에 공헌 ........ 

Frederick Phillips Brooks, Jr 는 소프트웨어 공학자이며 컴퓨터과학자로서, 운영체제 OS/360 를 개발한 것으로 유명하며 나중에 유명한 저서 The Mythical Man-Month 에 그 과정을 자세히 서술하였다. 그는 1999 년에 Turing Award 을 수상했다.

1931년에 미국 Durham 에서 태어난 프레드릭 브룩스는 듀크대를 졸업하였다. 1956년에 하바드 대학에서 응용 수학 (Applied Mathematics) 을 전공하여 박사 학위를 받는다. Howard Aiken 이 그의 스승이었다. 아이켄은 IBM의 Harvard Mark 1 컴퓨터의 핵심 개발자였다. 그의 영향으로 브룩스는 1956 년에 IBM 으로 입사하게 된다. 거기서 Stretch ($10m scientific supercomputer for the Los Alamos Scientific Laboratory) 와 Harvest 라는 컴퓨터들의 아키텍처에서 작업했다. 그는 곧 System/360 시리즈에서 동작하는 운영 체제인 OS/360 을 개발하는 프로젝트의 관리자가 된다. 이 시스템을 개발하는 과정에서 얻은 통찰력으로 소프트웨어 공학 분야에 길이 남는 명저 The Mythical Man-Month 를 저술하게 된다. 또한 소프트웨어공학에 대한 유명한 글 No Silver Bullet 을 저술한다.

1965 년에 IBM 을 떠나 University of North Carolina 에 컴퓨터과학과를 설립하여 20 년동안 재직한다. 2004 년 현재에도 거기서 활동적인 연구를 진행하고 있으며 지금은 주로 virtual worlds 와 molecular graphics 관련 일을 한다. 2005 년 런던에서 IEE/BCS annual Turing Lecture 를 "Collaboration and Telecollaboration in Design" 란 주제로 하였다. 그는 독실한 크리스찬이다. ...........................(Wikipedia : Fred Brooks)

그는 책 "The Mythical Man Month" 에서 당시 시대 상황에는 매우 파격적인 소프트웨어 공학의 원리들을 소개하였다. 그 중 특히 인상적인 것은 책의 제목과 관련이 있다. “Man Month의 신화”가 바로 그것이다. “Man Month(M/M)”란 특정 기간에 프로젝트에 투입되는 인력의 수량을 월 기준으로 나타낸 것이다. 만약 어떤 프로젝트에 한 사람이 12개월 동안 참여했다면 그 프로젝트의 Man Month는 12이다. 만약 두 사람이 참여했다면 24이다. 브룩스는 OS/360 프로젝트가 인력을 더 투입했는데 오히려 더 지연되자 그 이유를 깊이 고민하다가 인력 투입과 개발 기간 간의 상관 관계를 알아냈다.

만약 어떤 개발자가 마이크로소프트사의 파워포인트와 같이 복잡한 프로그램을 만든다고 가정해보자. 아마도 매우 능력있는 프로그래머 1명이 일년동안 프로그램을 분석하고 설계하고 코딩하고 테스트할지 모른다. 이럴 경우 이 프로젝트는 12 Man Month의 노력이 투입된 것이다. 그런데 프로젝트 관리자는 타사의 경쟁 제품이 두 달 후에 출시될 예정이라는 불행한 소식을 듣게 된다. 해법은 무엇일까? 1975년 당시 브룩스를 제외한 대부분의 프로젝트 관리자들은 이렇게 말했을 것이다. “12명의 뛰어난 프로그래머를 스카우트하고 일을 12등분해서 그 사람들에게 나눠 주십시오. 그리고 한 달 안에 일을 마치라고 주문하면 아마 해결될 것입니다. 왜냐하면 12명이 한달 동안 일을 하니까 한 명이 12개월 일하는 것과 동일한 12 Man Month가 투입되었기 때문입니다".

하지만 브룩스는 다른 결론을 얻었다. “지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다.” 일명 브룩스의 법칙(Brook’s Law)이다. OS/360을 개발하면서 브룩스는 “1 개발자 * 12 개월 == 12 개발자 * 1 개월”이 아니라는 것을 몸소 깨달았다. 개발자를 추가하면 할수록 그들 사이에 미팅, 인터페이스 합의, 이메일 송수신 등과 같은 커뮤니케이션 비용이 월등히 증가하기 시작했다. 또한 커뮤니케이션 오류로 일이 잘못 진행되는 경우도 빈번히 생겼고 그럴 때마다 원상태로 수정하는 추가 작업들이 발생하였다. 이런 요인으로 추가 인력이 투입될수록 프로젝트가 지연되는 현상을 겪게 된 것이었다. 전문적으로 말하면, 개발자가 N명이라면 N만큼 개발자가 일하는 양이 늘어나지만 N의 제곱만큼 프로젝트가 복잡해지기 때문에 결국 시간 내에 일을 끝낼 수 없다는 것이다.

따라서 지연되는 프로젝트를 원래 스케쥴대로 진행하려면 인력을 더 추가하는 것이 아니라 “개발하기로 약속했지만 아직 완성되지 못한 기능”을 없애는 것이 합리적인 방법이며 프로젝트의 범위(scope)를 조절함으로서 스케쥴을 제어해야 한다고 주장했다.

브룩스의 법칙 외에 “두번째 시스템 효과(Second System Effect)”, “프로토타입(prototype)”, “커뮤니케이션(Communication) 중시” 등의 원리들은 30년이 넘는 지금 들어도 충분히 공감되는 소프트웨어 공학의 원리를 제시했다.

“두번째 시스템 효과”란 엔지니어가 두번째로 만드는 시스템은 가장 위험한 시스템이 될 수 있다는 가설이다. 왜냐하면 첫번째 시스템을 작고 성공적으로 개발했던 경험이 있는 엔지니어는 두번째 시스템에서는 그 성공을 뛰어넘을 욕심으로 추가 기능을 많이 포함한 공룡 같은 시스템을 만들려는 경향이 있기 때문이다. 브룩스는 성공적인 IBM 70XX 시리즈의 운영 체제 이후에 OS/360을 개발하면서 그 사실을 깨닫게 되었다. OS/360 은 공룡과 같은 두번째 시스템이었다. 이것은 시스템을 유지보수하면서 확장시켜 나갈 때도 발생될 수 있는 문제이다.

“프로토타입”은 새로운 종류의 시스템을 개발할 때는 프로토타입(prototype)을 먼저 만들어서 기능과 성능을 시험을 해 본 후 버리고, 두번째로 더 좋은 시스템을 새롭게 만들어 고객에게 주자는 것이다. 이렇게 하면 좀 더 품질이 좋은 시스템을 고객에 전달할 수 있다고 주장하였다.

"커뮤니케이션 중시”란 팀은 가능한 다양한 방식으로 의사소통을 원활히 하고 명확히 해야 프로젝트에서 발생 가능한 재앙을 미리 막을 수 있다는 원리이다. 애매한 일은 반드시 매니저에게 확인 받고 진행해야 틀리게 생각했던 작업들의 진행을 방지하여 재작업의 요소를 제거해야 한다는 것이다.

브룩스는 1987년에 “은총알은 없다(No Silver Bullet)”라는 소프트웨어 엔지니어링 에세이를 발표했는데 많은 논쟁을 불러 일으켰다. 이 글은 1995년에 출간된 “The Mythical Man Month”의 20주년 기념 서적에 포함되기도 하였다. 그는 소프트웨어 개발 생산성을 한번에 해결해 줄 만한 은총알과 같은 기술이나 개발 방식은 더 이상 없을 것이라고 선언했다. 하드웨어의 발전속도를 소프트웨어 개발 속도가 따라 잡지 못하는 현실을 소프트웨어의 복잡성과 관련해서 설명하였다. 소프트웨어 개발의 복잡도는 두 가지 종류가 있는데, 첫번째로는 제거가 가능한 비본질적(accident)인 복잡성이 있다. 이것은 소프트웨어 개발 방식이나 기술 자체가 덜 성숙하거나 잘못된 경우에 생긴다. 이런 복잡도는 IT 과학자들이 노력하면 복잡성을 제거할 수 있다. 예를 들어 불편한 어셈블리 언어 때문에 개발 생산성이 떨어진다면 C나 자바와 같은 고급 언어를 개발하면 해결된다.. 두번째로는 본질적(essential)인 복잡도가 있다. 브룩스는 풀어야 할 문제 자체가 복잡하다면 그 문제가 사라지지 않는 이상은 복잡도는 줄 지 않는다고 주장했다. 시간이 가면 갈수록 고객들은 복잡한 기능들을 요구할텐데 이런 요구 자체는 단순화될 수 없다는 것이다.. 본질적인 복잡도는 대폭 완화될 수 없기 때문에 소프트웨어 개발 생산성을 높이는 정도에는 한계가 있다는 것이다. 객체 지향이나 재사용 등은 이런 본질적인 복잡성을 줄이지 못하는 실패한 은총알이라 주장했다. 그의 글은 많은 소프트웨어 공학자들이 소프트웨어 생산성을 향상시키기 위해 근본적으로 해결되어야 할 선행 이론들에 대해 관심을 갖게 만들었다.

이 주장은 많은 논쟁을 불러 일으켰고 Brad Cox 는 “No Silver Bullet Revisited” 라는 에세이에서 브룩스가 말한 본질적인 복잡성도 비본질적인 복잡성들로 분리하여 해결하면 충분히 생산성을 높일 수 있다는 반론을 제기하였다. .............. (인간의 편에 선 소프트웨어 공학, 박지훈, 2005)

term :

Frederick P. Brooks Jr    컴퓨터 (Computer)  

site :

paper :

related paper :