소프트웨어 공학이란 무엇일까?

위키에서는 SEBOK을 인용하여 다음과 같이 정의하고 있다. 링크

소프트웨어의 개발, 운용, 유지보수 등의 생명 주기 전반을 체계적이고 서술적이며 정량적으로 다루는 학문이다. 즉, 공학을 소프트웨어에 적용하는 것이다.

다시 말해, 소프트웨어 개발을 보다 효과적이고 효율적으로 하기 위한 다양한 접근을 하는 것이다.

소프트웨어 공학의 시작은 현장의 필요에서 나왔다. 소프트웨어 개발은 생각보다 어려워서 많은 문제들이 발생했다. 이를 해결하려는 다양한 시도들이 있었고 이를 체계화하면서 시작되었다.

소프트웨어 공학의 목표는 무엇인가?

소프트웨어 공학의 목표는 품질(Quality), 비용(Cost), 납기(Delivery)의 3가지 이다. 즉, 좋은 품질의 제품을 적은 노력으로 빠른 기간에 개발하도록 돕는 것이다.

소프트웨어 공학의 특징은?

소프트웨어 공학은 현장 중심이다.
소프트웨어 공학은 태생 자체가 실무 현장에서 시작되었다. 지금도 다르지 않다.
소프트웨어 엔지니어들은 개발 실무에서 접하게 되는 새로운 도전들을 직면하고, 다양한 문제점들을 해결하기 위해 노력한다. 그 과정에서 모범 사례들(Best Practice)이 나오게 되고, 여기에서 교훈(Lesson learned)을 얻게된다. 이를 정리하면 결국 소프트웨어 공학 요소들이 된다.
또한 이러한 원리들을 현장에 적용하고 그 효과를 확인하여 검증한다.

소프트웨어 공학은 프로세스나 문서를 만드는 고리타분한 작업도 아니며, 아키텍트 같은 숭고하고 먼나라의 이야기도 아니다. 오늘 우리 회의실에서 나눠지는 치열한 토론속에 적용되고, 노트북에서 구현하고 있는 코드 속에 담겨지는 것들이다.

좋은 원리를 발견하고, 잘 적용하여, 효과를 보는 것이 또한 우리의 임무이다.

profile
Field-oriented software engineering

0개의 댓글