본문 바로가기
컴퓨터/이론

소프트웨어 버전 규칙

by Luyin 2013. 5. 31.

1. Software Version

소프트웨어는 사람이 만들다 보니 완벽을 추구하기 힘들다. 때문에 같은 기능을 가진 소프트웨어라도 계속해서 좀더 나은 기능을 가진 소프트웨어가 만들어지게 되는데, 이를 전에 있는 소프트웨어와 구별하기 위해 버전을 표시한다.

일반적으로 버전은 다음과 같이 정의된다.


Version.

일반적으로 이전 버전의 산출물을 확장하여 이후 버전의 산출물을 만든다.


1.1 S/w 버전이 결정되기 까지

버전을 붙이는 방법이 따로 있을까? 답은 없다. 실망스러울지 모르겠지만, 버전은 개발 조직이 임의로 붙인다. 하지만 누구라도 쉽게 이해 하기 위해서 일반적으로 지켜지는 규칙은 있다. 일반적으로 새 버전에 큰 변화를 주었다면 소수점 윗자리를 올리고, 작은 변화는 소수점 아랫자리 번호를 올리는 방식이 많이 쓰이는데, 예를 들자면 1.0에서 1.5로 바뀌었다면 1.0에서 1.1로 바뀐 것보다는 많은 것이 바뀌었다는 의미이다.

그 외에, build, stable, beta, alpha 등의 버전이 있다. 이는 개발 단계를 나타내는 것이다.


2. Variable Versioning

2.1 Linux Kernel

2.1.1 커널 버전의 규칙

<주 버전 번호><부 버전 번호><패치 레벨 번호>-<컴파일 횟수><추가 정보 문자>

예) Kernel 2.9.19-12

2.1.2 주 버전 번호

소프트웨어에 커다란 변화가 생겼을 때 올라가는 부분이다.

2.1.3 부 버전 번호

부 버전 번호는 짝수일 떄와 홀수일 떄가 있다. 짝수일 경우에는 안정 버전(Stable Version)이라고 하며, 많은 개발 과정을 통해 충분히 안정화 되어 있다고 판단하는 기능으로 이루어져 있는 소프트웨어를 나타낸다. 홀수일 경우에는 개발 버전(Development Version)이라고 하며, 현재 개발되고 있는 소프트웨어를 중심으로 베타 테스터 혹은 최신 중독자를 위한 버전이다.

2.1.4 패치 레벨 번호

패치 레벨은 같은 버전 안에서 일어난 소규모의 개정 작업의 횟수를 나타낸다. 예를 들어 2.9.19은 2.9.0 이후 19번의 개정 작업이 이루어졌다는 뜻이다.

2.1.5 컴파일 횟수

몇 번의 컴파일을 했는지를 나타낸다.

2.1.6 추가 정보

필요한 정보를 지정하여 사용한다.

2.2 Microsoft

마이크로소프트는 전통적인 프로그램의 버전 업 네임 방식인 Windows V4.0으로 하지 않고 발표 연도를 기준으로 Windows 95라 명명하기로 했다. 마이크로소프트사가 흔히 프로그램 이름에 버전 번호를 붙이는 방식을 택하지 않고 새로운 방식을 택한 이유는 지금까지의 소프트웨어 업그레이드 시에 버전 네임 지정 방식인 큰 기능 향상 또는 추가(Major or Upgrade)시는 앞자리 수 판 높임. 작은 기능의 추가 또는 버그 수정판(Minor Upgrade)은 소수점 아래 판 높임 방식이 오히려 소비자들에게 더욱 혼란을 가중시킨다는 판단에서이다.

2.2.1 Microsoft 버전의 규칙

<Major Version>.<Minor Version>.<Build Number><Additional Marks>

4.00.950(윈도우 95)

4.00.950B(윈도우 95 OSR2)

4.10.1998(윈도우 98)

4.10.2222A(윈도우 98 Second Edition)

2.2.2 Major Version

프로그램의 대폭적인 변경이 있을 경우에 이 숫자가 하나 올라갑니다. 실제로 윈도우 3.1에서 윈도우 95로 넘어갈 때 그 모양과 기능은 가히 형명적으로 변화하였습니다. 이렇게 상당한 변화가 있을 경우에 메이저 버전을 하나 올립니다.

2.2.3 Minor Version

마이너라는 단어는 메이저라는 단어보다 작다는 느낌이 확실히 드실것으로 생각되는데 프로그램에 작은 기능 개선이 있을 경우에 이 숫자를 바뀐 정도에 따라 적절히 변화 시킵니다. 윈도우 95의 버전은 4.00이지만 윈도우 98은 4.10인데 이 말은 위도우 95에서 윈도우 98로 의 변화는 그리 크지 않다는 것을 가리킵니다.

2.2.4 Build Number

빌드의 뜻은 프로그래밍중인 프로그램을 실제로 프로그램화 시키는 것을 말합니다. 여러명이 작업하는 경우에는 모든 프로그래머가 작업한 프로그램 코드를 하나로 합쳐 프로그램화 시키는 것을 말합니다. 윈도우 98과 윈도우 98 SE는 버전은 동일하지만 빌드 넘버가 윈도우 98 SE가 더 큰데 이것은 윈도우 98에 비해 좀 더 버그를 잡고 자잘한 기능을 추가했음을 의미합니다.

2.2.5 Additional Marks

빌드 넘버가 동일하다 하더라도 프로그램의 코드가 다른 경우가 있는데 예를 들어 빌드 10인 프로그램 코드에 A라는 내용을 추가한 경우와 같은 코드에 B라는 내용을 추가하여 Build한 경우 같은 빌드넘거 11이 되지만 내용은 다르게 됩니다. 이러한 미세한 차이가 있을 경우에 알파벳이나 기타 기호로 표시를 해둡니다.

2.3 Apple (Mac)

MacOS X 버전에는 메이저(또는 비호환) 버전 및 마이너(또는 호환) 버전 등 2개의 버전이 있습니다.

2.3.1. MacOS X 버전의 규칙

2.3.1.1 메이저 비호환 버전

이전 버전 프레임워크의 동적 공유 라이브러리와 연결된 프로그램과 비호환되는 프레임워크를 의미한다.(백워드 호환)

2.3.1.2 마이너 호환 버전

동일한 메이저 버전 내에 나중에 구축된 프레임워크와 연결된 프레임워크과 호환되는 프레임워크를 의미한다.(포워드 호환)

2.3.1.3 특징 및 요약

버전 유형 

요청 시점 

결과 

메이저/비호환

(백워드 호환)

API 변경(함수이름 변경) 

API삭제하기

인스턴스 변수 추가히기 또는 재정리

C++  메소드 추가 

메이저 버전 지정자 변경되고 프레임워크 경로에 새로운 지정자가 반영된다.

프로그램에 기록된 동적 공유 라이브러리의 경로는 프레임워크를 통해 작성 된다.

마이너/호환

(포워드 호환)

새로운 함수, 메소드, 클래스, 구조 등 추가 

현재(마이너) 버전 번호가 증가되며, 호환 버전은 현재(마이너) 버전과 동일한 값으로 설정된다. 프로그램에 기록된 값은 이 프레임 워크를 통해 작성된다.

없음

버그 수정, 성능 향상은 프로그램 인터페이스에 영향을 미치지 않는다. 

 현재(마이너) 버전이 증가된다. 호환 가능한 버전이 동일하게 유지된다. 프로그램에 기록된 값은 이 프레임을 통해 작성 된다.



3. Samsung Tecwin Membership 창의 과제 수행 시 버전 규칙 명명 법

<주 버전 번호>.<부 버전 번호>.<패치 번호>.<(옵션)문자 리팩토링 후>-<날짜>

ex) 1.2.1-130531

ex) 1.2.1.C-130531

3.1 주 버전 번호

새로운 모듈이 구현되어 통합 되었을 때를 말한다. 게임 메뉴 기능, 미니게임1, 미니게임2 등 큼지막한 독립적인 덩어리를 하나의 모듈로 보고 메인 프로그램에 통합되었을 때를 주 버전 번호를 올린다.

3.2 부 버전 번호

하나의 모듈에서 기능들이 구현되어 통합 되었을 때를 말한다. 미니게임1에서 캐릭터가 점프하는 기능이 구현되었을 때, 기능 하다가 구현되었다고 보고 부 버전 번호를 올린다.

3.3 패치 번호

기능 안에서 잔 버그들을 잡거나 기능의 내부 구조를 수정하였을때 패치 번호를 올린다.

3.4 리팩토링 후

이쪽 번호는 필요시 부여하는 옵션 문자로 리팩토링에 의해 기능은 동일하되 내부 구조등이 변경 되었을 때 부여하는 번호이다. 

3.5 날짜

버전업을 공식화한 날짜를 기록하며 YYMMDD 년도,월,일을 두 자리씩 표시한다.