본문 바로가기

Project

소프트웨어의 공학의 관심사.


1. 일련의 프로그램을 시스템(system)으로 설계하고 구축하는 것
2. 프로그램이나 시스템을 견고히하고 테스트하고 문서화하고 지원받는 제품(product)으로 설계하고 구축하는 방법
3. 복잡성(complexity)에 대한 제어를 현명하게 유지하는것

맨먼스의 미신(The mythical man-month)에서

라고 소프트웨어 공학의 관심사에 대해 언급하고 있다.

 위의것을 다시 쓰면

1. (특정한 동작을 하는)프로그램을 설계하고 구축하는 방법
2. 원하는 기능을 갖춘 제품을 만드는 일련의 과정
3. 복잡성의 제어

 그런데 자세히보면 1번은 2번에 속하는것이 아닐까?

1에는 프로그램 레벨에서의 구현방법, 즉 design pattern 같은 구현기술과
         시스템 레벨에서의 구현방법 , 즉 architecture pattern 같은 구축기술이 있을듯하다.
2는 개발방법론을 이야기하는듯

3번이 가장 중요한 핵심이라 생각되는데 1과 2를 넘어서는
 현실의 복잡성(사양을 정하는데서 나타나는 문제),
인간의 복잡성(의사소통의 문제,감정 등등) ,
기계의 복잡성
(프로그램들이 서로 상호작용하는데서 생기는 불확실한 문제,
기계의 제약(시간과 공간 *메모리와 속도)으로 인한 파악하기
어려운 문제들등등)
등에 해당하는 것같다.

 라고 잠깐 단상.