1.1. 소프트웨어 공학

정처기; 정보처리기사 필기 공부

by 짧은 수필

소프트웨어 공학이란?

- 소프트웨어 위기를 극복하는 체계적인 접근법

소프트웨어 공학(Software Engineering, SE)은 단순히 코딩하는 것을 넘어,고품질의 소프트웨어를 효율적으로 개발하고 관리하기 위한 모든 체계적인 접근 방안을 의미합니다.




1. 소프트웨어 위기와 소프트웨어 공학의 탄생

소프트웨어 공학이 왜 등장했는지 이해하려면,먼저 '소프트웨어 위기(Software Crisis)'라는 개념을 알아야 합니다.


1960년대 중반, 컴퓨터의 보급이 확산되면서소프트웨어의 수요는 폭발적으로 증가했지만,당시의 개발 방식으로는 이러한 수요를 감당하기 어려웠습니다.다음과 같은 문제들이 심각하게 나타났죠.


높은 개발 비용: 소프트웨어 개발에 막대한 비용 소요

개발 지연: 프로젝트가 계획된 기간을 훨씬 초과하여 지연되는 경우가 빈번

낮은 품질: 버그가 많고 사용하기 어려운 소프트웨어가 많았음

유지보수 어려움: 한번 개발된 소프트웨어를 수정하거나 개선하는 것이 매우 어려웠음

사용자 불만: 개발된 소프트웨어가 사용자의 요구사항을 제대로 반영하지 못하는 경우가 많았음


이러한 문제들을 총체적으로 '소프트웨어 위기'라고 불렀고,

이 위기를 극복하기 위한 방안으로 연구되고 발전하기 시작한 학문이 바로 소프트웨어 공학입니다.소프트웨어 공학은 이러한 위기를 극복하고,소프트웨어의 품질과 생산성을 향상시키려는 목적을 가지고 있습니다.이를 위해 다양한 방법론, 도구, 그리고 관리 기법들을 연구하고 적용합니다.




2. 다양한 관점에서 본 소프트웨어 공학의 정의

소프트웨어 공학은 그 중요성만큼이나 다양한 전문가와 기관에서 여러 형태로 정의하고 있습니다.각각의 정의를 살펴보면 소프트웨어 공학의 본질을 더욱 깊이 이해할 수 있습니다.


IEEE(국제전기전자공학회)의 소프트웨어 공학 표준 용어사전:
"소프트웨어의 개발, 운용, 유지보수, 폐기 처분에 대한 체계적인 접근 방안"
이 정의는 소프트웨어 공학이 단순히 개발 단계에만 초점을 맞추는 것이 아니라,
소프트웨어의 생명주기(Life Cycle) 전체에 걸쳐
체계적이고 규율적인 접근을 강조한다는 것을 보여줍니다.
기획부터 개발, 실제 사용(운용), 개선(유지보수), 그리고 수명이 다한 후의 처리(폐기)까지
모든 과정이 소프트웨어 공학의 범위에 포함됩니다.


Fairley의 정의:
"지정된 비용과 기간 내에 소프트웨어를 체계적으로 생산하고 유지보수하는 데 관련된 기술적이고 관리적인 원리"
Fairley는 소프트웨어 개발에 있어서
비용(Cost)과 기간(Time)이라는 제약 조건을 명확히 제시합니다.
즉, 한정된 자원 내에서 효율적으로 소프트웨어를 생산하고,
나아가 이후에도 지속적으로 관리하고 개선하는 데
필요한 기술적 측면과 관리적 측면 모두를 아우르는 원리들을 소프트웨어 공학으로 봅니다.


Boehm의 정의:
"과학적인 지식을 소프트웨어 설계와 제작에 응용하는 것이며 이를 개발, 운용, 유지보수하는 데 필요한 문서 작성 과정"
Boehm은 소프트웨어 공학을
과학적인 지식을 기반으로 소프트웨어를 설계하고 만드는 과정으로 정의합니다.
특히 문서 작성 과정을 강조하는데,
이는 소프트웨어 개발이 주먹구구식으로 이루어지는 것이 아니라,
모든 과정이 명확하게 기록되고 관리되어야 함을 시사합니다.
체계적인 문서화는 프로젝트의 투명성을 높이고,
유지보수를 용이하게 하며, 지식 공유를 가능하게 합니다.




3. 왜 소프트웨어 공학을 공부해야 할까요?

소프트웨어 공학을 이해하는 것은 단순히 시험을 넘어,실제 소프트웨어 개발 현장에서 매우 중요합니다.


품질 향상: 체계적인 방법을 통해 버그를 줄이고,
사용자에게 더 좋은 경험을 제공하는 소프트웨어를 만들 수 있습니다.


생산성 증대: 효율적인 개발 프로세스와 도구 사용으로 시간과 비용을 절약하고,
더 많은 기능을 더 빨리 구현할 수 있습니다.


위험 관리: 프로젝트 실패의 가능성을 줄이고,
예측 불가능한 문제에 대비할 수 있는 능력을 키울 수 있습니다.


협업 효율: 표준화된 방법론을 통해 팀원 간의 의사소통과 협업을 원활하게 합니다.




소프트웨어 공학은 현대 사회에서 소프트웨어가 차지하는 중요성을 고려할 때,IT 전문가에게 필수적인 지식 분야입니다.



keyword
매거진의 이전글0.1. 정보처리기사 과목 및 공부 팁, 자료 - 필기