소프트웨어 공학의 문제는
다른 공학들과는 달리 어렵다기보다는 복잡하다고 하는 것이 맞을 것 같다.
물론 컴퓨터 공학 중 PL. AI. CG. Theory of Computation등은 고도의 수학을 요구하기 때문에 어렵다고 해야 하지만
OS 같은 분야는 사실 수학적으로 그렇게 어렵지는 않다.
단순한 연산과 추상화들이 너무 많이 layer를 이루고 있고
너무 커다란 시스템이라서 복잡한 것이다.
물론 물리학, 기계공학, 유체역학의 문제들도 어렵고 복잡하지만
복잡도보다 어려운 것이 더 큰 문제이다.
반면에 소프트웨어 공학은 각 부분은 별로 이해하기 어렵지 않는 데,
너무 거대해서 복잡하다.
따라서 수학을 잘 하는 사람보다 complexity를 잘 다루는 사람이 필요한 것 같다.
다른 공학보다 수학을 적게 공부해도 승부가 가능한 분야가 더 많이 있다.
OS의 이론은 통계를 이용하여 발표된 논문도 많은 것 같지만
실용적인 OS를 만드는 사람 중에 통계를 이야기하는 사람은 거의 없다.
미적분도 별로 안 쓰고, 사칙 연산만 잘 하면 된다.
Optimization 문제에서도 선형계획법 같은 걸 쓸 일도 별로 없다.
소프트웨어 공학에서의 optimization은 대부분 사람의 집중도와 일의 소요시간 등에 달려있는 게 많고
profiling을 통한 기계적인 코드 튜닝의 성격도 강한 것 같다.
아무튼 이런 면들에서 이론적인 기반이 부족해도 경험으로 많이 해결할 수 있기 때문에
소프트웨어 공학이 침체되는 면도 있는 것 같다.
소프트웨어 위기나 프로젝트 관리의 실패율의 다른 분야보다 높다.
별로 훈련되지 못한 사람들이 아무나 뛰어들고 기업들도 인건비 저렴한 사람들만 쓴다.
훈련된 사람과 그렇지 못한 사람을 잘 구별 못하기도 한다.
사실은 몇 배 이상의 차이가 나지만 수학없이는 정량적으로 잘 드러나지 않는 다.
댓글 없음:
댓글 쓰기