본문으로 바로가기

소프트웨어 패키징

 - 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것

 - 개발자가 아니라 사용자를 중심으로 진행

 - 사용자의 편의성 및 실행 환경을 우선적으로 고려


패키징 시 고려사항

 - 운영체제, CPU, 메모리 등에 필요한 최소 환경을 정의

 - 고객의 편의성을 고려한 안정적인 배포가 중요


패키징 작업 순서

 1. 기능 식별 : 작성된 코드의 기능 확인

 2. 모듈화 : 확인된 기능 단위로 코드들을 분류

 3. 빌드 진행 : 모듈 단위별로 실행 파일을 만듬

 4. 사용자 환경 분석 : 운영체제, CPU RAM 등의 최소 운영 환경을 정의

 5. 패키징 및 적용 시험 : 정의된 환경에 맞게 배포용 파일 형식으로 패키징 및 테스팅

 6. 패키징 변경 개선 : 확인된 불편 사항을 반영하기 위한 패키징의 변경 및 개선을 진행

 7. 배포 : 배포 수행 시 오류가 발생하면 해당 개발자에게 전달하여 수정을 요청


알고리즘

 - 어떤 문제를 해결하는 논리적인 절차를 의미

 - 알고리즘의 실행시간은 컴퓨터의 처리 속도, 사용된 프로그래밍 언어의 종류, 컴파일러의 속도에 의해 결정


시간 복잡도

 - 알고리즘의 실행시간, 즉 알고리즘을 수행하기 위해 프로세스가 수행하는 연산 횟수를 수치화한 것을 의미

 - 시간 복잡도가 낮을수록 알고리즘의 실행시간이 짧고, 높을수록 실행시간이 길어진다.

 - 점근 표기법의 종류

    - 빅오 표기법(Big-O Notation) : 알고리즘의 실행시간이 최악일 때를 표기하는 방법

    - 세타 표기법(Big-θ Notation) : 알고리즘의 실행시간이 평균일 때를 표기하는 방법

    - 오메가 표기법(Big-Ω Notation) : 알고리즘의 실행시간이 최상일 때를 표기하는 방법


빅오 표기법(Big-O Notation)

 - O(1) : 입력값(n)에 관계 없이 일정하게 문제 해결에 하나의 단계만을 거침(예 : 스택의 삽입, 삭제)

 - O(log₂n) : 문제 해결에 필요한 단계가 입력값(n) 또는 조건에 의해 감소(예 : 이진 트리, 이진 검색)

 - O(n) : 문제 해결에 필요한 단계가 입력값(n)과 1:1의 관계를 가짐(예 : for문)

 - O(nlog₂n) : 문제 해결에 필요한 단계가 n(log₂n)번만큼 수행(예:힙정렬, 2-way 합병 정렬)

 - O(n²) : 문제 해결에 필요한 단계가 입력값(n)의 제곱만큼 수행(예 : 삽입 정렬, 쉘 정렬, 선택 정렬, 버블 정렬, 퀵 정렬)

 - O(2^n) : 문제 해결에 필요한 단계가 2의 입력값(n) 제곱만큼 수행(예 : 피보나치 수열)


디지털 저작권 관리(DRM)

 - 컴퓨터 프로그램들과 같이 복제하기 쉬운 저작물에 대해 불법 복제 및 배포 등을 막기 위한 기술적인 방법을 통칭해 저작권 보호 기술이라고 함


디지털 저작권 관리의 기술 요소

 - DRM의 기술요소
 - 암호화
 - 키 관리
 - 암호화 파일 생성
 - 식별 기술
 - 저작권 표현
 - 정책 관리
 - 크랙 방지
 - 인증
 - 인터페이스
 - 이벤트 보고
 - 사용 권한


소프트웨어 패키징의 형상 관리

 - 형상 관리(SCM: Software Configuration Management)는 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동

 - 소프트웨어 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인

 - 소프트웨어 개발의 전 단계에 적용되는 활동, 유지보수 단계에서도 수행

 - 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 함


형상 관리의 중요성

 - 지속적인 소프트웨어의 변경 사항을 체계적으로 추적하고 통제

 - 무절제한 변경을 방지

 - 버그나 수정 사항을 추적할 수 있음

 - 가시성이 결핍되므로 진행 정도를 확인하기 위한 기준으로 사용될 수 있음


형상 관리 기능

 - 형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여하고 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업

 - 버전 제어 : 소프트웨어 업그레이드나 유지 보수 과성에서 생성된 다른 버전의 형상 항목을 관리하고 이를 특정 절차와 도구를 결합시키는 작업

 - 형상 통제(변경 관리) : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업

 - 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업

 - 형상 기록(상태 보고) : 형상의 식별, 통제, 감사 작업의 결과를 기록, 관리하고 보고서를 작성하는 작업


소프트웨어 버전 등록 과정

 - 가져오기(Import) -> 인출(Check-Out) -> 예치(Commit) -> 동기화(Update) -> 차이(Diff)


소프트웨어 버전 관리(공유 폴더 방식)

 - 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식

 - 담당자는 공유 폴더의 파일을 자기 pc로 복사한 후 컴파일 하여 이상 유무를 확인

 - 이상 유무 확인 과정에서 파일의 오류가 확인되면, 해당 파일을 등록한 개발자에게 수정 요청

 - 파일을 잘못 복사하거나 다른 위치로 복사하는 것에 대비하기 위해 파일의 변경 사항을 데이터베이스에 기록하여 관리

 - 종류 : SCCS, RCS, PVCS, QVCS 등


소프트웨어 버전 관리(클라이언트/서버 방식)

 - 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식

 - 서버의 자료를 개발자별로 자신의 pc로 복사하여 작업한 후 변경된 내용을 서버에 반영

 - 모든 버전 관리는 서버에서 수행

 - 서버에 문제가 생기면 서버가 복구되기 전까지 다른 개발자와의 협업 및 버전 관리 작업이 중단

 - 종류 : CVS, SVN, CVSNT , Clear Case, CMVC, Perforce


소프트웨어 버전 관리(분산 저장소 방식)

 - 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 pc의 로컬 저장소에 함께 저장되어 관리되는 방식

 - 개발자별로 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업한 후 변경 된 내용을 로컬 저장소에서 우선 반영한 다음 이를 원격 저장소에 반영

 - 로컬 저장소에서 버전 관리가 가능하므로 원격 거장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업할 수 있음

 - 종류 : GIT , GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM