🤖 개발 도구의 분류
- 빌드 도구
- 작성한 코드의 빌드/배포를 수행하는 도구
- 각각의 구성요소와 모듈에 대한 의존성 관리를 지원 - 구현 도구
- 개발자의 코드 작성, 디버깅, 수정 등과 같은 작업을 지원하는 도구 - 테스트 도구
- 코드의 기능 검증과 전체 품질을 향상시키기 위해 사용하는 도구
- 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능 - 형상관리 도구
- 개발자들이 작성한 코드, 리소스 등 산출물에 대한 버전 관리를 위한 도구
- 프로젝트 진행 시 필수로 포함
🤖 소프트웨어 형상 관리 (SCM; Software Configuration Management)
: 개발 과정에서 SW 변경 사항을 관리하기 위한 활동
- 형상 관리의 역할
- 배포본 관리 용이
- 불필요한 소스 수정 제한
- 여러 개발자가 동시에 개발 가능 - 형상 관리 절차
- 형상 식별
- 관리 대상을 정의/식별
- 추적성 부여를 위해 ID, 관리번호 부여 - 형상 통제
- 형상 항목의 버전 관리를 위한 형상통제위원회 운영
- 변경요구 관리, 변경 제어, 형상 관리 등 통제 지원
- 베이스라인(개발 과정 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준)에 대한 관리 및 형상 통제 수행 - 형상 감사
- 소프트위어 베이스라인의 무결성 평가 - 형상 기록
- 소프트웨어 형상, 변경관리에 대한 각종 수행결과를 보고서로 작성
- 형상 식별
- 형상 관리 도구
- 공유 폴더 방식
- 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
- 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사 및 컴파일하여 에러 확인
- Ex. RCS, SCCS, PVCS, QVCS
- RCS (Revision Control System)
: 소스 파일의 수정을 한 사람만으로 제한, 다수가 파일 수정을 동시에 못하게 파일 잠금 방식으로 형상관리 - 클라이언트/서버 방식
- 중앙에 버전 관리 시스템을 항시 동작시키는 방식
- 개발자들의 현재/이전 작업 내용 추적 용이
- 서로 다른 개발자가 동일 파일에 작업 시 경고 메시지 출력
- Ex. CVS, SVN, CVSNT, CMBC
- SVN (Subversion)
: 하나의 서버에서 소스를 손쉽게 관리할 수 있도록 도와주는 도구
저장소를 만들어서 그곳에 소스를 저장하여 소스 중복 등의 문제를 해결
CVS를 개선한 툴
Commit 수행 시 revision 1씩 증가 - 분산 저장소 방식
- 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
- 중앙 저장소에서 로컬 파일을 복사한 순간 개발자 자신만의 로컬 저장소에 생성
- 개발 완료한 파일을 수정한 다음 로컬 저장소에 우선적으로 커밋한 후, 원격 저장소에 반영하는 방식
- Ex. Git, GNU arch, DCVS, Bitkeeper, Bazaar
- Git
: Git의 속도에 중점을 둔 분산형 버전 관리 시스템
전 세계적으로 가장 많이 사용하며 대형 프로젝트에서 효과적
Git의 작업 폴더는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하는 완전한 형태의 저장소
Commit 실수가 발생해도 서버에 영향 없음 (분산된 P2P 모델)
- 공유 폴더 방식
🤖 응집도
: 개별 모듈이 독립적인 기능으로 정의되어 있는 정도 (응집도가 강할 수록 품질이 좋음)
우연적 < 논리적 < 시간적 < 절차적 < 교환적(통신적) < 순차적 < 기능적
- 우연적 응집도 (Coincidental Cohesion)
: 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도 - 논리적 응집도 (Logical Cohesion)
: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들오 하나의 모듈이 형성되는 경우의 응집도 - 시간적 응집도 (Temporal Cohesion)
: (연관된 기능이라기보다) 특정 시간에 처리되어야 하는 활동들의 하나의 모듈에서 처리할 경우의 응집도 - 절차적 응집도 (Procedural Cohesion)
: 모듈의 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도 - 교환적(통신적) 응집도 (Communication Cohesion)
: 동일한 입력과 출력을 사용해 서로 다른 기능을 수행하는 구성요소들이 모였을 경우의 응집도 - 순차적 응집도 (Sequential Cohesion)
: 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도 - 기능적 응집도 (Functional Cohesion)
: 모듈 내부의 모든 기능 요소들이 하나의 문제와 밀접하게 연관되어 수행될 경우의 응집도
🤖 결합도
: 개별 모듈 간 상호 의존하는 정도 (결합도가 약할 수록 품질이 좋음)
내용 > 공통(공유) > 외부 > 제어 > 스탬프 > 자료
- 내용 결합도 (Content Coupling)
: 한 모듈이 다른 모듈의 내부 기능 및 자료를 직접적으로 참조하거나 수정할 때의 결합도 - 공통(공유) 결합도 (Common Coupling)
: 공통 데이터 영역(전역 변수)을 참조, 갱신하는 식으로 상호작용할 때의 결합도 - 외부 결합도 (External Coupling)
: 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도 - 제어 결합도 (Control Coupling)
: 모듈 간의 인터페이스로 데이터를 어떻게 처리해야 하는지를 결정하는 제어 요소(flag)가 전달될 때의 결합도 - 스탬프 결합도 (Stamp Coupling)
: 모듈 간의 인터페이스로 배열, 레코드 등의 자료 구조가 전달될 때의 결합도 - 자료 결합도 (Data Coupling)
: 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
'Certifications > 정보처리기사 실기' 카테고리의 다른 글
[정보처리기사 실기] 응용 SW 기초 기술 활용 _ 네트워크 기초 활용 (5) | 2024.10.11 |
---|---|
[정보처리기사 실기] 응용 SW 기초 기술 활용 _ 운영체제 특징 (1) | 2024.10.10 |
[정보처리기사 실기] 데이터 입출력 구현 (2) | 2024.10.08 |
[정보처리기사 실기] 화면 설계 (5) | 2024.10.06 |
[정보처리기사 실기] 요구사항 확인 (0) | 2024.10.06 |