d라이브러리









두뇌산업에 가해지는 과학의 메스「소프트웨어 위기」를 극복한다

정보화사회의 꽃으로 불리는 소프트웨어, 소프트웨어 꽃이 만발한 미래를 창조하는 소프트웨어공학은 인공지능과 우주과학을 실현시킬 수 있는 강력한 도구이다.

지금 세계는 우리가 이제까지 경험해온 산업사회와는 근본적으로 다른 정보화사회로 급속히 변형되어가고 있다. 이 과정에서 정보산업은 인간의 의식구조, 생활환경은 물론, 경제사회 전반에 혁신적인 변화를 가져온다. 정보산업이란 컴퓨터 하드웨어 기술과 함께 인간의 사고방식을 체계적으로 집약시켜 필요한 정보를 처리해가면서 조직과 개개인의 의사 결정을 신속정확하게 도와주는 소프트웨어 기술에 토대를 두고 있다. 까닭에 소프트웨어는 '정보화사회의 꽃'이라고 표현되기도 한다.

꽃을 가꾸는 원예사업

컴퓨터 프로그램의 집합으로 생각할 수 있는 소프트웨어는 크게 시스팀 소프트웨어와 응용 소프트웨어로 구분된다. 시스팀 소프트웨어란 일반 고객이 요구하는 응용 소프트웨어가 쉽게 개발되도록 하드웨어의 기능을 최대한 활용, 운용될 수 있도록 환경을 조성해주는 매개체로서 각종 프로그램언어 운영체제 프로그램개발도구 제어프로그램 그리고 정보관리용 데이타베이스 등으로 나누어 생각할 수 있다.

컴퓨터를 사용하는 목적과 사용자층도 다양한만큼 응용 소프트웨어는 급여관리 인사관리 회계관리 문서편집 프로그램과 같이 일반업무 전산용인 범용 소프트웨어와 병원관리 호텔관리 학사관리 프로그램과 같이 특정한 분야의 사용층을 겨냥한 특정 소프트웨어로 재구분 할 수도 있다.

이토록 소프트웨어란 꽃의 종류가 다양한 만큼 정보화 시대의 원예사업 역시 여러 방향으로 면모를 갖추어 등장하고 있다.

"정보 입력을 저희가 해드릴까요?" 의 데이타 입력 사업과 "당신의 요구에 맞춰 개발해 드립니다"의 주문형 소프트웨어개발사업은 이미 1970년대 초반부터 정열을 쏟았던 사업이지만 1980년대부터는 "당신도 컴퓨터를 알아야 합니다"의 전산 교육 훈련사업, "다양한 상품이 있사오니 골라 사 가십시오"의 기성품 판매사업, "막대한 투자를 피하고 사용하는 만큼의 비용만 지불하세요"의 시간제 사업, "하드웨어와 소프트웨어의 구분없이 완벽한 시스팀을 제공해 드릴테니 열쇠만 꽂아 돌리세요"의 통합 해결책 사업 등이 인기 종목으로 나타나고 있다. 또한 "문제를 풀어드립니다"의 자문사업과  "무슨 정보가 필요하십니까?"의 정보은행사업 및 "당신의 전산실을 우리가 책임집니다"의 운영수탁사업 등도 서서히 고개를 들고 있는 실정이다.

쓰라린 좌절을 딛고서

그러나 소프트웨어개발이란 완벽치 못한 인간들의 생각을 정리해가며 무에서유를 창조하는 두뇌집약적 작업이므로 시행착오를 범하기 쉬우며, 이 과정에서 많은 투자와 시간을 요구한다. 이 까닭에 소프트웨어 개발자들의 꿈은 진정 사용자가 요구하는 양질의 소프트웨어 상품을 어떻게 하면 계획된 시간에 맞추어 짜여진 예산내에서 축적되는 기술을 최대한 활용해가며 적절한 조직과 인원으로 제작할 수 있을 것인가로 집약된다. 특히 막대한 인건비의 투자를 사업의 생명으로 감당해야 하는 소프트웨어 산업체에게 있어 이러한 꿈의 달성은 필연적이다.

하지만 안타깝게도 현실은 개발자들의 의욕과 노력과는 달리 개발 예산의 초과 집행과 완료 지연현상으로 일관되어 왔고 따라서 정보화시대로 접어드는 큰 관문의 하나로 '소프트웨어 위기'라는 달갑지 않은 어휘마저 산출하기에 이르렀다. 우수한 소프트웨어의 수요는 컴퓨터의 범용화로 급속히 신장하는데 비하여 생산성과 품질관리 기술은 저조하여 문제의 심각성이 있다는 이야기이다. 물론 소프트웨어개발 프로젝트들을 수행해가며 쓰라린 실패를 거듭한 산업계의 전산전문가들은 씁스레한 미소의 좌절만 통감하고 있지만은 않았다. 경험을 교훈삼아 문제의 해결책으로서 체계적이고 제도적인 방법들을 구상하여 개발의 도구로 적극 활용하기 시작했고 나아가서는 소프트웨어 공학이라는 새로운 학문을 탄생시키기에 이르른 것이다.

그렇다면 과연 소프트웨어 개발에 어떻게 공학의 응용이 가능한가? 여기에 대한 답은 간단하다. 다행스럽게도 스프트웨어개발이란 단계적으로 추진되어야 하고 각 단계마다 표준제도를 채택함으로서 효율을 높일 수 있고 결과의 미비함을 사전에 방지할 수 있으며 경험과 축적된 기술을 토대로 과학적인 예측이 불가능하지 않기 때문이다.

한마디로 소프트웨어란 여러 측면에서 그 상태를 수자로 표현할 수 있고 흔히 생각해 왔듯이 두리뭉실한 것이 아니라 비교적 정확한 측정이 가능하다는 것이다. 여기서 측정의 대상이 되는 사항은 소프트웨어 개발을 위해 투자해야 하는 시간, 개발인력, 컴퓨터 장비 등 필요자원은 물론이요, 프로그램의 규모 개발진도평가 등을 의미한다.

종합학문으로 대두

소프트웨어 공학이란 최소경비로 품질높은 소프트웨어를 개발하기 위한 기법 도구 관행의 총칭으로도 정의되는 바 일단 종합학문으로 풀이할 수 있다. 우선 컴퓨터 프로그램밍 기술 측면에서의 전자계산학, 프로그래머의 능률을 고조시키고 자원활용의 효율성을 찾아보는 경영학, 개발경비의 절감과 함께 투자 효율성을 높이려는 경제학, 사용자의 욕구를 최대한 충족시켜주려는 인간공학 등이 대두되고, 성패의 가능성을 타진하여 대책을 마련해주는 통계학, 시간과 자원의 분배를 최적화시켜 주는 경영과학, 문제의 해결을 넓은 시각에서 체계적으로 진행시켜주는 시스팀공학 등도 포함되는 것이 바로 그것이다. 기업의 전산화에 초점을 맞추다 보면 산업공학과 회계학, 보험학 등도 응용 분야의 이해를 도모하기 위하여 필요하다.

그러나 소프트웨어 공학을 파악하는 지름길은 소프트웨어 개발절차의 이해로 열리게 된다. 소프트웨어는 시장성이나 사용자의 요구를 고려한 개발 아이디어의 탄생부터 완성품으로 생산될 때까지 필연적으로 단계적인 절차를 거쳐야 한다. 소위 소프트웨어의 생명주기라고 일컬어지는 요구분석 설계 프로그램밍 테스트 유지보수의 이 절차는 시간이 흘러 제품의 용도가 빈약해짐에 따라 폐기 처분될때까지 반복될 수밖에 없는 특징을 지닌다. 한단계의 결과가 미비할 경우 다음 단계에 오는 차질은 엄청날수도 있는 연쇄 부작용 현상을 내포하고 있다.

마치 집을 짓는데 있어 설계의 문제점이 지적되지 않은 채 축대가 세워지면 부실공사의 가능성이 높고 전기공사가 완료되기전에 안전검사를 할 수 없다는 원칙과 같다. 따라서 소프트웨어 공학은 각 개발단계마다의 철저한 제도화와 표준법의 적용을 강요하고 있으며 단계별 기술향상에 연구의 초점을 두고 있는 것이다.
 

사용자요구분석의 정확성을 기하기 위해 기술선진국가에서는 프로토타입이라는 모델을 개발하자는 이론을 실용화되고 있다.


어떻게 서비스할 것인가

각 단계에서 제시되는 기술학문의 주내용을 나열하면 아래와 같다.

□ 사용자 요구 분석의 기술
'손님은 왕이다'는 표어가 서비스업체에서 중시되듯이 우수한 소프트웨어 개발 역시 사용자의 요구사항이 철저히 파악되었을 떄 가능하다. 컴퓨터화면처리 출력보고서 양식 키보드조각 등의 사용 편리성과 다양한 기능은 물론이요, 성능 신뢰성 비밀보장 개발비 스케줄 등이 모두 고려되어야 한다.

그러나 사용자의 요구사항은 부정확하고 경우에 따라서 현실성이 없을뿐만 아니라 개발도중 변경이 잦은 까닭에 요구분석의 어려움이 있다. 집을 짓는 데 예산은 제한시켜 놓고 값비싼 주문만 많다든가 공사가 한창 진행중일 때 안방을 늘려 달라는 무리한 요구는 소프트웨어 개발에서도 존재한다는 것이다.

소프트웨어 공학은 이 문제를 몇가지 측면에서 해결책으로 제시한다. 첫째 사용자 자신이 구체적으로 무엇을 필요로하는지 정확한 표현이 불가능할 경우를 고려해 일종의 소형 모델하우스식 프로토타입을 구축하여 사용자와 개발측간의 합의사항을 쉽게 확인하자는 것으로 이미 이 이론은 기술선진국에서는 실용화되고 있다. 둘째 사용자의 요구를 표현하는데 정확성을 기하기 위해 명세화 기법을 도입하자는 것이다. 명세화 기법은 크게 간략한 문장 구조, 사용하는 표혹은 그림의 표준화를 꾀하는 것으로서 상호 이해를 높이려는 목적임은 물론이다. 세째 현실성 없는 요구분석에는 기술적이고 경제적인 타당성 조사를 강조한다. 네째 수정요구와 상반된 요구들을 수용하는데 있어서는 통제 제도에 역점을 두어 체계적인 절차를 밟도록 함을 원칙으로 하고 있다.

위의 모든 해결책들은 사용자의 요구를 수박 겉 핥듯이 파악하고 프로그래밍으로 뛰어들어 개발 도중 보완을 시켜 나가겠다는 종래의 순수한 엔지니어적 사고방식을 종식시키고 모든것을 제도화자는 뜻이다. 사랑방 창문의 높이와 넓이를 확정시키지 않은 채 건축 설계에 임하는 법은 제발 없어야 한다는 것이 소프트웨어 공학의 철학이다.

□ 소프트웨어 설계 기법
복잡한 사용자의 요구를 개발이 가능토록 종이위에 개념화 시키는 소프트웨어 설계는 건축설계와 유사하게 최고의 기술을 요하는 단계이다. 프로그램밍을 위한 청사진이라 생각할 수 있는 설계서 작성은 표기법의 표준화도 중요하지만 우선 개념의 정립부재에서 실패가 거듭되어 왔다는 점이 지적되면서 학문적 토대가 굳어지기 시작했다.

그 중 설계란, 첫째 현실을 추상화 시키는데에서 비롯되는 바, 먼저 전체를 보는 시각을 갖추고 그 안에서 자세한 내용을 그리는 절차를 반복함으로 복잡하고 어려운 내용을 체계적으로 정리하자는 원칙론이다. 또한 구체적인 정보처리 내역을 노출하는 번거로움을 피하고 은폐시키는 것이 유리하다는 이론도 제시되었다. 따라서 설계의 핵심은 소프트웨어 시스팀을 분해하여 소형 시스팀의 집합으로 구조화시키는 방법이 있다.

여기서 소형 시스팀들의 결합도는 최소화시켜야 개발의 독립성을 찾을 수 있고 각 소형 시스팀내 구성 요소들간의 응집력은 강화되어야만 효과적인 개발 구현이 가능하다는 점은 개발시에 업무분장 용이도를 높이고 투자의 중복성을 줄여야 한다는 생산성 향상에서 발로된다.

이러한 설계원칙을 반영한 설계기법들의 등장은 소프트웨어 공학의 대변인 역할을 담당하고 있다. 단계적 설계화 기법은 구체적인 결정사항은 뒤로 미루고 중요한 내용을 강조시키면서 세부적인면을 추카시키는 방법이고, 추상화 레벨기법은 사용자와 컴퓨터 하드웨어와의 거리를 하나씩 소형 시스팀을 피라미드식으로 쌓아가면서 좁혀 보자는 방법이다. 도한 '잭슨;기법은 입력으로부터 출력까지 연계시켜야 한다는 문제 구조를 프로그램 구조로 변환시키는 기계적인 절차를 강조하고 있다.

소프트웨어 공학은 개발의 모든 기본은 설계로 간주하고 '잘될 나무는 떡잎부터 안다'는 속담처럼 밑바탕이 좋은 설게에서 품질좋고 생산성 향상이 가능한 소프트웨어가 개발될 수 있다는 원칙론을 부각시키고 있다.

□ 프로그램밍
프로그램밍이란 설계서가 제시하는 바대로 컴퓨터 코드를 만들어내는 목적을 지녔지만 그 목적을 달성하는데 있어 컴퓨터 메모리 사용 최소화, 출력 결과의 이해용이성, 프로그램 소스코드의 독해용이성, 프로래밍 기간 단축 등 세부적인 목표를 갖추고 있다.

이중 가장 중요한 목표는 개발결과의 인수관계가 쉽고 소프트웨어 유지보수가 편리해야 한다는 차원에서 프로그램 소스코드가 읽고 이해하기 쉬워야 되는 점이라고 생각해 볼 수 있다. 바로 이점이 소위 구조적 프로그램밍 기법이라는 개념을 탄생시켰는데 이는 인간의 사고방식을 프로그램화하는데 있어 서너개의 빌딩 블럭만 가지고 조직적으로 구축해 나아가야 한다는 이론이다.

프로그램 한줄한줄의 수행순서는 일직선상으로 되어야 그 논리를 이해하기 쉽고 따라서 테스트와 수정이 용이해진다는 것이다. 이와 더불어 프로그램내에 설명 문구를 상세하고 조리있게 삽입시키고 코딩의 표준 제도를 채택하여 여러명의 프로그래머가 분담하여 작성한 프로그램일지라도 일관성있게 스타일을 유지하자는 주장은 프로그램 소스코드의 독해 용이성을 재삼 강조하는 이론들이다.

구조적 프로그래밍의 개념은 따라서 소프트웨어의 품질에 지대한 영향을 미친다. 또한 두개의 프로그램들이 똑같은 기능과 성능을 갖추었다 하더라도 좋고 나쁜 것으로 구별할수 있는 판단기준을 제시해 준다. 플로우차트 개념으로 표현해 보았을 때 이와 같은 기준은 프로그램의 질을 쉽게 판별하게 한다.

이와 더불어 1980년대의 프로그램밍 기술은 개발도구의 개발과 활용으로 발전하고 있다. 프로그래밍언어들도 그 종류가 FORTRAN, COBOL, PL/1, BASIC의 시대를 떠나 소프트웨어 공학의 개념을 최대한으로 살릴 수 있는 Pascal, C, Ada를 등장시켰고 프로그램밍과 그의 품질검사를 도와주는 개발도구의 활용을 적극 권장하고 있다. 심지어는 프로그램들을 관리해주는 도구, 프로그램내에 포함시키기만 하면 되는 자주 쓰이는 소형 프로그램들도 판매가 되고 있는 실정이다.

소프트웨어 시장중에서도 개발도구 분야는 프로그래머의 확산으로 가장 급격히 증가하고 있듯이 개발자는 언제나 새 도구의 출현에 민감할것과 품질이 보장된 기존 프로그램들을 유용하게 포함시켜 개발비와 개발기간을 절감시키도록 최대한의 노력을 기울여야 한다는 점은 이젠 소프트웨어 공학의 가장 현실적인 응용으로 나타나고 있다. 이는 최근 건축분야에 조립식 건축 방법이 경제성 때문에 인기를 끌고 있는 이유와 다를바가 없다.

□ 소프트웨어 테스트
집을 지었으면 하자가 없나 입주전에 철저한 검사가 필요한 것처럼 컴퓨터 소프트웨어도 개발완료되는 시점에서 과연 사용자의 요구사항이 모두 관철되어 있나 테스트절차를 거쳐야 한다. 개발자의 입장에서는 제대로 개발되었나를 검토하겠지만 사실 소프트웨어를 상품화 시키겠다는 목적하에서는 사용자의 입장에서 과연 쓸만하게 개발되었나를 살펴야 한다.

지금껏 비교해 왔듯이 건축과 소프트웨어 개발과 유사한 점이 많다면 소프트웨어 테스트는 두 업무를 근본적으로 달리 평가하는 부분으로 지적될 수 있겠다. 여기에는 첫째, 건물검사와는 달리 소프트웨어 테스트는 구체적인 검사리스트 작성, 소형시스팀 테스트, 종합 소프트웨어 시스팀 테스트, 인수 테스트 등을 포함시켰을때 총개발 기간의 40%, 총 투입 인력의 50% 이상을 차지하는 방대한 작업이라는 점이다.

둘째 요구사항을 세밀하게 모든 사용환경과 입출력 조건을 고려하자면 하자라곤 전혀 없는 1백% 완벽성을 기하기란 불가능하다는 점이 또한 소프트웨어의 특수성이다. 논리의 복잡성은 시스팀의 규모가 확대됨에 따라 기하급수적으로 증가하여 모든 가능성에 대비한 테스트는 확률면에서도 70∼80% 이상을 기대하기 힘들다고 한다. 이점은 소프트웨어 품질관리를 어렵게 하여 사용자의 만족도를 떨어뜨리는 원인으로도 분석되고 있다.

소프트웨어 품질보증제도의 확립이라는 새로운 소프트웨어공학 이론은 바로 불가능의 원칙하에서나마 최선을 다하여 기술적으로 풀 수 없는 문제를 제도적으로 헤쳐나가보자는 상식에서 비롯되었다. 품질보증단이라는 조직을 구성하여 개발 초기부터 완료시점까지의 개발방법론을 정착시켜 단계별 산출물의 질적향상을 꾀하고 전문 테스트 기술을 바탕으로 감사제도를 도입하자는 뜻이다. 품질관리를 위한 회의를 정기적으로 주관하고 사용자의 입장을 대변함으로써 결과의 미비함을 사전에 방지해보자는 방침은 이제 소프트웨어 산업에 뿌리를 내려가고 있다.

□ 소프트웨어 유지 보수
일단 소프트웨어가 상품화되어 사용자의 손에 넘어가게 되면 유지보수단계에 접어든다. 이 단계 또한 건축과는 차이를 두고 있는 면으로서, 살다보니 손잡이가 망가지고 방 유리가 깨지고 벽에 금이 가는 건물과는 달리 소프트웨어란 아무리 오래 사용해도 파손되지 않는 까닭이다.

따라서 소프트웨어 유지보수란 사용자에 의해 새롭게 발견된 원래의 하자를 수정하고, 기능을 추가시켜 개선시키며, 사용자의 새로운 환경에서도 적용 가능토록 조정하는 의미만을 지닌다. 그러나 문제는 소프트웨어의 일생에 있어 상품화 되기까지의 기간이나 투자에 비하여 유지보수기관과 이를 위한 노력이 훨씬 크다는 데 있다. 다시 말하여 유지보수가 수월토록 개발이 되지 않은 소프트웨어는 생산성이나 품질평가 측면에서 무의미하다는 것이다. 소포트웨어 개발의 가장 중요한 목표를 많은 학자들이 유지보수가 용이한 소프트웨어의 생산으로 설정하고 있는 것은 바로 이 때문이다.

따라서 유지보수의 용이성은 설계의 구조화, 구조적 프로그램밍, 품질관리 보증제도와 직결될 수밖에 없다. 또한 소프트웨어의 변경내용과 변화되어가는 소프트웨어 구성을 체계적으로 관리해야 한다는 이론은 방대한 양의 기존 소프트웨어를 정보화시대에 발맞추어 계속 수정 활용해야 한다는 목적에서 매우 매력있는 연구분야로 평가되고 있다.
 

소프트웨어공학은 개발의 모든 기본을 설계로 간주하고 있다.


집단 의사결정의 연속

지금까지 설명한 소프트웨어 개발 절차는 개발기술의 향상 현황을 학문적 차원에서 다루어본 것이다. 그러나 개발기술의 한계는 소프트웨어 위기의 극복 방안을 넘지 못하고 있는 것이 또한 현실이다. 최근 대형 소프트웨어 시스팀의 필요성이 날로 확장되면서 이제는 단일 소프트웨어 프로젝트에 투입되는 인력이 수십명, 혹은 수백명씩 요구되고 개발 역시 수년간에 걸쳐 진행되어야 하는 현상이 평범해지기 시작했기 때문이다.

이는 우리나라에서도 TDX라는 교환기 시스팀이나 행정전산망 구축 프로젝트에도 나타나는 점으로서, 이러한 중형 대형 규모의 소프트웨어개발에는 개발 기술보다는 관리기술이 오히려 더욱 중요하다는 새로운 체험적 진리의 터득에서 비롯된다.

소뇌 두뇌 집약적이라는 소프트웨어 개발에는 무엇보다도 값비싼 인력의 최적 활용이 요구되고 있는 만큼 사용자가 요구하는 제품을 약속한 시간과 예산내에서 개발시키는 모든 기술적이며 행정 관리 경영적인 업무가 조화를 이루어야만 프로젝트가 순조롭게 진행될 수 있다는 것이다. 프로젝트의 성패는 관리자가 결정한다는 주장의 배경에는 소프트웨어 개발이란 집단 의사 결정의 연속으로 시작부터 끝까지 주를 이루는 바, 계획성과 통솔력, 그리고 조직의 중요성이 관리능력에 따라 많이 좌우된다는 이유가 있다. 따라서 소프트웨어공학은 프로젝트 관리를 또 하나의 핵심 연구 분야로 다루고 있다.

소프트웨어 프로젝트 관리기능이란 크게 다섯으로 분리된다. 첫째 프로젝트 계획수립기능은 단순하고 막연한 추측이 아닌 미래를 과학적으로 예측하는 기능이다. 소요될 프로젝트 예산을 책정하고 컴퓨터장비 및 개발도구 등 필요자원을 계획하며 추진일정을 구상하는 업무 등이 여기에 포함된다.

둘째 조직체계 확립기능이란 많은 인원이 효율적으로 일할 수있는 울타리를 창조하는 기능이다. 소조직간의 권한과 책임을 명확히 하고 개발자 개개인의 역할을 분담하여 서로 함께 공동의식을 갖추어야만 능률적인 업무 추진이 가능하다. 소프트웨어 개발이란 역시 개인의 지식이나 능력보다는 조직의 힘으로 밀고 나아야 되기 때문에 지휘체계의 확립도 중요할 수 밖에 없다.

세째 인사기능은 제도적인 두뇌의 채용과 개발자들의 자질향상 및 승진기능을 일컫는다. 개발비의 대부분이 인건비인 소프트웨어 프로젝트에는 우수한 인력들이 많이 필요한 만큼 신규 프로그래머의 영입에 신중을 기하고 교육 프로그램이나 개인의 만족도 고취를 위하여 노력하여야만 장기적인 안목에서의 성공을 보장받을 수 있다.

네째 개발인력의 지휘기능이란 개발자들을 통솔하고 지도력을 발휘하는 기능이다. 개발자들의 취향을 파악하고 인간적인 관계를 유지하는 것이 프로젝트에도 큰 도움을 줄 수 있다는 이론도 대두되고 있다. 다섯째 진행의 통제기능이다. 개발과정과정마다 진도를 검토하고 계획의 실천이 가능하도록 조정하는 업무야 말로 관리의 핵심이 아닐 수 없다.

이러한 기능들이 모두 요구됨은 역시 소프트웨어 프로젝트관리란 교과서식으로 다루어 질 수 없으며 프로젝트 성격 및 참여 인력에 대한 이해와 기술과 지식을 고도로 필요로 한다는 점에서 또다시 소프트웨어의 성공적인 개발의 어려움을 제시한다. 또한 바로 이 이유가 학문적으로 해결책을 탐구해 보자는 배경이 되기도 하는 것이다.

결론지어 소프트웨어공학이란 소프트웨어 생산성과 품질을 향상시키기 위한 개발과 관리기술을 연구하는 학문이다. 학자에 따라서 소프트웨어공학은 개발자 관리자 사용자 측면을 다루는 인간공학, 개발기술 도구 제도 문서화기법을 다루는 프로그램 공학, 인력 장비 예산 시간 등의 자원을 분배시키는 자원공학으로 구분하여 세 학문의 삼위일체를 강조하기도 한다. 어떻게 표현되건간에 정보화시대의 풍경이 화려하도록 아름다운 꽃을 재배하는 학문이 바로 소프트웨어공학이라고 생각된다. 소프트웨어 꽃이 만발한 미래를 창조하는 소프트웨어 공학은 아직 미완의 공학으로 머물러 있지만 진정 인공지능과 우주과학을 꿈꾸려면 필연코 우리가 심혈을 기울여야 하는 학문일 수밖에 없다.
 

철저한 테스트^소프트웨어는 상품화되기 전에 사용자의 요구사항이 완벽하게 관철되도록 철저한 테스트절차를 거쳐야 한다.
 

이 기사의 내용이 궁금하신가요?

기사 전문을 보시려면500(500원)이 필요합니다.

1987년 10월 과학동아 정보

  • 이주헌 교수

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 정보·통신공학
이 기사를 읽은 분이 본
다른 인기기사는?