Computer Science

[정보처리기사] 파트별 요약

문제 풀다 틀린 내용 위주로 요약한 내용입니다! 모든 내용을 담고 있지 않다는 점 유의해주시고, Ctrl+F로 필요한 내용만 찾아 보시는 것을 추천 드립니다 😄

Part.1 소프트웨어 설계

스크럼 개발 프로세스

제품 백로그 설정 -> 스프린트 백로그 설정 -> 스프린트 수행 -> 스프린트 회고 -> 데일리 미팅 수행

  • 스크럼의 특성
    특정 언어나 방법론에 의존적이지 않으며 넓은 응용 범위의 개발 기법

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

  • 구조적 방법론: 폭포수 모델
  • 정보공학 방법론: 데이터나 모델링을 기반으로 한 프로토타입의 개발 방법론
  • 객체지향 방법론
  • 컴포넌트 기반 방법론

통신 프로토콜 기본 구성 요소

구문, 타이밍, 의미
이 타이밍에 이 말은 무슨 뜻이지?

사물의 유형

  • 구조 사물: 시스템의 개념적, 물리적 요소 표현
    EX. 클래스 유스케이스 컴포넌트
  • 행동 사물: 시간과 공간에 따른 요소들의 행위
  • 그룹 사물: 요소들을 그룹으로 묶어서
  • 주해 사물: 부가적인 설명이나 제약조건을 표현

관계

  • 연관 관계: 2개 이상의 사물이 서로 관련되어있음을 실선과 화살표로 표현
  • 집합 관계: 하나의 사물이 다른 사물에 포함되어있는 관계를 표현
  • 포함 관계: 집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 어떤 영향을 미치는지 관계로 설명, 전체 객체에 전속되어 독립된 객체로 존재할 수 없는 부분 객체의 관계
  • 일반화 관계: 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지

웹 콘텐츠 사용 지침

  • 운용의 용이성 지침: 키보드 접근성 제공, 충분한 시간의 제공 필요, 쉬운 네비게이션 제공, 광과민성 발작 예방

아키텍처 패턴

  • 레이어 패턴: 각각의 서브 시스템들이 계층 구조를 이루며, 상위 계층은 하위 계층에 대한 서비스 제공자가 되고, ...
  • 클라이언트-서버 패턴: 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
  • 파이프-필터 패턴: 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송하는 패턴
  • 모델-뷰 컨트롤러 패턴: 모델-뷰 컨트롤러 패턴의 각 부분은 별도의 컴포넌트로 분리되어 있으며 서로 영향을 받지 않고 개발 작업을 수행할 수 있는 패턴

감성공학의 접근 방법

  • 1류 접근 방법: 분석을 통해 제품 디자인 요소와 연계시키는 접근 방법
  • 2류 접근 방법: 개별적 특성과 생활 방식으로부터 개인이 갖고 있는 이미지를 구체화하는 방법, 감성의 심리적 특성을 강조한 접근 방법
  • 3류 접근 방법 : 기존의 감성적 어휘 대신 공학적인 방법으로 접근하여 인간의 감각을 측정, 이를 바탕으로 수학적 모델을 구축하여 활용, 대상 제품의 물리적 특성에 대한 객관적 지표와 연관분석을 통해 제품 설계에 응용, 감성의 생리적 특성을 강조한 접근 방법

소프트웨어 아키텍처 프레임워크 구성 요소

  • Architecture Description(AD): 아키텍처를 기록하기 위한 산출물을 의미, 하나의 AD는 System의 하나 이상의 View로 구성
  • 이해관계자(Stakeholder): 소프트웨어 시스템 개발에 관련된 모든 사람과 조직을 의미하며, 고객, 개발자, 프로젝트 관리자 등 포함
  • 관심사(Concerns): 동일한 시스템에 대해 서로 다른 이해관계자 의견
    EX: 사용자 입장: 기본기능 + 신뢰성/보안성 요구
  • 관점(Viewpoint): 서로 다른 역할이나 책임으로 시스템이나 산출물에 대한 서로 다른 관점
  • 뷰 (View): 이해 관계자들과 이들이 가지는 생각이나 견해로부터 전체 시스템을 표현 (4 + 1 View)
    논리 뷰, 프로세스 뷰, 구현 뷰, 설계 뷰

객체지향 기법

  • 캡슐화: 서로 관련성이 많은 데이터와 이와 관련된 함수들을 한 묶음으로 처리하는 기법
  • 추상화: 공통 성질을 추출하여 추상 클래스를 설정
  • 다형성: 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
  • 정보은닉: 모듈 안에 있는 자료구조와 메서드에 사용된 알고리즘을 외부에서 직접 변경할 수 없고, 공개 인터페이스로 정의된 메서드를 통해서만 접근 가능

관계성

객체 간의 상호참조하는 관계를 표현하는 방식

1) is member of: 연관성
2) is part of: 집단화
3) is a: 일반화, 특수화

DBMS 분석 시 고려 사항

  • 성능 측면: 가용성, 성능, 기술지원
  • 지원 측면: 상호 호환성, 구축 비용

미들웨어 솔루션 유형

  • RPC(Remote Procedure Call): 원격 프로시저 호출
  • ORB(Object Request Brokers): 객체 기반 미들 웨어, 각기 다양한 기반으로 구축된 컴퓨터 간의 프로그램과 데이터의 교환 및 변환이 편리하게 이루어질 수 있도록, CORBA
  • TP Monitor(Transaction Processing): 트랙잭션 처리 모니터
  • HUB: 컴퓨터를 LAN에 접속시키는 네트워크 장치

요구사항 분석 기법

  • 정형 분석: 형식적으로 정의된 의미를 지닌 언어로 요구사항을 표현하는 기법이자 요구사항 분석의 마지막 단계에서 적용되는 기법, 구문과 의미를 갖는 정형화된 언어를 이용해 요구사항을 수학적 기호로 표현한 후 이를 분석
  • 구조적 분석: 시스템의 기능을 정의하기 위해 프로세스를 도출하고, 도출된 프로세스간의 데이터 흐름을 정의
  • 객체지향 분석

UI

UI 설계 원칙

  • 완전성은 UI 설계 원칙이 아니다.
  • 직관성, 학습성, 유연성, 유효성

    UI 화면 설계 기법

    와이어 프레임, 스토리 보드, 프로토 타입

와이어 프레임: 이해관계자들과의 화면 구성을 협의하거나 서비스의 간략한 흐름을 공유하기 위해 화면 단위의 레이아웃을 설계하는 작업

UI 개발을 위한 주요 기법

  • 사용성 테스트: 사용자가 직접 제품을 사용하면서 미리 작성된 시나리오에 맞도록 과제 수행 후, 질문에 답하도록
  • 워크숍: 소집단 정도의 인원으로 특정 문제나 과제에 대한 새로운 지식, 기술, 아이디어, 방법들을 서로 교환하고 검토하는 세미나
  • 정황 시나리오: 요구사항 정의에 사용되는 초기 시나리오를 말하며, 높은 수준, 낙관적이면서도 발생 상황에서의 이상적인 시스템 동작에 초점을 맞추는 시나리오
  • 스토리 보드: 정책, 프로세스, 콘텐츠 구성, 와이어 프레임, 기능 정의, 데이터베이스 연동 등 서비스 구축을 위한 모든 정보가 담겨 있는 설계 산출물

    UI 흐름 설계 프로세스

    화면에 표현되어야 할 기능 정의 -> 화면의 입력 요소 확인 -> UI 요구사항을 기반으로 유스케이스 설계 -> 기능 및 양식 확인

인터페이스 오류 유형

  • 연계 시스템(서버)의 장애: 연계 서버 다운, 송/수신 시스템 접속 오류
  • 송신 시스템의 연계 프로그램 오류: 연계 데이터를 생성, 추출하는 과정과 코드, 데이터 변환 과정에서 발생
  • 수신 시스템의 연계 프로그램 오류: DB에 데이터 반영(삽입, 수정, 삭제)하거나 코드, 데이터 변환하는 과정에서 발생
  • 연계 데이터 자체 오류: 연계 데이터 값이 유효하지 않아 발생

인터페이스 정의서 주요 항목

인터페이스 ID, 최대 처리 횟수, 데이터 크기, 시스템 정보, 데이터 정보

Part.2 소프트웨어 개발

인터페이스 객체 송신 예외 발생 경우

  • 송신 데이터
  • 시스템 환경
  • 프로그램 자체 원인

인터페이스 오류 발생 처리 방법

인터페이스 오류 테이블을 활용하면 구체적이지 않은 오류 사항으로 인해 별도 분석이 필요한 경우가 발생한다!!

인터페이스 보안

  • 인터페이스 보안 취약점 분석을 위해 송수신 영역 구현 기술을 상세히 분석
  • 인터페이스는 시스템 간 통신을 통해 정보교환을 수행해 데이터 변조, 탈취 등의 보안 취약점이 존재한다.
  • 인터페이스 보안 취약점 분석을 위해서는 각 단계 별로 일어날 수 있는 시나리오를 가정하여 상세하게 분석한다.
  • 인터페이스 보안 기능은 통상 네트워크, 어플리케이션, 데이터베이스 영역에 적용한다.

ISO/IEC 품질 특성

  • 14598: 반복성, 공정성, 재현성 (주관성은 아님)
  • 9126: 기능성, 신뢰성, 이식성 (준수성은 아님)

IEEE 802.11 시리즈

  • 802.11a: 5GHz 대역에서 54Mbps 속도 제공
  • 802.11b: 2.4GHz 대역에서 11Mbps 속도 제공
  • 802.11d: 지역간 로밍용 확장 기술
  • 802.11ad: 빔포밍 기술 최대 7Gb/s 속도 제공
  • 802.11e: QoS
  • 802.11f: AP 간의 로밍 기능을 향상
  • 802.11g: 802.11b와 비슷 2.4GHz 대역 전파 사용
  • 802.11i: 무선랜의 보안 기능 향상

통합 테스트

빅뱅 테스트, 상향식 테스트, 하향식 테스트

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

  • 크랙 방지 기술
  • 정책 관리 기술
  • 암호화 기술

법칙 모음

  • Brooks 법칙: 인력이 추가되더라도 개발 생산성이 향상되지는 않고, 오히려 생산성 저하가 나타난다.

인터페이스 구현 검증 도구

  • xUnit: 자바, C++, .net 등 다양한 언어를 지원하는 단위테스트 프레임워크
  • STAF: 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
  • FitNesse: 웹 기반 테스트 케이스 설계 지원 프레임워크

애플리케이션 테스트

  • 디버깅은 개발 활동
  • 화이트박스 테스트와 블랙박스 테스트는 독립적으로 수행
  • 회귀 테스트는 자동화 테스트에 적합하다.
  • 타 시스템과 연동 테스트는 통합 테스트 단계에서 수행한다.

국제 프로세스 품질 표준

ISO/IEC 9001, 12207, 15504, CMMI

국제 제품 품질 표준

ISO/IEC 9126, 14598, 12119, 25000

Part.3 데이터베이스 구축 언어

SQL 구문

INSERT INTO .. VALUES ..
DELETE FROM .. WHERE ..
UPDATE .. SET .. WHERE ..

반정규화 테이블 병합

1:1, 1:N, 슈퍼/서브타입 관계만 병합 가능하고, M:N 테이블은 짝이 맞지 않기 때문에 통합이 쉽지 않다.

접근제어의 3요소

접근제어 정책, 접근제어 보안 모델, 접근제어 매커니즘

테이블 스페이스

테이블 스페이스는 논리적 구조의 가장 큰 단위로서 데이터베이스는 하나 이상의 테이블 스페이스로 구성된다.
테이블 스페이스 내에 여러 테이블과 인덱스를 저장할 수 있다.

데이터 모델의 종류

계층형 데이터 모델, 네트워크형 데이터 모델(망형), 관계형 데이터 모델, 스키마형 데이터 모델

DB 정규화

  • 1NF: 각 컬럼이 원자값을 갖는다
    (부분적 종속을 없앤다..)
  • 2NF: 모든 컬럼이 완전 함수적 종속을 만족한다.
  • 3NF: 이행적 함수 종속이 없는 것
  • BCNF: 모든 결정자가 후보키 집합에 속하는 것
  • 4NF: 다치 종속이 제거된 상태

분산 데이터베이스 투명성

  • 위치 투명성: 사용자나 응용 프로그램이 접근할 데이터의 물리적 위치를 알아야 할 필요가 없는 성질
  • 병행 투명성: 여러 사용자나 응용 프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을 수행하는 경우에도 결과에 이상이 발생하지 않는 성질
  • 분할 투명성: 사용자가 하나의 논리적인 릴레이션이 여러 단편으로 분할되어 각 단편의 사본이 여러 장소에 저장되어있음을 알 필요가 없는 성질
  • 장애 투명성: 트랜잭션, DBMS, 네트워크, 컴퓨터 장애가 있어도 트랜잭션을 정확히 처리하는 성질

데이터베이스 이중화에 대한 복제 방식

  • Eager-load: SELECT 연산 시 관계(Relation)이 있는 모든 테이블을 Join하여 load 한다.
  • Lazy-load: SELECT 연산 시 관계(Relation)이 있는 테이블을 무시한다.

CRUD Matrix 규칙

  • 모든 엔터티에 "C"가 존재해야한다.
  • 모든 엔터티에 "R"이 존재해야한다.
  • 모든 엔터티에 "CRUD" 존재해야한다.
  • 두 개 이상의 단위 프로세스가 하나의 엔터티 타입 생성이 불가하다.
  • 모든 단위 프로세스는 하나 이상 엔터티 타입에 표기한다.

Part.4 프로그래밍 언어

웹 애플리케이션 서버

tomcat, weblogic, Jeus
AWS S3은 파일 서버

JAVA

byte - 1byte
short - 2byte
int - 4byte
long - 8byte

프로그래밍 언어의 분류

실행하는 방식에 따른 분류

  • 명령형 언어: 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 프로그래밍 방식으로 절차형 언어라고도 불린다.
    FORTRAN, COBOL, PASCAL, C
  • 함수형 언어: 수학적 수식과 같은 함수들로 프로그램을 구성하여 호출하는 방식
    LISP
  • 논리형 언어: 규칙에 대한 활성화 조건이 만족되면 연관된 규칙이 실행되는 구조
    PROLOG
  • 객체지향 언어: 객체 간의 메시지 통신을 이용하여 프로그래밍 하는 방식
    JAVA C++

구현 기법에 따른 분류

  • 컴파일 언어: FORTRAN, C++, C, PASCAL
  • 인터프리터 언어: BASIC, PROLOG, LISP, SNOBOL, PYTHON

고급 언어로 작성된 프로그램의 번역 과정

원시 프로그램 -> 번역 프로그램(컴파일러) -> 목적 프로그램(기계어) -> 로더 -> 실행 가능한 프로그램

원시 코드를 목적 프로그램으로 만드는 것이 컴파일러고, 기계어로 번역하는 것이 디코더

객체지향 프로그래밍 구성 요소

  1. 객체
  • 개체, 속성, 메소드로 구성됨.
  1. 클래스
  2. 메시지 : 메시지는 객체 사이의 인터페이스 수단으로, 메시지를 주고받음으로써 객체 간 상호작용을 한다.

배치 프로그램

배치 프로그램: 사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 것

배치 프로그램의 필수 요소

  • 대용량 데이터
  • 자동화: 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 한다.
  • 견고함: 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 발생하지 않아야 한다.
  • 안정성: 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야한다. 추적
  • 성능: 주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 어플리케이션을 방해하지 말아야한다.

응집도와 결합도

모듈 내부: 응집도
모듈 외부: 결합도
응집도와 결합도

교착상태 해결방안

  • 예방: 상호배제를 제외한 나머지 교착상태 발생조건을 위배(부정)
  • 회피: 발생 조건을 없애기보다는 발생하지 않도록 알고리즘을 적용
  • 발견
  • 회복: 아예 막지 않고, 교착 상태 발생 이후에 문제를 해결하는 방법

운영체제의 유형

  • 일괄처리 시스템: 모든 작업을 한꺼번에 처리하고 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정하는 것이 불가
  • 다중 프로그래밍 시스템: 하나의 CPU로 여러 작업을 동시에 실행
  • 실시간 처리 시스템
  • 분산 처리 시스템
  • 클라이언트 서버 시스템
  • P2P 시스템: 클라이언트 서버 시스템 단점 해결위해 등장

CPU 스케줄링

  • FCFS: 비선점 스케줄링, 프로세스가 준비 큐에 도착한 순서대로 CPU 할당
  • RR: 선점 방식, TIME QUANTUM을 두어 시간 내에 처리하지 못하면 대기 중인 다음 프로세스로
  • SJF: 준비 큐에서 대기하고 있는 프로세스 중 수행 시간이 가장 짧다고 판단되는 프로세스를 먼저 수행하는 비선점 스케줄링
  • SRT(Shortest Remaining Time): SJF를 선점형으로
  • HRN: SJF 단점 보완, 비선점

OSI 7 LAYER

  • 물리 계층: 실제 장비들을 연결
  • 데이터 링크 계층: 직접 연결된 노드 간 데이터의 물리적인 전송을 담당하고, 오류 제어, 흐름 제어, 회선 제어 등을 수행
  • 네트워크 계층: 경로 선택, 통신 트래픽 흐름 제어, 오류 제어
  • 전송 계층: 종단 간 통신 지원, 에러 복구와 흐름 제어
  • 세션 계층: 전송 방향 결정(전이중, 반이중, 단방향), 응용 프로그램 간의 대화 구성
  • 표현 계층: 데이터를 통신에 적당한 형태로 변환
  • 응용 계층: 서비스 제공

Part.5 정보시스템 구축 관리

COCOMO

모델

  • Basic COCOMO: 소프트웨어의 크기와 개발 유형만을 이용해 비용 산정
  • Intermediate COCOMO: 베이직의 공식을 토대로 사용하나, 4가지 특성의 15가지 요인에 의해 비용을 산정
  • Detailed COCOMO: Intermediate를 보완하여 만들어진 방법으로 자세하고 정확히 노력을 산출해 비용을 산정.

유형

Organic, Semi-Detached, Embedded

NoSQL

  • key-value store: key를 search해서 value를 찾는 것. 특정 데이터에 대한 unique key나 pointer가 있다면 hash table을 사용하지 않는다.
  • Column Family Data store: 여러 서버에 분산된 수많은 데이터를 저장, 처리하기 위해 만들어짐. key는 여러개의 컬럼을 가리키고 있다.
    EX. Cassandra, HBase
  • Document Store: Value의 데이터 타입이 Document라는 타입을 사용하는 DB.
    `EX. MongoDB, CouchDB
  • Graph Store: 데이터에 대한 접근 기능을 제공?, 데이터에 대한 RESTful 인터페이스를 제공
    EX. Neo4j, AllegroGraph, InfoGrid

데이터 표준화 절차


출처: 데이터 전문가 지식 포털 dbguide.net

보안 공격 유형

  • XSS: XSS는 게시판이나 웹 메일 등에 자바 스크립트와 같은 스크립트 코드를 삽입 해 개발자가 고려하지 않은 기능이 작동하게 하는 치명적일 수 있는 공격이다. 또한 대부분의 웹 해킹 공격 기법과는 다르게 클라이언트 즉, 사용자를 대상으로 한 공격이다.
  • CSRF(cross-site request forgery): 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 기법

서버 접근 통제

  • MAC (Mandatory Access Control, 강제적 접근 통제): 사용자들은 자원에 대한 권한을 관리자로 부터 부여받는다. 그리고 오직 관리자만이 객체과 자원들에 대한 권한을 할당할 수 있다. 자원에 대한 접근은 사용자에게 보안등급이 주어진 동안에 대상의 보안레벨에 기반한다. 관리자만이 객체의 보안레벨 또는 사용자 보안등급을 수정할 수 있다.
  • DAC (Discretionary Access Control, 임의적 접근 통제): 자원에 대한 접근을 사용자/그룹의 신분에 기반한다. 사용자는 자원과 관련된 access control list가 수정됨으로써 자원에 대한 권한을 부여받는다.
  • RBAC (Role Based Access Control, 역할기반 접근 통제): 자원에 대한 접근은 사용자에게 할당된 역할에 기반한다. 관리자는 사용에게 특정한 권리와 권한이 정의된 역할을 할당한다. 사용자들의 사용자와 할당된 역할의 연관성으로 인하여 자원들에 접근할 수 있고 특정한 작업들을 수행할 수 있다.

요구사항 프로세스

  • 요구사항 추출: 소프트웨어가 해결해야 할 문제를 이해하는 단계로 주요 기법으로는 인터뷰, 설문조사가 있다.
  • 요구사항 분석: 요구사항을 분류하고 개념 모델링을 하며 기술 구조 및 요구사항을 할당한다.
  • 요구사항 명세: 시스템 정의, 시스템 요구사항, 소프트웨어 요구사항을 작성하는 단계로 정형화 기법을 사용
  • 요구사항 검증: 소프트웨어 요구사항이 사용자들의 요구사항에 맞게 정확하고, 완벽하게, 연계성있게 명세화 되었는지 검증하는 단계
    리뷰, 워크스루

소프트웨어 개발 생명주기 단계별 보안 활동

  1. 요구사항 분석 단계: 어떤 정보들이 시스템화되어 관리되어야 하는지, 이 때 이 정보들의 보안 등급은 어떻게 해야 되는지에 대한 점검 작업 수행
  2. 설계 단계: 분석 단계에서 보안 요구사항 분석서의 요구사항을 반영, 취약점 분석(형식 증명, 설계 검토)
  3. 테스트 단계: 위협 모델링을 통해 도출된 위협들이 구현 단계에서 애플리케이션 개발 시 제거되었는지를 동적 분석 도구를 이용하거나 모의 침투 테스트를 통해 검증 수행
  4. 유지보수 단계: 개발 이후 발생할 수 있는 보안 사고에 대한 관리 및 사고 대응, 패치 관리 병행

테일러링 프로세스

프로젝트 특징 정의 -> 표준 프로세스 선정 및 검증 -> 상위 수준의 커스터마이징 -> 세부 수준의 커스터마이징 -> 문서화

정보보안 원칙

  • 기밀성: 오직 인가된 사람/프로세스/시스템만이 알 필요성에 근거하여 시스템에 접근해야한다는 원칙
  • 무결성: 정보는 고의적인, 비인가된, 우연한 변경으로부터 보호되어야 한다는 원칙
  • 가용성: 정보는 사용자가 필요로 하는 시점에 접근 가능해야한다는 원칙

소프트웨어 품질 목표

  • 정확성(Correctness): 사용자의 요구 기능을 충족시키는 정도
  • 신뢰성(Reliability): 정확하고 일관된 결과를 얻기 위해 요구된 기능을 오류 없이 수행하는 정도
  • 효율성(Efficiency): 요구되는 기능을 수행하기 위해 필요한 자원의 소요 정도, 자원의 낭비정도
  • 무결성(Integrity): 허가받지 않은 사용자가 데이터 접근을 통해 변경을 시도했을 때 보호할 수 있는지
  • 사용용이성(Usability): 사용에 필요한 노력을 최소화하고 쉽게 사용할 수 있는 정도, 적절한 사용자 인터페이스와 문서를 가지고 있는정도
  • 유지보수성(Maintainability): 사용자의 기능 변경의 필요성을 만족하기 위하여 소프트웨어를 진화하는 것이 가능한 정도
  • 유연성(Flexibility): 소프트웨어를 얼마만큼 쉽게 수정할 수 있는가 하는 정도
  • 시험역량(Testability): 의도된 기능을 수행하도록 보장하기 위해 프로그램을 시험 할 수 있는 정도
  • 이식성(Portability): 다양한 하드웨어 환경에서도 운용 가능하도록 쉽게 수정 될 수 있는 정도
  • 재사용성(Reusability): 전체나 일부 소프트웨어를 다른 목적으로 사용 할 수 있는가 하는 정도
  • 상호운용성(Interoperability): 다른 소프트웨어와 정보를 교환할수 있는 정도

데이터 표준 관리 대상

(표준) 코드, 용어, 단어

결합도와 응집도

결합도는 낮을수록, 응집도는 높을수록

결합도의 종류

자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도
자스제외공내: 자식제외공장내꺼

  • 자료 결합도(Data Coupling): 모듈 간의 인터페이스 전달되는 파라미터를 통해서만 상호작용이 일어나는 경우
  • 스탬프 결합도: 모듈간의 인터페이스로 배열이나 오브젝트, 스트럭쳐가 전달되는 경우
    배열, 오브젝트, 스트럭쳐 같은 것을 도장으로 기억하자
  • 제어 결합도: 어떻게 처리를 해야 한다는 요소(Flag)가 전달
  • 외부 결합도: 어떤 모듈에서 반환한 값을 다른 모듈에서 참조
  • 공통 결합도: 전역변수 참조
  • 내용 결합도: 다른 모듈 내부에 있는 것을 참조
    결합도가 가장 높은 것이니, 제일 세세한거 까지 참조한다고 암기

응집도의 종류

우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도
우논시절교순기: 우리 놀던 시절 통(교환) 순탄하진 않았다

  • 기능적 응집도: 모듈 내부의 모든 기능이 단일 목적으로
  • 순차적 응집도: 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용
    다른 활동이 진행되어야 출력값을 이용할 수 있으니 순차로 생각
  • 교환적 응집도: 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동이 모여있을 경우
    주제 하나로 사람들이 모여서 정보를 교환한다고 생각
  • 절차적 응집도: 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
    한 모듈이 다수의 기능 -> 절차가 필요하다! 순차적과 헷갈리면 안됨, 절차는 내부!
  • 시간적 응집도: 특정 시간에 처리
  • 논리적 응집도: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
    유사한 성격, 한 모듈 (논리가 통한다)
  • 우연적 응집도: 모듈 내부의 각 구성요소들이 연관이 없을 경우
    그냥 우연히 만났다..