소프트웨어 공학 - 실기 정리 노트

이보아·2024년 9월 19일

정보처리기사

목록 보기
1/16
post-thumbnail

소프트웨어 공학

소프트웨어 위기를 극복하고 품질 높은 소프트웨어를 효울적으로 개발하기 위한 학문 , 개발에 적용되는 방법, 도구 이론을 포괄적으로 다룬다.

⭐ 소프트 공학의 3R ⭐

  • 역공학 (Reverse Engineering)
  • 재공학(Re-Engineering) : 분석 ➡ 재구성 ➡ 역공학 ➡ 이관
  • 재사용(Reuse) : 함수, 객체, 컴포넌트, 애플리케이션 재사용. 생성중심, 합성 중심

⭐ 소프트웨어 개발 단계 ⭐

계획 ➡ 요구사항 분석 ➡ 설계 ➡ 구현 ➡ 테스트 ➡ 유지보수

소프트웨어 개발 방법론

소프트웨어 개발에 필요한 과정 (절차, 방법, 산출물, 기법, 도구)들을 체계적으로 정리한것

소프트웨어 개발 방법론 종류

  1. 구조적 방법로
  2. 정보공학 방법론
  3. 객체지향 개발 방법론
  4. CBD방법론
  5. 애자일 방법론

소프트웨어 개발 모델

  1. ⭐⭐폭포수 모델(Watherfall Model)
  2. 프로토타이핑 모델(Prototyping Model)
  3. ⭐⭐나선형 모델(Sprial Model)- 계위개고
    (계획→ 위험 분석→ 개발→ 고객 평가)
  4. RAD(Rapid Application Development)모델
  5. V 모형
  6. 4세대 기법

나선형 모델

애자일(Agile) 방법론

신속하고 반복적인 작업을 통해 지속적으로 작동 가능한 소프트웨어를 개발하는 방식이다.

애자일 선언문

  • 공정과 도구보다 개인과 상호작용을 중요시함
  • 포괄적인 문서보다 작동하는 소프트웨어 중시
  • 계약 협상보다 고객과의 협력을 중시
  • 계획을 따르기보다 변화에 대응
  • 왼쪽 항목의 가치를 인정하면서도 오른쪽 항목을 더 중요하게 여김

애자일 방법론 종류

1) XP : 의사소통, 용기, 피드백, 존중, 단순성
2) 스크럼: 스프런트, 백로그
3) 크리스털: 규모에 따른 방법론 제공
4) FDD : 기능주도 개발
5) ASD : 합동 애플리케이션 개발
6) 린(Lean):도요타 린 시스템

XP 12가지 실천사항

  • 짝 프로그래밍
  • 계획 세우기
  • 테스트 기반 개발
  • 고객 상주
  • 지속적인 통합
  • 코드 개선
  • 작은 릴리즈
  • 코딩 표준
  • 공동 코드 소유
  • 간단한 디자인
  • 시스템 메타포어
  • 작업시간 준수

IT 서비스 관리

SLM(Service Level Management)

서비스 수준을 정량적으로 측정하고, 실적을 평가하여, 미흡한 부분을 개선하는 관리 활동

SLA(Service Level Agreement)

소프트웨어 수요자와 공급자 간에 서비스 수준을 명시적으로 정의한 문서

ITSM(Infomation Technology Service Management)

최종 사용자를 위한 IT 서비스를 구현, 전달, 관리하는 일련의 정책과 관행

ITIL(IT Infrastructure Libray)

IT 서비스를 쉽게 제공하고 관리할 수 있는 가이드 또는 프레임워크


프로젝트 계획 및 분석

프로젝트 관리

특정한 목표를 달성하기 위해 한정된 기간, 예산 지원을 활용하여 사용자가 만족할 만한 제춤이나 서비스를 개발하도록 하는 기술적 관리적 활동

⭐프로젝트 핵심 관리대상(3p)

  • 사람(people)
  • 문제 (problem)
  • 프로젝트(Process)

PMBOK(project Management Body of Knowledge)

  • PMI(Project Management Institute)에서 제작한 프로젝트 관리 프로세스 및 지식 체계

개발 비용 산정

하향식 산정 기법(Top-Down)

  • 전문가 판단 기법 : 특정 분야의 전문가가 경험과 지식을 바탕으로 의사결정을 내리거나 문제를 해결하는 기법
  • 델파이 기법 : 전문가의 의견을 수집하고, 이를 바탕으로 예측이나 결정을 내리는 방법

⭐ 상향식 산정 기법(Bottom-Up) - 21년3회차 기출

  • 원시 코드 라인 수(LOC, Line of Code) 기법
    추정 LOC : (낙관치 + (4 + 중간치) + 비관치) / 6
  • 개발 단계별 노력 (Effort per Task)기법
    Loc 기법을 확장

수학적 산정 기법

  • COCOMO 기법
    조직형(Organic), 반불리형(Semidetached), 내장형(Embedded)
  • Putnam 기법
    Rayleigh-Norden, SLIM
  • 기능 점수 기법(FP, Function Point)
    내부 논리 파일(ILF), 외부 연계 파일(ELF)
    외부 입력(EI), 외부 출력(EO), 외부 조회(EQ)
    ESTIMACS

개발 일정 산정

소프트웨어 개발을 위해 필요한 작업을 정의, 이들 작업의 우선순위를 설정하여 전체 프로젝트 일정 계획 수립한다.

작업 순서

  • 작업 분해 (WBS)
  • CPM 네트워크 작성
  • 최소 소요 기간 계산
  • 소요 Man-Month 및 기간 산정 후 CPM 수정
  • 간트 차트(Gantt Chart)로 표현


이미지 출처


요구사항 분석

현행 시스템 파악

기존 시시템의 기능, 성능, 그리고 문제점을 이해하고 평하하기 위한 과정

플랫폼 기능 분석

다양한 응용 프로그램, 서비스 또는 기능이 구축되거나 실행되는 기반 또는 환경

플랫폼 기능

  • 연결 기능
  • 비용 감소 기능
  • 브랜드 신뢰 기능
  • 커뮤니티 형성

CPND

  • Contents : 텍스트, 이미지, 오디오, 비디오 등
  • PlatFrom : 웹 사이트, 애플리케이션 등
  • NetWork : 통신 시스템
  • Device : 스마트 폰, 컴퓨터, 테블릿

현행 시스템 분석

  1. 운영체제 분석
  2. 네트워크 분석
  3. DBMS 분석
  4. 미들웨어(Middleware) 분석

미들웨어(Middleware) 종류

  1. 원격 프로시저 호출(Remote Procedure Call)
  2. 메세지 지향 미들웨어 (Message Oriented Middleware)
  3. ORB(Object Request Broker)
  4. DB 접속 미들웨어
  5. TP 모니터(Transaction Processing Monitor)
  6. 웹 애플리케이션 서버(Web Application Server)
  7. 엔터 프라이즈 서비스 버스(Enterprise Service Bus)

요구 공학

소프트웨어의 요구사항을 식별, 분석, 문서화하고, 이를 관리하는 과정

요구 공학의 필요성

  • 품직 개선
  • 리스트 김소
  • 비용 절감
  • 효율적인 프로젝트 관리
  • 사용자와 개발자 간의 소통 개선

⭐요구사항 개발 프로세스(도.분.명.확)⭐

요구사항 도출 ➡ 요구사항 분석 ➡ 요구사항 명세 ➡ 요구사항 확인 및 검증

  1. 요구사항 도출
  • 인터뷰, 설문조사, 브레인스토밍, 워크샵, 직접 관찰
  1. 요구사항 분석
  • 수집된 요구사항 중에 불완전, 모호, 중복, 충돌하는 부분 식별하여 수정
  • 업무환경과 상호작용 파악
  • DFD, Data Dictionary, Mini-Spec, ERD, STD
  • UML
  1. 요구사항 명세
  • 분석된 요구사항은 명세서 형태로 정리한다.
  • 정형 명세 : 수학, 논리학
  • 비정형 명세 : 자연어, 그림 중심
  • 기능 요구사항, 비기능 요구사항 분류
  1. 요구사항 확인 및 검증
  • 분석가가 요구사항을 이해했는지 확인
  • 요구사항 문서가 일관성 있으면 완전한지 검증

요구사항 분석 기법

요구사항 분석 도구

  1. HIPO의 개념
  • 하양식 소프트웨어 개발을 위한 문서화 도구
    HIPO 개념
  • 주요 프로세스
  • 하위 프로세스
  • 입력/출력
    HIPO Chart 종류
  • 가시적 도표(Visual Table of Content) / 총체적 도표(Overview Diagram) / 세부적 도표 (Detail Diagram)

요구사항 분석 모델링

복잡한 시스템을 이해하고 효과적으로 개발하기 위해 간단한 모델로 표현하는 과정

⭐모델링 구분 ⭐

모델링 구분설명예시
기능적 모델링시스템의 기능과 동작을 정의하고, 사용자 요구 사항을 반영하여 기능을 모델링함.Use Case 다이어그램, 기능 목록
정적 모델링시스템의 구조와 데이터 간의 관계를 정의하며, 데이터 모델과 클래스 구조를 나타냄.클래스 다이어그램, ERD (Entity-Relationship Diagram)
동적 모델링시스템의 동작과 상태 변화를 모델링하여, 시간에 따른 시스템의 행동을 설명함.시퀀스 다이어그램, 상태 다이어그램

⭐ 구조적 분석 도구 ⭐

  1. 자료흐름도(DFD)
  2. 자료사전(DD)
  3. 소단위 명세서
  4. 개체 관계도(ERD)
  5. 상태 전이도(STD) -> 준비, 실행 ,대기

객체 지향 분석 모델

사용자 요구사항을 객체 지향적 관점에서 분석하고 모델링한다.

⭐ 객체지향 분석 방법론 ⭐

  1. 럼바우(Rumbaugh) 방법 - 21년 2회
  2. 객체 모델링 (Object Modeling) : 객체 다이어그램
  3. 동적 모델링 (Dynamic Modeling) : 상태 다이어그램
  4. 기능 모델링 (Functional Modeling) : DFD
  5. 부치(Booch) 방법 : 미시적 및 거시적 개발 프로세스
  6. Jacobson 방법 : Use case를 중심으로 한 분석 방법
  7. Coad와 Yourdon 방법 : E-R 다이어그램 사용
  8. Wirfs-Brock 방법 : 분석과 설계의 구분이 없음

소프트웨어 설계

소프트웨어 설계의 개념

요구사항 명세서를 바탕으로 소프트웨어의 구체적인 설계서를 작성하는 단계

소프트웨어 설계의 종류

  1. 상위설계
  • 아키텍쳐, 데이터, 인터페이스 정의, 사용자 인터페이스 설계
  1. 하위설계
  • 모듈, 자료구조, 알고리즘
  1. 협약에 의한 설계
  • 선행조건, 결과조선, 불변조건

소프트웨어 설계의 원리

  1. 분할과 정복 (Divide & Conquer)
  2. 추상화(Abstraction) : 과정, 데이터, 제어
  3. 단계적 분해(Stepwise Refinement)
  4. 모듈화(Modulization)
  5. 정보은닉(Infomation Hiding)
  6. 결합도와 응집도

설계 모델링

소프트웨어의 구조와 기능을 그래픽적으로 표현한 것

설계 모델링 유형

  1. 구조 모델링
  • UML 정적 다이어그램
  1. 행위 모델링
  • UML 동적 다이어그램

소프트 아키텍쳐

소프트웨어의 기본 구조로, 시스템의 컴포넌트와 이들 간의 관계를 기술한다.

⭐ 소프트웨어 아키텍쳐 4+1 뷰 ⭐

  • 논리뷰(Logical View) : 시스템의 기능적 요구사항 - 설계자, 개발자 관점
  • 구현뷰(Implementation View) : 모듈의 구성과 개발자의 관점을 반영
  • 프로세스 뷰(Process View): 프로그램 실행 시의 시스템을 표현 - 개발자, 시스템 통합자 관점
  • 배치 뷰(Deployment View): 시스템의 물리적 배치
  • 유스케이스 뷰 (Use Case View): 아키텍처 설계 및 검증을 주도 - 사용자, 설계자, 개발자, 테스트 관점

소프트웨어 아키텍쳐 패턴

재사용 가능한 소프트웨어 아키텍처의 해결책으로, 공통적인 설계 문제에 대한 일반적인 접근 방법제시

시스템 품질 속성

성능 / 보안 / 가용성 / 기능성 / 사용성 / 변경 용이성 / 확장성 (2021년 2회)

⭐소프트웨어 아키텍처 패턴 종류 ⭐

  1. 계층화 패턴(Layerd Patten)
  2. 클라이언트-서버-패턴 (Client-Server Patten)
  3. 마스터-슬레이브 패턴 (Master-Slave Patten)
  4. 파이브-필터 패턴 (pipe-Filter Patten)
  5. 브로커 패턴 (Broker Patten)
  6. 피어투 피어 패턴 (peer to peer Patten)
  7. 이벤트-버스 패턴 (Event-Bus Patten)
  8. 모델-뷰-컨트롤러 패턴 (MVC Patten)
  9. 블랙보드 패턴 (Blackboard Patten)
  10. 인터프리터 패턴 (Interpreter Patten)
유형설명개념도
계층화(레이어) 패턴 (Layers Pattern)- 시스템을 계층(Layer)으로 구분하여 구성
- 각 하위 모듈들은 특정한 수준의 추상화를 제공
- 각 계층은 다음 상위 계층에 서비스를 제공
- 서로 마주 보는 두 개의 계층 사이에서만 상호 작용
클라이언트-서버 패턴 (Client-Server Pattern)- 하나의 서버와 다수의 클라이언트로 구성
- 클라이언트가 서버에 요청하고 응답을 받아 사용자에게 제공하는 방식
파이프-필터 패턴 (Pipe-Filter Pattern)- 데이터 스트림 절차의 각 단계를 필터(Filter) 컴포넌트로 캡슐화하여 파이프(Pipe)를 통해 데이터를 전송하는 패턴
- 단방향, 양방향 모두 구현할 수 있으며, 필터 간 이동 시 오버헤드가 발생(2021년 3회)
- 서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음 서브 시스템으로 넘겨주는 과정 반복 (2020년 3회)(2021년 2회) (2022년 3회) (2023년 3회)
브로커 패턴 (Broker Pattern)- 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용됨
- 컴포넌트들은 원격 서비스 실행을 통해 상호작용
- 서버는 자신의 기능들(서비스 및 특성)을 브로커에 넘겨주며(Publish) 클라이언트가 브로커에 서비스를 요청하면 브로커는 클라이언트를 자신의 레지스트리에 있는 적합한 서비스로 리다이렉션(Redirection)함
모델-뷰-컨트롤러 패턴 (MVC; Model View Controller Pattern)- MVC 모델은 사용자 인터페이스를 담당하는 계층의 응집도를 높일 수 있고, 여러 개의 다른 UI를 만들어 그 사이에 결합도를 낮출 수 있다.(2023년 1회)
마스터-슬레이브 패턴 (Master-Slave)- 일반적으로 실시간 시스템에서 사용된다.
- 마스터 프로세스는 일반적으로 연산, 통신, 조정을 책임지고 슬레이브 프로세스들을 제어할 수 있다.
- 슬레이브 프로세스에서는 마스터 프로세스에서 수행하는 연산, 통신, 제어 등의 기능을 제외하고는 별도로 제한되는 기능은 없다. (2021년 3회) (2023년 2회)

참조 블로그
참조 자료

소프트웨어 아키텍처 비용 평가 모델 (SACAA(사카))

평가 모델설명
SAAM (Software Architecture Analysis Method)변경 용이성, 기능 집중, 평가 용이
ATAM (Architecture Trade-off Analysis Method)아키텍처 품질 속성 만족 여부 판단, 이해 관계 평가
CBAM (Cost Benefit Analysis Method)ATAM 바탕 분석, 경제적 의사결정 요구 충족
ADR (Active Design Review)아키텍처 구성요소 간 응집도 평가
ARID (Active Reviews for Intermediate Designs)특정 부분에 대한 품질요소 집중

UML

소프트웨어 시스템을 시각화 및 문서화하고, 소프트웨어 시스템의 구조와 동작을 명세하는 표준화된 모델링 언어 사물 , 관계 , 다이어그램 (20년 4회 기출)

UML 특징

  • 가시화 언이
  • 명세화 언어
  • 구축 언어
  • 문서화 언어

⭐구성요소 ⭐

사물

  • 구조사물 / 행동사물 / 그룹사물 / 주해사물

관계 (21년 2회 기출)

  1. 일반화 관계(Gemeralization) : 상속관계
  2. 연관관계(Association) : 관련된 관계
  3. 의존관계(Dependency) : 짧은 시간만 사용하는 관계
  4. 실체화 관계(Realization): 추상 메서드를 오버라이딩
  5. 집합관계 - 집약관계(Aggregation) : 부분 객체는 독립적
  6. 집합관계 - 합성관계(Composition) : 부분 객체는 의존적

다이어그램

  1. 구조 다이어그램
  • 클래스 다이어그램(Class) (21년 3회 기출) - 클래스의 구조 / 관계를 시각적
  • 객체 다이어그램(Object) - 특정시점/ 객체 관계
  • 컴포넌트 아디어그램 (Component) - 컴포넌트와 관계를 나타냄 / 기능의 관계
  • 배치 다이어그램(Deployment) - 시스템/하드웨어 요소와 네트워크
  • 복합체 구조 다이어그램(Composite Structure) - 구체적인 수준 (내부 수준)
  • 패키지 다이어그램(Package) (20년 4회 기출) - 패키지간의 관계
  1. 행위 다이어그램
  • 유스케이스 다이어그램 (Use Case) - 기능과 사용자간의 작용
  • 순차 다이어그램(sequence) - 상호작용 / 시간순서
  • 커뮤니케이션 다이어그램(Communication) - 통신 + 순서
  • 상태 다이어그램(State) - 상태변화 나타냄
  • 활동 다이어그램(Activity) - 프로그램의 흐름 / 구체적
  • 상초작용 다이어그램(Interaction) - 상호작용/ 객체
  • 타이밍 다이어그램(Timing) - 신호 변화

화면 설계

UI 개념

컴퓨터, 웹사이트, 시스템등의 정보기기와 사용자 간의 상호작용을 가능하게 하는 매개체이다.

UX 개념

사용자 UI를 통해 경험하는 모든 것을 포함한다.

UI 유형

  1. CLI(Command Line Interface) - 21년 3회 기출
  • 사용자가 텍스트 명령어를 입력하여 컴퓨터와 상호작용하는 방식. 빠른 작업 수행이 가능하지만, 사용법을 익히는 데 시간이 필요함.
  1. GUI(Graphical User Interface) - 22년 1회 기출
  • 그래픽 요소(아이콘, 버튼 등)를 사용하여 사용자와 상호작용하는 방식. 직관적이고 사용하기 쉬워, 대부분의 현대 소프트웨어에서 사용됨.
  1. NUL(Natural User Interface)
  • 자연스러운 사용자 경험을 제공하는 인터페이스로, 제스처, 터치, 음성 등 사용자의 자연스러운 행동을 인식하여 상호작용함.
  1. OUI(Organic User Interface)
  • 사용자의 감정과 반응을 고려하여 디자인된 인터페이스. 자연스러운 상호작용을 통해 사용자 경험을 향상시키는 것을 목표로 함.
  1. VUI(Voice User Interface)
  • 음성을 통해 기기와 상호작용하는 인터페이스. 사용자가 음성 명령을 통해 작업을 수행할 수 있어 hands-free 경험을 제공함
  1. ARUI(Augmented Reality User Interface)
  • 현실 세계에 디지털 정보를 겹쳐서 보여주는 인터페이스. 사용자가 현실과 가상 요소를 동시에 경험할 수 있게 해줌.

UI 요구사항 구분

기능적 요구사항 - 21년 2회 기출

시스템이 제공해야하는 기능에 대한 요구사항

비기능적 요구사항

사용성, 효율성, 유지 보수성, 재사용성 등 품질에 관한 요구사항

UI 설계 원칙 (직유학유)

UI 설계 원칙설명
직관성누구나 쉽게 이해하고 사용할 수 있어야 한다.
유효성사용자의 목적을 정확하게 달성해야 한다.
학습성사용자가 쉽게 이해하고 사용할 수 있도록 직관적으로 설계해야 함.
유연성사용자의 요구사항을 최대한 수용하며, 오류를 최소화해야 한다.

UI 설계 도구

  1. 와이어프레임(Wireframe)
  2. 스토리보드
  3. 프로토타입
  4. 목업(Mockup)
  5. 유스테이스

감성 공학

인간의 감성을 물리적 설계 요소로 번역하고 구현하는 기술

제품과 관련된 인간의 감성

  • 감각적 감성
  • 기능적 감성
  • 문화적 감성

감성공학의 접근 방법

  • 1류 접근 방법 : 디자인 요소와 연결
  • 2류 접근 방법 : 문화적 감성을 반영
  • 3류 접근 방법 : 감성을 정량화

UI 구현

레이아웃

특정 공간 내에서 여러 구성요소를 보기 좋게 효과적으로 배치하는 작업

레이아웃 개발 구분

  • HTMl5
  • CSS (Cascading Style Sheet)
  • JavaScript

JavaScript 프레임워크

  • Vue.js Evan You에 의해 개발
  • AngularJS : 구글에서 개발
  • Ajax : 비동기적인 웹 애플리케이션 제작

JavaScript 라이브러리

  • React : 페이스북에 의해 개발

UI 관련 용어

용어설명
웹 표준월드 와이드 웹에서 사용되는 공식 표준
호환성다양한 기기와 브라우저에서 동일하게 작동하는 능력.
접근성모든 사용자가 웹 콘텐츠에 쉽게 접근할 수 있도록 하는 설계.
반응형 웹화면 크기에 따라 레이아웃이 자동으로 조정되는 웹 디자인.
인포그래픽정보를 시각적으로 표현하여 이해를 돕는 그래픽.
브랜드 아이덴티티브랜드의 고유한 이미지와 인식을 형성하는 요소들.
내비게이션사용자가 웹사이트 내에서 정보를 찾을 수 있도록 돕는 메뉴.
아코디언클릭 시 내용이 펼쳐지는 UI 요소로 공간 절약에 유용.
플레이스홀더입력 필드에 사용자에게 필요한 정보를 안내하는 텍스트.
필터링특정 조건에 맞는 데이터만 표시하도록 제한하는 기능.
입력 필드사용자로부터 정보를 입력받는 공간.
썸네일이미지나 비디오의 미리보기 작은 버전.
레이블입력 필드의 용도를 설명하는 텍스트.
대체 텍스트이미지 대신 화면 읽기 도구가 읽을 수 있는 설명 텍스트.

서버 프로그램 구현

서버 환경 구축

  1. 웹서버(WEB)
  2. 웹 애플리케이션 서버(WAS)
  3. 데이터베이스 서버(DBMS)
  4. 파일서버
  5. Load Balancer
  6. CDN(Content Delivery NetWork)
  7. 시스템 아키텍처 고려사항
    • 확장성
    • 성능
    • 응답 시간
    • 처리량
    • 접근성
    • 일관성
    • 보안

시스템 소프트웨어

  1. 운영체제
  2. JVM
  3. Web Server
  4. WAS
  5. DBMS

개발 소프트웨어

  • 요구사항 관리 도구 : JReature, JRequisite, OSRMT, Trello 등
  • 설계/모델링 도구 : ArgoUML, StarUML, DB, Designer등
  • 구현도구 : Eclipse, InteliJ, Visual Studio등
  • 테스트 도구 : JUnit, CppUnit, JMeter, SpringTest등
  • ⭐ 형상관리 도구 : Git, CVS, SVN 등 (20년 2회 기출 , 22년 1회 기출, 22년 3회 기출)
  • 협업 도구 : Slack, Microsoft Teams 등
  • 배포 도구 : Jenkins, Travis CI 등

IDE

소프트웨어 개발에 필요한 다양한 기능을 하나의 프로그램 내에서 제공하는 소프트웨어

IDE 도구의 종류

  • Eclipse, Visual Studio, Xcode, IntelliJ, IDEA

IDE 도구 선정 시 고려사항

  • 적정성, 효율성, 이식성, 친밀성, 범용성

협업 도구

여러 사용자가 각자의 작업 환경에서 통합된 프로젝트를 동시에 수행할 수 있도록 지원하는 소프트웨어

형상 관리 도구

소프트웨어 개발 과정에서 발생하는 모든 변경사랑을 통제하고 관리하는 방법

변경 관리 / 버전 관리 / 형상 관리

1) 변경 관리

소스코드의 변경 사항을 관리

2) 버전 관리

체크인/체크아웃, 릴리즈, 퍼블리싱 등을 버전으로 관리

3) 형상 관리

변경 관리와 버전 관리를 포함하며, 프로젝트 진행 상황, 빌드, 릴리즈까지 전체적으로 관리

⭐ 형상 관리 절차 (식통감기) (20년 3회 기출)

1) 형상 식별: 관리해야 할 항목을 구분하고, 번호나 태그 부여
2) 형상 통제 : 변경 요청을 검토하고 형상 통제 위원회 승인을 거쳐 현재의 기준선(Baseline)에 반영
3) 형상 감사: 변경에 대한 검토
4) 형상 기록 : 변경 사항과 처리 과정을 기록

소프트웨어 버전 관리 도구

1) 소프트웨어 버전 관리 도구

소스코드와 문서 등의 디지털 콘텐츠에 대한 여러 버전을 관리한다.

소프트웨어 버전 관리 도구 유형

1) 공유 폴더 방식(RCS, SCCS)
2) 클라이언트/서버(CVS,SVN)
3) 분산 저장소 방식(Git)

버전 관리 주요 용어

  • Repository
  • Checkout
  • Commit
  • Update
  • Add
  • Trunk
  • Branch
  • Merge
  • Diff

빌드 도구

소스코드 파일들을 컴파일하고, 다른 필요한 과정들을 거쳐 실행 가능한 소프트웨어로 반환하는 일련의 과정

빌드 자동화 도구 종류

  • Make : Unix 개발 운영체제에서 주로 사용
  • Ant : Java 기반의 빌드 도구로, XML 기반의 빌드 스크립트를 사용
  • Maven : 의존성 관리와 프로젝트 라이프 사이클 관리에 강점
  • Jenkins : Java 기반의 오픈소스 지속적 통합 서비스 도구
  • Gradle : Groovy 기반의 오픈 소스 빌드 자동화 도구(안드로이드 개발)

프레임 워크

소프트웨어 개발에 필요한 공통적인 구성요소와 아키텍처를 일반화하여 제공하는 반제품 형태의 소프트우어

프레임워크 특징

  • 모둘화 (Modularity)
  • 재사용성 (Reusability)
  • 확장성 (Extensibility)
  • 제어의 역흐름 (Inversion of Control)

프레임워크의 구분

1) Java 프레임워크

  • 전자정부 표준 프레임워크, 스트럿츠, 스트링
    2) ORK 프레임워크
  • 아이바티스(iBatis), 마이바티스(myBatis), 하이버네이트(Hibernate)
    3) 자바스크립트 프레임워크
  • 앵귤제이에스(AngularJs), ExtJS, Vue
    4) 프론트엔드 프레임워크
  • Bootstrap, Foundation, MDL

라이브러리

컴퓨터 프로그램에서 자주 사용되는 루틴이나 리소스 (클래스, 템플릿, 설정 데이터 등)를 모아 놓은 것

API

소프트웨어 간의 인터페이스로, 다른 소프트웨어 또는 서비스와 상호 작용하는 데 사용된다.

모둘 구현

단위 모듈 구현

소프트웨어 기능 단위로 분해하여 개별적으로 구현하는 기법

효과적인 모듈화

  • 결합도(Coupling)을 낮추고, 응집도(Cohesion)를 높여 모듈의 독립성을 강화한다.
  • FAN-OUT 최소화, FAN-IN 증가

공통 모듈 원칙 (정명완 일추)

공통 모듈에 대한 명세를 작성할 때에는 다음의 원칙을 지킨다.

정확성 (Correctness) : 시스템 구현 시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성
명확성 (Clarity) : 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성 (2020년 1회)
완전성 (Completeness) : 시스템 구현을 위해 필요한 모든 것을 기술
일관성 (Consistency) : 공통 기능들 간 상호 충돌이 발생하지 않도록 작성
추적성 (Traceability) : 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성

설계 기법

설계 유형설명
하향식 설계통합 검사 시 인터페이스가 이미 정의되어 있어 통합이 간단하다.
레벨이 낮은 데이터 구조의 세부사항은 설계 초기 단계에서 필요하다.
상향식 설계최하위 수준에서 각각의 모듈들을 설계하고 이러한 모듈이 완성되면 이들을 결합하여 검사한다.
인터페이스가 이미 성립되어 있어야만 기능 추가가 가능하다. (2022년 1회)

⭐ 결합도 (20년 1회 기출)

모듈과 모듈 간의 관련성/의존성 정도

결합도 유형 (자스제외공내) (21년 1,2,3회 기출)

  • 자료 결합도(Data Coupling) : 값 전달
  • 스탬프 결합도(Stamp Coupling) : 배열등 전달
  • 제어 결합도(Control Coupling) : 제어 요소 전달
  • 외부 결합도(External Coupling) : 다른 모듈 변수 사용
  • 공통 결합도(Common Coupling) : 전역변수 사용
  • 내용 결합도(Content Coupling) : 다른 모듈 기능 이용

⭐ 응집도 (20년 1회, 2023년 2회 기출)

모듈 내부에서 구성요소 간에 밀접한 관계를 맺고 있는 정도

응집도(Cohesion): 한 모듈 내의 각 구성 요소들이 공통의 목적을 달성하기 위하여 서로 얼마나 관련이 있는지의 기능적 연관의 정도를 나타내는 것은? (2023년 2회)

결합도 유형 (우논시절통순기) (21년 1,2,3회 기출)

Data -> Stamp -> Control -> Common -> Content

  • 기능적 응집도(Functional Cohesion) : 단일한 목적 수행
  • 순차적 응집도(Sequential Cohesion) : 출력값을 입력값으로 사용
  • 통신적 응집도(Communication Cohesion) : 동일한 입력, 출력
  • 절차적 응집도(Procedural Cohesion) : 순차적 수행
  • 시간적 응집도(Temporal Cohesion) : 같은 시간, 기능 수행
  • 논리적 응집도(Logical Cohesion) : 유사한 성격
  • 우연적 응집도(Coincidental Cohesion) : 연관관계 없음
구분이상적인 수준설명
결합도자료 결합도모듈 간에 단순한 데이터 값을 전달하는 방식
스탬프 결합도모듈 간의 인터페이스로 데이터 구조(배열 등)를 통해 전달되는 방식
제어 결합도한 모듈이 다른 모듈의 동작을 제어 신호를 이용하여
통신하거나 제어 요소(Function Code, Switch, Tag, Flag)를 전달하는 방식
외부 결합도다른 모듈의 외부 변수에 의존하는 방식
공통 결합도여러 모듈이 같은 전역 변수를 사용하는 방식
내용 결합도한 모듈이 다른 모듈의 내부 데이터에 직접 접근하는 방식
응집도기능적 응집도모듈이 단일한 목적을 가지고 수행하는 형태
순차적 응집도모듈이 이전 단계의 출력값을 다음 단계의 입력값으로 사용하는 형태
통신적 응집도동일한 데이터를 사용해 여러 작업을 수행하는 형태
절차적 응집도모듈이 특정 순서로 실행되어야 하는 경우
시간적 응집도같은 시간에 관련된 작업을 수행하는 형태
논리적 응집도유사한 성격의 작업들이 그룹화된 형태
우연적 응집도서로 관련 없는 작업들이 모여 있는 형태

팬인(Fan-in), 팬아웃(Fan-out) (20년 1회 기출)

모듈의 복잡도와 상호작용을 분석하는 데 사용되는 지표

공통 모듈 구현

공통 모듈 구현 순서

이미지 참조주소

공통 모듈 구현 요소

  • DTO (Data Transfer Object): 데이터 전송을 위해 사용되는 객체로, 주로 네트워크를 통해 데이터를 전송할 때 사용됨.
  • VO (Value Object): 불변성을 가지며, 특정 값을 표현하기 위한 객체로 주로 데이터의 속성을 그룹화함.
  • DAO (Data Access Object): 데이터베이스와의 상호작용을 담당하며, CRUD(Create, Read, Update, Delete) 작업을 수행함.
  • Service: 비즈니스 로직을 처리하는 계층으로, 다양한 DAO를 호출하여 데이터 처리 및 변환을 담당함.
  • Controller: 사용자 요청을 처리하고, 적절한 응답을 생성하기 위해 Service와 상호작용하는 계층임. 비지니스 로직을 수행

Annotation

  • 사전적으로는 '주석'이라는 의미를 가짐
  • 자바코드에 주석처럼 달아 특수한 의미를 부여함
  • 컴파일 또는 런타임에 해석된다.

서버 프로그램 구현

업무 프로세스

개인이나 조직이 자원을 입력하여 가치 있는 산출물을 제공하는 일련의 활동

업무 프로세스 구성 요소

  • 프로세스 책임자
  • 프로세스 맵
  • 프로세스 Task 정의서
  • 프로세스 성과 지표
  • 프로세스 조직
  • 경영자의 리더십

서버 프로그램 구현

업무 프로세스를 기반으로 서버에서 서비스를 제공하는 기능을 개발하는 활동

MVC 모델의 계층

계층영문 이름설명
프레젠테이션 계층Presentation Layer사용자 인터페이스를 담당하며, 사용자와 시스템 간의 상호작용을 처리함.
제어 계층Controller Layer사용자 요청을 처리하고, 비즈니스 로직과 프레젠테이션 계층 간의 연결을 관리함.
비즈니스 로직 계층Business Logic Layer애플리케이션의 주요 비즈니스 로직을 구현하며, 데이터 처리 및 규칙을 정의함.
퍼시스턴스 계층Persistence Layer데이터 저장 및 관리와 관련된 모든 작업을 처리하며, 데이터베이스와의 상호작용을 담당함.
도메인 모델 계층Domain Model Layer애플리케이션의 핵심 도메인 개념과 비즈니스 규칙을 정의하고 모델링함.

DBMS

프로그램에서 데이터베이스(DB)에 접근하여 DML을 사용할 수 있게 하는 기술

DBMS 접속기술 종류

  • 소켓통신
  • Vender API
  • JDBC(Java Database Connectivity)
  • ODBC(Open DataBase Connectivity)

ORM(Object-Relational Mapping) 프레임워크

객체 지향 프로그래밍과 관계형 데이터베이스 간의 호환성 격차를 해결하기 위한 프로그래밍 기법

매핑 기술 비교

1) SQL Mapper

  • SQL을 명시하여 단순히 필드를 매칭시키는 것이 목적
  • 종류 : iBatis,Mybatis, jabc Templetes 등
    2) OR Mapping(ORM)
  • 객체를 통해 간접적으로 데이터베이스를 다룬다.
  • 종류 : JPA(Java Persistent API), Hibernate

시큐어 코딩(Secure Coding)

OWASP(The Open Web Application Security Project)

오픈소스 웹 애플리케이션 보안 프로젝트

시큐어 코딩 가이드

해킹, 사이버 공격의 원인인 보안취약점을 제거해 안전한 소프트웨어를 개발하는 SW 개발 기법

시큐어 코딩 가이드 항목

1) 데이터 검증 및 표현

  • SQL Injection
  • XXS(크로스 사이트 스크립트)
  • 자원 삽입
  • 위럼한 형식 파일 업로드
  • 명령 삽입
  • 메모리 버퍼 오버프로

2) 보안기능

  • 적절한 인증 없이 중요기능 허용
  • 부적절한 인가
  • 취약한 암호화 알고리즘 사용
  • 하드코딩된 패스워드
  • 패스워드 평문 저장
  • 취약한 패스워드 허용

3) 시간 및 상태

  • 경쟁 조건
  • 종료되지 않은 반목문 또는 재귀 함수

4) 예외 처리

  • 오류 메세지 정보 노출
  • 부적절한 예외 처리

5) 코드 오류

  • 널포인트 역참조
  • 부적절한 자원 해제
  • 해제된 자원을 사용
  • 초기화되지 않은 변수 사용

6) 캡슐화

  • 잘못된 세션에 의한 정보 노출
  • 제거되지 않은 디버그 코드
  • 시스템 정보 노출
  • 잘못된 접근 지정자

7)API 오용

  • DNS에 의존한 보안결정
  • 취약한 API 사용

배치 프로그램 구현

데이터를 일괄적으로 모아서 처리하는 대량의 작업을 처리

배치 프로그램의 필수 요소

  • 대용량 데이터
  • 자동화
  • 견고함
  • 안정성
  • 성능

스케줄 관리 종류

1) ⭐ 크론탭(Crontab) ⭐ - 강의 꼭 보기

  • UNIX, LINUX 계열에서 사용
  • 시간을 지정해 특정 명령을 자동 실행
  • 크론탭 형식 (기출에 자주 출제됨)
    분 / 시 / 일 / 월 / 요일 / 명령어

인터페이스 구현

인터페이스 시스템 개념: 서로 다른 시스템이나 장치 간에 정보나 신호를 주고받을 수 있게 도와주는 시스템

인터페이스 시스템 구성

  • 송신 시스템
  • 수신 시스템
  • 중계 서버

연계 시스템 분류와 데이터 식별

  • 송수신 데이터 식별
    • 전문 공통부 : 인터페이스 ID, 서비스 코드, 접속 IP등
    • 전문 개별부 : 업무처리에 필요한 데이터를 포함
    • 전문 종료부 : 전송 데이터의 끝을 표시하는 문자 포함

인터페이스 설계서 확인

1) 인터페이스 목록 : 연계 업무와 연계에 참여하는 송수신 시스템의 정보, 연계 방식과 통신 유형 등에 대한 정보

2) 인터페이스 정의서 : 데이터 송신 시스템과 수신 시스템 간의 속성과 제약조건 등을 상세히 포함

인터페이스 기능 구현

⭐ EAI(Enterprise Application Intergration) ⭐ (20년 3회, 21년 1회)

기업 내의 다른 플렛폼 및 애플리케이션들을 연결, 통합하는 솔루션

EAI 구축 유형

1) 점대점(Point-to-Point / P2P) 방식

애플리케이션 간 직접 연결하여 데이터를 교환하는 방식. 각 애플리케이션이 다른 애플리케이션과 직접 통신함.

2)허브 앤 스포크(Hub-and-Spoke) 방식

중앙 허브를 두고 모든 애플리케이션이 이 허브를 통해 데이터를 송수신하는 방식. 관리가 용이하지만 허브에 부하가 집중될 수 있음.

3) 미들웨어(Message Bus / ESB 방식) 기반 방식

미들웨어를 사용하여 애플리케이션 간의 데이터 통신을 중재하는 방식. 데이터 변환 및 프로토콜 변환의 기능을 제공하여 유연성을 높임.

4) Hybrid

내부 Hub & Spork + 외부 Message Bus

이미지 출처 (EAIEnterprise-Application-Integration-정리)

ESB

  • 웹 서비스 중심의 표준화된 데이터 버스를 이용하여 다양한 애플리케이션을 유연하게 통합하는 플랫폼
  • 프로토콜 변환, 서비스 중심의 메세지 라우팅 기능 제공

인터페이스 연계 기술

  • DM Link
  • DB Connection
  • JDBC
  • API / OpenAPI
  • Web Service
  • Hyper Link
  • Socket

인터페이스 전송 데이터

1) JSON(JavaScript Object Notaion) (20년 1회)

  • 이름과 값의 쌍
    2) XML (eXtensible Markup Language) (20년 1회)
  • 구조화한 문서를 표현하고 전송
  • 더 많은 데이터를 기술하기 위해 HTMl 한계를 극복하기 위해 만들어짐
    2) YAML (YAML Ain't Markup Language) (20년 1회)
  • 데이터 직렬화
    2) CSV (Comma Separated Values) (20년 1회)
  • 콤마로 데이터 구분

인터페이스 구현

1) AJAZ(Asynchronous JavaScript and XML) (20년2회)

  • AJAX 개념
  • 비동기 방식으로 데이터를 교환
  • 전체 페이지를 새로고침하지 않고, 페이지의 일부만을 변경할 수 있는 기법
    2) SOAP(Simple Object Acces Protocol)

    HTTP, HTTPS, SMTP 등을 통한 XML 기반 메세지 교한 프로토콜

SOAP 구성

1) SOAP : HTTP, HTTPS SMTP 등을 통한 XML 기반 메세지를 네트워크상에서 교환하는 프로토콜
1) UDDI : 비지니스 업체 목록 등록을 위한 XML 규격
3) WSDL : 웹 서비스 기술언어, 서비스의 기술적 세부사항 기술

SOAP 보안 프로토콜

프로토콜설명주요 기능
SAMLSecurity Assertion Markup Language인증 및 권한 부여 정보를 XML 형식으로 교환하는 프로토콜.
XKMSXML Key Management Specification키 관리 서비스로, 키의 생성, 저장, 검색, 유효성 검사를 지원.
XACMLeXtensible Access Control Markup Language접근 제어 정책을 정의하고, 정책 기반의 접근 제어를 지원.

REST

HTTP URL을 통한 자원 명시와 HTTP Method를 통한 CRUC Operation을 적용

  • 자원 기반 구조(ROA) 구현

REST의 구성요소

  • 자원(Resource) : URL을 통해 식별
  • 행위(Method) : GET, POST, PUT, DELETE
  • 표현(Reperesentation): 데이터 표현

RESTful

REST의 원리를 따르는 시스템

인터페이스 보안

인터페이스 보안 취약점 분석

  • 인터페이스를 통한 데이터 변조, 탈취
  • 패킷 공격 기법 (20년 1회)
    • 스니핑(Sniffing) : 패킷을 가로채는 행위 (소극적 , 지켜봄)
    • 스푸핑(Spoofing) : IP 주소나 다른 식별자를 위장 (위장)

인터페이스 보안 기능 적용

1) 네트워크 영역 : 트래픽에 대한 암호화 설정, IPSec, SSL, S-HTTP
2) 애플리케이션 영역 : 시큐어코딩 가이드
3) DB 영역 : 민감 데이터를 암호화

인터페이스 구현 검증

인터페이스 구현 검증 도구

  • XUnit : 다양한 언어 지원
  • STAF : 서비스 호출 및 컴포넌트 재사용등
  • FitNesse : 웹 기반 테스트 프레임워크
  • NTAF : FitNesse의 장점과 STAF의 장점을 통합
  • Selenium : 웹 애플리케이션 테스트 프레임워크
  • Watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크

인터페이스 구현 감시 도구

  • APM(Application Performance Management)을 사용하여 동적 상태 검사
  • 종류 : 스카우터 (Scouter), 제니퍼(Jennifer)등

인터페이스 오류 처리

1) 인터페이스 오류 발생 알림

  • 화면, SMS 발송, 이메일 발송
    2) 인터페이스 오류 발생 확인
  • 로그 확인, 오류 테이블 확인, 감시 도구로 확인

객체 지향 (OOP, Object Oriented Programming)

현실 세계의 유형, 무형의 모든 대상을 객체(Object)로 나누고, 객체의 행동(Method)과 고유한 값(Attribute)을 정의하여 설계하는 방법

객체지향 구성요소

  • 클래스 (Class) : 속성과 연산을 정의해서 만든 틀
  • 객체 (Object) : 클래스의 인스턴스
  • 속성 (Attribute) : 객체들이 가지고 있는 고유한 데이터
  • 메서드 (Method) : 작업을 수행하기 위한 명령문의 집합
  • 메세지 (Message) : 객체에게 어떤 행위를 하도록 지시

객체지향 언어의 특징

  • 캡슐화 (Encapsulation) : 속성(Attribute)과 메서드(Method)를 하나로 묶은 것
  • 정보은닉 (Infomation Hiding) : 내부 데이터에 직접 접근할 수 없도록 제한
  • 상속 (Inheritance) : 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것
  • 다형성 (Polymorphism) : 하나의 메세지에 대해 여러 가지 방법으로 응답
  • 추상화 (Abstraction) : 실체의 핵심적인 개념만 추출

⭐객체지향 설계 원칙 (SOLID)⭐ (22년 2회)

  • 단일 책임원칙(SRP) : 한 클래스는 하나의 책임만을 가져야 한다. (Single Responsibility Principle)
  • 개방 폐쇄 원칙(OCP) : 확장에 열려 있고, 수정엔 닫혀 있어야 한다. (Open/Closed Principle)
  • 리스코프 치환 원칙(LSP) : 자식 클래스는 언제나 자신의 부모 클래스를 대체 (Liskov Substitution Principle)
  • 인터페이스 분리 원칙(ISP) : 사용하지 않는 인터페이스는 구현하지 말아야 한다. ( Interface Segregation Principle)
  • 의존성 역전 원칙(DIP) : 변화가 거의 없는 것에 의존 (Dependency Inversion Principle)

⭐⭐디자인 패턴⭐⭐

객체지향 프로그래밍 설계를 할 때 자주 발생하는 문제들에 대해 재사용할 수 있도록 만들어놓은 패턴들의 모음

디자인 패턴 구조

  • 패턴의 이름과 유형 / 문제 및 배경 / 솔루션 / 사례 / 결과 / 샘플 코드

⭐⭐ GOF 디자인 패턴 ⭐⭐

분류

  • 생성 패턴 : 객체 생성과 관련한 패턴
  • 구조 패턴 : 객체를 조합해서 더 큰 수조를 만드는 패턴
  • 행위 패턴 : 알고리즘이나 책임 분배에 관련된 패턴
생성(Creational) 패턴구조(Structural) 패턴행위(Behavioral) 패턴
Singleton : 오직 하나
인스턴스 하나만 생성
Adapter : 인터페이스 호환
서로 다른 인터페이스를 연결
Observer : 상태 변화 통지
구독-발행 패턴
Factory Method : 객체생성 = 인터페이스
서브 클래스에서 실제 생성
Composite : 부분-전체 관계
트리 구조 표현
Strategy : 알고리즘 교체
동적 행동 선택
Abstract Factory : 관련 객체 패밀리 생성
일관된 객체 집합 제공
Proxy : 대리자
접근 제어 및 캐싱 제공
Command : 요청 캡슐화
요청 처리 및 실행
Builder : 다양한 표현의 객체 생성
복잡한 객체 구성
Decorator : 기능 추가
기존 객체에 새로운 기능
Iterator : 순회 제공
컬렉션 접근 방법
Prototype : 복사
기존 객체 복제하여 생성
Facade : 단순화된 인터페이스
복잡한 시스템 접근
Mediator : 중재자
객체 간 통신 관리
Bridge : 구현과 추상 분리
독립적 변화 지원
State : 상태에 따른 행동
상태 변화에 따른 동작
Flyweight : 공유 객체
메모리 절약
Template Method : 알고리즘 뼈대
서브 클래스에서 구현
Chain of Responsibility : 책임 연쇄
요청 처리 분산

애플리케이션 테스트 관리

소프트웨어 테스트

결함(Fault)을 발견하기 위한 절차와 행위

소프트웨어 테스트의 필요성

  • 오류 발견 관점
  • 오류 예방 고나점
  • 품질 향상 관점

소프트웨어 테스트의 기본 원칙

  • 테스팅은 결함을 찾아내는 활동
  • 완벽한 테스팅은 불가능하다.
  • 테스팅은 개발 초기에 시작해야 한다.
  • 테스팅 방법은 특정 상황에 의존적이다.
  • 결함 집중 (Defect Clustering): 파레토의 법칙 (20 % / 80%)
  • 살충제 패러독스 : 새로운 테스트 케이스 설계 (20년 1회)
  • 오류-부재의 궤변 : 사용자의 요구사항을 충족하지 않으면 품질이 좋다고 할 수 없다.

테스트 산출물

  • 테스트 계획서
  • 테스트 케이스
  • 테스트 시나리오
  • 테스트 결과서

테스트 오라클 (20년 4회)

테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법

테스트 오라클 유형

오라클 종류설명
참 오라클 (True Oracle)모든 입력 값에 대해 결과를 생성하는 오라클.
샘플링 오라클 (Sampling Oracle)제한된 입력 값들에 대해서만 결과를 제공하는 오라클.
휴라스틱 오라클 (Heuristic Oracle)근사적인(추정) 결과를 제공하는 오라클.
일관성 검사 오라클 (Consistency Checking Oracle)변경 전후로 테스트 결과의 일관성을 검증하는 오라클.

⭐⭐ 테스트 레벨 (21년 1회, 22년 1회 , 22년 2회) ⭐⭐

단.통.시.인 단위테스트 ➔ 통합 테스트 ➔ 시스템 테스트 ➔ 인수 테스트

테스트 레벨종류설명
단위 테스트정적 테스트코드의 문법 및 구조를 검사하는 테스트. 일반적으로 컴파일 시점에서 수행.
동적 테스트실제 코드 실행을 통해 기능을 검사하는 테스트. 각 모듈의 동작을 검증.
통합 테스트상향식 통합 테스트하위 모듈부터 상위 모듈로 통합하여 테스트. 스텁을 사용해 상위 모듈의 기능을 모방.
하향식 통합 테스트상위 모듈부터 하위 모듈로 통합하여 테스트. 드라이버를 사용해 하위 모듈을 호출.
시스템 테스트기능 테스트시스템의 기능 요구 사항을 검증하는 테스트. 사용자 관점에서의 동작 확인.
비기능 테스트성능, 보안, 사용성 등의 비기능 요구 사항을 검증하는 테스트.
인수 테스트알파 테스트개발 환경에서 수행되는 테스트로, 내부 사용자(개발자 등)가 참여.
베타 테스트실제 사용자 환경에서 수행되는 테스트로, 외부 사용자가 참여하여 피드백 제공.

소프트웨어 테스트 기법

정적 테스트 (20년 2회 기출)

소스 코드를 분석하여 문제점을 찾는 테스트 방식

종류

  • 코드 검사
  • 워크스루 : 개발자 검토 회의
  • 인스펙션 : 검토 전문가들이 소스코드를 분석

동적 테스트

소프트웨어의 내부 구조와 동작을 중점으로 검사하는 테스트

테스트 기법

화이트 박스 테스트

소프트웨어의 내부 구저와 동작을 중점으로 검사하는 테스트

테스트 기법

  • 문장 검증
  • 선택(분기) 검증
  • 경로 검증

기초 경로 검사 (Basic Path Test)

  • McCabe가 제안한 것으로 대표적인 화이트박스 테스트 기법
  • 계산식 : V(G)=E-N+2
  • 제어 흐름도에서 화살표로 구분되는 각 영역의 개수를 구한다.

이미지 출처

⭐⭐블랙박스 테스트⭐⭐(20년 3회, 20년 4회)

프로그램의 사용자 요구사항 명세를 보면서 테스트

테스트 기법

  • 동등 분할 기법 (Equivalence Partitioning) : 입력 자료에 초점을 맞춰 테스트
  • 경계값 분석 (Boundary Value Analysis) : 경계값을 테스트 케이스로 선정
  • 원인-효과 그래프 검사 (Cause-Effect Graphing) : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황 분석
  • 오류 예측 검사 (Error Guessing) : 과거의 경험이나 테스트의 감각으로 테스트 하는 검사
  • 비교 검사 (Comparison Testing) : 두 개 이상의 시스템이나 버전의 결과를 비교하여 일관성을 검증
  • 상태전이 검사 (State Transition Testing) : 시스템의 상태 변화와 그에 따른 동작을 검증하여 올바른 상태 전이를 확인

테스트에 대한 시각

  • 검증(Verification)
    • 소프트웨어의 개발 과정을 테스트
  • 확인(Validation)
    • 소프트웨어의 개발 결과를 테스트

⭐테스트의 목적⭐(22년 2회 기출)

  • 회복 테스트 (Recovery Testing) : 시스템의 장애 발생 후 복구 기능이 정상적으로 작동하는지 검증하는 테스트.

  • 안전 테스트 (Safety Testing) : 시스템이 사용자와 환경에 대한 위험을 최소화하고 안전하게 작동하는지 확인하는 테스트.

  • 강도 테스트 (Robustness Testing) : 시스템이 비정상적인 입력이나 극한의 조건에서도 안정적으로 작동하는지를 검증하는 테스트.

  • 성능 테스트 (Performance Testing) : 시스템의 응답 시간, 처리량, 자원 사용량 등을 측정하여 성능 요구 사항을 충족하는지 확인하는 테스트.

  • 구조 테스트 (Structural Testing) : 소스 코드 내부의 구조를 기반으로 테스트 케이스를 설계하여 코드의 흐름과 논리를 검증하는 테스트.

  • 회귀 테스트 (Regression Testing) : 기존 기능이 변경 후에도 정상적으로 작동하는지 확인하기 위해 수행하는 테스트.

  • 병행 테스트 (Parallel Testing) : 새로운 시스템과 기존 시스템을 동시에 실행하여 결과를 비교하고 일관성을 검증하는 테스트.

  • A/B 테스트 (A/B Testing) : 두 가지 이상의 버전을 비교하여 어떤 버전이 더 효과적인지를 분석하는 실험적 테스트.

  • 스모크 테스트 (Smoke Testing) : 기본적인 기능이 정상적으로 작동하는지 확인하기 위한 간단한 테스트. 주로 빌드 후 초기 검증에 사용.

테스트 종류

  • 명세 기반 테스트
  • 구조 기반 테스트
  • 경험 기반 테스트

⭐테스트 커버리지⭐(20년 3회)

테스트를 얼마나 수행했는지 측정하는 기준

커버리지 유형설명
코드 커버리지 (Code Coverage) 테스트가 코드의 몇 퍼센트를 실행했는지를 측정하여, 테스트의 범위를 평가.
결정 커버리지 (Decision Coverage)각 분기문에서 참과 거짓 결과가 모두 테스트 되었는지를 확인하여, 결정의 정확성을 검증.
경로 커버리지 (Path Coverage)가능한 모든 실행 경로를 테스트하여, 프로그램의 모든 흐름을 검증.
기능 커버리지 (Function Coverage)특정 기능이나 모듈이 테스트되었는지를 평가하여, 기능 요구 사항 충족 여부를 확인.
조건 커버리지 (Condition Coverage)각 조건문의 모든 조건이 참과 거짓으로 테스트 되었는지를 검증.
라인 커버리지 (Line Coverage)전체 소스 코드의 Line 수를 모수
구문 커버리지 (Statement Coverage)각 코드 구문이 최소 한 번 실행되었는지를 확인하여, 코드의 실행 여부를 검증.
기능 기반 커버리지 (Function-Based Coverage)특정 기능이 테스트되었는지를 평가하여, 각 기능의 요구 사항이 충족되는지 확인.
변경 조건/결정 커버리지 (Modified Condition/Decision Coverage)조건과 결정의 조합이 변경되었을 때, 모든 조건이 참과 거짓으로 테스트 되었는지를 검증.
다중 조건 커버리지 (Multiple Condition Coverage)각 조건의 조합이 모든 가능한 결과에 대해 테스트 되었는지를 확인하여, 결합에 따른 영향을 검증. (가능한 조합 100% 보장)

결함관리 도구

테스트 수행 후 발생한 결함을 추적하고 관리할 수 있게 해주는 도구

결함관리 프로세스

  • 에러 발견
  • 에러 등록
  • 에러 분석
  • 결함 확정
  • 결함 할당
  • 결함 조치
  • 결함 조치 검토 및 승인

결함 추이 분석

테스트 완료 후 발견된 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 어떤 모듈 또는 컴포넌트에서 결함이 발생할지를 추정하는 작업

결함 관리 측정 지표

  • 결함 분포 : 결함의 분포를 분석
  • 결함 추세 : 테스트 진행 시간의 흐름에 따른 추세를 분석
  • 결함 에이징: 결함 상태의 지속 시간을 측정

결함 관리 항목

  • 결함 내용, 결함 ID, 결함 유형, 발견일, 심각도, 우선순위, 시장 조사 예정일, 수정 담당자, 제테스트 결과, 종료일

테스트 자동화 도구

테스트를 효과적으로 수행하기 위해 스크립트나 도구를 활용하여 반복적인 테스트 작업을 자동화하는 방법

테스트 자동화 도구 유형 (21년 2회 기출)

  • 정적 분석 도구(Static Analusis Tools)

    애플리케이션을 실행하지 않고 분석하는 방법 (Pmd, SonarQube, Cppcheck, Checkstyle 등)

  • 테스트 실행 도구 (Test Execution Tools)

    사전에 작성된 테스트 스크립트나 시나리오를 실행하는 도구

  • 성능 테스트 도구 (Performance Test Tools)

    시스템 성능, 부하, 스트레스 테스트를 위한 도구 (JMeter, LoadRunner)

테스트 통계 도구 (Test Control Tools)

테스트의 전체 프로세스를 관리하는 도구

⭐ 테스트 장치(Test Driveer) 구성 요소⭐

  • 테스트 드라이버(Test Driver): 상향식 테스트에 필요
  • 테스트 스터 : 하향힉 테스트에 필요
  • 테스트 슈트 : 테스트 케이스의 집합
  • 테스트 케이스 : 입력 값, 실행 조건, 기대 결과 (21년 3회 기출) 등의 집합
  • 테스트 스크립트 : 자동화된 테스트 실행 절차
  • 목 오브젝트 : 조건부로 상황에 예정된 행위를 수행하는 객체

통합 테스트

소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트 기법

이미지 출처(정보처리기사-실기-정리-7과목-2)

애플리케이션 성능 개선

성능 저하 원인

1) 데이터베이스 관련 성능 저하

  • 데이터베이서 락(DB Lock)
  • 불필요한 패치(DB Fetch)
  • 연결 누수(Connection Leack)
    2) 내부 로직으로 인한 성능 저하 원인
  • 파일 관련 오류
  • 코드 오류
    3) 외부 호출로 인한 선능 저하

애플리케이션 성능 분석

애플리케이션 성능 분석 지표 (20년 1회 기출)

  • 처리량 (Throughput) : 단위 시간당 처리되는 작업의 수로, 시스템의 처리 능력을 나타냄.
  • 응답 시간 (Response Time) : 요청을 보낸 시점부터 응답이 돌아오기까지 걸리는 시간으로, 사용자 경험에 영향을 줌.
  • 경과 시간 (Turn Around Time) : 요청이 제출된 시점부터 작업이 완료될 때까지의 전체 시간으로, 대기 시간과 처리 시간을 포함함.
  • 자원 사용률 (Resource Usage) : CPU, 메모리, 디스크 등 시스템 자원의 사용 비율로, 리소스 효율성을 평가하는 데 도움을 줌.

성능 분석 도구

  • JMeter : 다양한 프로토콜(HTTP, FTP 등)을 지원하는 부하 테스트 도구
  • LoadUI : 웹 서비시의 로드 테스트에 사용
  • OpenSTA : HTTP, HTTPS 프로토콜에 대한 부하 테스트

모니터링 도구

  • Scouter : 단일 뷰를 통한 통합 및 실시간 모니터링
  • NMon : 리눅스 서버 지원에 대한 모니터링
  • Zabbix : 웹 기반의 서버, 서비스, 애플리케이션 모니터링 도구
  • Jeniffer : 트랜잭션의 양, 처리 시간, 응답 시간, 자원 활용률 등을 모니터링

정형 기술 검토회의(FTR, Formal Technical Review)

  • 소프트웨어 품질 보증 활동
  • 소프트웨어 개발 산출물, 오류 발견을 목적으로 한다.

검토 지침

  • 제작자가 아닌 제품의 검토에만 집중한다.
  • 문제 영역을 명확히 표현한다.
  • 재기된 모든 문제를 바로 해결하고자 하지 않는다
  • 검토자들은 사전에 작성한 메모들을 공유한다.
  • 논쟁이나 반박을 제한한다.
  • 의제를 정하고 그 범위를 유지한다.
  • 참가자의 수를 제한하고, 사전 준비를 철저히 하도록 강요한다.
  • 자원과 시간 일정을 할당한다.
  • 모든 검토자에게 의미 있는 교육을 행한다.
  • 검토의 과정과 결과를 재검토한다.

소스 코드 품질 분석

동료 검토(Peer Review)

  • 2~3명의 개발자가 참여하는 리뷰 프로세스

워크스루(Walkthrough)

  • 계획된 개발자 검토 회의
  • 주로 이해를 돕고, 피드백을 받기 위해 사용됩니다. 비공식적인 방식으로 진행되며, 개발자가 자신의 작업을 설명하고 질문을 받는 형태입니다.

인스펙션(Inspection)

  • 공식적 검사 회의
  • 결함을 발견하고 품질을 보장하기 위해 사용됩니다. 체크리스트를 사용하여 구체적인 기준에 따라 검토합니다.
  • 계획 ➔ 사전교육 ➔ 준비 ➔ 인스펙션 회의 ➔ 수정 ➔ 후속 조치

소스코드 품질 분석 도구

코딩 중 발생할 수 있는 다양한 문제를 해결하기 위해 사용하는 도구

소스코드 품질 분석 도구 분류

1) 정적 분석 도구

  • 프로그램 실행 없이 소프트웨어 코드를 분석
  • PMD, checkstyle, SonarQube, cppcheck, ccm, cobertura
    2) 동적 분석 도구
  • 프로그램을 실행하여 코드의 메모리 누수나 스레드 결함 등을 발견
  • Avalanche, Valgrind

애플리케이션 성능 개선하기

코드 최적화

알고리즘 개선, 병목 현상 제거, 실행 시간 단축, 메모리 사용 최소화

코드 스멜

소스코드에서 발견할 수 있는 잠재적인 문제점

  • 스파게티 코드(Spaghetti Code) : 난잡한 코드
  • 외계인 코드 : 오래되어 유지보수가 어려운 코드

리팩토링

외부 동작 변경 없이 내부 구조를 개선하는 방법

클린 코드

의존성 최소화, 명확한 가독성과 목적성을 가진 코드

클린코드 작성 원칙

  • 가독성
  • 단순성
  • 의존성 배제
  • 중복성 최소화
  • 추상화

제품 소프트웨어 패키징

제품 품질 국제 표준

소프트웨어 개발 공정 각 단계에서 산출되는 제품이 사용자 요구를 만족하는지 검증하기 위한 국제 표준

ISO/IEC 9126의 소프트웨어 품질 특성 (기신사효유이! 9126)

  • 기능성 (Functionality) : 소프트웨어가 요구된 기능을 얼마나 잘 수행하는지를 평가.
  • 신뢰성 (Reliability) : 소프트웨어가 안정적으로 작동하고, 오류 없이 일정 시간 동안 기능을 수행하는 능력.
  • 사용성 (Usability) : 사용자가 소프트웨어를 쉽게 배우고 사용할 수 있는 정도.
  • 효율성 (Efficiency) : 자원 사용을 최적화하여 성능을 유지하는 능력.
  • 유지보수성 (Maintainability) : 소프트웨어의 수정, 개선, 업데이트가 얼마나 용이한지를 평가.
  • 이식성 (Portability) : 소프트웨어를 다른 환경이나 플랫폼으로 쉽게 이동할 수 있는 능력.

ISO/IEC 14598 평가특성 (반재공객! 14598)

  • 반복성 (Repeatability) : 동일한 조건에서 동일한 결과를 반복적으로 얻을 수 있는 정도.
  • 재현성 (Reproducibility) : 다른 평가자가 동일한 결과를 얻을 수 있는 정도.
  • 공정성 (Fairness) : 평가 과정이 공정하게 진행되어 모든 소프트웨어가 동등한 조건에서 평가받는 정도.
  • 객관성 (Objectivity) : 평가 결과가 주관적인 판단이 아닌 객관적인 기준에 기반하여 이루어지는 정도.

ISO/IEC 12119 구성 요소 ( 다합친거)

  • 제품 설명서 (Product Specification): 소프트웨어의 기능, 성능, 제약 조건 등을 기술한 문서.
  • 사용자 문서 (User Documentation): 최종 사용자가 소프트웨어를 효과적으로 사용할 수 있도록 돕는 문서 (예: 사용자 매뉴얼).
  • 실행 프로그램 (Executable Program): 실제로 사용자가 실행할 수 있는 소프트웨어 프로그램.

ISO/IEC 25000

ISO/IEC 25000은 소프트웨어 제품의 품질 요구 사항 및 평가 기준을 정의하는 국제 표준입니다. 이전의 ISO/IEC 9126과 ISO/IEC 14598을 통합하고 발전시킨 것입니다.

  • ISO/IEC 25000: 소프트웨어 품질 요구 사항 및 평가 기준을 정의.
  • ISO/IEC 25001: 품질 요구 사항 정의 및 관리 가이드라인 제공.
  • ISO/IEC 25010: 소프트웨어 품질 모델 및 6가지 주요 품질 특성 정의.
  • ISO/IEC 25020: 품질 측정 기준과 지표 제공.
  • ISO/IEC 25030: 품질 요구 사항 정의 및 평가 방법론 제공.
  • ISO/IEC 25040: 품질 평가 프로세스와 결과 해석 방법 설명.

국제 프로세스 품질 표중

ISO/IEC 12207 구성

  • 기본 생명 주기 프로세스 : 획득, 공급, 개발, 운영, 유지보수
  • 지원 생명 주기 프로세스 : 문서화, 형성관리, 품질보증, 검증, 확인
  • 조직 생명 주기 프로세스 : 관리, 기반구조, 개선, 교육훈련

ISO/IEC 15504(SPICE) 구성

ISO에서 표준으로 지정된 프로세스 수행능력 평가 표준 프레임워크 (유럽)

  • SPICE 프로세스 능력수준
능력 수준설명
1. 불안정 단계 (Incomplete)프로세스가 불완전하며, 일관성이 없고 정의되지 않음.
2. 관리 단계 (Managed)프로세스가 계획되고 관리되며, 수행 관리가 확립됨.
3. 정의 단계 (Defined)프로세스가 표준화되고 문서화되어 있으며, 일관되게 수행됨.
4. 정량적 관리 단계 (Quantitatively Managed)프로세스가 정량적 데이터를 기반으로 관리되고 있으며, 성과를 예측함.
5. 최적화 단계 (Optimizing)프로세스가 지속적으로 개선되며, 혁신적인 접근이 적용됨.

CMM(Capability Maturity Model)

소프트웨어 개발 업체들의 업무능력 평가 기준을 세우기 위한 모형 (미국)

  • CMM 성숙도 5단계
성숙도 단계설명
1. 초기 단계 (Initial)프로세스가 비공식적이며, 예측 불가능하고 관리되지 않음.
2. 관리 단계(Managed)프로젝트 관리가 이루어지며, 기본적인 프로세스가 정의됨.
3. 정의(반복) 단계 (Defined)조직 전체에 걸쳐 표준화된 프로세스가 문서화되고 일관되게 수행됨.
4. 정량적 관리 (Quantitatively Managed)정량적 데이터에 기반한 관리가 이루어지며, 성과를 측정하고 관리함.
5. 최적화 (Optimizing)프로세스 개선이 지속적으로 이루어지며, 혁신이 적용됨.

CMMi(Capability Maturity Model Intergration)

기존 CMM에 프로젝트 관리(PM), 프로큐어먼트(Procurement), 시스템 엔지니어링(SE) 등의 요소를 추가한다.

  • CMMi 성숙도 5단계
성숙도 단계설명
1. 초기 단계(Initial)프로세스가 비공식적이며, 예측 불가능하고 관리되지 않음.
2. 관리 단계(Managed)프로젝트 관리를 위한 기본적인 프로세스가 정의되고 수행됨.
3. 정의 단계(Defined)조직 전체에 걸쳐 표준화된 프로세스가 문서화되고 일관되게 수행됨.
4. 정량적 관리 단계(Quantitatively Managed)프로세스가 정량적 데이터를 기반으로 관리되고, 성과가 측정됨.
5. 최적화 단계(Optimizing)프로세스 개선과 혁신이 지속적으로 이루어지며, 변화에 대응함.

서비스 관리 국제 표준

고객에게 IT 시비스를 제공하고 관리하기 위한 통합된 관리체계를 적용하여 고객에게 적절한 통계, 개선된 효과성 및 개선의 기회를 제공

국제 서비스관리 표준

  • ISO/IEC 20000
  • 고객에게 제공하는 IT서비스의 수준을 객관적으로 평가

제품 소프트웨어 패키징

애플리케이션 패키징이란?

개발 완료된 소프트웨어를 사용자에게 전달하기 위한 형태로 패키징하는 과정

애플리케이션 패키징 특징

  • 개발자가 아닌 최종 사용자 중심으로 진행
  • 신규 및 변경된 소스를 식별, 모둘화해서 패키징
  • 버전 관리 및 릴리스 노트를 통해 지속적으로 관리
  • 다양한 사용자 환경에서 호환성을 고려하여 패키징

애플리케이션 패키징 순서

이미지출처([정보처리기사] 제품 소프트웨어 패키징)

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

애플리케이션 배포 도구

최종 사용자에게 소프트웨어를 전달하는 전체 과정

고려사항

  • 반드시 내부 콘텐츠에 대한 암호화 및 보안을 고려
  • 추가로 다양한 이기종 연동을 고려
  • 사용자 편의성을 위한 복잡성 및 비효율성 문제를 고려
  • 제품 소프트웨어의 종류에 적합한 암호화 알고리즘을 적용

CI/CD

CI(Continuous Integration) : 지속적인 통합
CD(Continuous Delivery & Continuous Deployment) : 지속적인 서비스 제공 혹은 지속적인 배포

릴리즈 노트 (20년 1회 기출)

소프트웨어 제품과 함께 배포되는 문서

릴리즈 노트 작성항목

Header, 개요, 목적, 이슈 요약, 재현 항목 , 수정/개선 내용, 사용자 영향도, SW 지원 영향도, 노트, 면책조항, 연락 정보

DRM

디지털 콘텐츠의 불법 사용을 제한하고, 승인된 사용자에게만 콘텐츠 사용을 허용하는 기술

DRM의 구성 및 흐름


이미지출처([정보처리기사] 제품 소프트웨어 패키징)

구성 요소설명
콘텐츠 제공자 (Content Provider)콘텐츠를 생성하고 소유하는 개인 또는 기업으로, DRM 보호가 필요한 디지털 콘텐츠를 제공합니다.
분배자 (Distributor)콘텐츠를 소비자에게 전달하는 역할을 하며, 콘텐츠 제공자로부터 라이선스를 받아 배포합니다.
패키저 (Packager)콘텐츠를 DRM 보호 형식으로 포장하고, 필요한 메타데이터를 추가하여 배포 가능한 형태로 만듭니다.
보안 컨테이너 (Secure Container)DRM 보호를 적용한 콘텐츠를 저장하고 관리하는 안전한 환경으로, 콘텐츠 접근을 제어합니다.
DRM 컨트롤러 (DRM Controller)콘텐츠의 사용 권한을 관리하고, 사용자 인증 및 라이선스 검증을 수행하여 콘텐츠 접근을 제어합니다.
클리어링 하우스 (Clearing House)DRM 관련 라이선스 및 권리를 관리하고, 콘텐츠 제공자와 분배자 간의 거래를 조정하는 중개 역할을 합니다.

DRM 사용 규칙 제어 기술

1) 식별 체계 (Identification System)

DRM 콘텐츠와 관련된 고유한 식별자를 제공하여 콘텐츠를 명확하게 구분하고 관리할 수 있도록 합니다.

기능

  • 콘텐츠의 출처와 소유권을 확인합니다.
  • 사용자와의 상호작용에서 발생하는 모든 거래를 추적합니다.
  • 콘텐츠의 버전 관리 및 업데이트를 용이하게 합니다.
  • 예시: UUID(Universally Unique Identifier) 또는 DOI(Digital Object Identifier)와 같은 고유 식별자.

2) 메타데이터 (Metadata)

콘텐츠에 대한 정보를 설명하는 데이터로, 콘텐츠의 속성, 사용 조건 및 라이선스 정보를 포함합니다.

기능

  • 콘텐츠 관리 및 검색을 용이하게 합니다.
  • 사용자가 콘텐츠에 대한 권리 및 사용 조건을 이해하도록 돕습니다.
  • DRM 시스템 내에서 권리 및 사용 규칙을 정의하는 데 사용됩니다.
  • 예시: 콘텐츠 제목, 저자, 발행일, 라이선스 유형, 사용 가능한 권리 등의 정보.

3) 권리 표현 기술 (Rights Expression Language)

사용자가 콘텐츠를 어떻게 사용할 수 있는지를 정의하는 규칙을 표현하는 기술입니다.

기능

  • 다양한 사용 권한 및 제한 사항을 명확하게 기술합니다.
  • 콘텐츠 제공자와 사용자 간의 권리 및 의무를 명확히 하여 분쟁을 방지합니다.
  • 표준화된 방식으로 다양한 DRM 시스템 간의 호환성을 제공합니다.
  • 예시: ODRL(Open Digital Rights Language) 또는 XrML(XML-based Rights Language)과 같은 권리 표현 언어.

저작권 보호 기술

1) 암호화 기술 (Encryption Technology)

데이터를 안전하게 보호하기 위해 특정 알고리즘을 사용하여 정보를 변환하는 기술입니다.

기능

  • 콘텐츠를 암호화하여 무단 접근을 방지합니다.
  • 암호화된 콘텐츠는 특정 키나 인증을 가진 사용자만 접근할 수 있습니다.
  • 예시: 대칭 키 암호화 (AES 등): 동일한 키로 데이터를 암호화 및 복호화.
    비대칭 키 암호화 (RSA 등): 공개 키로 암호화하고 개인 키로 복호화.

2) 위변조 방지 (Tamper Proofing) - 템퍼프루핑 (23년 3회 기출)

콘텐츠가 무단으로 변경되거나 조작되지 않도록 보호하는 기술입니다.

기능

  • 데이터의 무결성을 확인하여 콘텐츠가 원본과 일치하는지 검증합니다.
  • 위변조가 발생할 경우 이를 탐지할 수 있는 메커니즘을 제공합니다.
  • 예시: 해시 함수 (SHA-256 등): 데이터의 고유한 해시 값을 생성하여 변경 여부를 확인.
    디지털 서명: 콘텐츠에 대한 서명을 통해 출처와 무결성을 보장.
  1. 워터마킹 (Watermarking)

    콘텐츠에 저작권 정보를 삽입하여 소유권을 주장하는 기술입니다.

기능

  • 콘텐츠에 눈에 보이지 않거나 덜 보이는 형태로 정보를 삽입하여 저작권을 보호합니다.
    불법 복제된 콘텐츠의 출처를 추적할 수 있게 합니다.
  • 예시: 디지털 이미지, 비디오, 오디오 파일에 저작권 정보나 로고를 삽입.
    저작권 소유자의 정보를 포함한 워터마크 기술.

제품 소프트웨어 메뉴얼 작성

사용자가 제품을 처음 설치할 때 참조하는 메뉴얼

제품 소프트웨어 메뉴얼 종류

  • 제품 소프트웨어 설치 메뉴얼
  • 제품 소프트웨어 사용자 메뉴얼
profile
매일매일 틀깨기

0개의 댓글