자격증/정보처리기사

[정보처리기사_실기] Chapter 12. 제품 소프트웨어

ZZJJing 2020. 10. 12. 16:47

■ 제품 소프트 웨어 패키징

고객에게 전달하기 위한 형태로 패키징하고 설치와 사용에 필요한 제반 절차 및 환경 등 전체 내용을 포함하는 매뉴얼을 작성하며, 패치 개발 + 업그레이드를 위한 버전 관리를 수행하는 능력이다. 

- 개발자가 아닌 사용자 중심으로 진행된다. 

- 버전 관리 및 릴리즈 노트를 통해 지속적으로 관리한다. 

 

■ 모듈화

소프트웨어 설계에서 기능단위로 분해하고 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 단위 

소프트웨어 성능을 향상 시키거나 시스템의 디버깅, 시험, 통합 및 수정이 용이하도록 만든 소프트웨어 설계기법 

 

■ 모듈화의 장점

- 프로그램의 효율적인 관리 및 성능 향상

- 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소 

- 소프트웨어 시험, 통합, 수정 용이 

- 기능의 분리 가능하며 인터페이스가 단순

- 오류의 파급 효과를 최소화 

- 모듈의 재사용기능으로 개발과 유지보수가 용이

 

■ 모듈화의 목표 

- 응집도 최대화(Strong Cohension) / 결합도 최소화 (Loose Coupling)

 

■ 빌드 (Build) 

소스 코드 파일을 컴퓨텉에서 실행할 수 있는 제품 소프트웨어의 단위로 변환하는 과정 또는 그 결과물

ex ) Maven, Ant, Make, Gradle 등 

 

■빌드 자동화 도구 

- Jenkins

자바 기반의 오픈 소스 형태로, 가장 많이 사용되는 빌드 자동화 도구 

서블릿 컨테이너에서 실행되는 서버기반도구 

SVN, Git 등 대부분의 형상관리도구와 연동이 가능 

여러대의 컴퓨터를 이용한 분산 빌드나 테스트가 가능 

 

- Gradle 

Groovy를 기반으로 한 오픈소스 형태의 자동화도구, 안드로이드 앱 개발 환경에서 사용

안드로이드 말고도 플러그인 설정시 Java, C/C++, Python에서도 빌드가 가능하다 

Groovy를 사용해서 만든 DSL (Domain Specific Language)를 스크립트 언어로 사용한다. 

Gradle은 실행할 처리 명령어들을 모아 태스크 (Task)로 만든 후 테스크 단위로 실행한다. 

 

 

■ 용어정리 

- 제품 소프트웨어 패키징 : 고객에게 전달하기 위한 형태로 패키징하고 설치와 사용에 필요한 제반 절차 및 환경 등 전체 내용을 포함하는 매뉴얼을 작성하며, 패치 개발 + 업그레이드를 위한 버전 관리를 수행하는 능력이다.

(고객 편의성 및 사용자 실행 환경을 고려하여 진행) 

- 제품 소프트웨어 매뉴얼 : 사용자 중심의 기능 및 방법을 나타낸 설명서와 안내서 (사용자 측면의 주요 내용들을 문서로 기록) 

- 제품 소프트웨어 버전 관리 :  SW의 변화를 시간에 따라 기록하며 특정 시점의 버전을 다시 꺼내올 수 있도록 관리하는 체계

 

 

■ 형상관리

- 형상관리란? (SCM : Software Configuration Management) 

소프트웨어의 변경사항을 체계적으로 추적, 통제, 감사, 기록하는 활동이다. 

+ 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동 

 

■ 형상관리 절차 [ 식 통 감 기 ] 

형상 별 -> 형상 제 -> 형상 사 -> 형상 록 

(1) 형상 식별

(2) 형상 통제 

(3) 형상 감사 : 베이스라인 무결성을 평가하기 위해 확인(Validation), 검증 (Verification) 과정을 통해 공식적으로 승인하는 작업 단계

(4) 형상 기록 

 

 

■ 사용자 중심의 모듈 패키지 수행순서 

기능식별 -> 모듈화 -> 빌드진행 -> 사용자 환경분석 -> 패키징 적용시험 -> 패키징 변경 개선 

 

■ 릴리즈 노트 

최종사용자인 고객과 잘 정리된 릴리즈 정보를 공유하는 문서이다. (+ 테스트 결과와 정보가 포함) 

+ 상세 서비스를 포함하여 회사가 제공하는 제품을 만들어 수정, 변경, 또는 개선하는 일련의 작업들이며, 릴리즈 정보들이 있는 문서 

+ 현재 시재로 작성 되어야하며, 명확하고 정확하며 완전한 정보를 제공해야한다. 

 

■ 릴리즈 노트 작성항목 (몇 가지만) 

- Header(머릿말) : 문서이름(릴리즈 노트 이름), 제품이름, 버전 번호, 릴리즈 날짜, 참고 날짜, 노트 버전 등 

- 개요 : 제품 및 변경에 대한 간략하고 전반적인 개요 

- 목적 : 릴리즈 버전의 새로운 기능 목록과 릴리즈 노트의 목적의 간략한 개요 / 버그 수정 및 새로운 기능 기술 

- 면책 조항 : 회사 및 표준 제품과 관련된 메시지 / 프리웨어, 불법 복제 방지, 중복 등 참조에 대한 고지사항 

 

 

릴리즈 노트 작성순서 [ 모 정 개 영 정 추 ] 

(1) 듈식별 

(2) 릴리즈보확인 

(3) 릴리즈 노트요 작성 

(4) 향도 체크 : 발생된 버그의 설명, 개선한 릴리즈 항목을 기술하는 단계 

(5) 식 릴리즈 노트 작성 

(6) 가 개선항목식별 

 

■ 저작권 보호기술 

콘텐츠 및 컴퓨터 프로그램 같이 복제가 용이한 저작물에 대해 불법 복제 및 배포등을 막기위한 기술적인 방법을 통칭 

 

■ 저작권 관리 (DRM - Digital Rights Management) 

기업 내 주요 정보의 생성부터 보관  유통  폐기와 같은 전 과정을 통제하는 솔루션. 넓은 의미로는 음악이나 동영상에 대한 저작권 관리 기술 까지 포함. '기술적 증거' 라고도 함.

+ 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호기술이다. 

(DRM 기술요소 : 암호화 / 키 관리 / 암호화 파일 생성 / 식별 기술 / 저작권 표현 / 정책 관리 / 크랙 방지 / 인증)

 

■ DRM 저작권 관리 구성요소 

- 콘텐츠 제공자 

- 콘텐츠 분배자 : 쇼핑몰등 

- 패키저 (Packager) : 콘텐츠를 메타 데이터와 함께 배포 가능한 단위로 묶는 기술 

- DRM 컨트롤러 : 배포된 콘텐츠의 이용 권한을 통제 

- 보안 컨테이너 : 원본을 안전하게 유통하기 위한 전자적 보안장치 

- 클리어링 하우스(Clearing House) : 키 관리 및 라이선스 발급 관리 

 

 

■ 패키징 도구를 활용한 설치 및 배포 수행 순서 

빌드 내용 식별 -> 패키징 도구 식별 (패키징 도구를 사전 식별하고 암호/보안 기능을 확인하는 단계) -> 패키징 수행 -> 패키징 도구 설치 -> 배포 작업 -> 정상 배포 확인 

 

■ 제품 소프트웨어 매뉴얼 기본 작성 항목 

(1) 목차 (요약)

(2) 개요 (정리) 

(3) 서문 (이력정보, 설치 메뉴얼의 주석을 기재하는 항목) 

    * 설치 메뉴얼 주석에 포함되는 주석 

     - 주의 사항 : 사용자가 제품 설치 시 반드시 숙지해야하는 중요한 정보 주석 표시 

     - 참고 사항 : 설치 관련하여 영향을 미치는 특별한 사용자 환경 및 상황에 대한 내용 주석 표시  

(4) 기본사항 (기능 및 UI 첨부요약) 

 

■ 제품 소프트웨어 설치 매뉴얼 작성 수행순서 

기능 식별 -> UI 분류 -> 설치/백업 파일 확인 -> Uninstall 절차 확인 -> 이상 Case 확인 -> 최종 매뉴얼 적용

 

■ 사용자 매뉴얼 

개발 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고, 설치와 사용에 필요한 제반 절차 및 환경 등 전체 내용을 포함하는 매뉴얼 

 

■ 제품 소프트웨어 버전관리하기 

버전관리에서 자주 사용되는 용어 정리 

- 가져오기 (Import) : 버전이 관리되지 않은 로컬 디렉터리 파일을 처음으로 저장소(Repository)에 복사 

- 체크아웃 (Check-out) : 저장소에 파일 받기

- 체크인 (Check-in) : 저장소에 새로운 버전으로 갱신

- 커밋 (Commit) : 체크인 시 이전 갱신사항이 있는 경우 충돌(conflict)알림 / diff 도구 이용수정 / commit 과정 수행 

- 저장소(Repository) : 파일의 현재 버전과 변경 이력 정보를 저장하는 저장소 

 

■ 버전 등록순서 

Add > Check-out > Commit > Update > Diff 

 

■ 버전관리 도구 유형 

- 공유폴더 방식 : 공유폴더로 작업 (RCS, SCCS)

- 클라이언트/서버 방식 : 중앙에 버전관리 시스템이 항시 동작 / 개발자들이 동시에 같은 파일을 작업하면 경고 출력 (CVS, SVN - Subversion) 

- 분산 저장소 방식 : 로컬 저장소와 원격 저장소 구조 (Git, Bitkeeper 등) 

* Git - 리눅스 토발즈가 개발 

 

■ 깃 Git 명령어 

실행동작 Git SVN
저장소 생성
저장소 복제
커밋
변경 내용 확인 
추가 
이동
삭제
브랜치 생성
병합
원격 저장소 반영
설정확인 
git inti 
git clone
git commit
git diff
git add
git mv
git rm
git branch
git merge
git push
git config 
svn import 
svn checkout 
svn commit
svn diff
svn add
svn mv
svn rm
svn copy
svn merge
svn commit
svn into

 

국제 제품 품질
9126, 12119, 14598, 25000

* ISO 9126 → SW의 최상위의 품질 목표 달성을 위한 소프트웨어 품질 특성에 대한 국제 표준 

[주특성] 

기능성(Functionality) / 신뢰성(Reliability) / 사용성(Usability) / 효율성(Efficiency) / 유지보수성(Maintainability) / 이식성(Portability) 

국제 프로세스 품질 (프로세스 품질은 0, 2 , 5 중복숫자 / 1은아님) 
9001, 12207, 15504

 

■ 동기식 전송 / 비동기식 전송 

- 동기화 (Synchronization))는 송신 측에서 전송한 데이터의 각 비트를 수신측에서 정확하게 수신할 수 있도록 하는 기법 (비트지향 / 문자지향 동기화 기법이 있음) 

 

■ IPv4/ IPv6

출처 NCS 1000

 

■ 다중화 (Multiplexing)

고속의 전송로 하나에 데이터 신호 여러 개를 중복시켜 고속 신호 하나를 만들어 전송하는 방식 

 

■ ARQ (Auto Repeat Request) 방식 

통신 상의 오류가 발생하면 수신 측은 송신 측에 오류가 발생한 사실을 알리고 송신 측에 오류가 발생한 프레임을 재전송할 것을 요구하는 기법 

 

■ 서브네팅 (Subnetting) 

네트워크의 효율적 사용을 위하여 네트워크를 여러 개의 서브넷으로 분리하는 기법

 

■ 3Way-HandShaking 

TCP 프로토콜은 단말기와 단말기 간의 세션을 설정할 때, 3방향 연결설정(3Way-HandShaking)을 통하여 신뢰성 있는 정보 전송을 제공하는 기법) 

 

■ 슬라이딩 윈도우 (Sliding window) rlqjq 

TCP 프로토콜의 TCP의 흐름제어(Flow Control)기법 중 하나로 윈도우 크기(Window Size) 단위로 바이트를 송신하고, 수신 측에서 수신한 바이트에 대한 확인/응답 신호를 전송하면, 한꺼번에 윈도우 크기만큼 버퍼가 미끄러지듯이 이동하는 기법

 

■ 슬로우 스타트 (Slow Start) 

데이터 전송 시 미리 정해진 임계값에 도달할 때까지 윈도우의 크기를 전송 시마다 크기를 두 배씩 증가하기 떄문에 전송되는 데이터의 크기는 지수 함수적으로 증가되는 기법

 

■ 무선 LAN 표준 → IEEE 802.11 

출처 NCS 1000

IEEE 802.11i : 보안을 위한 MAC 지원 기능을 강화한 무선 LAN 표준 

 

■ WPAN (Wireless Personal Area Network) 

10m 이내의 짧은 거리에 존재하는 여러 디지털 장치를 식별하고 기기 사이의 데이터 전송 및 제어가 가능한 ad-hoc 기반의 무선 네트워크 기술 

 

■ NAT (Network Access Translation) 

외부 네트워크에 알려진 것과 다른 IP 주소를 사용하는 내부 네트워크에서 IP 주소를 변환하는 기술 

 

■ DHCP (Dynamic Host Configuration Protocol) 

네트워크 관리자가 일정한 시간 동안만 유효하도록 하는 임대 개념의 IP 주소를 할당하고 관리할 수 있도록 하는 프로토콜 

 

■ CDN (Contents Delivery Network) 

컨텐츠 제공업자(CP)의 웹 서버에 집중 되어있는 용량이 크고 사용자 요구가 잦은 컨텐츠를 캐시 서버에 미리 저장하여 최적의 경로로 사용자에게 컨텐츠를 전달하는 기술

 

SDN (SW Defined NW) 

소프트웨어 기술(OpenFlow)를 기반으로 네트워크 장비의 패킷 포워딩 기능과 컨트롤러 기능을 표준 인터페이스로 분리하여 네트워크 개방성을 제공하는 기술의 이름 

 

■ CSS (Cascading Style Sheets) 

마크업 언어(Markup Language)가 실제 브라우저에 표시되는 웹 문서의 전반적인 스타일을 미리 저장해둔 방법을 기술한 언어 

 

■ 디지털 트랜스포메이션 (Digital transformation)

디지털 기반으로 기업의 전략, 조직, 프로세스, 비지니스 모델, 문화, 커뮤니케이션, 시스템을 근본적으로 변화시키는 경영전략을 의미하는 말 

 

■ SLA (Service Level Agreement)

IT 아웃소싱 서비스를 제공하는 업체와 사용하는 업체 간의 서비스에 대한 책임과 의무사항을 기술한 협약서

 

■ STCP (Streaming Control Transmission Protocol) 

멀티미디어 통신을 위해 UDP 와 TCP의 일부 장점을 결합하여 설계되었으며, 장애를 대비한 대체 경로 확보, Multi-Streaming 기능 등이 포함된 고도의 신뢰 전송을 제공하는 전송 계층 프로토콜 

 

■ RAID (Redundant Array of Independent Disks) 

처리속도, 데이터 보호를 목적으로 여러개의 물리적인 디스크를, 중복성을 가진 하나의 논리적인 디스크 어레이(DIsk Array)로 변환하는 기술

 

■ 하이퍼바이저 (Hypervisor)

하나의 서버나 컴퓨터에서 자원의 효율적 사용을 목적으로 동시에 다수의 운영 체제를 구동시킬 수 있는 하드웨어와 운영체제 사이의 설치된 소프트웨어 가상화 기술 

 

■ 도커 (Docker) 

하이퍼바이저 없이 리눅스 컨테이너 기술을 바탕으로 소프트웨어의 배포를 자동화하는 기술

출저 NCS 1000

 

■ Node.js 

구글에서 만든 오픈소스 가상머신 형식의 자바 스크립트 V8 엔진 위에서 비동기 I/O로 서버사이드 애플리케이션 개발에 사용되는 소프트웨어 프레임워크

[ 구성요소 ] 

V8 / Thread Pool / Event Loop / Node binding / Node standard library  

 

 

■ ALM (Application Lifecycle Management)  애플리케이션 라이프사이클 관리 

요구사항 수집, 모델링, 개발, 테스트, 프로젝트 관리 및 형상관리까지 소프트웨어 개발의 전 과정을 자동화된 툴을 통해 체계적으로 통합하고 시각화해 관리하는 기법 

 

■ 데이터 유형 

- 다크데이터 (Dark Data) : 기업 내에 저장은 되어 있으나 분석되지 않은 데이터 

- 스몰데이터 (Small Data) : 빅데이터와 구분되는 이전의 데이터, 전통적인 데이터 

- 패스트 데이터 (Fast Data) : 실시간으로 처리하고 분석하기 위한 초대용량 데이터 

- 스마트 데이터 (Smart Data) : 빅데이터에 비해 다소 용량은 적지만 바로 분석할 수 있는 데이터, 품질이 보장되고 빠르게 분석가능한 데이터

 

■ EA (Enterprise Architecture) 엔터프라이즈 아키텍쳐 

전사차원에서 정보화를 효율적으로 추진하기 위해 조직의 프로세스 및 정보 시스템 및 부서의 구조와 기능을 포괄적이고 정확한 방법으로 기술하는 설계도면 또는 청사진 

(조직의 전략적인 목표 및 정보자원 관리 목표를 도달하기 위해 기업의 IT와 비지니스 관계를 총괄하여 설명하는 설계도) 

 

■ HDFS (Hadoop Distributed File System) 

빅데이터에서 사용되는 오픈소스 기술로 수십테라바이트 또는 페타바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 그 저장된 데이터를 빠르게 처리할 수 있게 하는 파일시스템 

 

■ 리팩토링 (Refactoring ) 

유지보수 및 생산성 향상을 목적으로 외부기능은 그대로 유지하면서 비효율적인 내부 코드의 구조를 개선하느 소프트웨어 시스템 변경기법 

 

■ 3R (Reverse, Re-engineering, Reuse) 

소프트웨어 생산성을 극대화하는 기법으로 역공학 (Reverse Engineering) / 재공학 (Re-engineering) / 재사용 (Reuse)가 있다.

 

■ 머신러닝 파이프라인 (Machine Learning Pipeline)

머신러닝 기술을 적용함에 있어서 초기 계획부터 데이터 수집, 가공, 분석과 배포관리 전 단계의 정의된 프로세스

머신러닝 모델을 지속적으로 고도화하는데 필요한 데이터 플로우(Data Flow)를 구성하고 자동화하기 위해 사용 

머신러닝 파이프라인은 일회성이 아닌 재학습 등의 반복적으로 순환하는 흐름을 의미한다.

 

■ 스마트시티 플랫폼 (Smart City Platform)

도시 관리 기능을 지능화하여 중앙센터에서 방범, 방재, 교통, 시설물 관리 등 분야별 정보 시스템을 연계활용하기 위한 기반 소프트웨어 플랫폼 

스마트시티 플랫폼은 지능화된 도시 관리를 위해 운영중인 각종정보 시스템, 센터를 연계하여 운영할 수 있도록 지원하는 기반 플랫폼 

[ 구성 요소 ] 

통합관제 / 통합운영 / 통합연계 / 통합DB 

 

■ 인슈어 테크 (InsurTech) 

보험과 기술의 합성어로 인공지능, 블록테인, 핀테크 등의 IT기술을 보험산업에 적용한 기술 

 

■ 텐서플로(TensorFlow) 

구글이 2015년에 오픈소스로 공개한 기계학습 라이브러리

기계학습과 딥러닝을 위해 데이터 플로우 그래프 방식을 사용하여 수치 연산하는 오픈소스 소프트웨어 라이브러리 

텐서플로는 데이터를 텐서로 표현하고 데이터 흐름 그래프를 이용하여 연산을 처리한다.

* 텐서 Tensors : 다차원 데이터 배열