728x90
형상관리(Configuration Management) [2020년 3회]
① 형상 관리의 개념
- 형상 관리는 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동이다.
- SW 생명 주기 동안 형상 관리를 통해 산출물을 체계적으로 관리하여 SW의 가시성, 추적성, 무결성 등의 품질 보증을 보장할 수 있다.
② 형상 관리의 목적
- 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성을 확보할 수 있다.
- 프로젝트 변경이 발생 되었을 때 처리하는 메커니즘을 제공한다.
- 대표적인 메커니즘으로 형성 관리대상 파악, 베이스라인 지정, 형상 관리, 접근제어 등이 있다.
③ 형상 관리의 절차
- 형상 관리는 다음과 같은 절차를 통해 품질 보증의 목적으로 수행된다.
절차 | 설명 |
형상 식별 | - 형상 관리 대상을 정의 및 식별하는 활동 - 추적성 부여를 위해 ID와 관리번호를 부여 - 변경 관련 이슈 발생 시 ID와 관리번호를 이용하여 추적 |
형상 통제 | - 형상 항목의 버전 관리를 위한 형상통제위원회 운영 - 변경요구 관리, 변경제어, 형상 관리 등 통제 지원 - 베이스라인에 대한 관리 및 형상 통제 수행 가능 |
형상 감사 | - 소프트웨어 베이스라인의 무결성 평가 - 베이스라인 변경 시 요구사항과 일치 여부 검토 |
형상 기록 | - 소프트웨어 형상 및 변경관리에 대한 각종 수행결과를 기록 - 형상결과 보고서 작성 |
④ 소프트웨어 형상 관리 도구 유형
초기의 소프트웨어 형상 관리 도구는 공유 폴더 방식을 많이 활용하였지만, 최근에는 클라이언트/서버 방식과 분산 저장소 방식이 많이 활용된다.
형상 관리 도구 유형 | 설명 |
공유 폴더 방식 (RCS, SCCS) |
- 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식 - 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동작 여부 확인 - 정상 동작일 경우 다음날 각 개발자들이 동작 여부 확인 |
클라이언트/서버 방식 (CVS, SVN) |
- 중앙에 버전 관리 시스템을 항시 동작시키는 방식 - 개발자들의 현재 작업 내용과 이전 작업내용 추적에 용이 - 서로 다른 개발자가 같은 파일을 작업했을 때 경고 메시지 출력 |
분산 저장소 방식 (Git 등) |
- 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식 - 중앙의 저장소에서 로컬 파일을 복사(Clone)한 순간 개발자 자신만의 로컬 저장소에 생성 - 개발 완료한 파일을 수정한 다음에 로컬 저장소에 우선적으로 커밋(Commit)한 이후, 다시 원격 저장소에 반영(Push)하는 방식 |
⑤ 소프트웨어 형상 관리 도구별 특징
현재 국내 개별 프로젝트에서는 SVN을 가장 많이 사용하고 있으나, 전세계적으로는 오픈 소스 기반의 소프트웨어 형상 관리 도구인 Git을 가장 많이 사용하고 있다.
형상 관리 도구 | 설명 |
CVS(Concurrent Versions System) | - 서버와 클라이언트로 구성되어있고, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상 관리 도구 |
SVN(Suversion) | - 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구 - 저장소를 만들어 그곳에 소스를 저장해 소스 중복이나 여러 문제를 해결하기 위한 도구 |
RCS(Revision Control System) | - CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠근 방식으로 형상을 관리하는 도구 |
Bitkeeper | - SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구 |
Git | - Git의 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에서 효과적이고 유용 - Git의 커밋(Commit) 동작은 로컬 저장소에서 이루어지고, 푸시(Push)라는 동작으로 원격 저장소에 반영 - 로컬 저장소에서 작업이 이루어져 매우 빠른 응답을 받을 수 있음 - Git의 작업폴더는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하는 완전한 형태의 저장소 |
Clear Case | - 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음 |
⑥ 소프트웨어 형상 관리 도구 사용 시 유의사항
유의 사항 | 설명 |
버전에 대한 쉬운 정보 접근성 |
- 형상 관리 지침에 의한 버전에 대한 정보를 언제든지 접근할 수 있어야 함 - 프로젝트 단위 접근이든, 파일 단위의 접근이든 간에 개발자가 원하는 때에 원하는 모습을 다시 구성할 수 있어야 함 |
불필요한 사용자에 대한 접근 제어 |
- 제품 소프트웨어 개발자, 배포자 이외에 불필요한 사용자가 소스를 수정할 수 없도록 해야 함 - 중요한 파일 혹은 폴더에 대한 접근은 개발자, 배포자 등 권한이 있는 자만 접근할 수 있도록 함 |
동일 프로젝트에 대한 동시 사용성 |
- 동일한 프로젝트에 대해서 여러 개발자가 동시에 개발할 수 있어야 함 - 여러 개발자가 동일한 파일, 폴더에 접근 시 동시에 파일 수정이 일어나더라도 개발자의 수정 내역이 통합될 수 있어야 함 |
빠른 오류 복구 | - 에러 발생 시 최대한 빠른 시간 내에 복구가 가능해야 함 - 과거 버전의 소스를 가지고 신속하게 원복할 수 있어야 함 |
소프트웨어 모듈 응집도
응집도(Cohesion)의 개념 [2020년 1회]
- 응집도는 모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도이다.
- 하나의 모듈은 하나의 기능을 수행할수록 응집도가 높다.
응집도의 유형 [2021년 2회]
- 응집도의 유형에는 우연적, 논리적, 시간적, 절차적, 통신적, 순차적, 기능적 응집도 순서로 응집도가 높아진다.
유형 | 설명 |
우연적 응집도 (Coincidental Cohesion) |
모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도 |
논리적 응집도 (Logical Cohesion) |
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도 |
시간적 응집도 (Temporal Cohesion) |
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도 |
절차적 응집도 (Procedural Cohesion) |
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도 |
통신적 응집도 (Communication Cohesion) |
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도 |
순차적 응집도 (Sequential Cohesion) |
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도 |
기능적 응집도 (Functional Cohesion) |
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도 |
- 응집도가 높아질 수록 품질이 좋아진다.
소프트웨어 모듈 결합도
결합도(Coupling)의 개념 [2020년 1회]
- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성이다.
- 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도이다.
결합도의 유형 [2021년 1회, 3회]
- 결합도의 유형은 내용, 공통, 외부, 제어 , 스탬프, 자료 결합도 순으로 결합도가 낮아진다.
유형 | 설명 |
내용 결합도 | - 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도 - 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있는 경우의 결합도 |
공통 결합도 | - 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도 - 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도 |
외부 결합도 | - 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토코르 또는 디바이스 인터페이스를 공유할 경우의 결합도 - 외부 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도 |
제어 결합도 | - 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도 - 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하는 결합도 |
스탬프 결합도 | - 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도 - 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이며, 자료 구조의 어떠한 변화는 모든 모듈에 영향을 미치게 됨 |
자료 결합도 | - 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도 - 한 모듈의 내용을 변경하더라도 다른 모듈에는 영향을 미치지 않는 상태로 가장 바람직한 결합도 |
- 결합도가 낮을수록 품질이 좋아진다.
팬인(Fan-In) 및 팬아웃(Fan-Out) 계산 방법 [2020년 1회]
시스템 구조도에서 각 모듈의 팬인 및 팬아웃을 구하는 방법은 아래와 같다.
[참고 : 수제비 2022]
'자격증 > 정보처리기사' 카테고리의 다른 글
chapter 10. 애플리케이션 테스트 관리 (1) (0) | 2022.05.03 |
---|---|
chapter 09. 소프트웨어 개발 보안 구축 (0) | 2022.05.02 |
chapter 07. SQL 응용 (1) | 2022.04.27 |
chapter 06. 프로그래밍 언어 활용 (0) | 2022.04.25 |
chapter 05. 인터페이스 구현 (0) | 2022.04.24 |