얼마전에 쓴 글 CASE TOOL에서 언급했던 소프트웨어 자동화에 있어 몇가지 깨닮음(?)을 정리하자면
먼저 개발작업이란 현실 세계를 어느정도 추상화시켜 컴퓨터로 표현될수 있게 정리하는 작업이라고 볼 수 있다.
이러한 현실세계를 정리(사양분석)하는데 있어서 그 복잡도와 불분명성은 소프트웨어의 복잡도를 더욱더
증가시킨다. 이러한 근본적인 복잡도는 소프트웨어로서 표현되기 위해서 어느 정도 단순화 시키거나
시간을 들여 표현되지 않으면 안되는데, 이것은 소프트웨어 자동화로서 해결되지 못하는 수작업을 야기한다.
소프트웨어의 재사용은 제한적일 수 밖에 없다. 즉 이미 개발을 한 상품일지라도 그것은 해당 도메인(해당업계)에
종속적인 컴포넌트일수밖에 없다. 예를들면 해운업계의 전산시스템은 해운업계의 사양에 종속적일수밖에없다.
때문에 사용가능한 재사용 모듈은 제한적일 수 밖에 없다.
그리고 재사용 컴포넌트(해당 도메인에서 유연한 사용을 보장하는)를 만드는데는 일반적으로 20%이상의
비용이 들게 되며 범용컴포넌트(해당 도메인및 다른도메인에서의 일반적인 기능을 추상화시켜 컴포넌트화한것)
는 더욱더 많은 비용이 소모된다. *코드의 효율성은 뒤로 두고서라도..
결국 이러한 소프트웨어 자동화를 막는 몇가지 현실적이며 원론적인 문제가 존재하기 때문에 소프트웨어
자동화로 가는 길은 어려울것이라 생각된다.
p.s 하지만 점진적 개선은 꾸준히 있을것이라 생각된다.
1. 문제의 복잡도가 20% 증가하면 소프트웨어의 복잡도는 100% 이상 증가한다
2. 소프트웨어 재사용은 제한적이다.
(일반적으로 재사용 컴포넌트를 만드는데에는 20%이상의 비용이 소모된다. 게다가 범용 컴포넌트는
더 많은 비용이 소모된다.)
3. 소프트웨어 업계의 은탄환은 없다.(점진적 개선만이 있을뿐 획기적인 발전은 앞으로도 없을것이다)
2. 소프트웨어 재사용은 제한적이다.
(일반적으로 재사용 컴포넌트를 만드는데에는 20%이상의 비용이 소모된다. 게다가 범용 컴포넌트는
더 많은 비용이 소모된다.)
3. 소프트웨어 업계의 은탄환은 없다.(점진적 개선만이 있을뿐 획기적인 발전은 앞으로도 없을것이다)
먼저 개발작업이란 현실 세계를 어느정도 추상화시켜 컴퓨터로 표현될수 있게 정리하는 작업이라고 볼 수 있다.
이러한 현실세계를 정리(사양분석)하는데 있어서 그 복잡도와 불분명성은 소프트웨어의 복잡도를 더욱더
증가시킨다. 이러한 근본적인 복잡도는 소프트웨어로서 표현되기 위해서 어느 정도 단순화 시키거나
시간을 들여 표현되지 않으면 안되는데, 이것은 소프트웨어 자동화로서 해결되지 못하는 수작업을 야기한다.
소프트웨어의 재사용은 제한적일 수 밖에 없다. 즉 이미 개발을 한 상품일지라도 그것은 해당 도메인(해당업계)에
종속적인 컴포넌트일수밖에 없다. 예를들면 해운업계의 전산시스템은 해운업계의 사양에 종속적일수밖에없다.
때문에 사용가능한 재사용 모듈은 제한적일 수 밖에 없다.
그리고 재사용 컴포넌트(해당 도메인에서 유연한 사용을 보장하는)를 만드는데는 일반적으로 20%이상의
비용이 들게 되며 범용컴포넌트(해당 도메인및 다른도메인에서의 일반적인 기능을 추상화시켜 컴포넌트화한것)
는 더욱더 많은 비용이 소모된다. *코드의 효율성은 뒤로 두고서라도..
결국 이러한 소프트웨어 자동화를 막는 몇가지 현실적이며 원론적인 문제가 존재하기 때문에 소프트웨어
자동화로 가는 길은 어려울것이라 생각된다.
p.s 하지만 점진적 개선은 꾸준히 있을것이라 생각된다.