[SW 공학]

[SW 공학] 개요

Jarvis2304 2023. 9. 24. 21:58

목차

  • 소프트웨어
  • 공학
  • 소프트웨어 공학
  • 소프트웨어 개발 과정
  • 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가지 관점을 중심으로 다른 챕터에서 설명