자격증/정보처리기사

chapter 08. 서버 프로그램 구현

yeonx 2022. 5. 2. 06:11
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]