UML
- 시스템 분석, 설계, 구현 등 시스템 개발과정에서 고객 또는 개발자 상호 간의 의사소통이 이루어지도록 표준화한 대표적인 객체지향 모델리 언어
- UML의 특징 : (우마루 가구는 명문이다) 가시화, 구축, 명세화, 문서화
- UML의 구성요소 3가지 : 사물,관계,다이어그램
- 사물 : 다이어그램 안에서 관계가 형성될 수 있는 대상들
- 관계 : 사물과 사물 사이의 연관성을 표현
- 다이어그램 : 사물과 관계를 도형으로 표현
- 사물의 종류 4가지 : 구조사물, 행동사물, 그룹사물, 주해사물
- 구조사물 : UML의 사물의 종류 중 시스템의 개념적, 물리적 요소를 표현하는 것
- 행동사물 : UML의 사물의 종류 중 시간과 공간에 따른 요소들의 행위를 표현
- 그룹사물 : UML의 사물의 종류 중 요소들을 그룹으로 묶어서 표현하는 것
- 주해 사물 : UML의 사물의 종류 중 부가적인 설명이나 제약조건 등을 표현하는 것
- 관계의 종류 6가지 : 연관,집합,포함,일반화,의존,실체화
- 연관 관계 : 2개이상의 사물이 서로 관련되어 있는 관계, 사물 사이를 실선으로 연결하여 표현(사람, 집)
- 집합 관계 : 하나의 사물이 다른 사물에 포함되어 있는 관계, 부분에서 전체로 속이 빈 마름모 실선을 이용(컴퓨터, 프린터)
- 포함 관계 : 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계, 부분에서 전체로 속이 꽉찬 마름모 실선 이용(문, 키)
- 일반화 관계 : 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계(커피 -> 아메리카노, 에스프레소)
- 의존 관계 : 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계(등급, 할인율)
- 실체화 관계 : 사물이 할수 있거나 해야하는 기능으로, 서로를 그룹화 할 수 있는 관계(비행기, 새)
- 다이어그램의 종류 : 크게 구조다이어그램, 행위 다이어그램
- 구조다이어그램 : 클래스, 객체, 컴포넌트, 배치, 복합체 구조, 패키지
- 클래스 다이어 그램 : 클래스와 클래스가 가지는 속성. 클래스 사이의 관계를 표현하는것 . 정적모델링
- 객체 다이어 그램 : 클래스에 속한 사물들. 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현, 럼바우 객체지향 분석기법에서 객체 모델링에 활용
- 컴포넌트 다이어그램 : 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현
- 배치 다이어그램 : 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
- 복합체 구조 다이어그램 : 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
- 패키지 다이어그램 : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현
- 행위 다이어그램 : 유스케이스, 시퀀스 ,커뮤니케이션, 상태, 활동, 상호작용, 타이밍
- 유스케이스 다이어그램 : 사용자의 요구를 분석하는 것으로, 기능 모델링 작업에 사용. 사용자와 사용사례로 구성. 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현
- 시퀀스 다이어그램 : 상호작용하는 시스템이나 객체들이 주고받는 메시지를 표현
- 커뮤니케이션 다이어그램 : 동작에 참여하는 객체들이 주고받는 메시지와 객체들 간의 연관 관계를 표현
- 상태 다이어그램 : 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호작용에 따라 상태가 어떻게 변화하는지 표현, 럼바우의 동적 모델링
- 활동 다이어 그램 : 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현
- 상호작용 다이어 그램 : 상호작용 다이어그램 간의 제어 흐름을 표현
- 타이밍 다이어그램 : 객체상태변화와 시간제약을 명시적으로 표현
디자인패턴
- 모듈간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
- GOF 디자인 패턴의 종류 3가지 : 생성,구조,행위 패턴
- 생성패턴 : 클래스나 객체의 생성과 참조 과정을 정의하는 패턴(객채생성)
- 추상 팩토리 : 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관 의존하는 객체들의 그룹으로 생성하여 추상적으로 표현하는 패턴(추상화, 다양한 연관객체)
- 빌더 : 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성하는 패턴(복잡한 객체, 단계별 생성, 다양한 객체)
- 팩토리 메소드 : 객체생성을 서브클래스에서 처리하도록 분리하여 캡슐화한 패턴, 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브클래스가 담당(캡슐화, 유연성, 중복 제거)
- 프로토타입 : 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴(복제 객체 생성)
- 싱글톤 : 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수없음. 인스턴스가 하나 뿐임을 보장하는 패턴(인스턴스,하나만 생성)
- 구조패턴 : 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴(객체 구조)
- 어댑터 : 호환성이 없는 클래스들을 조합하여 더 큰구조로 만드는 패턴(호환, 인터페이스)
- 브리지 : 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴
- 컴포지트: 여러객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할때 사용하는 패턴
- 데코레이터 : 객체간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
- 퍼싸드 : 복잡한 서브클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴(복잡, 단순인터페이스)
- 플라이웨이트 : 인스턴스가 필요할 때마다 매번 생성하는 것이 아니고 가능한 공유해서 사용함으로써 메모리를 절약하는 패턴(객체공유, 생성비용절감)
- 프록시 : 객체에 대한 접근을 제어하거나, 객체의 생성을 최적화 하는 패턴(접근제어, 생성최적화)
행위 패턴 : 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴- 책임 연쇄 : 요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴(요청처리 객체 연쇄, 동적 결정)
- 커맨드 : 요청을 객체의 형태로 캡슐화 하여 재이용하거나 취소할수있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴(요청 캡슐화 , 이용가능)
- 인터프리터 : 언어에 문법 표현을 정의하는 패턴(문법규칙, 언어해석)
- 반복자 : 자료구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴(내부구조 은닉, 순서 접근)
- 중재자 : 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴(객체간 통신, 미디에이터 중계)
- 메멘토 : 특정 시점에서의 객체 내부 상태를 객체화 함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴(상태 저장, 복원)
- 옵저버 : 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴, 일대다의 의존성을 정의(의존관계, 알림)
- 상태 : 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴(상태클래스, 행위 캡슐화)
- 전략 : 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴(알고리즘, 캡슐화)
- 템플릿 매소드 : 상위클래스에서 골격을 정의하고, 하위 클래스에서 세부처리를 구체화 하는 구조의 패턴(알고리즘 구조, 재정의)
- 방문자 : 실제 로직을 가지고 있는 객체가 로직을 적용할 객체를 방문하면서 실행하는 패턴
- 생성패턴 : 클래스나 객체의 생성과 참조 과정을 정의하는 패턴(객채생성)
결합도 응집도
- 결합도 : 모듈 간의 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계
- 결합도의 종류: 내공외제스자
- 내용 결합도 : 한 모듈이 다른 모듈 내부기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도
- 공통 결합도 : 공유되는 공통데이터 영역을 여러 모듈이 사용할 때의 결합도, 파라미터가 아닌 모듈 밖에 선언된 전역변수를 사용하여 전역변수를 갱신하는 결합도
- 외부 결합도 : 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도
- 제어 결합도 : 어던 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호나 제어요소를 전달하는 겨합도
- 스탬프 결합도 : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도
- 자료 결합도 : 모듈 간의 인터페이스가 자료요소로만 구성될 때의 결합도
- 응집도 : 모듈의 내부요소들이 서로 관련되어 있는 정도
- 응집도의 종류 : 우논시절교순기
- 기능적 응집도 : 모듈 내부의 모든 기능요소들이 단일 문제와 연관되어 수행될 경우의 응집도
- 순차적 응집도 : 모듈 내 하나의 활동으로부터 나온 출력데이터를 그 다음활동의 입력데이터로사용할 경우의 응집도
- 교환적 응집도 : 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
- 절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
- 시간적 응집도 : 특정 시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
- 논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리요소들로 하나의 모듈이 형성되는 경우의 응집도
- 우연적 응집도 : 모듈 내부의 각 요소들이 서로 관련없는 요소로만구성된 경우의 응집도
테스트 커버리지
- 주어진 테스트 케이스에 의해 수행되는 소프트웨어 테스트의 범위를 측정하는 기준
- 테스트의 정확성과 신뢰도를 향상시키는 역할
- 테스트 커버리지 기법 3가지
- 기능 기반 커버리지 : 테스트를 실행할 애플리케이션의 모든 기능을 두고 100% 달성을 목표한 뒤 실제 테스트가 수행된 기능의 수를 측정하는 방법
- 라인 커버리지 : 애플리케이션의 전체 소스코드라인수를 이용하여 시나리오가 수행한 소스 코드의 라인수를 측정하는 방법
- 코드 커버리지 : 소스 코드의 구문과 조건 등 구조코드가 얼마나 테스트 되었는지 측정
- 테스트 커버리지 유형
- 구문 커버리지 : 프로그램 내의 모든 명령문을 적어도 한번 수행
- 결정 커버리지 : 프로그램 내에서 전체 결정문이 적어도 한번은 참과 거짓결과를 수행
- 조건 커버리지 : 결졍 명령문 내에서 각 조건이 적어도 한번참과 거짓의 결과과 되도록 수행(결정보다 좀더 구체적)
- 조건/결정커버리지 : 조건커버리지와 결정 커버리지의 최소한의 조합으로 전체 조건식도 참과 거짓이 나와야 하며 개별 조건식도 참과 거짓이 나와야 한다
- 변경 조건/결정 커버리지 : 개별 조건식이 다른 조건식에 영향 받도록 구성해 전체 조건식에 독립적으로 영향을 주도록 변형시킨 커버리지
- 다중 조건 커버리지 : 결정조건내에서 모든 개발 조건식의 모든 가능성 있는 조합을 보장하는 커버리지
OSI 7 계층
- 다른 시스템 간의 원활한 통신을 위해 ISO에서 제안한 통신 규약
- 물리 계층 : 전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의
- 데이터링크계층 : 두 개의 인접한 개방시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있또록 시스템 간 연결 설정과 유지 및 종료를 담당하는 계층
- 네트워크 계층 : 개방 시스템들간의 네트워크 연결을 관리하는 기능과 데이터의 교환 및 중계기능을 하는 계층
- 전송 계층 : 논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 시스템 간에 투명한 데이터 전송을 가능하게 하는 계층
- 세션 계층 : 송 수신 측 간의 관련성을 유지하고 대화제어를 담당하는 계층
- 표현 계층 : 응용계층으로부터 받은 데이터를 세션 계층에 보내기 전에 통신에 적당한 형태로 변환하고, 세션 계층에서 받은 데이터는 응용계층에 맞게 변환하는 계층
- 응용 계층 : 사용자가 OSI 환경에 접근할 수 있도록 서비스를 제공하는 계층
트랜잭션의 4가지 특성
- 원자성(Automicity) : 트랜잭션에서 정의된 연산들은 모두 성공적으로 완료(COMMIT)되던지 아니면 전혀 반영되지 않도록 복구(Rollback)되어야 하는 트랜잭션의 특성
- 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환하는 것
- 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어 들 수 없음을 의미하는 것
- 영속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함
반정규화
- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
- 테이블 통합 : 두개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우, 항상 두개의 테이블을 이용하여 조회를 수행하는 경우 수행해야 하는 반 정규화
- 수평 분할 : 레코드를 기준으로 테이블을 분할하는 것, 레코드별로 사용빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할
- 수직 분할 : 하나의 테이블에 속성이 너무 많은 경우 속성을 기준으로 테이블을 분할
- 중복 테이블의 추가 : 여러 테이블에서 데이터를 추출해서 사용해야 할 경우, 다른 서버에 저장된 테이블을 이용해야 하는 경우 해야하는 반정규화 기법
- 중복 테이블의 추가 방법 3가지 : 집계테이블의 추가, 진행 테이블의 추가, 특정 부분만을 포함하는 테이블추가
- 집계 테이블 추가 : 집계데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용
- 진행 테이블 추가 : 이력 관리 등의 목적으로 추가하는 테이블
- 특정 부분만을 포함하는 테이블 추가 : 데이터가 많은 테이블의 특정부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성
- 중복 테이블의 추가 방법 3가지 : 집계테이블의 추가, 진행 테이블의 추가, 특정 부분만을 포함하는 테이블추가
관계대수,관계해석
- 관계대수 : 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
- 순수 관계 연산자의 종류 4가지 : select, project, join, divison
- 일반 집합 연사자의 종류 4가지 : 합집합, 교집합, 차집합, 교차곱
- 관계해석 : 원하는 데이터가 무엇인지만 정의하는 이른바 비절차적 특성
- 종류 : 튜플관계해석, 도메인 관계해석
- 관계 대수로 표현한 식은 관계해석으로 표현할 수 있음
이상
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상
- 삽입 이상 : 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상 : 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄삭제가 발생하는 현상
- 갱신 이상 : 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상
소프트웨어 아키텍처(Software Architecture)
- 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.
- 모듈화 : 소프트웨어의 성능 향상, 시스템의 수정 및 재사용, 유지관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 나누는 것
- 추상화 : 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는 것
- 과정 추상화 : 자세한 수행 과정을 정의하지 않고 전반적인 흐름만 파악할 수 있게 설계
- 데이터 추상화 : 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
- 제어 추상화 : 이벤트 발생의 절차나 방법을 정의하지 않고, 대표할 수 있는 표현으로 대체하는 방법
- 단계적 분해 : 상위의 중요개념으로부터 하위의 개념으로 구체화시키는 분할 기법
- 정보 은닉 : 모듈 내부에 포함된 절차와 자료들이 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법
- 상위 설계 : 아키텍처 설계, 예비 설계
- 하위 설계 : 모듈 설계, 상세 설계
- 소프트웨어 아키텍처의 품질 속성 :시스템 측면, 비즈니스 측면, 아키텍처 측면
- 설계 과정 : 설계목표설정 -> 시스템 타입 결정 -> 아키텍처 패턴 적용 -> 서비스시스템 구체화 -> 검토
- 협약에 의한 설계 : 컴포넌트를 설계할 때 클래스에 대한 여러가정을 공유할 수 있도록 명세화 한것
- 선행조건 : 오퍼레이션이 호출되기전에 참이되어야 할 조건
- 결과조건 : 오퍼레이션이 수행된 후 만족되어야 할 조건
- 불변조건: 실행되는 동안 항상 만족되어야 할 조건
- 아키택처 페턴 : 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결방식 또는 예제
- 레이어 패턴 : 시스템을 계층으로 구분
- 클라이언트-서버 패턴 : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성
- 파이프-필터 패턴 : 데이터 스트림절차의 각 단계를 필터로 캡슐화 하여 파이프를 통해 전송하는 패턴
- mvc패턴 : 서브시스템을 모델,뷰,컨트롤러로 구조화하는 패턴
- 마스터-슬레이브 패턴 : 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식
객체지향프로그래밍 4대요소
- 캡슐화 : 객체의 속성과 행위를 하나의 클래스라는 캡슐에 묶는 것
- 다형성 : 하나의 객체가 여러가지 형태를 가질 수 있는 것
- 상속 : 상위클래스의 특성을 하위클래스에서 물려받는 것
- 추상화 : 구체적인것 x, 필요성에 의한 특성만을 가지고 구성
객체지향 설계 원칙
- 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 원칙
- 종류
- 단일책임원칙(SRP) : 객체는 단 하나의 책임만 가져야 한다
- 계방-폐쇄원칙(OCP) : 기존의 코드를 변경X, 기능을 추가 할 수 있도록 설계
- 리스코프치환원칙(LSP) : 자식클래스는 최소한 부모 클래스의 기능은 수행해야 함
- 인터페이스분리원칙(ISP) : 자신이 사용하지 않는 인터페이스와 의존관계를 맺거나 영향을 받지 X
- 의존역전원칙(DIP) : 추상성이 높은 클래스와 의존관계를 맺어야 함
화이트박스테스트, 블랙박스 테스트
- 화이트박스테스트 : 원시코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 기법
- 종류
- 기초경로검사 : 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법
- 제어구조검사 : 조건검사, 루프검사, 데이터흐름검사를 하는 테스트 기법
- 조건 검사 : 프로그램 모듈내에 있는 논리적 조건을 테스트하는 테스트케이스 설계기법
- 루프 검사 : 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 케이스 설계기법
- 데이터 흐름 검사 : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
- 화이트 박스 테스트의 검증기준 4가지
- 문장검증기준 : 소스코드의 모든 구문이 한번이상 수행되도록 테스트케이스 설계
- 분기검증기준 : 소스코드의 모든 조건문에 대해 조건식의 결과가 true 인경우와 false인 경우가 한번이상 수행되도록 테스트케이스 설계
- 조건검증기준 : 조건문에 포함된 개별조건식의 결과가 true인 경우와 false인경우가 한번이상 수행되도록 테스트케이스 설계
- 분기/조건기준 : 분기검증기준과 조건기준을 모두 만족하는 설계
- 블랙박스 테스트 : 각 기능이 완전히 작동되는 것을 입증하는 테스트
- 종류
- 동치분할검사 : 프로그램의 입력조건에 타당한 입력자료와 타당하지 않은 입력자료의 개수를 균등하게 하여 테스트케이스를 정하고, 입력 자료에 맞는 결과가 출력되는지 확인하는 기법
- 경계값분석 : 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력조건의 경계값을 테스트케이스로 선정하여 검사하는 기법
- 원인-결과 그래프검사 : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
- 오류 예측 검사 : 과거의 경험이나 확인자의 감각으로 테스트 하는 기법
- 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는
파레토, 살충제 패러독스,오류-부재의 궤변
- 파레토 법칙 : 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다
- 살충제 패러독스 : 애플리케이션 테스트에서는 동일한 테스트케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상
- 오류-부재의궤변 : 소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할 수 없다.
나선형 모형(Sprial Model)
- 보헴이 제안한 것으로 폭포수 모형과 프로토타입 모형의 장점에 위험분석기능을 추가한 모형
- 소프트웨어를 개바랗면서 발생할 수 있는 위험을 관리하고 최소화 하는 것을 목적
- 개발순서 : 계획및정의 -> 위험분석 -> 개발 -> 고객 평가
비용 산정기법-LOC, 비용 산정기법-COCOMO
- 소프트웨어 각 기능의 원시 코드 라인수 의 비관치, 낙관치 ,기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
- 비관치 : 가장 많이 측정된 코드 라인 수
- 낙관치 : 가장 적게 측정된 코드 라인 수
- 기대치 : 측정된 모든 코드 라인수의 평균
- (a+4m+b)/6 ( a: 낙관치, b: 비관치, m :기대치(중간치))
- 산정 공식
- 노력(인월)=개발기간(월) * 투입인원(인) = LOC/1인당 월평균 생산 코드라인수 ->인*기노 , 노엘/월,
- 개발비용 = 개발기간(월) * 투입인원(인) * 단위비용(1인당 월평균 인건비)
- 개발기간=예측된 LOC/(투입인원 * 1인당 월평균 생산loc)
- 생산성 = 개발된 loc(투입인원*개발기간)
- COCOMO의 소프트웨어 개발 모형
- 조직형(Organic Mode) : 5만라인 이하
- 반분리형(Semi-Detached Mode) : 30만 라인이하
- 내장형(Embedded Mdoe) : 30만라인 이상
RAID
- RAID0 단계는 영은 중(중국)복 없는 스트라이핑 세트
- RAID1 단계는 1본은 미(미국)러링된 세트로 구성
- RAID2 단계는 ECC를 기록하는 디스크 이용
- RAID3 단계는 삼바. 삼은 바이트 단위로 쪼개져서 세트 구성
- RAID4 단계는 불사조. 사는 블록(불)단위로 쪼개져서 세트 구성
- RAID 5단계는 오모. 오는 모(모)든 디스크에 저장. 패리티도(모)모든 디스크 저장
- RAID 6단계는 육사. 육은 모든 RAID 단계중 유일하게 최소4개(사)이상의 디스크가필요
DRM(디지털 저작권 관리)
- 저작권자가 배포한 디지털 콘텐츠가 저각권자가 의도한 용도로만 사용되도록 디지털 콘텐츠 관리 및 보호기술
- 워터마크(불법복제방지) , 핑거프린팅(불법유통방지)
보안관련 용어
- 버그 바운티(Bug bounty) : 버그(Bug)를 찾아내면 포상(Bounty)을 주는 제도
- 이메일 하이재킹 : 최근 이메일을 통해 유통되는 악성코드 '캭봇'이주로 사용하는 방법
- APT공격 : 지능적이고 지속적인 공격
- 웨일링 공격 : 유명인사 등을 사칭하여 다른사람 공격하는 기법
- 스피어 피싱 : 신롸하는 사람으로 위장하여 해킹 또는 피해를 입힘
- 피싱 : 사용자를 속여 자료를 탈취하거나 피해를 입힘
가상기억 장치 구현 기법
- 가상기억장치 : 보조기억장치의 일부를 주기억장치처럼 사용하는 것
- 페이징 기법 : 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 주기억장치의 영역에 적재시켜 실행
- 세그맨테이션 기법 : 프로그램을 다양한 크기의 논리적인 단위로 나눈 후, 주기억장치에 적재시켜 실행
프로세스 교착상태 발생조건, 해결방법
- 상호배제 : 한번에 한개의 프로세스만이 공유자원을 사용
- 점유와 대기 : 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
- 비선점 : 강제로 빼앗을 수 없음
- 환형대기 : 앞이나 뒤에있는 프로세스의 자원을 요구
- 해결방법
- 예방기법 : 4가지 조건중 어느하나제거
- 회피기법 : 교착상태 발생하면 적절히 피해나감(은행원 알고리즘)
- 발견 기법 : 교착상태에 있는 프로세스와 자원을 발견
- 회복 기법 : 교착 상태를 일으킨 프로세스 종료
페이지 교체 알고리즘
- 페이지 부재가 발생하면 , 가상기억장치에서 필요한 페이지를 찾아 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용중이라면 어떤 페이지프레임을 선택하여 교체해야 할 것인지를 결정
- OPT : 최적교체, 앞으로가장오랫동안 사용하지 않을 페이지를 교체
- FIFO : 가장먼저들어와서 가장오래 있었던 페이지 교체
- LFU(Least Frequently Used) : 사용빈도가 가장적은 페이지를 교체
- LUR(Least Used Recently) : 최근에 사용하지 않은 페이지를 교체
- SCR(Second Chance Replacement, 2차기회교체) : fifo의 기법의 단점을 보완하는데 사용
스케줄링
- 비선점 스케줄링 : 이미 할당된 cpu를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
- FCFS : 준비상태큐에 도착한 순서에 따라 차례로 CPU를 할당
- SJF : 실행시간이 가장 짧은 프로세스에 먼저 CPU를 할당
- HRN : 대기시간과 서비스(실행)시간을 이용하는 기법 -> SJF기법 보완
- 우선순위 계산식 = 대기시간 + 서비스시간 / 서비스 시간
- 선점 스케줄링 : 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
'정보처리기사 > 실기' 카테고리의 다른 글
정보처리기사 실기 - 프로그래밍 문제 햇갈리는 문법 (0) | 2023.04.22 |
---|---|
정보처리기사 실기 용어정리(8,9,10,11) (0) | 2023.04.21 |
정보처리기사 실기 용어 정리(2,3,4,7) (0) | 2023.04.21 |
정보처리기사 - 통합구현 (0) | 2023.04.19 |
정보처리기사 정리본(7,9,11) (0) | 2023.04.19 |