본문 바로가기
Programming

Software Engineering | 소프트웨어 공학 개론 - 1

by daewooki 2021. 6. 25.
반응형

유민수 교수님의 Software Engineering 강의를 들으며 요약한 내용.

 

* Software Engineering이란?

소프트웨어 생산의 모든 측면에서 관심을 갖는 엔지니어링 분야이다.

소프트웨어 엔지니어는 작업에 체계적이고 체계적인 접근 방식을 채택하고, 해결해야할 문제, 개발 제약사항 및 사용가능한 리소스에 따라 적절한 도구와 기술을 사용해야한다.

소프트웨어 공학은 소프트웨어 위기를 논의하기 위해 제안되었다. : 더 크고 복잡한 문제.

 

소프트웨어 위기는 컴퓨터 성능의 급격한 증가와 문제가 될 수 있는 복잡성의 영향을 설명하기 위해 사용되었다.

=> 본질적으로 정확하고 이해 가능하며 검증 가능한 컴퓨터 프로그램을 작성하는 것이 어렵다는 뜻. 소프트웨어 위기의 근원은 복잡성, 기대 및 변화임.

 

* 소프트웨어 위기가 나타난 여러 방법

1. 과다 예산

2. 시간 많이 듬

3. 소프트웨어 품질 낮음

4. 종종 요구사항 충족시키지 못함

5. 관리하기 어렵고 유지 보수 어려움

 

* 왜 소프트웨어는 매우 어렵나

- 소프트웨어는 무형적이고 변경되기 쉬움

- 프로젝트의 진행상황을 정확하게 파악하는 것이 어려움

- 표준화된 소프트웨어 개발 프로세스가 없음

- 소프트웨어를 평가할 수 있는 정량화된 메트릭이 별로 없음

- 소프트웨어는 재사용이 어려움

- 소프트웨어 기술은 너무 빨리 진화하며 예측이 어려움

- 요구 명세가 자주 변경됨

- 응용 도메인을 이해하는 소프트웨어 엔지니어를 찾기 어려움

 

* 소프트웨어 위기 해결 방안 Software crisis solution

 지난 수십년 동안 소프트웨어 위기를 길들이기위해 다양한 프로세스와 방법론이 개발되었다.

그러나 은 총알이 없다는 것이 인정되었다. , 모든 경우에 프로젝트 초과 및 실패를 방지 할 수 있는 방법이 없다는 것.

- 일반적으로 규모가 크고 복잡하며 잘못 지정되고 낯선 측면을 포함하는 소프트웨어 프로젝트는 여전히 크고 예기치 않은 문제에 특히 취약하다.

 

 

* 소프트웨어 개발을 위한 triad - 삼인조

- People, Process, Technology.

 

 People이 가장 중요한 측면이다. 좋은(?) 사람이 올바른 프로세스와 기술을 개발할 수 있다.

+ 도구 =-> 도구는 소프트웨어 프로젝트의 성공에 영향을 미칠 수 있다. 우수한 도구는 사람, 프로세스, 기술을 통해 최고의 생산성 및 품질을 관리 할 수 있다.

 

* 소프트웨어 프로세스 Sotware Processes

Ivar Jacobson, Grady Boch, and James Rumbaugh

=> 프로세스는 누가 무엇을, 언제, 어떻게 특정 목표에 도달하는지를 정의함.

- 제품의 품질은 공정의 품질에 달려있다는 사실이 널리 받아 들여지고 있다.

-> Software Processes와 동의어는 Software life cycle 및 소프트웨어 개발 프로세스를 포함한다. 그러한 프로세스에 대해 여러 모델이 있으며, 각각은 프로세스 중에 발생하는 다양한 task 또는 활동에 대한 접근 방식을 설명한다.

 

* 4대 주요 소프트웨어 프로세스 4 Major software processes.

1. Requirements engineerring

2. Design and implementation

3. Verification and validation

4. Evolution

 

* 소프트웨어 개발 모델 Software development model

 

Waterfall development

폭포수 모델은 순차적 소프트웨어 개발모델이다. (소프트웨어 작성 프로세스)

개발은 요구사항 분석, 설계, 구현, 테스트, 통합 및 유지보수의 단계를 통해 꾸준히 아래쪽으로 흐른다. (폭포수처럼)

 

- waterfall model 비판

프로젝트를 뚜렷한 단계로 나누지 않으면 변화하는 고객 요구 사항에 대응하기 어렵다.

따라서 이 모델은 요구 사항을 잘 이해하고 설계 프로세스 중에 변경사항이 제한될 때만 적합하다.

폭포수 모델은 시스템이 여러 위치에서 개발되는 대규모 시스템 엔지니어링 프로젝트에 주로 사용된다.

 

waterfall development

Iterative and Incremental development

Iterative and Incremental development

* Iterative and Incremental development의 장점

고객 가치를 각각 증가시켜 제공하여 시스템 기능을 더 빨리 사용할 수 있다. (기능을 만들고 테스트하고 바로 바로.)

초기 increment는 이후 increment에 대한 요구사항을 유도하는데 도움이 되는 프로토 타입 역할을 한다.

전체 프로젝트 실패의 위험성이 적다. 우선 순위가 가장 높은 서비스가 가장 많은 테스트를 받는 경향이 있다.

 

 

Spiral development 나선형 개발 모델

Spiral development

프로세스는 역추적과 함께 일련의 활동이 아니라, 나선형으로 표현된다.

나선형의 각 루프는 프로세스의 단계를 나타낸다.

사양이나 디자인과 같은 고정된 단계가 없다.(필요에 따라 사용됨)

위험은 프로세스 전반에 걸쳐 명시적으로 평가되고 해결된다

 

 

V Model

V 모델은 폭포수 모델의 연장으로 추정할 수 있다.

V 모델은 개발 생명주기의 각 단계와 관련도니 테스트 단계 간의 관계를 보여준다.

V 모델은 소프트웨어 테스팅 진화의 결과로 개발되었다고 할 수 있다.

Validation 테스트는 verification의 디자인이나 요구사항에서 직접 파생된다.

V Model

 

반응형

댓글