반응형
소프트웨어공학.md

소프트웨어 공학이란?




소프트웨어 공학이라는 말을 들어본 적이 있는가? 필자는 컴퓨터공학을 전공하고 있다. 그러나 '소프트웨어공학’이라는 과목이 있다는 것을 보고, 소트웨어 공학이라는 것을 처음 알게되었다. 현재 소프트웨어 공학을 공부하면서 드는 생각은 개발과 관련된 일을 하려면 필수적으로 알아야하는 부분이라는 것이다.


1. 정의


소트프웨어 공학은 간단히 말하자면, 소프트웨어에 공학을 적용하는 것이다. 그러면 소트프웨어는 무엇이며, 공학은 무엇인가?

  • 소프트웨어 : 프로그램, 프로그램의 개발, 운용, 보수에 필요한 정보 일체(소프트웨어 생산 결과물 일체)
  • 공학: 과학적 지식을 인간의 생활을 향상시키기 위해 창의적으고 실질적으로 사용하는 것

대충 소프트웨어 공학에 대한 감이 오는가? 나도 위에 정의만 봤을 때, 정확하게 잘 이해되지 않았다. 아래에는 여러사람들이 소프트웨어 공학에 대해서 나름 정의한 내용이다. 이해하는데 도움이 될 것이다.

질 좋은 소프트웨어를 경제적으로 생산하기 위하여, 공학, 과학 및 수학적 원리와 방법을 적용하는 것 - Watts Humphrey,SEI

소프트웨어의 개발, 운용, 유지보수 및 소멸에 대한 체계적인 접근 방법 - IEEE Computer Society

품질, 효율, 비용, 인정에 관한 공학적인 접근 원리 - F.Brooks


2. 왜 필요한 것인가?


소프트웨어 공학이 어떤 것이라는 것을 어느정도 알게되었다. 그러면 궁금해진다. 도대체 소프트웨어 공학이 왜 필요한 것일까? 그리고 어디에 써먹는 것일까?

결론만을 살펴보면, 좋은 소프트웨어를 잘 개발하고, 잘 관리하기 위해서이다. 굉장히 추상적이다. 그러면 좋은 소프트웨어는 무엇이고, 잘 개발한 다는 것이 무엇인지, 잘 관리한다는 것이 어떻게 관리하는 것인지 자연스럽게 궁금증을 가지게 된다.

깊게 들어가면 많은 내용들이 있지만 간단하게만 살펴보면,

  • 좋은 소프트웨어란 사용자의 요구를 잘 구현한 신뢰성있는 소프트웨어이다.
  • 잘 개발 한다는 것은 적절한 개발 프로세스을 적용하는 것이다.
  • 잘 관리한다는 것은 소프트웨어가 잘 죽지않으며, 유지보수와 재사용이 쉬운 것이다.


3. 소프트웨어의 특징


소프트웨어 공학은 다른 공학과는 다른 특징들을 가지고 있다.

  • 장수(Longevity) : 소프트웨어는 오래된다고 해서 자체적으로 성능이 떨어지거나, 부식되지 않는다.
  • 복제 가능(Duplicability): 생산품을 공장에서 계속 생산해야하는 다른 공학과는 달리 소프트웨어는 한번 만들어지면 계속 복제할 수 있다.
  • 응용에 의존(Application dependability) : 아예 새로운 기능을 가진 소프트웨어를 만드는 것보다는 기존의 있는 소프트웨어를 응용하는 부분이 많다.


4. 마무리하며


필자도 소프트웨어 공학에 대해서 이제 막 배우기 시작했다. 점점 배우면서 느끼는 것은 소프트웨어 관련직을 하려면 필수적으로 알아야하는 부분이라는 것과 발전가능성이 많은 분야라는 것이다. 앞으로도 소프트웨어 공학에 대해서 좋은 내용이 있으면 지속적으로 블로그에 포스팅할 예정이다.


참고


반응형

'programming' 카테고리의 다른 글

[안드로이드]프로세스와 스레드  (0) 2015.11.04
소수 구하는 알고리즘  (0) 2015.11.04
Android SDK란?  (0) 2015.10.29
Platform과 Framework의 차이는?  (2) 2015.10.29
안드로이드란?  (1) 2015.10.28

+ Recent posts