본문 바로가기
자격증/정보처리산업기사

7장 애플리케이션 배포

by 동욷 2023. 4. 9.

<소프트웨어 패키징 > : 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것 / 사용자 중심으로 진행 /

                                      소스 코드는 향후 관리를 고려하여 모듈화하여 패키징

 

<패키징 작업 순서>

1. 기능식별  :  작성된 코드의 기능을 확인

2. 모듈화 : 확인된 기능의 단위로 코드들을 분류

3. 빌드 진행 : 모듈 단위별로 실행파일을 만듦

4. 사용자 환경 분석 : 소프트웨어가 사용될 환경 / 최소 운영 환경을 정의

5. 패키징 및 적용 시험 : 빌드된 실행파일들을 환경에 맞게 배포용 파일 형식으로 패키징 -> 테스트 후 s/w의 불편한 점을                                           사용자의 입장에서 확인

6. 패키징 변경 개선 : 확인된 불편 사항을 반영하기 위한 패키징의 변경 및 개선을 진행

7. 배포 : 배포 수행 시, 오류가 발생하면 해당 개발자에게 전달하여 수정을 요청

 

 

<주요 배포용 파일 형식>

msi  - Windows용 패키지 양식

dmg - Mac OS용 패키지 양식

jar - java 응용 소프트웨어나 라이브러리를 배포하기 위한 패키지 양식

war - java Servlet, java Class , xml 및 웹 애플리케이션 서비스 제공 패키지 양식

ear - jar 와 war를 묶어 하나의 애플리케이션 서비스를 제공할 수 있는 패키지 양식

apk - 안드로이드용 앱 패키지 형식

ipa - IOS용 앱 패키지 형식

 

 

 

<소프트웨어 패키징의 형상관리>

 

형상관리(SCM: Software Configuration Management)

- 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동

- 소프트웨어 개발의 전 단계에 적용되는 활동 / 유지보수 단계에서도 수행

- 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증

 

 

<형상 관리 기능>

1. 형상 식별 - 형상 관리 대상에 이름과 관리 번호를 부여 / 계층구조로 구분하여 수정 및 추적이 용이하도록 하는 작업

2. 버전 제어 - 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절                         차와 도구를 결합시키는 작업

3. 형상 통제 - 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업

4. 형상 감사 - 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업

5. 형상 기록 - 형상의 식별, 통제, 감사 작업의 결과를 기록 관리하고 보고서를 작성하는 작업

 

 

<소프트웨어의 버전 등록 관련 주요 기능>

1. 저장소 (Repository) : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳

2. 가져오기 (Import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사함

3. 체크아웃(Check-Out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아옴 / 소스 파일과 함께 버전 관리를 위한 파일                                           들도 받아옴

4. 체크인 (Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신함

5. 커밋 (Commit) : 체크인을 수행할 때, 이전에 갱신된 내용이 있는 경우 충돌(Conflict)을 알리고 diff도구를 이용해 수정한                                후 갱신을 완료함

6. 동기화 (Update) : 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화함

 

 

<소프트웨어 버전 등록>

1. 가져오기(import) : 개발자가 저장소에 신규로 파일을 추가함

2. 인출(check-out) : 수정 작업을 진행할 개발자가 저장소에 추가된 파일을 자신의 작업공간으로 인출

3. 예치(commit) : 인출한 파일을 수정한 후 설명을 붙여 저장소에 예치함

4. 동기화(update) : 커밋 후, 새로운 개발자가 자신의 작업 공간을 동기화 Update

5. 차이(diff) : 새로운 개발자가 추가된 파일의 수정기록을 확인하면서 이전 개발자가 처음 추가한 파일과 변경된 파일의 차이를 확인함

 

 

 

<소프트웨어 버전 관리 도구>

1. 공유 폴더 방식 : 버전 관리 자료가 지역 컴퓨터의 공유 폴더에 저장되어 관리되는 방식

- 파일을 잘못 복사하거나 다른 위치로 복사하는 것에 대비하여 파일의 변경사항을 DB에 기록한다.

ex) SCCS, RCS, PVCS, QVCS ....

 

2. 클라이언트/서버 방식 : 버전 관리 자료가 서버에 저장되어 관리되는 형식

- 모든 버전 관리는 서버에서 수행된다.

- 서버에 문제가 생기면 서버 복구 전까지 협업 및 버전 관리 작업이 중단된다.

ex) CVS , SVN(Subversion), CVSNT, Clear Case , CMVC , Perforce

 

 

3. 분산 저장소 방식 : 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 지역 저장소에 함께 저장되어 관리되는 방식

- 지역 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 지역 저장소의 자료를 이용하여 작업할 수 있다.

ex) Git , GNU arch, DCVS , Bazaar , Mercurial , TeamWare , Bitkeeper , Plastic SCM ....

 

 

 

<Subversion(서브버전, SVN)>

- CVS를 개선한 것

- 클라이언트 / 서버 구조

- 서버(Repository)에는 최신 버전의 파일들과 변경 사항이 관리된다

- 소스가 오픈되어 있어 무료로 사용 가능하다

- CVS의 단점이었던 파일이나 디렉터리의 이름 변경, 이동이 가능하다

 

명령어

add : 새로운 파일이나 디렉터리를 버전 관리 대상으로 등록 (add 하지 않은 대상은 commit 할 수 없음)

commit : 버전 관리 대상으로 등록된 클라이언트 소스 파일을 서버의 소스 파일에 적용함

update : 서버의 최신 commit 이력을 클라이언트의 소스 파일에 적용

checkout : 버전 관리 정보와 소스 파일을 서버에서 클라이언트로 받아옴

lock/unlock : 서버의 소스파일이나 디렉터리를 잠그거나 해제함

import : 아무것도 없는 서버의 저장소에 맨 처음 소스 파일을 저장 / 한번 밖에 사용 안함

export : 버전 관리에 대한 정보를 제외한 순수한 소스 파일만을 서버에서 받아옴

info : 지정한 파일의 위치나 마지막 수정 일자등의 정보

diff : 지정된 파일이나 경로에 대한 이전 리비전과의 차이 표시

merge : 다른 디렉터리에서 작업된 버전 관리 내역을 기본 개발작업과 병합

 

 

 

<Git(깃)>

- 리누스 토발즈가 개발

- 분산 버전 관리 시스템 (원격 저장소 , 지역 저장소)

- 버전 관리가 지역 저장소에서 되기 때문에 버전 관리가 신속하게 처리되고, 원격 저장소나 네트워크에 문제가 있어도 작업이 가능하다.

 

명령어

add : 작업 내역을 지역 저장소에 저장하기 위해 Staging Area(스테이징 영역)에 추가함 / --all 옵션을 사용 시, 작업 디렉터리의 모든 파일을 스테이징 영역에 추가 가능

commit : 작업 내역을 지역 저장소에 저장함

branch : 새로운 브랜치 생성 / 최초 commit 시 master 브랜치 / commit 할때마다 해당 브랜치는 가장 최근의 commit 내용 가리킴 / -d 로 브랜치 삭제 가능

checkout : 지정한 브랜치로 이동 / 현재 작업중인 브랜치는 HEAD 포인터가 가리키는데 checkout이 이 HEAD 포인터를 이동시킴

merge : 지정한 브랜치의 변경 내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영하여 두 브랜치를 병합함

init : 지역 저장소 생성

remote add : 원격 저장소 연결

push : 로컬 저장소의 변경 내역을 원격 저장소에 반영

fetch : 원격 저장소의 변경 이력만을 지역 저장소에 가져와 반영

clone : 원격 저장소의 전체 내용을 지역 저장소로 복제

fork : 지정한 원격 저장소의 내용을 자신의 원격 저장소로 복제

 

 

<빌드 자동화 도구>

- 빌드를 포함하여 테스트 및 배포를 자동화하는 도구

- Agile 같은 지속적인 통합(Continuous Integration) 개발 환경에서 유용하게 사용

- Ant, Make, Maven , Gradle, Jenkins

- Jenkins와 Gradle이 대표적임

 

1) Jenkins

- JAVA 기반의 오픈 소스 형태

- 서블릿 컨테이너에서 실행되는 서버 기반 도구

- 가장 많이 사용되는 빌드 자동화 도구

- SVN , GIT 등 대부분의 형상 관리 도구

- 친숙한 WEB GUI 기능 제공

 

2) Gradle

- Groovy 기반의 오픈소스 형태 자동화 도구

- 안드로이드 앱 개발 환경에서 사용

- JAVA, C/C++ , Python등의 언어도 플러그인 설정 시 사용 가능

- DSL(Domain Specific Language)를 스크립트 언어로 사용

728x90

'자격증 > 정보처리산업기사' 카테고리의 다른 글

6장 애플리케이션 테스트 수행  (0) 2023.04.09