일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 운영체제 서비스
- 겁나 많아
- 말 인용
- 선택
- gensim 3.7.3 설치 오류
- 운영체제의 기능 1. 자원 관리 기능 2. 시스템 보호 3. 네트워크(통신 기능)
- 미래 사회의 단위
- 국립과천과학관
- 기계어
- 장치에 할당할 수 없는 NET ID Broadcast주소
- 반복 구조 찾기
- 운영체제의 발달 과정
- 해결 방안
- 절차적 사고
- 공부정리
- 출력
- 소프트웨어
- 레지스터
- 컴퓨터
- 운영체제 목적
- 소프트웨어 시대
- 프로그래밍
- 순서도
- 앨런 튜링
- 패킷트레이서 이용
- 운영체제의 미래
- 딥러닝
- 뿌..
- 절차적 사고의 장점
- 처리
- Today
- Total
hye-_
2. 저작권 매뉴얼 형상곤리 - 24. 형상관리 본문
24. 형상관리
1. 형상관리 항목 절차
2. 형상 관리 도구
3. 형상 관리 절차
4. 버전관리 도구
5. 형상관리 명령어
형상관리
일본식 한자어이다. 한국식 한자어로 바꾼다면 환경설정 또는 형태이다.
그래서 소프트웨어의 전체적인 형태나, 환경 설정값을 기록하고 있는 것을 형상관리라고 한다.
소프트웨어가 가지고 있는 전체적인 흐름에 대한 문서이다.
이런 문서를 관리 하는게 형상관리이다.
형상관리가 필요한 이유는?
형상관리안에는 버전관리가 있다. 새롭게 변경될 때마다, 개선될 때마다 기록해 가는 것인데,
형상은 소프트웨어를 맨처음에 기획할 때부터 죽을 때까지 계속 따라가는 것이다. 그러면 유지보수가 훨씬 쉬워진다.
왜 유지보수가 쉬워지냐?
언제 어느 시점에 무엇을 변경했는지 우리가 정확하게 알 수 있기 때문이다.
형상 관리 (Configuration Management) ☆
개발 단계에 생성되는 모든 문서, 코드 등 소프트웨어의 변경사항을 체계적으로 관리하기 위하여 추적하고 통제하는 것이다.
작업 산출물을 형상 항목(Configuration Item)이라는 형태로 선정하고, 형상 항목 간의 변경사항 추적과 통제 정책을 수립하고 관리한다.
요구사항 변경 또는 오류로 지속해서 변화하는 자료이며, 이러한 변화를 이력화 하여 유지보수성을 향상할 수 있다.
- 소프트웨어는 눈으로 확인할 수 있는 가시성이 없으므로 개발 과정의 진행 정도를 확인하는 도구로 사용된다.
- 이런걸 관리해 주는 툴을 CASE라고 한다. CASE를 통해서 형상 관리가 간편하게 이루어진다.
- 단순 버전 관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 의미한다.
# 작업 산출물 = 형상 항목
- 개발 단계에서 생성되는 모든 문서(설계도 외 엄청 많은 문서들), 코드 등 변경사항 모든 것들을 작업 산출물이라고 한다.
- 다른 말로 형상 항목이라고도 한다. 즉 관리할 대상이 되는 것이다.
1. 형상 관리 항목 (Configuration Item) ☆
개발 프로세스에서 생산되거나 사용되는 작업 산출물, 작업 산출물들의 집합체를 의미한다.
대표적인 소프트웨어 형상 항목
1. 프로젝트 요구 분석서
2. 운영 및 설치 지침서
3. 요구사항 명세서
4. 설계/ 인터페이스 명세서
5. 테스트 설계서
6. 소프트웨어 품질보증
7. 형상 관리
8. V&V 계획서와 같은 계획서 (품질 관리 계획서, 푸밎ㄹ 관리 매뉴얼)
9. 코드 모듈(소스와 오브젝트 모두)
# V&V 계획서
확인 및 검증 (Verification & Validation)
형상 관리 종류
형상 관리는 버전관리, 리비전 관리, 변경 관리, 빌드 관리, 이슈 관리 등을 모두 포함한다.
1. 버전 관리
- 다양한 형상 항목이 과거부터 현재에 이르기까지 요구사항 등의 변화에 따라 버전을 부여함으로써 이력을 관리하는 것이다.
- 버전을 통해 시간적인 변경사항과 해당 작업 담당자를 추적할 수 있다.
2. 변경 관리
- 프로그램이 변경된것이 아닌 변경된 요구사항에 대하여, 비용 및 기간 등을 고려하고 타당성을 평가한다.
- 요구사항이 타당한 경우 제품 또는 산출물을 변경하고, 그렇지 않을 경우 변경을 거부하는 활동이다.
예) 안드로이드 폰 내에 아이폰 기능을 삽입해 줘.
그러면 폰 내부적으로 전체적인걸 바꿔야 하므로 이런 건 안돼라고 하는 것을 변경 관리를 통해 가능하다.
2. 형상 관리 도구 ☆
소프트웨어 개발 생명주기 전반에 걸쳐 생성되는 소스 코드와 문서 등과 같은 산출물의 종합 및 변경 과정을 체계적으로 관리하고 유지하는 일련의 개발 관리 활동이다.
- 소프트웨어에 가시성과 추적 가능성을 부여하여 제품의 품질과 안전성을 높인다.
- 형상 식별, 형상 통제, 형상 상태 보고, 형상 감사를 통하여 변경사항을 관리한다.
이전 리비전이나 버전에 대한 정보에 접근 가능하여 배포본 관리에 유용하다.
- 불필요한 사용자의 소스 수정을 제한할 수 있다.
- 동일한 프로젝트에 대해 여러 개발자가 동시 개발이 가능하다.
예) 깃허브
공동작업할 때 많이 사용한다.
형상 관리의 필요성
1. 이미 수정된 오류가 갑자기 다시 나타나거나, 사용하던 문서나 코드가 갑자기 사라지거나 찾을 수 없는 경우가 발생할 수 있다.
2. 원시 코드와 실행 코드의 버전이 일치하지 않는다.
3. 요구사항이 자주 변경되고, 변경이 어떤 결과를 가져올지 예측할 수 없다.
4. 무엇을 변경해야 할지 막연하고, 따라서 변경에 대한 노력을 예측할 수 없다.
5. 분산된 지역에서 소프트웨어를 병렬적으로 개발하기 어렵다.
6. 제품 납기일을 맞추기가 어렵고, 프로젝트가 계획대로 잘 진행되고 있는지 모르겠다.
형상 관리의 효과
1. 관리적 효과
- 표준 확립으로 전사적 IT 자원 관리 쉬워, 기간별/팀별/업무별 산출물 현황 및 변경 이력 통계를 파악할 수 있다.
- 제품 개발 관련 산출물이 자동 생성되고 관리된다.
- 개발/유지보수 활동을 통합 관리할 수 있다.
- 변경 프로세스의 체계를 확립하고, 외주 개발 통제 및 현황 파악을 도와준다.
2. 품질 향상 효과
- 산출물 버전 관리를 자동으로 생성 관리할 수 있어 결함 및 오류가 감소한다.
- 변경 프로그램의 이력 관리를 통하여 문제 파악 및 버그 수정이 쉬워지고, 변경 내용의 영향 분석이 쉬워진다.
3. 형상 관리 절차 ☆
형상식별 → 형상통제 →형상보고 및 감사 → 형상 기록/보고
형상 관리는 최초 계획을 수립하고 형상 식별, 통제, 감사, 기록 및 보고와 같은 활동들을 통해 일련의 과정들을 거치게 된다.
1. 형상 식별 (Configuration Identification)
- 형상 관리의 가장 기본이 되는 활동으로 형상 관리 계획을 근거로 형상 관리의 대상이 무엇인지 식별하는 과정이다.
- 변경 추적성 부여와 대상 식별을 위해 ID와 관리 번호를 할당한다.
2. 형상 통제 (Configuration Control)
- 형상통제위원회 운영을 통하여 변경 통제가 이루어져야 한다. (아무나 막 바꾸면 안 되기 때문에)
- 요구사항 변경 요구를 관리하고, 변경 제어, 형상 관리 등의 통제를 지원하고 기준선에 대한 관리 및 형상 통제 수행할 수 있다.
3. 형상 보고 및 감사
- 기준선(BaseLine)의 무결성 평가 단계로서 개발자, 유지보수 담당자가 아닌 제3자의 객관적인 확인 및 검증 과정을 통해 새로운 형상의 무결성을 확보하는 활동이다.
형상 감사 시 고려사항
1. 명시된 변경이 정확하게 수정되었는가?
2. 기술 검토를 수행하였는가?
3. 개발 프로세스를 준수하였는가?
4. 변경 발생 시, 형상 관리 절차를 준수하였는가?
5. 변경에 대한 정보(변경일, 변경인, 변경사항)를 기록하였는가?
4. 형상 기록/보고
- 소프트웨어 개발 상태에 대한 보고서를 제공하는 단계로 기준선에 대한 변경과 처리 과정에서의 변경을 상태 보고에 모두 기록한다.
기록/보고 항목
1. 승인된 형상 리스트
2. 계획된 변경 상태
3. 승인된 변경의 구현 상태
형상 관리 ⊇ 버전 관리 ⊇ 변경 관리
1. 형상 관리 (Configuration Management) 프로젝트 관리
버전, 변경 관리 개념을 포함하고, 프로젝트 진행 상황, 빌드와 릴리즈 퍼블리싱까지 모두 관리할 수 있는 통합 시스템이라고 할 수 있다.
2. 버전 관리 (Version Management) 이력 관리
- 변경 이력을 추적 관리하는 가장 좋은 방법이 버전으로 구분하는 것이다.
- 사소한 체크인, 체크아웃부터 릴리즈, 퍼블리싱의 과정을 버전으로 관리한다.
3. 변경 관리 (Version Mangement) 소스코드 관리
- 소스 코드의 변경 상황을 관리한다.
- 문서의 변경 이력과 복원 등의 기능이 제공된다.
4. 버전 관리 도구 구분
1. 공유 폴더 방식 (제일 먼저 만들어진 방식, 현재는 거의 사용하지 않는다.)
- 담당자 한 명이 공유 폴더 내 자료를 자신의 PC로 복사한 후 컴파일하여 이상 유무를 확인하고, 파일의 오류가 확인되면, 해당 파일을 등록한 개발자에게 수정 의뢰한다.
- 개발자들은 매일 완료된 파일을 공유 폴더에 복사하여 관리한다.
- 파일에 이상이 없다면 다음날 각 개발자가 동작 여부를 다시 확인한다.
- 파일의 변경사항을 데이터베이스에 기록하여 관리한다.
종류
SCCS, RCS, PVCS, QVCS
2. 클라이언트/ 서버 방식
- 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식이다.
- 서버의 자료를 개발자별로 자신의 PC(클라이언트)로 복사하여 작업 후 변경된 내용을 서버에 반영하고, 모든 버전 관리는 서버에서 수행하는 방식이다.
- 하나의 파일을 서로 다른 개발자가 작업할 경우 경고 메시지를 출력한다.
- 서버에 문제가 생기면, 서버가 복구되기 전까지 다른 개발자와의 협업 및 버전 관리 작업을 중단한다.
종류
CVS, SVN(Subversion), OMVC, Perforce, CVSNT, Clear Case
3. 분산 저장소 방식 ☆
- 버전 관리 자료가 원격 저장소와 로컬 저장소와 함께 저장되어 관리된다.
- 로컬 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업할 수 있다.
- 개발자별로 원격 저장소의 자료를 각자의 로컬 저장소로 복사하여 작업 후 변경사항을 로컬 저장소에서 우선 적용하여 로컬 버전 관리가 가능하다.
- 개발 완료한 파일을 수정한 다음에 로컬 저장소에 먼저 커밋(Commit ; 승인)한 이후, 다시 원격 저장소에 반영(Push)하는 방식이다.
종류
Git, Bazaar, Mercurial, TeamWare, Bitkeeper, Plasic SCM, GNU arch
주요 버전 관리 도구
1. CVS (Concurrent Versions System)
- 동시 버전 시스템이다.
- 소프트웨어 프로젝트를 진행할 때, 파일로 이뤄진 모든 작업과 모든 변화를 추적하고, 여러 개발자가 협력하여 작업할 수 있게 한다.
- 오픈소스 프로젝트에서 널리 사용되었다.
- 최근에는 CVS가 한계를 맞아, 이를 대체하는 Subversion이 개발되었다.
2. RCS (Revision Control System) ☆
- 동시에 소스를 수정하는 것을 방지하며 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 있는 소프트웨어 버전 관리 도구
- CVS와의 차이점은 소스 파일의 수정을 한 사람만으로 제한한다.
- 다수의 사용자가 동시에 파일 수정을 할 수 없도록 파일 잠금 방식으로 버전을 관리하는 도구이다.
3. SVN (Subversion)
- CVS보다 속도 개선, 저장 공간, 변경 관리 단위가 작업 모음 단위로 개선되었다. 2000년부터 콜랩넷에서 개발되었다.
- CVS와 사용 방법이 유사해 CVS 사용자가 쉽게 도입해 사용할 수 있다.
- 아파치 최상위 프로젝트로서 전 세계 개발자 커뮤니티와 함께 개발되고 있다.
- 디렉터리, 파일을 자유롭게 이동해도 버전 관리가 가능하다.
# repository(저장소)
프로젝트의 파일 및 변경 정보가 저장되는 장소이다.
# trunk
메인 개발 소스, 개발 소스를 commit 했을 때 개발 소스가 모이는 곳이다.
# branch
trunk에서 분기된(어떤 걸 개발하려다가 다른 것도 개발가능한데?? 가지치기한 것) 개발 소스로 실험적인 기능을 추가하거나, 출시를 위한 안정화 버전 작업을 할 때 사용한다.
# tag
특정 시점에서 프로젝트의 스냅숏(스샷)을 찍어 두는 것을 의미한다.
4. Bit keeper
SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 버전 관리 도구이다.
5. Git
- 프로그램 등의 소스 코드 관리를 위한 분산 저장소 방식 시스템이다.
- 리누스 토르발스가 리눅스 커널 개발에 이용하여고 개발하였으며, 현재는 다른 곳에도 널리 사용되고 있다.
- 지역 저장소와 연격 저장소 2개의 저장소가 존재한다.
- 지역 저장소에서 버전 관리가 진행되어, 버전 관리가 빠르다.
- 깃의 작업 폴더는 모두 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있으며, 완전한 형태의 저장소이다.
- 네트워크에 접근하거나 중앙 서버에 의존하지 않는다.
# 지역 저장소
개발자가 실제 작업하는 로컬 저장소
#원격 저장소
다수 개발자가 협업을 위해 공동 관리하는 저장소
6. Clear Case
- 복수 서버, 복수 클라이언트 구조이다.
- 서버 확장 요구가 있을 때 필요한 서버를 하나씩 추가할 수 있다.
컴포넌트 저장소 (Repository)
인증을 받은 컴포넌트를 등록하는 저장소로 손쉽게 컴포넌트 이용할 수 있다.
저장소는 컴포넌트의 최신 버전을 유지하고 있으며, 컴포넌트의 버전별 상태도 유지하고 관리함으로써 사용자가 컴포넌트 이용을 쉽게 한다.
Git 주요 명령어
init | 새로운 로컬 git 생성하기 |
add | 저장소(Staging Area)에 파일을 추가하기 |
commit | 작업 내 지역 저장소에 저장하기 |
branch | 새로운 파생 저장소인 브랜치 생성하기 |
checkout | 선택한 브랜치로 이동하기 |
merge | 현재 브랜치와 저장한 브랜치를 병합하기 |
fetch | Git 서버에서 코드를 받아오기 |
pull ; 끌어당 | Git 서버에서 최신 코드 받아와 병합하기 |
remote | 원격 저장소 추가하기 |
clone | 원격 저장소에 있는 프로젝트 복사하여 내려받기 |
Subversion (SVN) 주요 명령어 ☆
import | 아무것도 없는 서버의 저장소에 맨 처음 소스 파일을 저장한다. |
check in | 체크아웃으로 가져온 파일을 수정 후 저장소(Repository)에 새로운 버전으로 갱신한다. |
check out | 타 개발자가 수정 작업을 위하여 저장소(Repository)에 새로운 버전으로 갱신한다. |
commit | 체크인 시 이전 갱신 사항이 있는 경우 충돌(Conflict)이 있을 경우 알림을 표시하고 diff(코드 비교)도구를 이용 하여 수정한 뒤 commit(예치) 과정을 수행한다. |
diff (different약자) | 새로운 개발자가 추가된 파일의 수정 기록(change Log)을 보면서 기존 개발자가 처음 추가한 파일과 이후 변경된 파일의 차이를 본다.(Diff) |
update | 저장소에 존재하는 최신 버전 자료와 자신의 작업 공간과 동기화(Update)한다. |
branch | 주 저장소에서 파생된 프로젝트이다. |
fork | 주 저장소에서 소프트웨어 소스 코드를 통째로 복사하여 독립적인 새로운 소프트웨어 개발 허용하는 것으로 제시된 라이선스 기준을 지켜야 한다. |
update | commit 후 새로운 개발자가 자신의 작업 공간과 저장소를 동기화한다. |
info | 저장된 파일에 대한 정보를 표시한다. |
merge | 다른 디렉터리에서 작업된 버전 관리 내역을 기본 개발 작업과 병합한다. |
문제 풀이
1. 형상 관리 절차 중 형상 통제를 주도하는 기관은?
형상통제위원회
2. 형상통제위원회에서 프로젝트 관리를 위한 명세서 또는 제품으로서, 소프트웨어 개발 과정 중 변경사항을 통제하기 위한 기준을 무엇이라고 하는가?
기준선
3. 소프트에어 형상 관리에서 관리 항목에 포함되지 않는 것은?
① 프로젝트 요구분석서
② 소스 코드
③ 운영 및 설치 지침서
④ 프로젝트 개발 비용
4번
4. 소프트웨어의 개발 과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동을 뜻하는 것은?
① 복호화
② 형상 관리
③ 저작권
④ 크랙
2번
5. 제품 소프트웨어의 형상 관리 역할로 틀린 것은?
① 형상 관리를 통해 이전 리비전이나 버전에 대한 정보에 접근 가능하여 배포본 관리에 유용
② 불필요한 사용자의 소스 수정 제한
③ 프로젝트 개발 비용을 효율적으로 관리
④ 동일한 프로젝트에 대해 여러 개발자 동시 개발 가능
3번
6. 소프트웨어 형상 관리의 의미로 적절한 것은?
① 비용에 관한 사항을 효율적으로 관리하는 것
② 개발 과정의 변경사항을 관리하는 것
③ 테스트 과정에서 소프트웨어를 통합하는 것
④ 개발 인력을 관리하는 것
2번
1. 다음이 설명하는 버전 관리 도구는?
- 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이다.
- 리누스 토르발스가 리눅스 커널 개발에 이용하려고 개발하였으며, 현재는 다른 곳에도 널리 사용되고 있다.
- 지역 저장소와 원격 저장소 2개의 저장소가 존재한다.
Git
2. 버전 관리 도구에서 프로젝트의 파일 및 변경 정보가 저장되는 장소는?
repository
3. 동시에 소스를 수정하는 것을 방지하며 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있는 소프트웨어 버전 관리 도구는?
① RCS (Revision Control System)
② RTS (Reliable Transfer Service)
③ RTC (Remote Procedure Call)
④ RVS (Relative Version System)
1번
4. 공유 폴더 방식의 버전 관리 도구의 설명으로 잘못된 것은?
① 개발자들은 매일 완료된 파일을 공유 폴더에 복사하여 관리한다.
② 파일에 이상이 없다면 다음날 각 개발자가 동작 여부를 다시 확인한다.
③ 파일의 변경 사항을 데이터베이스에 기록하여 관리한다.
④ 종류에는 CVS, SVN (Subversion), CMVC, Perforce, CVSNT, Clear Case 등이 있다.
4번
클라이언트/서버 방식
5. 형상 관리 도구의 주요 기능으로 거리가 먼 것은?
① 정규화 (Normalization)
② 체크인 (Check-in)
③ 체크아웃 (Check-out)
④ 커밋 (Commit)
1번
'정처기 > 소프트웨어 구현' 카테고리의 다른 글
3. SW 테스트 - 26. 테스트 시나리오와 테스트 기법 (1) | 2023.04.24 |
---|---|
3. SW 테스트 - 25. 애플리케이션 테스트 관리 (0) | 2023.04.19 |
2. 저작권 메뉴얼 형상관리 - 23. 제품 소프트웨어 매뉴얼 작성 (0) | 2023.04.17 |
2. 저작권 매뉴얼 형상관리 - 22. 제품 소프트웨어 저작권 (0) | 2023.04.17 |
1. 통합구현 - 21. 제품소프트웨어 패키징 (0) | 2023.04.17 |