소프트웨어 공학

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
에어버스 A-380 은 상당한 양의 소프트웨어를 사용하여 "종이 없는" 조종석을 창조하였다. 소프트웨어 공학으로 항공기 소프트웨어를 이루는 수백만행의 소스코드를 변환하고 계획하였다.

소프트웨어 공학(-工學, 영어: software engineering)은 소프트웨어의 개발, 운용, 유지보수 등의 생명 주기 전반을 체계적이고 서술적이며 정량적으로 다루는 학문이다; 즉, 공학을 소프트웨어에 적용하는 것이다.[1]

소프트웨어 공학의 영어 낱말 software engineering이라는 용어가 처음 나타난 곳은 1968년 나토 소프트웨어 공학 학회로, 당시에는 소프트웨어 위기에 관해 사람들이 주의를 기울여 생각할 것을 장려하기 위해서였다.[2] [3] 그 이후로, 하나의 직업으로서, 또한 학문의 한 분야로서 꾸준히 품질, 비용, 유지 보수성, 빌드 속도가 개선된 소프트웨어를 창조하는데 전념해 왔다. 이 분야는 그 자매 분야인 공학에 비해 아직도 상대적으로 젊은 분야로, 소프트웨어 공학'이란 실제로 무엇이며 전통적인 공학의 정의에 부합하는지에 대한 논의가 이루어지고 있다. 소프트웨어를 단순히 프로그래밍으로만 보는 한계를 벗어나는 것으로부터 유기적으로 성장한 분야이다. 최근의 흐름으로는 관점 지향(Aspect), 애자일(Agile), 모델 주도(Model-Driven) 등이 있다.

역사[편집]

1941년 현대 디지털 컴퓨터가 처음 나타났을 때, 연산 명령은 배선으로 주어졌다. 실무진이 금세 깨달은 것은 이러한 설계 방식이 유연하지 않다는 것이었고 "프로그램 내장 방식" 인 폰 노이만 구조를 개발하였다. 따라서 최초의 구분이 "하드웨어"와 "소프트웨어" 사이에 주어졌고, 전산의 복잡성을 다루기 위해 추상화가 동반되었다.

프로그래밍 언어는 1950년대 나타나기 시작하였으며 이는 또한 추상화를 향한 또 하나의 큰 한걸음이 되었다. 주요 언어 즉 포트란, 알골, 코볼 등이 1950년대 말 배포되어 과학, 알고리즘, 경영상의 문제를 각각 취급하였다. E. W. 데이크스트라는 그의 씨앗과 같은 논문 "Go to 문은 해로운 것으로 생각된다" 를 1968년 발표하였고[4] 데이빗 파르나스는 열쇠가 된 개념인 모듈성정보 은폐를 1972년 소개하여[5] 프로그래머들이 영원히 증가하는 소프트웨어 시스템의 복잡성을 다루는 것에 도움을 주었다. 하드웨어를 관리하는 소프트웨어 시스템인 운영 체제 또한 소개되었고, 그 중 가장 눈에 띄는 것은 1969년에 등장한 유닉스였다. 1967년에는 시뮬라 언어가 객체 지향 프로그래밍 패러다임을 소개하였다.

이러한 소프트웨어의 진보에 발맞추어 컴퓨터 하드웨어도 발전하였다. 1970년대 중반 마이크로컴퓨터가 소개되어 취미로 컴퓨터를 구하고 그 소프트웨어를 작성하는 것이 경제적으로 가능해졌다. 이는 또한 이제는 잘 알려진 개인용 컴퓨터 또는 PC와 마이크로소프트 윈도로 이어졌다. 소프트웨어 개발 프로세스 또는 SDLC 또한 나타나기 시작하여 1980년대 중반에는 중앙 집중화된 소프트웨어 개발을 위한 일치된 합의로서 자리매김하였다. 1970년대 말과 1980년대 초 시뮬라에서 영감을 받은 몇 개의 새로운 객체 지향 프로그래밍 언어가 나타났다: C++, 스몰토크, 오브젝티브-C.

오픈 소스 소프트웨어는 90년대 초 나타나기 시작하여 리눅스와 "바자 bazaar" 또는 분산형 소프트웨어 개발을 소개하였다.[6] 그러고 나서 인터넷월드와이드웹이 90년대 중반을 강타하여 소프트웨어의 공학을 다시 한번 뒤흔들었다. 시스템 설계 방식의 시계추가 분산 시스템쪽으로 기울었고 자바 프로그래밍 언어가 가상 머신으로 추상화의 또 한발짝을 내딛었다. 참여한 프로그래머들의 공동 작업으로 마련된 민첩 성명서는 더 날렵한 개발 프로세스로 더 저렴하고 신속한 개발을 지향하였다.

현재의 소프트웨어 공학의 정의는 오늘날의 실무종사자들이 더 싸게 크게 빠르게 소프트웨어를 개발하고자 수많은 어려움을 뚫고 전진함에 따라 아직도 논쟁 중에 있다.

교육[편집]

프로그래밍에 관한 지식이 소프트웨어 공학자가 되기 위한 주요한 선수 요건이다. 그러나 그것만으로는 부족하다. 많은 소프트웨어 공학자들은 컴퓨터 과학 학위를 가지고 있으며 진정한 소프트웨어 공학자의 부족을 지적하는 의견[7]도 있다. 왜냐하면 소프트웨어 공학 프로그램이 고등 교육에 빠져 있었기 때문이다. 그러나 새로이 소프트웨어 공학 학위가 특히 학부 이후 학위로 소개되었다. 표준 국제 학부 교육과정은 CCSE에서 정의한 바 있다.

2004년 IEEE 컴퓨터 학회SWEBOK을 내놓았고 소프트웨어 공학자가 알아야할 지식의 범위에 대한 표준 ISO/IEC 24773으로 채택되었다.[8]

유럽 위원회에라스무스 문두스 프로그램 안에 소프트웨어 공학 유럽 석사 학위를 유럽내외로부터의 학생들에게 제공하고 있다.[9]. 이는 복수 전공 프로그램으로 유럽 내의 4개 학교가 관련되어 있다.

세부 분야[편집]

그레이스 호퍼하버드 대학교에 설치된 하버드 마크 II 컴퓨터로 작업하던 중, 동료들이 이 나방계전기에 끼어 연산을 방해하고 있던 것을 발견하였는데, 이에 그녀가 그들이 시스템에서 "벌레를 잡고 있다"고 표현하였다. 하여 버그라고 하는 유명한 단어가 탄생.

소프트웨어 공학은 10개의 분야로 나뉜다.[1]

같이 보기[편집]

참고 문헌[편집]

  1. SWEBOK executive editors, Alain Abran, James W. Moore ; editors, Pierre Bourque, Robert Dupuis. (2004). 《Guide to the Software Engineering Body of Knowledge - 2004 Version》. IEEE Computer Society, 1-1쪽. ISBN 0-7695-2330-7
  2. Peter, Naur, Brian Randell (7–11 October 1968). Software engineering: Report of a conference sponsored by the NATO Science Committee (PDF). 2008년 12월 26일에 확인.
  3. Randell, Brian (10 Aug 2001). The 1968/69 NATO Software Engineering Reports. 《Brian Randell's University Homepage》. The School of Computer Sciences, Newcastle University. 2008년 10월 11일에 확인. “The idea for the first NATO Software Engineering Conference, and in particular that of adopting the then practically unknown term "software engineering" as its (deliberately provocative) title, I believe came originally from Professor Fritz Bauer.”
  4. Dijkstra, E. W. (1968년 March월). Go To Statement Considered Harmful. 《Communications of the ACM》 11 (3): 147–148. doi:10.1145/362929.362947. 2008년 12월 26일에 확인.
  5. Parnas, David (1972년 December월). On the Criteria To Be Used in Decomposing Systems into Modules. 《Communications of the ACM》 15 (12): 1053–1058. doi:10.1145/361598.361623. 2008년 12월 26일에 확인.
  6. Raymond, Eric S. The Cathedral and the Bazaar. ed 3.0. 2000.
  7. McConnell, Steve (July 10, 2003). Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers. ISBN 978-0-321-19367-4.
  8. IEEE COMPUTER SOCIETY FIRST TO MARKET WITH SOFTWARE CERTIFICATIONS THAT MEET NEW ISO STANDARD. IEEE COMPUTER SOCIETY (27 Oct 2008). 2009년 6월 29일에 확인.
  9. EUROPA - Redirection