이번 포스팅은 NIPA에서 과거 발행한 SW 공학 백서를 기반으로 내용을 정리해 보기로 한다. SW 공학의 기본적인 개념을 이해함에 도움이 되기 바란다.
1. SW 공학의 정의
SW 산업은 SW 분야의 생산적 활동 전반을 지칭하며, SW 사업을 구성하는 각 부문, 각 기업을 지칭하는 표현으로도 사용하고 있다. 같은 종류의 제품 또는 서비스를 공급하는 기업, 즉 복수의 기업이 존재하고 이들이 서로 경쟁관계에 있는 동일한 분야를 SW 산업이라고 정의하고 있다. SW 공학은 SW 산업을 발전시키는 여러 동인들을 구조화시키고 정립하여 보다 발전적인 방향으로 향상 시킬 수 있도록 지원하는 것이다. SW 공학은 기술, 인력, 관리체계 등 SW를 구성하는 요소를 목적에 따라 유기적인 체계로 구성하는 활동을 의미하며 SW를 개발하기 위해 전과정(개발 계획에서부터 운영, 폐기까지)에 대한 체계적이고 정량적인 접근 방법을 의미하기도 한다.
SW 공학을 전사적 또는 국가적으로 육성 및 보급하기 위해 추진하는 SW 공학 정책은 SW 산업 발전의 핵심 동인인 SW 공학을 발전시키기 위해서 정부가 취하는 정책적 방향을 의미하며, SW 공학을 발전시키는 데 필요한 공공적인 성격의 추진 계획 또는 사업을 의미하기도 한다.
실용 SW 공학론이라는 책에서는 SW 공학은 SW의 개발 방법을 연구하는 신 학문이고, 어떻게 하면 생산성을 높게 SW를 개발하고 그 결과의 품질을 보증함으로서 정보 시대의 사용자에게 만족감을 부여할 수 있나를 넓고 깊게 탐구하기 위해 전산학적, 경영학적, 경영과학적인 사고 위에서 체계쩍 기술과 방법론을 모색하는 종합 학문이라고 표현하기도 한다.
또한, 최신 SW 공학기법 이라는 책에서는 SW 개발, 운용, 유지보수 및 폐기에 대한 체계적인 접근 방법으로 정의하고 있다. SW공학은 SW의 개발 계획에서부터 개발 후 운영 및 유지보수 까지의 전 과정에 걸쳐 필요한 이론, 개념 및 기술들을 다루는 학문이기도 하고 SW를 개발하는 과정에서 생성되는 요구사항 정의서, 분석 및 설계 모델, 프로그램 원시코드, 목적 코드, 사용자 매뉴얼 등 모든 산출물들이 대상이 된다고도 정의했다.
과학은 자연 자체를 대상으로 법칙을 탐구하는 것에 반해, 공학은 실제적 문제를 해결하거나 실제적인 산출물을 생산해 내기 위해 자원과 비용을 효과적으로 활용하면서, 과학적 지식을 적용하는 것을 의미하고 있다.
SW 공학은 생산성을 높이는 여러 가지 방법론과 도구, 관리기법 등이 연구되고 있으며 요구공학, 아키텍처, 개발방법론, 테스팅, 프로세스, 형상관리, 품질, 재사용, 프로젝트 관리, 유지보수 등 여러 가지 영역으로 나뉜다.
2. SW 공학 및 개발의 역사
SW 공학은 생산성 향상, 품질 개선 및 SW 가치를 향상시키기 위해 각 단계의 핵심 기술들을 제시하면서 성숙화되고 발전하고 있다.
1960년대 HW 대량 보급과 가격 하락은 컴퓨터 응용 분야의 확대와 대형 SW 시스템 구축에 대한 요구를 증대시켰으나 SW 개발 방법이 정립되지 않아 대다수 프로젝트의 지연, 개발 비용의 급등, 신뢰도의 저하 및 유지보수의 어려움을 야기하고 있었다.
이로 인해, HW의 발전 속도에 비해 SW의 생산성, 개발 기술 등이 따라가지 못하는 SW 위기 상황이 대두되었고, 1968년 10월 NATO SW 공학 컨퍼런스에서 "SW 위기"의 문제가 공식으로 제기되고, SW 개발의 저품질, 저생산성, 고비용, 납기 지연 등에 대한 문제 해결 방안으로 데이터 기반의 SW 공학이 등장하기 시작했다.
SW 공학은 "SW의 개발, 운영 및 유지보수에 대한 체계적이고 정량적인 접근법을 연구하고 적용하는 것(IEEE 610)"으로서 SW와 관련된 프로젝트를 성공적으로 추진할 수 있도록 관련 영역의 공학적 접근방법과 모든 산출물 도출 과정 및 적용을 의미한다. SW 공학은 생산성 향상, 품질 개선 및 커스터마이징 서비스 단계의 핵심 기술들을 제시하면서 성숙화 되고 발전되고 있다.
3. 미국 SW 공학 인력 교육 양성 커리큘럼
컴퓨터 일반: 컴퓨터과학 개론, 구조 기술, 구조 도구, 일반 구조 방법론
수리 공학 기초: 수리개론, SW공학개론, SW공학 경제
전문화된 실습: 심리학, 대화기술, 프로페셔널리즘
SW모델링 및 분석: 기초, 종류, 요구관리, 요구사항 도출, 요구사항 정의 및 문서화, 요구사항 검증
SW 설계: 개념, 전략, 아키텍처 설계, 휴먼 인터페이스 설계, 상세 설계, 설계 지원툴 활용
SW 검증 및 확인: 용어 개론, 검토, 시험, 휴먼 컴퓨터 UI 시험 및 평가, 문제 분석 및 보고서 작성
SW 혁신: 혁신 프로세스, 혁신 활동
SW 프로세스: 프로세스의 이해, 프로세스 구현
SW 품질: SW 품질 개념, SW 품질 표준, 프로세스 보증, 제품 보증
SW 프로젝트 관리: 기초, 계획, 인력 및 조직, 조율, 형상관리
'IT 각종 공부' 카테고리의 다른 글
메타버스 - 종목, 증강현실 (0) | 2021.09.07 |
---|---|
Defect 원인 분석 (Causal Analysis)의 이론과 전략 -02 (0) | 2021.09.06 |
Defect 원인 분석 (Causal Analysis)의 이론과 전략 -01 (0) | 2021.09.05 |
SW 개발 프로세스의 이해 (0) | 2021.09.04 |
소프트웨어 테스트 (Software test) - 2편 (0) | 2021.09.03 |
댓글