본문 바로가기
학교 공부/소프트웨어공학

소프트웨어공학 - 소프트웨어공학의 개념, 필요성

by krapoi 2022. 3. 14.
반응형

*학교에서 공부하는 내용을 정리하여 필자가 이해한 내용을 바탕으로 쓰는 글입니다.

 

프로그래밍에 대해 알아가면서 소프트웨어공학이라는 학문도 배우게 되었다.

선배들의 조언을 들어보면 소프트웨어공학이 중요하다고 한다.

 

그러니 이 소프트웨어공학이 뭔지 개념을 알아보고 필요성도 알아보도록 하자.

 

1. 소프트웨어공학(Software + Engineering) 이란 무엇일까?

우선 소프트웨어공학은 소프트웨어(Software)와 공학(Engineering)이 합쳐진 말이다. 그러니 두 단어를 먼저 알아보자.

 

Software = 컴퓨터에게 동작 방법을 지시하는 명령어 집합의 모임이다.

 

Engineering = 공학 분야의 응용과학 기술을 연구하는 학문 또는 과학적, 경제학적, 사회적 원리와 실용적 지식을 활용하여 새로운 제품, 도구 등을 만드는 것에 관한 학문.

 

사전적 의미로는 이러한 뜻을 가진다.

그러면 이러한 의미를 더하면 소프트웨어 공학의 뜻이 대충 유추된다,

컴퓨터에게 동작 방법이나 지시하는 명령어의 기술을 연구하는 학문 또는 새로운 제품 도구를 만드는 학문.

 

이렇게 단어마다 뜻을 찾아봤는데,

Engineering은 어느 정도 자세히 나와있는 반면 Software는 간단히 소개되어있다. 이 소프트웨어에 대해 좀 더 자세히 알아보자.

 

1) 소프트웨어

- 프로그램과 소프트웨어의 차이사실 우리는 일상 속에서 소프트웨어와 프로그램을 혼용하여 사용하곤 한다. 하지만 둘은 조금 다른 뜻을 가진 단어들이다.프로그램(Program) = 프로그래밍한 소스코드 그 자체

 

소프트웨어(Software) = 프로그램 + 개발 과정에서 생성되는 모든 산출물(자료구조, DB구조, 테스트 결과...)

 

즉 프로그램은 소프트웨어의 하위 개념인 것이다.

 

간단히 그림으로 나타내자면,

참고로 학습지에 진짜 그린 그림

이런 식으로 나타 낼 수 있다.

 

2) 소프트웨어의 특징

이제 소프트웨어에 대한 뜻은 알았으니 특징을 알아보자.

 

소프트웨어는 제조가 아닌 개발이다. 그 이유는 아래와 같다.

- 제조가 아닌 개발

  • 제조 : 정해진 틀에 맞춰 일정하게 생산, 많은 인력 필요, 능력별 결과물 차이 근소(적음)
  • 개발 : 개인 능력별 결과물 차이가 큼

또한 소프트웨어는 닳지 않는다. 하긴 이게 무슨 기계도 아니고 쓴다고 닳진 않을 거다.

- 소모가 아닌 품질 저하

  • 소프트웨어 : 오래 사용 시 부품이 닳지 않음, 고장 발생 빈도 낮음, 기능 동일
  • 오류 해결 후 큰 문제없이 사용 가능
  • 사용자의 요구가 계속 발생, 유지보수 중요

 

3) 소프트웨어 개발의 어려움

이제 특징까지 알아보았다. 그럼 이제 어려움에 대해 알아보자.

이건 좀 간단한데 어디서 많이 들어본 소리이기도 하다.

  1. 개발과정이 복잡하다. (솔직히 아키텍처 지키는 것만 해도 머리 터짐)
  2. 참여 인력이 많다 -> 의사소통, 협력의 문제
  3. 개발 기간이 길다 -> 진행상황 파악의 문제, 비용 산정의 문제

이 정도가 있다.

 

4) 공학의 의미

여기서 다시 소프트웨어의 공학의 의미를 제대로 알게 된다.

내가 아까 예상했던 의미와 조금 비슷하긴 하다.

일단 공학의 의미부터 알아보자.

 

공학의 의미 : 한정된 기간, 비용의 제약

아까 알아본 사전적 의미와는 조금 다르다.

 

***-소프트웨어 공학이란?

- 품질 좋은 소프트웨어 개발을 위해 SW 개발 전 과정에서 공학, 과학 및 수학적 원리와 방법을 적용하여 필요한 이론과 기술 및 도구 들에 관해 연구하는 학문

 

이제 소프트웨어에 대한 개념은 다잡은 듯하다.

그러면 필요성에 대해 알아보자.

 

2. 소프트웨어 공학은 왜 배울까? (필요성)

뭐 앞서 말한 소프트웨어의 공학의 뜻에 다나와 있긴 하지만,

한번 더 정리해보자.

 

***- 소프트웨어의 필요성

소프트웨어 개발의 어려움을 이해하고 효율적인 개발을 통해 생산성을 향상시켜 고품질의 소프트웨어를 만들기 위함.

 

이렇게 소프트웨어 공학에 개념과 필요성에 대해 정리해 보았다.

주변에서 소프트웨어 공학이 중요하다 하니, 열심히 공부해 봐야겠다.

 

반응형