[SW 공학] 개요
목차
- 소프트웨어
- 공학
- 소프트웨어 공학
- 소프트웨어 개발 과정
- 1) 계획
- 2) 요구 분석
- 3) 설계
- 4) 구현
- 5) 테스트
- 기타(품질 관리, 프로젝트 관리)
▶소프트웨어
- 프로그램(코드)을 비롯해 개발 과정에서 생성되는 모든 산출물(자료 구조, 데이터 베이스 구조, 테스트 결과 등)을 포함하고, 각 단계에서 만들어지는 문서와 사용자 메뉴얼 등도 포함
- 즉 소프트웨어는 프로그램뿐 아니라 그 이상의 것도 포함하는 매우 포괄적인 개념
▶공학
- 공학은 ‘기술적 문제’를 대상으로 하는 학문으로 ‘문제를 발견하고 이에 대한 기술적 해결책을 제시하는 학문’
- 과학적 지식을 활용하여 문제를 해결하는 데 한정된 기간과 비용의 제약을 받음
- 공학이 발전하면 문제 해결을 위한 기술이 축적되고 공학적 원리가 개발됨
- 이를 실무에 적용하여 문제 해결의 절차를 만들고 반복적인 절차의 개선으로 표준을 만들어냄
- 초보자도 이 표준 지침을 따라 문제를 해결할 수 있음
▶소프트웨어 공학
- 소프트웨어를 개발하는 과정에 공학적인 원리를 적용하여 소프트웨어를 개발하는 것
- 품질 좋은 소트트웨어를 경제적으로 개발하기 위해 계획을 세우고, 개발하며, 유지 및 관리하는 전 과정에서 공학, 과학 및 수학적 원리와 방법을 적용하여 필요한 이론과 기술 및 도구들에 관해 연구하는 학문
▷목적
- 소프트웨어 개발의 어려움을 해결하고, 효율적인 개발을 통해 생산성을 향상시켜, 사용자가 만족하는 고품질 소프트웨어 제품을 만들기 위함
▶소프트웨어 개발 과정
- (도메인 분석) → 계획 → (요구)분석 → 설계 → 구현 → 테스트 → 유지보수
- 소프트웨어를 만들기 위해 계획 단계에서 유지보수 단계까지 이르기까지 일어나는 일련의 과정
- 소프트웨어 개발 생명주기라고 함

▶ 1단계: 계획
- 비용, 기간 등 프로젝트를 수행하는 데 필요한 것에 대해 계획함
- 계획 단계에서 비용을 산정하는 대표적인 방법으로 COCOMO 모델, 기능 점수(FP, Function Point)모델 존재
- 계획 단계에서는 일정 계획이 매우 중요
- 프로젝트를 작은 단위로 나누어 작업할 수 있도록 하는 작업 분할 구조도(WBS) 존재
- 작업의 순서와 시간을 중심으로 작업 일정을 나타내는 네트워크 차트(CPM) 존재
- 프로젝트를 수행할 때 어떤 위험이 존재하는지 파악하고 이를 예방할 수 있는 조치를 취해야함
▷계획 단계의 주요 작업: 문제 정의, 타당성 분석, 예산 계획, 일정 계획, 위험 분석, 계획서 작성
▶ 2단계: 요구분석
- 기존 시스템의 문제점을 파악하고, 사용자 인터뷰를 통해 새로운 요구 사항을 도출하여 수집
- 이 요구사항을 최적화된 상태로 정리한 후 특정 표현 도구를 사용하여 다이어그램 등으로 나타냄
- 요구 사항을 표현하는 도구는 소트트웨어 개발론에 따라 다름
- 구조적 방법론에서는 자료흐름도(DFD, Data Flow Diagram), 자료 사전(DD, Data Dictionary), 소단위 명세서를 사용
- 정보공학 방법론에서는 개체-관계 다이어그램을 데이터베이스 설계를 표현하는 데 사용
- 객체지향 방법론에서는 UML 표기법을 사용, UML 표기법은 다양한 다이어그램으로 구성되어 있는데 요구 사항은 유스케이스 다이어그램을 사용해 표현
▷요구분석 단계의 주요 작업 :도메인 분석, 요구 추출, 요구 분석 및 명세화( 요구 분석 명세서 작성), 검토 및 수정
▶ 3단계: 설계
- 사용자의 기능적, 비기능적 요구를 만족시키기 위하여 제약 조건이 반영된 구현 대안을 창출하는 일
- 소트트웨어 시스템의 내부를 설계
- 분석 단계에서 표현한 유스케이스 다이어그램과 클래스 다이어그램을 가지고 코딩할 수 있는 수준으로 환경에 밀접하게 구체화함
▷설계 단계의 주요 작업: 구조 설계, 자료설계(데이터베이스 설계), 소프트웨어 아키텍처 설계, 객체지향 설계
▶ 4단계: 구현
- 프로그램 코드를 작성
- 여러 사람이 함께 하는 작업에는 따라야 할 규칙이 존재함
- 프로그램을 작성할때도 다음과 같은 여러 가지 규칙이 존재
- 명령에 관한 규칙
- 소스 형식에 관한 규칙
- 주석에 관한 규칙
- 변수 선언 및 자료형에 관한 규칙
- 상수에 관한 규칙
- 수식에 관한 규칙
- 문장에 관한 규칙
▷설계 단계의 주요 작업: 프로그램 코드 작성
▶ 5단계: 테스트
- 코딩이 완료된 후 제품을 출시하기 전에 여러 테스트 기법을 사용하여 오류를 찾아냄
● 테스트 프로세스
1) 테스트 계획 → 2) 테스트 케이스 설계 → 3)테스트 실행 및 측정→ 4) 결과 분석 및 평가→ 5) 오류 추적 및 수정
- 많은 테스트 기법을 다음과 같이 분류하고, 이 분류에 따른 여러 테스트 기법을 다른 챕터에서 자세히 설명
- 개발자 또는 사용자 시각에 따른 분류
- 사용되는 목적에 따른 분류
- 프로그램의 실행을 요구하는지에 따른 분류
- 품질 특성에 따른 분류
- 소프트웨어 개발 단계에 따른 분류
▷설계 단계의 주요 작업: 테스트 작성
▶ 6단계: 유지보수
- 사용자가 소프트웨어를 사용하다가 추가, 변경 요구를 하면 이에 대해 적절한 조치를 해야함
- 사용자가 소프트웨어를 사용하다가 결함이 있으면 조치를 해야함
- 다음과 같이 유지보수 분류
- 수정 유지보수
- 적응 유지보수
- 기능 보강 유지보수
- 예방 유지보수
▶ 기타
▷ 품질관리
- 개발된 소프트웨어가 사용자의 요구 사항을 얼마나 만족시키는지를 점검해야함
- 제품 품질 특성 평가, 프로세스 품질 특성 평가를 이용하여 점검
▷ 프로젝트 관리
- 기간과 예산이 정해져 있는 프로젝트이기 때문에 여러 관리 요소가 존재
- 프로젝트가 예정된 기간과 주어진 비용 안에서 요구하는 품질을 만족시키도록 프로젝트가 시작될 때 부터 끝날 때 까지 관리해야 함
- '프로젝트관리 지식체계(PMBOK)'에서 9가지 관점을 중심으로 다른 챕터에서 설명