소프트웨어 위기
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
소프트웨어 위기는 1968년 처음 사용된 용어로, 소프트웨어 개발 과정에서 발생하는 문제들을 지칭한다. 컴퓨터 성능 향상에 따라 소프트웨어의 복잡성이 증가하고, 개발 비용 상승, 일정 지연, 품질 저하 등의 증상이 나타났다. 이러한 위기에 대응하기 위해 객체 지향 프로그래밍, 애자일 개발 프로세스 등 다양한 방법론이 개발되었지만, 대규모 프로젝트에서는 여전히 어려움이 존재한다. 최근에는 임베디드 시스템의 소프트웨어 관련 문제 증가로 인해 임베디드 시스템 소프트웨어 위기가 대두되고 있으며, 이에 대한 해결책으로 IT 계열 개발 방식 도입, 펌웨어 공통화, 인재 양성 등이 제시되고 있다.
더 읽어볼만한 페이지
- 소프트웨어 품질 - 신뢰성 공학
신뢰성 공학은 제품이나 시스템이 정해진 기간 동안 지정된 조건에서 의도된 기능을 수행할 확률을 다루는 공학 분야이며, 확률, 의도된 기능, 기간, 조건을 고려하여 시스템의 신뢰성을 높이고, 신뢰성 시험 및 다양한 기법을 활용하여 안전 공학 및 제조업 분야에서 중요한 역할을 한다. - 소프트웨어 품질 - 정확성
프로그램이나 시스템이 의도한 대로 작동하는지를 나타내는 컴퓨터 과학 및 철학의 개념인 정확성은 알란 튜링의 정지 문제와 같은 컴퓨터 과학의 근본적인 문제와 관련되어 철학적 논의의 대상이 된다. - 에츠허르 데이크스트라 - 교착 상태
교착 상태는 둘 이상의 프로세스가 자원을 점유하고 서로의 자원을 요청하여 더 이상 진행할 수 없는 상태를 의미하며, 상호 배제, 점유 대기, 비선점, 순환 대기 네 가지 조건이 모두 충족되어야 발생하고, 운영 체제는 이를 예방, 회피, 무시, 발견하는 방법으로 관리한다. - 에츠허르 데이크스트라 - 세마포어
세마포어는 데이크스트라가 고안한 정수 변수로, P/V 연산을 통해 자원 접근을 제어하고 동기화 문제를 해결하며, 계수 세마포어와 이진 세마포어로 나뉘어 멀티스레드 환경에서 자원 관리 및 스레드 동기화에 기여한다. - 소프트웨어 공학 - 통합 개발 환경
통합 개발 환경(IDE)은 코드 편집, 빌드, 디버깅 등 소프트웨어 개발에 필요한 여러 기능을 통합적으로 제공하는 응용 프로그램이다. - 소프트웨어 공학 - 소프트웨어 개발
소프트웨어 개발은 요구사항 분석, 설계, 코딩, 테스트, 배포, 유지보수를 포함하는 컴퓨터 프로그램 및 관련 데이터를 만드는 과정으로, 다양한 방법론과 도구가 사용되며, 개발자 외에도 다양한 전문가들이 참여한다.
소프트웨어 위기 | |
---|---|
소프트웨어 위기 | |
정의 | 소프트웨어 프로젝트의 고비용, 낮은 품질, 납기 지연 문제 |
다른 이름 | 소프트웨어의 위기 |
원인 | |
복잡성 증가 | 소프트웨어 규모 및 복잡성의 급격한 증가 |
기대치 상승 | 소프트웨어에 대한 사용자 및 사회적 기대치의 상승 |
개발 방법론 미흡 | 체계적인 소프트웨어 개발 방법론의 부재 |
숙련된 인력 부족 | 숙련된 소프트웨어 개발 인력의 부족 |
도구 부족 | 적절한 소프트웨어 개발 도구의 부족 |
영향 | |
프로젝트 실패 | 소프트웨어 프로젝트 실패 또는 취소 |
예산 초과 | 소프트웨어 개발 예산 초과 |
납기 지연 | 소프트웨어 개발 납기 지연 |
낮은 품질 | 낮은 품질의 소프트웨어 생산 |
유지보수 어려움 | 소프트웨어 유지보수의 어려움 |
신뢰성 문제 | 소프트웨어 신뢰성 문제 발생 |
해결 노력 | |
소프트웨어 공학 | 체계적인 소프트웨어 개발 방법론 연구 및 적용 |
개발 방법론 발전 | 구조적 프로그래밍, 객체 지향 프로그래밍, 애자일 방법론 등 다양한 개발 방법론 발전 |
도구 개발 | CASE 도구, 통합 개발 환경(IDE) 등 소프트웨어 개발 도구 개발 |
품질 관리 | 소프트웨어 품질 관리 기법 적용 |
인력 양성 | 소프트웨어 개발 전문가 양성 |
관련 용어 | |
소프트웨어 공학 | 소프트웨어 공학 |
개발 방법론 | 개발 방법론 |
품질 관리 | 품질 관리 |
CASE 도구 | CASE 도구 |
통합 개발 환경 | 통합 개발 환경 (IDE) |
2. 용어
'소프트웨어 위기'라는 용어는 1968년 독일 가르미슈파르텐키르헨에서 열린 첫 번째 NATO 소프트웨어 공학 회의에서 F. L. 바우어가 처음 사용했다.[9] 1972년 에츠허르 데이크스트라의 튜링상 수상 연설[10]에서도 이 용어가 등장하였다.
에츠허르 데이크스트라는 1972년 튜링상 수상 연설에서 소프트웨어 위기에 대해 다음과 같이 언급했다.[10]
소프트웨어 위기를 "길들이고자" 다양한 과정과 방법론이 지난 수십 년간 개발되어 다양한 수준의 성공을 보였다. 그러나 널리 알려진 바로는 "만병 통치약은 없다" 즉, 단일한 접근 방식으로 모든 프로젝트의 초과와 실패를 방지할 수는 없다는 것이다. 일반적으로, 소프트웨어 프로젝트가 대규모이고, 복잡하고, 요구 조건이 명확하지 않고, 낯선 측면을 내포할 경우 여전히 사실상 커다랗고 예측 불가능한 문제에 취약하다.[1][2][5][6]
하드웨어 비용 감소는 컴퓨터 이용 영역 확대를 가져왔고, 그로 인해 소프트웨어 수요는 계속 증가했다. 한편, 컴퓨터가 다양한 상황에서 정보 처리에 활용되면서 점점 더 복잡한 소프트웨어가 요구되었고, 소프트웨어 개발 비용은 상승했다. 이러한 경향이 지속되면 소프트웨어 개발 생산성을 근본적으로 향상시키지 않는 한, 소프트웨어 공급이 증가하는 수요를 따라가지 못하고, 충분한 품질을 충족하는 소프트웨어 제공이 어려워지며, 결국에는 요구되는 사양을 충족하는 소프트웨어 개발이 어려워질 것으로 예측되었다.
3. 원인과 증상
소프트웨어 위기의 원인은 전반적인 소프트웨어 프로세스의 복잡성과 소프트웨어 공학이 전문분야로서 상대적으로 미성숙한 점에 관련되어 있다. 구체적인 원인과 그로 인한 증상은 다음과 같다.원인 증상
4. 대응 방안
해결책으로 여러 소프트웨어 공학 수단을 더 적극적으로 활용할 수 있다.
그러나 프레데릭 브룩스가 『은탄환은 없다』에서 언급한 바와 같이, "본질적인 복잡성"에 대해 생산성을 향상시키는 기법은 존재하지 않는다고 알려져 있다.
5. 임베디드 시스템 소프트웨어 위기
최근 소프트웨어를 포함하는 임베디드 시스템이 증가하면서 관련 사고와 문제가 증가하여 사회적으로 작지 않은 영향을 끼칠 가능성이 커지고 있는데, 이 또한 소프트웨어 위기와 관련되어 있다.[11][12]
5. 1. 원인
최근에는 임베디드 시스템의 소프트웨어 관련 사고나 문제가 증가하여 사회적으로 큰 영향을 미치는 경우가 늘어나면서, 이 또한 '''소프트웨어 위기'''라고 불린다[7][8]. 원인으로는 다음과 같은 것들이 꼽힌다.- 임베디드 시스템에는 실시간성이나 대상 하드웨어에 대한 이해 등 광범위하고 고도화된 기술이 요구되지만, 컴퓨터 관련 직종에서 흔히 보이는 열악한 노동 조건(데스마치, IT 업계 기피 현상, 디지털 노가다 참조)으로 인해 이직자가 많아 베테랑이 부족하고 필요한 기술 수준까지 올라가지 못한다.
- 휴대 전화나 디지털 가전으로 대표되는 소프트웨어 규모의 비약적인 증가에 대해, 하드웨어 리소스의 제약이나 실시간성이 요구되는 점(임베디드 시스템 참조) 때문에 IT 계열과 같은 방법이 통하지 않는다.
- 대상 제품의 개발 사이클 단기화
- 이과 기피 현상이나 아키하바라 등 전기 거리나 모형점의 감소 및 가전 제품의 블랙 박스화로 전자 공작이나 하드웨어 관련에 관심을 가질 기회가 줄어들고 있다.
5. 2. 대책
최근 소프트웨어를 포함하는 임베디드 시스템이 증가하면서 관련 사고와 문제가 증가하고, 사회적으로 작지 않은 영향을 끼칠 가능성이 커지고 있는데, 이 역시 소프트웨어 위기와 관련되어 있다.[11][12]대책으로는 다음과 같은 것들이 있다.
- 단기적인 경쟁 입찰보다는 장기적인 전략이 필요하다.
- 소프트웨어 공학의 근본적인 문제점(요구사항, 재사용, 척도, 시각화 등)을 다시 살펴봐야 한다.
- 소프트웨어 시험을 자동화해야 한다.[13]
- 규모 가변성 프로세스와 인프라를 도입해야 한다.[13]
- 마이크로소프트 윈도우 CE와 임베디드 리눅스 등 IT 계열에 더 가까운 OS를 탑재하여 IT 계통 개발 방안을 쉽게 도입하고, IT 계열 소프트웨어 엔지니어를 활용해야 한다.
- 여러 회사에서 펌웨어를 공통화하여 공동 개발해야 한다.
- 인재 파견 회사에서 임베디드 엔지니어 양성 프로그램을 실시해야 한다.
최근에는 임베디드 시스템의 소프트웨어 관련 사고나 문제가 증가하여 사회적으로 큰 영향을 미치는 경우가 늘어나면서, 이 또한 '''소프트웨어 위기'''라고 불린다.[7][8]
원인으로는 다음과 같은 것들이 꼽힌다.
- 임베디드 시스템에는 실시간성이나 대상 하드웨어에 대한 이해 등 광범위하고 고도화된 기술이 요구되지만, 컴퓨터 관련 직종에서 흔히 보이는 열악한 노동 조건(데스마치, IT 업계 기피 현상, 디지털 노가다 참조)으로 인해 이직자가 많아 베테랑이 부족하고 필요한 기술 수준까지 올라가지 못한다.
- 휴대 전화나 디지털 가전으로 대표되는 소프트웨어 규모의 비약적인 증가에 대해, 하드웨어 리소스의 제약이나 실시간성이 요구되는 점(임베디드 시스템 참조) 때문에 IT 계열과 같은 방법이 통하지 않는다.
- 대상 제품의 개발 사이클이 단기화되고 있다.
- 이과 기피 현상이나 아키하바라 등 전기 거리나 모형점의 감소 및 가전 제품의 블랙 박스화로 전자 공작이나 하드웨어 관련에 관심을 가질 기회가 줄어들고 있다.
참조
[1]
웹사이트
NATO Software Engineering Conference 1968
http://homepages.cs.[...]
2017-04-26
[2]
웹사이트
Report on a conference sponsored by the NATO SCIENCE COMMITTEE Garmisch, Germany, 7th to 11th October 1968
http://homepages.cs.[...]
2017-04-26
[3]
웹사이트
E.W.Dijkstra Archive: The Humble Programmer (EWD 340)
http://www.cs.utexas[...]
2017-04-26
[4]
웹사이트
The Software Crisis
http://www.chris-kim[...]
2013-02-12
[5]
문서
Report about the NATO Software Engineering Conference dealing with the software crisis
http://homepages.cs.[...]
[6]
문서
E. W. Dijkstra Archive
http://www.cs.utexas[...]
[7]
뉴스
"#2532ソフトウエア危機"
http://www.nhk.or.jp[...]
クローズアップ現代
2008-02-05
[8]
뉴스
(第1回)古くて新しい問題、それがソフト危機
https://xtech.nikkei[...]
日経ITPro
[9]
문서
NATO Software Engineering Conference 1968
http://homepages.cs.[...]
[10]
웹인용
"''겸손한 프로그래머''"
http://www.cs.utexas[...]
2009-06-30
[11]
웹인용
일본내 소프트웨어 공학의 도전
https://web.archive.[...]
2004-05-26
[12]
저널
Coping with Embedded Software Crisis using Real-Time Operating Systems and Embedded Middleware
http://redwood.snu.a[...]
IEEE
2000-08
[13]
웹인용
Addressing the hidden embedded software crisis in the industry
http://www.eetasia.c[...]
2007-06-08
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com