컴퓨터(Computer Science)/소프트웨어공학(Software engineering)

프로세스와 프로세스 모델 [소프트웨어 공학]

게임이 더 좋아 2020. 4. 15. 00:26
반응형
728x170

우리가 컴퓨터를 이용하는 모든 이유는 문제해결이다.

 

 

프로세스란 어떤 일을 하기 위한 특별한 방법으로 일반적으로 단계나 작업으로 구성된 것을 의미한다.

 

즉 소프트웨어를 개발하는 과정, 작업 순서를 말한다.

 이는 순서 제약이 있는 소프트웨어의 특징이기도 하고

 높은 품질과 생산성을 위해서는 프로세스를 지켜야 한다고 볼 수 있다.

 

*프로세스가 없는 개발은 즉흥적 개발로

 

단순하지만 비생산적인 개발이 될 것이다.

 

요구 분석을 하지 않아서 생기는 비효율성이 발생할 것이고

즉흥적인 개발로는 소프트웨어의 구조가 나빠질 것이다.

또한 계획이 없으니 작업의 목표가 없어서 프로그래밍을 잘했는지 비교대상도 없으며

비용과 일정을 예측할 수 없다.

 

 

 

 


 

 

 

프로세스랑 방법론을 착각하는 경우가 많은데 비슷하면서도 다르다.

 

전에도 말했다시피 프로세스는 무엇을 하느냐, 방법론은 어떻게 하느냐에 초점을 맞춘다.

 

 

 

 


 

 

 

프로세스를 알아봤는데 그렇다면 소프트웨어 프로세스는 무엇일까?

 

소프트웨어 개발에 대한 기술적, 관리적 이슈를 다루는 작업이 되시겠다.

 

다시말해서 소프트웨어 시스템을 구축하기 위하여 수행되는 작업의 단계를 말한다.

각 단계는 결과물을 생성하고 그 결과물은 또 다른 단계의 입력이 된다.

 

 

소프트웨어 프로세스는 어디에 적용이 될까?

 

소프트웨어 프로젝트에 적용이 되겠다.

 프로젝트 수행을 위해 조직화한 프로세스를 이용하고

 비용, 일정, 품질에 대한 목표를 성취해야 한다.

 

그 전에 앞으로 계속 나올 용어 2가지에 대해 정리하고 넘어가자

 

*프로세스 명세

프로젝트에서 수행해야하는 작업과 이들의 수행 순서를 정의

 

*프로세스 모델

일반적인 프로세스를 기술한 것

작업의 단계와 순서

각 단계 작업 수행의 제약사항이나 조건 등을 모아 놓은 것

 

 

 


 

 

 

 

소프트웨어 프로세스 안에는 여러가지 프로세스가 있다. 한 번 알아보자

 

 

개발 프로세스가 중심이라고 볼 수 있겠다.

프로젝트 관리 프로세스는 비용, 관리, 일정에 관한 프로세스다.

소프트웨어 형상 관리 프로세스는 버전관리라고 보면 되겠다.

 

//우리가 다룰 3가지 정도가 되겠다. 

 

또 특이한 이름이 있는데 프로세스 관리 프로세스다. 정말 프로세스를 관리하는 프로세스이다.

// 그 프로세스는 누가관리한다는지는 모르겠다.

 

 

 

 


 

 

 

프로세스라고 이름만 프로세스고 실속 없으면 안되잖아?

 

그래서 바람직한 프로세스의 특징을 알아보려고 한다.

 

1. 예측 가능성

비용, 품질, 기간을 제어하려면 과거경험을 바탕으로 예측 가능한 프로세스를 사용하면 된다.

ex) 과거에 ~~했으니까 이번에도 ~~이렇게 하면 될거야

 

2. 테스팅과 유지 보수 지원

유지보수 비용>>> 개발비용 인 것은 앞서 설명을 했다. 

때문에 프로세스 이를 고려한 프로세스가 되어야 하는 것이다.

 

3.변경 지원

요구사항이 변경이 되었을 때 쉽게 반영이 되는 프로세스를 뜻한다.

요구 분석이 끝나도, 또 생기는 경우를 말하는 것이겠지

 

4. 결함 제거

결함이 늦게 발견되면 수정 비용이 늦을수록 커진다.

때문에 품질 측정을 통해 결함을 찾아내야 한다. 

 

물론 4가지 모든 점을 갖춘 프로세스가 있다면 좋겠지만 4가지를 다 갖춘 모델이라면

그것밖에 안쓰겠지?

 

근데 실제로 그렇지 않은 것을 보면 다들 trade-off 관계라 보면 된다.

 

 


 

 

소프트웨어 개발 프로세스가 아까 중심이라 했으니까 알아보자

 

대표적인 모델로는

 

폭포수 모델

프로토타이핑 모델

점증적 모델

V 모델

일정 중심 설계 모델

진화적 출시 모델

애자일 모델 

등이 있다.

 

 

이 모델들은 다음 글에서 알아보자.

 

*************모델들을 공부한다고 그래서 그냥 모델을 가져다 쓰는 것은 아니다.

이러한 모델들을 프로젝트의 목표와 필요에 맞게 커스터마이징하는 것이

프로세스 모델들을 공부하는 목표이다.

반응형
그리드형