903. UML의 상호작용 다이어그램
- 구조적 다이어그램 (Structural)
- class
- 시스템 내 클래스들의 정적 구조를 표현
- 클래스는 객체들의 집합 : 속성 (Attribute), 동작(Behavior)으로 구성
- object
- 클래스의 여러 object 인스턴스를 나타내는 대신 실제 클래스 사용
- 관계 있는 모든 인스턴스 표현
- class
- 행위 다이어그램 (Behavioral)
- use case
- 사용자의 입장에서 본 시스템의 행동 표현
- 시스템의 기능적인 요구 정의
- state
- 클래스가 가질 수 있는 모든 가능한 상태와 상태 간의 전이 표현
- 진입조건, 탈출조건, 상태 전이에 필요한 사건 등 자세한 사항이 기술 설계 단계에서 클래스 객체의 동적인 행동 방식을 표현하는데 사용
- activity
- 작업 또는 행위의 순서적 흐름을 표시
- 순서도나 병렬적인 처리를 필요로 하는 행위를 표현할 때 사용
- use case
- 상호작용 다이어그램 (Interaction)
- sequence
- 객체와 객체 간 상호작용을 메시지 흐름으로 표시
- 오브젝트 사이에 메시지를 보내는 시간 또는 순서 표현 위해 사용
- communication
- 상호작용에 참여하는 객체 / 컴포넌트 간의 관계를 명시적으로 표현
- sequence
905. XP의 12가지 실천사항
- Planning game
- 사용자 스토리를 이용해서 다음 릴리즈의 범위를 빠르게 결정
- 비즈니스 우선순위와 기술적 평가 결합
- Small / Short releases
- 필요한 기능들만 갖춘 간단한 시스템을 빠르게 릴리즈
- 고객이 소프트웨어가 어떻게 돌아가는지 아주 짧은 약 2주 사이클로 볼 수 있도록 자주 새로운 버전 배포 유지
- Metaphor
- 공통의 name system 의사소통 및 공통 개념 공유
- 전체 개발 프로세스에 걸쳐서 시스템의 동작에 대한 전체 그림을 표현하는 것
- 이해하기 쉬운 스토리로 이루어짐
- Simple design
- 당장 필요하지 않은 디자인 배제
- 항상 가능한 가장 간결한 디자인 상태 유지
- TDD
- 개발자 먼저 단위 테스트, 실제 코드를 작성하기 전에 먼저 작성함으로써 자신이 무엇을 해야하는지 스스로 깨우침
- 고객은 기능 테스트를 작성하여 요구사항이 모두 반영되었는지를 확인
- Refactioring
- 프로그램 기능은 변경 없이 중복/복잡성 제거, 커뮤니케이션 향상, 단순화, 유연성 추가 등을 통해 시스템 재구성
- Pair programming
- 두 사람이 함께 프로그램 Driver / Partner
- 모든 프로그래밍은 하나의 컴퓨터에 2명의 프로그래머가 같이 공동 작업
- Collective Code Ownership
- 팀의 모든 프로그래머가 소스 코드에 대해서 공동 책임을 지는 것
- 시스템에 있는 코드는 누구든지 언제라도 수정 가능
- CI
- 컴포넌트 단위로 혹은 모듈 단위로 나누어서 개발된 소스코드들은 하나의 작업이 끝날 때마다 지속적으로 통합되고 동시에 테스트
- 40-hour-week
- 일주일에 40시간 이상을 일하지 말도록 규칙으로 정하고 2주를 연속으로 오버타임하지 않도록 함
- Whole Team
- 개발 효율성을 위해 고객을 프로젝트에 상주시킴
- 고객은 스토리를 명확하게 해주고, 중요한 비즈니스 결정사항에 대해 명확한 답을 제공해주는 역할
- Coding Standard
- 팀원들 간 커뮤니케이션을 향상시키기 위해서는 코드가 표준화된 관례에 따라 작성되어야 함
909. 주요 디자인 패턴
- Decorator 패턴 : 새로운 기능이 추가(확장)될 때마다 새로운 객체를 만들고, 이전 객체의 기능은 새로운 객체 내부에서도 그대로 유지, 보장해주는 패턴
- Singleton 패턴 : 지정한 클래스의 인스턴스가 반드시 한 개만 존재하도록 하는 패턴
- Iterator 패턴 : 집합 객체 요소들의 내부 표현 방식을 공개하지 않고, 순차적으로 접근하는 구조를 제공하는 패턴
- State 패턴 : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 통지되고, 필요 시 자동으로 내용이 갱신되는 패턴
910. 아키텍처 패턴의 종류
- 레이어 패턴 : 시스템을 계층으로 구분하여 구성하는 방법, 서로 마주보는 두 개의 계층 사이에서만 상호작용이 이루어져 변경 작업이 용이
- 클라이언트-서버 패턴 : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성하는 패턴
- 파이프-필터 패턴 : 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송하는 패턴
- 모델-뷰-컨트롤러 패턴 : 서브 시스템을 3개의 부분으로 구조화하는 패턴, 한개의 모델에 대해 여러 개의 뷰를 필요로 하는 대화형 애플리케이션에 적합
- 마스터-슬레이브 패턴 : 동일한 구조의 슬레이브 컴포넌트로 작업을 분할한 후 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 작업을 수행하는 패턴
- 브로커 패턴 : 사용자가 원하는 서비스와 특성을 브로커 컴포넌트에 요청하면 브로커 컴포넌트가 요청에 맞는 컴포넌트와 사용자를 연결, 원격 서비스 호출에 응답하는 컴포넌트들이 여러 개 있을 때 적합한 패턴
- 피어-투-피어 패턴 : 피어를 하나의 컴포넌트로 간주하는 패턴
- 이벤트-버스 패턴 : 소스가 특정 채널에 이벤트 메시지를 발행하면 해당 채널을 구독한 리스너들이 메시지를 받아 이벤트를 처리하는 방식
- 블랙보드 패턴 : 모든 컴포넌트들이 공유 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 형태, 해결책이 명확하지 않은 문제들을 처리하는데 유용한 패턴
- 인터프리터 패턴 : 프로그램 코드와 각 라인을 수행하는 방법을 지정하고 기호마다 클래스를 갖도록 구성하는 패턴, 특정 언어로 작성된 프로그램 코드를 해석하는 컴포넌트를 설계할 때 사용
911. 소프트웨어 개발 방법
- 구조적 방법 : 구조적 분석 방법론은 도형화된 도구를 이용해 정형화된 분석 절차에 따라 사용자 요구사항을 파악하고 문서화하는 체계적 분석 방법
- 정보공학 방법 : 기업 정보 시스템에 공학적 기법을 적용하여 시스템의 계획, 분석, 설계 및 구축을 하는 데이터 (자료) 중심의 방법
- 객체지향 기법 : 분석과 설계 및 개발에 있어서 객체지향기법을 활용하여 시스템을 구축하고자 하는 방법
- CDB 방법 : 재사용이 가능한 컴포넌트의 개발 또는 상용 컴포넌트들을 조합하여 애플리케이션 개발하는 Bottom-Up 방법
913. 데이터 흐름도 (DFD) 구성 요소
- 처리 (Process) : 입력된 자료를 출력으로 변환하는 것, 프로세스, 원 안에 처리 명칭 기술
- 자료 흐름 (Data flow) : 발생시, 종착지, 처리 및 저장소 사이에서의 자료의 흐름, 화살표 위에 자료의 명칭 기술
- 자료 저장소 (Data store) : 시스템 상의 자료 저장소를 나타내며 평행선 안에 자료 저장소 명칭 기술
- 단말기 (Terminator) : 시스템에 필요한 자료가 입력되는 발생지와 시스템에서 처리된 자료가 출력되는 종착지 또는 외부에 존재하는 사람이나 조직을 나타냄, 사각형 안에 발생지나 종착지 명칭 기술
915. 요구공학 절차
- 요구사항 개발 : 요구사항 도출 → 요구사항 분석 → 요구사항 명세 → 요구사항 확인
- 요구사항 관리 : 요구사항 협상, 요구사항 기준선, 요구사항 변경 관리 등을 수행
918. CASE (Computer Aided Software Enginnering)
- 표준화 적용 (범용성, 이식성+), 문서화를 통한 품질 개선 가능
- 변경사항, 변경으로 인한 영향에 대한 추적 용이
- 명세에 대한 유지보수 비용의 축소 가능
- CASE의 분류
- Upper CASE (상위 CASE)
- 계획수립, 요구분석, 기본 설계 단계 : 다이어그램으로 표현
- 모델들 사이의 모순 검사, 모델의 오류 검증, 일관성 검증 지원
- 자료 흐름도 프로토 타이핑 작성 지원, UI 설계 지원
- Lower CASE (하위 CASE)
- 코드의 작성과 테스트, 문서화 과정 지원
- 구문 중심 편집 및 정적 / 동적 테스트
- 시스템 명세서 생성 및 소스 코드 생성 지원
- Upper CASE (상위 CASE)
919. 디자인 패턴의 분류
생성 패턴 | 구조 패턴 | 행위 패턴 | ||
의미 | 객체의 생성방식을 결정하는 패턴 | 객체를 조직화하는데 유용한 패턴 | 객체의 행위를 조직, 관리, 연합하는데 사용하는 패턴 | |
범위 | 클래스 | Factory method | Adapter | Template method, Interpreter |
객체 | Singleton | Bridge | Iterator | |
Abstract Factory | Composite | Command | ||
Buider | Decorator | Chain of Responsibility | ||
Prototype | Façade | State | ||
Fly weight | Strategy | |||
Proxy | Mediator | |||
Memento | ||||
Visitor | ||||
Observer |
920. 객체지향 기법
- 캡슐화 (Encapsulation)
- 속성과 메서드를 하나로 묶어서 객체로 구성
- Readbility 향상 : 유지보수가 용이
- 재사용성이 높은 S/W 개발이 가능
- 객체 간 인터페이스 이용, 종속성 최소화
- 추상화 (Abstraction)
- 공통 성질을 추출하여 슈퍼클래스로 구성
- 객체 중심의 안정된 모델 구축
- 현실 세계를 자연스럽게 표현
- 분석의 초점이 명확해짐
- 다형성 (Polymorphism)
- 동일한 이름의 여러 오퍼레이션 (메서드)을 다른 사양으로 정의 가능
- 오버로딩 : 매개변수의 수 또는 타입을 달리하여 구분
- 오버라이딩 : 부모클래스의 메서드를 재정
- 정보은닉 (Information Hiding)
- 캡슐화된 항목을 다른 객체로부터 숨김
- 메시지 전달에 의해 다른 클래스 내의 메서드 호출
- 상속성 (Inheritance)
- 부모 클래스의 속성과 메서드를 상속받아 사용
- 부모와 자식 클래스 간의 관계가 슈퍼클래스와 서브클래스로 유지
- 부모 클래스는 추상적, 자식 클래스는 구체적 성질을 가짐
921. 소프트웨어 개발 - 단위 모듈의 구현원리
- 독립성 보장
- 낮은 결합도
- 높은 응집도
926. 소프트웨어 형상 관리
- 형상 관리를 위하여 구성된 팀 : CCB (Configuration Control Board)
928. 해싱 함수의 오버 플로우 해결 방법
- 선형 개방 주소법
- 충돌이 발생한 다음 위치에서 차례로 검색하여 첫번째 빈 공간에 저장
- 레코드 전체 개수를 미리 예측 가능할 경우 적용 가능한 방법
- 체인법
- 오버플로가 발생한 레코드를 별도의 버킷으로 연결하여 저장
- 링크를 위한 오버 헤드 발생, 레코드 개수 예측하기 어려울 경우 적용
- 다중 해싱법 (확장 해싱)
- 키의 처음 비트를 이용하여 디렉토리를 통해 버킷에 접근할 수 있음
- 버킷에 오버플로가 발생할 경우 새로운 버킷을 생성하고 디렉토리의 포인터를 변경하거나 디렉토리를 확장
933. 단위 모듈 테스트 방법
- 화이트 박스 테스트
- 단위 모듈 테스트의 가장 기본적인 방법은 모듈 내부의 소스를 보면서 수행하는 화이트 박스 테스트
- 소스 코드를 보면서 테스트 케이스를 다양하게 만들어서 테스트할 수 있음
- 메소드 기반 테스트
- 단위 모듈의 외부에 공개된 메소드 기반 테스트
- 메소드에 파라미터 값을 다르게 호출하면서 다양한 테스트를 수행
- 화면 기반 테스트
- 사용자용 화면이 있는 경우 각각의 화면 단위 모듈 개발 후 화면에 직접 데이터를 입력하여 테스트를 수행
- 화면 기반 테스트는 화면과 연계된 서비스 컴포넌트, 비즈니스 컴포넌트 및 공통 컴포넌트를 한꺼번에 단위 테스트에 참여시킬 수 있음
- 사용자 시나리오에 기반한 단위 모듈 테스트를 할 수 있음
- 스텁과 드라이버 활용
- 사용자용 화면, 화면 모듈 (서비스 컴포넌트, 비즈니스 컴포넌트) 등과 같이 테스트 수행에 필요한 다른 모듈 개발이 안 된 경우 스텁과 드라이버를 활용하여 단위 테스트
934. 깊이 우선 탐색 (DFS) 기법, 너비 우선 탐색 (BFS) 기법
- 깊이 우선 탐색 (DFS) : 한 루트로 탐색하다가 특정 상황에서 최대한 깊숙이 들어가서 확인한 뒤 다시 돌아가 다른 루트로 탐색하는 방
- 너비 우선 탐색 (BFS) : Queue를 이용하는 방법, 루트 또는 임의의 노드에서 인접한 노드를 모두 탐색하는 방법
935. 해싱 함수의 종류
- 계수 분석 : 키 값을 구성하는 숫자의 분포를 파악하여 분포가 비교적 고른 자리부터 필요한 자리만큼 선택하여 레코드 주소를 결정하는 방법
- 제산법 : 키를 임의의 양의 정수로 나눈 나머지를 그 키의 레코드를 저장하는 주소로 결정하는 방법
- 중간 제곱법 : 키 값을 제곱한 값의 중간 부분 값을 선택하여 레코드 주소로 결정하는 방법
- 폴딩법 (중첩법) : 키를 여러 부분으로 나누고 나누어진 각 부분의 값을 모두 더하거나 보수를 취해 더하여 레코드 주소를 결정하는 방법
- 기수변환 : 주어진 키 값을 어떤 특정한 진법의 수로 간주하여 다른 진법으로 변환한 후 레코드 주소를 구하는 방법
- 숫자분석 : 각 숫자의 분포를 이용해서 균등한 분포의 숫자를 선택하여 사용
- 무작위 방법 : 난수를 발생, 탐색을 위한 해시의 경우 충돌이 발생하면 다음 난수를 이용하는 방법
937. 소프트웨어 테스트의 기본 7원칙
- 테스팅은 결함이 존재함을 밝히는 활동 : 테스팅은 소프트웨어의 잠재적인 결함을 줄일 수 있지만 결함이 발견되지 않아도 결함이 없다고 증명할 수 없음
- 완벽한 테스팅은 불가능 : 무한 경로, 무한 입력 값, 무한 시간이 소요되어 완벽하게 테스트할 수 없으므로 리스크 분석과 우선순위를 토대로 테스트에 집중
- 테스팅은 개발 초기에 시작 : 애플리케이션 개발 단계에 테스트를 계획하고 SDLC의 각 단계에 맞춰 전략적 접근
- 결함 집중 (파레토 법칙) : 결함의 대부분이 소수의 특정한 모듈에 집중되어 존재, 80대 20의 법칙
- 살충제 패러독스 : 동일한 테스트 케이스로 반복 실행하면 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 리뷰하고 개선
- 테스팅은 정황에 의존 : 정황과 비즈니스 도메인에 따라 테스트를 다르게 수행
- 오류 - 부재의 궤변 : 어떤 소프트웨어도 오류가 완벽하게 해소된 제품을 만들어낼 수 없음
943. 그룹 함수
- SELECT 절에 그룹함수가 사용되면 그룹 함수를 제외한 컬럼은 GROUP BY 절에 기술되어야 함
944. HAVING
- 그룹 제한 조건 명령어
946. 절차형 SQL의 기본 구성 요소
- DECLARE : 대상이 되는 프로시저, 사용자 정의함수 등을 정
- BEGIN : 프로시저, 사용자 정의함수가 실행되는 시작점
- END : 프로시저, 사용자 정의함수가 실행되는 종료점
948. 데이터베이스 키
- 키의 특징 : 유일성, 최소성
- 기본 키 : 후보키 중에서 특별히 선정된 주키. 중복된 값을 가질 수 있음
- 대체 키 : 후보키가 둘 이상일 때 기본 키를 제외한 나머지 후보키를 의미, 보조키
- 슈퍼 키 : 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의집합과 동일한 값을 나타나지 않음
- 외래 키 : 다른 릴레이션 기본 키를 참조하는 속성 또는 속성들의 집합을 의미
949. 데이터 모델의 속성
- 하나의 개체는 연관된 속성들의 집합
- 독립적인 의미를 갖지 않음
- 데이터의 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당
- 다른 속성 값으로부터 획득한 속성
- 관계 데이터베이스에서 릴레이션의 속성으로 포함시키지 않는 것을 권장
- E-R 다이어그램에서 표시 : 점선 타원으로 표현
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 필기] 2022 기사패스 정보처리기사 기출문제 상세풀이 800제 : 1 ~ 50 오답정리 (1) | 2025.03.28 |
---|---|
[정보처리기사 필기] 기출문제 - 951 ~ 1000. 오답노트 (0) | 2025.03.27 |
[정보처리기사 필기] 기출문제 - 851~ 900. 오답노트 (1) | 2025.03.25 |
[정보처리기사 필기] 기출문제 - 801~ 850. 오답노트 (0) | 2025.03.24 |
[정보처리기사 필기] 기출문제 - 751 ~ 800. 오답노트 (0) | 2025.03.20 |