1. 개요 -[소프트웨어 공학]

sith-call.dev·2022년 4월 10일
0

공학이란 무엇인가?

위키백과 - 한글

공학(工學) 또는 엔지니어링(영어: engineering)은 공업 분야의 응용과학 기술을 연구하는 학문 또는 과학적, 경제학적, 사회적 원리와 실용적 지식을 활용하여 새로운 제품, 도구 등을 만드는 것에 관한 학문이다.

공학은 대부분의 분야에서 수학물리학화학 등의 자연과학을 기초로 하고 있으나, 공학과 자연과학의 차이점은 있다. 어떤 현상을 눈앞에 두고 자연과학도는, “이 현상은 어떻게 된 것 일까?”나 “왜 그렇게 되는 것일까?”라고 하는 이미 존재하고 있는 상태의 이해를 추구하는 것에 반해, 공학은 '어떻게 하면 지금은 존재하지 않는 상태나 물건을 현실에 만들 수 있을까'를 추구하는 점이 있다. 어쩌면 '어떻게 하면 목표로 하는 성과에 도달할 수 있을까'라고 하는 목적성을 가지고 있다고도 볼 수 있다.

과학자는 있는 그대로의 세계를 연구하며 기술자는 본 적 없는 세계를 창조한다.

  • 카르만(위키백과)

공학은 과학과 완전히 다르다. 과학자는 자연을 이해하려고 한다. 기술자는 자연세계에 존재하지 않는 것을 만들려고 한다. 기술자는 발명을 강조한다. 발명을 실현화하기 위해서는 아이디어를 실체화해서, 모든 사람이 쓸 수 있는 형체로 설계해야 한다. 그것은 장치, 도구, 재질, 기법, 컴퓨터 프로그램, 혁신적인 실험, 문제의 새로운 해결책, 기존의 무언가를 개량하는 것이다. 설계는 구체적이지 않으면 안 되며, 형태나 수법이나 수치가 설정되어야한다. 새로운 설계에 착수하려면 기술자는 필요한 정보가 모두 준비되어 있을 리 없음을 알아차려야 한다. 많은 경우 과학지식의 부족에 따라 정보가 제한되어 있다. 따라서 기술자는 수학이나 물리학이나 화학이나 생물학이나 역학을 공부한다. 그러고 나서 공학에 있어서의 필요성에 따라 관련 과학의 지식을 추가하는 경우도 많다.

  • 카르만(위키백과)

위키백과 - 영어

Definition of Engineering

The American Engineers' Council for Professional Development (ECPD, the predecessor of ABET)[3] has defined "engineering" as:

The creative application of scientific principles to design or develop structures, machines, apparatus, or manufacturing processes, or works utilizing them singly or in combination; or to construct or operate the same with full cognizance of their design; or to forecast their behavior under specific operating conditions; all as respects an intended function, economics of operation and safety to life and property.

  • wikipedia(engineering) -

간단하게 정리하자면, 공학은 문제를 해결하는 학문이다.

그래서 공학은 어떤 문제를 정의하고, 이를 효과적으로 해결하기 위한 방법들을 연구한다.

소프트웨어 위기

컴퓨터 분야의 기술 발전은 과거보다 더 크고 복잡한 소프트웨어를 개발할
수 있게 하고,소프트웨어의 소요는 100배 증가하였고 매년 12.5%의 증가율
을 보이고 있다.
공급 측면의 발전은 이런 수요의 증가를 따르지 못하고 있다.소프트웨어
생산성 증가는 같은 기간에 2배를 넘지 못하고 있고 소프트웨어 생산 인력
도 매년 4% 정도의 증가에 그치고 있다.생산성에 대한 심각한 인식이 바로 ‘소프트웨어 위기(SoftwareCrisis)’이다.

  • 최은만,『소프트웨어공학』,(서울 :정익사,2007),p.19. -

Software crisis is a term used in the early days of computing science for the difficulty of writing useful and efficient computer programs in the required time. The software crisis was due to the rapid increases in computer power and the complexity of the problems that could now be tackled. With the increase in the complexity of the software, many software problems arose because existing methods were inadequate.

  • wikipedia(software crisis) -

소프트웨어 위기란 결국 하드웨어 발전 속도를 소프트웨어 발전 속도가 따라가지 못해 발생한 문제이다. 이를 아래와 같이 비유할 수 있다.

여태까지 사람들은 자동차를 개발하고, 자동차 운전수를 양성하고 있었다. 그런데 자동차가 급격히 개발되어서 하늘도 날 수 있는 대형 항공기가 되어 버린 것이다. 대형 항공기가 개발되었기에 사람들은 항공기를 타고 싶어한다. 그러나 조종석에는 기존의 자동차 운전수를 배치해야 한다. 이때 고성능 운전 수단을 경험해보지도 못한 운전수는 과연 일을 잘 해낼까?

여기서 자동차, 대형 항공기는 하드웨어에 대응되고, 운전수는 소프트웨어에 대응된다. 이렇듯 갑작스럽게 발전된 하드웨어를 기존의 소프트웨어가 제대로 운영해낼 리가 없는 것이다. 왜냐하면 향상된 하드웨어는 높은 복잡도의 소프트웨어를 요구하는데, 적용하는 방법은 복잡도가 낮았던 시절과 동일한 것을 사용하기 때문이다.

문제 사항

이러한 소프트웨어 위기는 다음과 같은 구체적인 문제들을 만들어냈다.

  1. 비용 초과
  2. 개발 기간 초과
  3. 품질 낮은 소프트웨어
  4. 비효율적인 소프트웨어
  5. 요구사항 불만족
  6. 프로젝트 관리의 어려움
  7. 코드 유지보수의 어려움
  8. 절대로 완성을 못시키는 소프트웨어 (vapoware, 베이퍼웨어)

소프트웨어 공학

공학은 문제를 해결하는 학문이라고 배웠다. 그리고 소프트웨어 위기라는 소프트웨에서의 문제도 배웠다. 이제 공학을 소프트웨어의 문제를 해결하기 위한 학문인 소프트웨어 공학에 대해서 논한다.

소프트웨어 공학에서는 소프트웨어 위기에서 대두된 문제들에 관심을 두고 해결하려 한다. 즉, 다음과 같은 사항들을 관리한다.

  1. 비용
  2. 개발 기간
  3. 품질
  4. 효율
  5. 요구 사항
  6. 프로젝트 관리
  7. 코드 유지 보수
  8. 제품 배포

이때 어떤 새로운 방법론을 만들어서 위의 문제를 해결하지 않는다. 기존의 제품 생산 시에 사용했던 공학적 기법들을 적용한다. 그래서 소프트웨어 공학 책을 보면 건축 설계와 소프트웨어 설계를 비교하는 대목이 자주 보이는 이유도 이런 배경 때문이다.

No Silver Bullet

소프트웨어 공학을 통해 여러 방법이 나오게 되었다. 그러나 한 가지 중요한 점이 있다. 당연할 수도 있겠지만 만능 방법론이란 없다는 것이다. 그렇기에 필요 및 상황에 따라서 적절한 방법을 도입해야 한다. 이런 것을 “은탄환은 없다”라는 말로 비유하기도 한다.

정리

하드웨어와 소프트웨어 간의 발전 속도 차이로 인해서 소프트웨어 개발 시에 문제점들이 나오게 되었다. 그런 문제점들로 인해 소프트웨어 개발의 위기라 하여 Software crisis라는 단어가 나오기에 이른다.

전통적으로 공학은 주어진 문제를 해결하는 학문이었다. 그렇기에 소프트웨어 위기에도 공학이 적용되었다. 이때, 소프트웨어에 적용된 공학을 구체적으로 소프트웨어 공학이라고 부른다.

소프트웨어 공학은 새로운 방법론을 가져와서 문제를 해결하기 보단, 기존에 존재했던 제조 및 생산 시에 사용하던 방법론들을 가져왔었다. 왜냐하면 소프트웨어 위기 자체가 소프트웨어 개발 시에 나타난 문제점들이었기 때문이다.

그리하여 여러 방법론이 나오게 되었지만, 만능 방법론이란 없다는 것이 정설이 되었다. 그래서 주어진 상황마다 적절하게 맞는 방법을 적용해야 한다. 그리고 만능 방법론이 없다는 것을 "There is No Silver Bullet."이란 말로 비유하기도 한다.

profile
Try again, Fail again, Fail better

0개의 댓글