통합 구현

2022. 5. 30. 13:51정처기(필기)/소프트웨어개발

(1) 단위 모듈 구현

 

1. 단위 모듈 구현의 개념

- 단위 모듈 구현은 소프트웨어 개발할 때 그 기능을 단위 모듈별로 나누어 추상화하여 성능을 향상시키고, 유지보수를 효과적으로 하기 위한 구현 기법이다. 

 

2. 단위 모듈 구현의 원리

  • 정보 은닉 : 어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐
  • 분할과 정복 : 복잡한 문제를 분해, 모듈 단위로 문제 해결
  • 데이터 추상화 : 각 모듈 자료 구조를 액세스하고 수정하는 함수내에 자료 구조의 표현 내역을 은폐
  • 모듈 독립성 : 낮은 결합도와 높은 응집도

3. 재사용 기법

- 재사용은 이미 개발되어 그 기능, 성능 및 품질을 인정 받았던 소프트웨어의 전체 또는 일부분을 사용하는 기법이다. 

 

▼ 재사용 종류

구분 설명
재공학 기존 소프트웨어를 버리지 않고 기능을 개선시키거나 재활용하는 기법 
장점으로는 위험부담 감소, 비용 절감, 개발 기간 단축, 시스템 명세의 오류억제가 있음
역공학 SW에 대한 디버깅, 디컴파일 등의 분석을 통해 기존 제품에 구현된 구조, 원리, 기술, 알고리즘 등을 역으로 분석하여 재구성하는 기법
재개발 기존 시스템 내용을 참조하여 완전히 새로운 시스템을 개발하는 기법

 

▼ 재사용 규모에 따른 분류

  • 함수와 객체 : 클래스나 메소드 단위의 소스 코드 재사용
  • 컴포넌트 : 인터페이스를 통해 통신하는 방식으로 재사용
  • 애플리케이션 : 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식으로 재사용

 

(2) 단위 모듈 테스트

1. 단위 모듈 테스트란

- 모듈의 개별적인 코드 단위가 예상대로 작동하는지 확인하는 기법

- IDE 도구를 활용하여 디버기를 수행함

 

 

2. 단위 모듈 테스트의 종류

  1. 블랙박스 테스트(명세기반) : 프로그램 외부 사용자의 요구사항을 보면서 수행하는 테스트(기능 테스트)
  2. 화이트박스 테스트(구조 기반) : 모듈 내부의 소스를 보면서 수행하는 테스트
  3. 메소드 기반 테스트 : 단위 모듈의 외부에 공개된 메소드 기반의 테스트
  4. 화면 기반 테스트 : 사용자용 화면을 통해 각각의 화면단위로 단위 모듈을 개발 후에 직접 테스트

!!여기서 잠깐!!

컴포넌트와 모듈은 무슨 차이일까?

- 컴포넌트는 런타임에 독립적으로 배포되고 실행되는 단위, 모듈은 정적인 구조

 

(3) IDE 도구

1. IDE 도구란

- 코딩, 디버깅, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 환경에서 제공하는 소프트웨어

 

2. 대표적인 개발 도구

  • 이클립스 : Java 개발 최적화
  • 비주얼 스튜디오 : C 계열 언어 중심
  • 엑스 코드 : iOS 기반 앱 개발

 

(4) 협업 도구

1. 헙업 도구란

- 다른 개발자와 유대감을 형성하거나 개발 관련 소통을 위해서 지속적으로 커뮤니케이션을 수행하기 위한 도구

 

2. 협업 도구의 분류

문서 공유용 -> 구글 드라이브

소스 공유용 -> 깃허브

아이디어 공유용 -> 에버노트

디자인 공유용 -> 레드펜

마인드맵 -> 마인드 마이스터

프로젝트 관리 -> 트렐로, 레드마인, 지라

일정 관리 -> 구글 캘린더

 

 

3. 협업 도구의 기능

- 개발자 간 커뮤니케이션, 일정 및 이슈 공유가 가능하고 개발자 간 집단 지성을 효율적으로 활용할 수 있다. 

 

(5) 형상 관리 도구

1. 형상 관리의 개념

- 형상 관리를 소프트웨어 생명주기 동안 발생하는 변경사항을 체계적으로 관리하여 소프트웨어의 품질 보증얄 항상시키는 관리적 활동

 

2. 형상 관리 절차

형상 식별(형상 관리 대상이 무엇인지 식별하는 활동, 이때 ID와 관리번호를 부여함)  -> 형상 통제(변경사항에 대해 승인할지 기각할지를 결정하고 그에 따른 통제를 하는 활동) -> 형상 감사(형상 관리가 계획대로 진행되고 있는지를 살펴보는 활동) -> 형상 기록(소프트웨어 형상 및 변경 관리에 대한 각종 수행결과를 기록하는 활동)

 

3. 형상 관리 도구란

- 소프트웨어 변경 사항을 관리하기 위해서 형상 식별, 통제, 감사, 기록을 수행하는 도구다. 

 

▼ 형상 관리 도구의 기능

기능 설명
체크인 개발자가 수정한 소스를 형상 관리 저장소로 업로드 하는 기능
체크아웃 형상 관리 저장소로부터 최신 버전을 개발자 PC로 다운로드 받는 기능
커밋 개발자가 소스를 저장소에 업로드 후에 최종적으로 업데이트 되었을 때 형상 관리 서버에서 반영하도록 하는 기능

 

4. 형상 관리 도구 사례

▼ CVS

- CVS는 가장 오래된 형상 관리 도구 중 하나로 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리르 실행하는 도구이다. 

- 변경사항을 동기화 가능하고 파일 단위로 관리할 수 있다.

- 직관적이고 단순하지만 텍스트 기반 소스 코드를 위주로 지원하고 디렉토리의 변동이 불편하며 커밋이 실패하면 롤백 기능을 지원하지 않는 단점이 있다.

 

▼ SVN

- 중앙 집중형 클라이언트-서버 방식으로 CVS으 단점을 보완해 가장 널리 사용되고 있는 형상 관리 도구

- CVS의 기능을 제공하고, 바이너리 파일을 관리하며 롤백 기능도 지원한다.

- 디렉토리 파일을 자유롭게 이동 가능하며 속도도 빠르고 다양한 플러그인 API를 제공함

- 하지만 잦은 커밋으로 인해 리비전 번호가 크게 증가할 수 있음, 개별 개발자만의 개발 이력을 가질 수 없다는 단점이 있다.

 

▼Git

- 리누스 토발즈가 만든 형상 관리 도구

- 로컬/원격 형상 관리가 가능하며 이관 기능도 있음(커밋 실패시 롤백 가능)

- 저장소의 완전한 복사본을 로컬 저장으로 가능하고 오프라인 작업도 가능하고 이력 관리가 쉬움

- 하지만 대용량 코드 관리에 부적절하며 변경사항을 보기가 어렵고 다른 SVN과 개념이 달라 따로 공부해야 함