1과목 : 소프트웨어 설계
1. User Interface 설계
① 직관성 : 누구나 쉽게 이해, 쉽게 사용해야 함 / 메세지 이해하기 쉬워야함
② 유효성 : 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작
③ 학습성 : 초보와 숙련자 모두 쉽게 배우고 사용해야 함
④ 유연성 : 사용자의 인터랙션 최대한 포용, 실수 방지할 수 있도록 제작
2022년 03월 05일 기출
2. UML 모델 관계
① 연관 관계 (Association Relationship) : 한 사물의 객체가 다른 사물에 대한 객체와 연결 (화살표 실선)
② 의존 관계 (Dependency Relationship) : 사물 사이에 서로 연관은 있으나 필요에 따라 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계를 표현
③ 실체화 관계 (Realizetion Relationship) : 사물이 할 수 있거나, 해야하는 기능(행위, 인터페이스)으로 서로를 그룹화할 수 있는 관계를 표현
④ 일반화 관계 (Generalization Relationship) : 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현
⑤ 집합관계 (Aggregation Relationship) : 포함되는 쪽에서 포함 하는 쪽으로 연결
⑥ 포함관계 (Composition Relationship) : 집합관계의 특수형태 / 영향까지 고려
2021년 08월 14일 기출
3. 익스트림 프로그래밍 (XP)
- 요구사항에 유연하기 위해 고객의 참여와 개발 과정의 반복을 극대화 하여 개발 생산성을 향상시키는 방법
- 사용자 스토리, 릴리즈 계획수립, 스파이크, 주기, 승인검사, 소규모릴리즈의 개발 프로세스를 가지고 있음
- 빠른 소프트웨어 개발이 목적이지만 테스트를 진행함
- 프로그래밍에서 테스트가 없다는 것은 말도 안됨
2021년 08월 14일 기출
4. 추상화 기법 (Abstraction)
* 문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는 것
① 제어 추상화 : 제어의 정확한 메커니즘을 정의하지 않고 원하는 효과를 정하는 데 이용
② 기능 추상화 : 입력 자료를 출력 자료로 변환하는 과정을 추상화하는 방법
③ 자료 추상화 : 자료와 자료에 적용할 수 있는 기능을 함께 정의함으로써 자료객체를 구성하는 방법
④ 과정 추상화 : 자세한 수행 과정을 정의하지 않고 전반적인 흐름만 파악할 수 있게 설계
⑤ 테이터 추상화 : 데이터의 세부적인 속성이나 용도 정의하지 않고 데티어 구조를 대표할 수 있는 표현으로 대체
2021년 08월 14일 기출
5. 객체지향 설계에서의 정보 은닉 (Information Hiding)
* 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통해 접근을 허용
* 클래스 외부에서 특정 정보에 접근을 막는다는 의미 (IP, port 등)
- 장점
- 기능의 교체나 변경에 유연 (객체간의 구체적인 결합도 약화) / 요구사항에 따른 변화 가능
- 동적기능 변경 가능
- 모듈화하여 코드의 가독성 증가
- 개발기간 단축
2021년 08월 14일 기출
6. 자료 흐름도(DFD)
* 시간의 흐름보다 프로세스와 프로세스 간에 존재하는 상호작용을 명확하게 표현 가능
* 구조적 분석기법
① 처리 Process : 원 ○
② 자료 흐름 Data Flow : 화살표 →
③ 자료 저장소 Data Store : 평행선 〓
④ 단말 Terminal : 사각형 □
2022년 03월 05일 기출
8. 클래스 다이어그램의 요소
* 객체지향 모델링 시 구성요소 간 정적인 관계를 표현한 다이어그램
① 클래스 이름 (Class Name)
② 속성 (Attribute)
③ 연산 (Operaton) : 작동!!!!
④ 접근 제어자 : -, +, #, ~
2021년 08월 14일 기출
9. 분산 시스템을 위한 마스터-슬레이브 (Master-Slave) 아키텍쳐
- Master-Slave 패턴
- Master : 작업을 분리, 배포
- Slave : 요청 작업 처리
- 슬레이브는 마스터의 작업 요청을 처리하고, 처리된 결과를 되돌려준다
- 마스터는 슬레이브가 반환한 결과값으로부터 최종 결과값을 계산한다
2021년 08월 14일 기출
10. 요구 사항 정의 및 분석·설계의 결과물을 표현하기 위한 모델링 과정에서 사용되는 다이어그램(Diagram)
- Data Flow Diagram
- UML Diagram
- E -R Diagram
- AVL Diagram은 이진트리의 높낮이가 불규칙해지는 것을 보완하기 위한 이진트리 모형임
2021년 08월 14일 기출
11. UML 다이어그램
- 구조적, 정적 다이어그램
- #클객컴배복패
- 행위, 동적 다이어그램
- #유시커상활상타
2022년 03월 05일 기출
13. 클래스 설계원칙
- 단일 책임원칙 : 하나의 객체는 하나의 동작만의 책임을 가짐
- 개방-폐쇄의 원칙 : 클래스는 확장에 대해 열려 있어야 하며 변경에 대해 닫혀 있어야 한다.
- 리스코프 교체의 원칙 : 특정 메소드가 상위 타입을 인자로 사용할 때, 그 타입의 하위 타입도 문제 없이 작동해야 함
- 의존관계 역전의 원칙 : 상위 계층이 하위 계층에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있음
2022년 03월 05일 기출
14. GoF(Gangs of Four) 디자인 패턴에서 생성(Creational) 패턴
생성패턴
- 추상팩토리(Abstract Factory)
- 빌더(Builder)
- 팩토리메서드(FactoryMethod)
- 프로토타입(Prototype)
- 싱글톤(Sington)
구조패턴
- 어댑터(Adapter)
- 브리지(Bridge)
- 컴포지트(Composite)
- 데코레이터(Decorator)
- 파사드(Facade)
- 플라이웨이트(Flyweight)
- 프록시(Proxy)
행위패턴
- 책임 연쇄(Chain of Responsibility)
- 커맨드(Command)
- 인터프리터(InterPreter)
- 이터레이터(Iterator)
- 중재자(Mediator)
- 메멘토(Memento)
- 옵서버(Observer)
- 상태(State)
- 전략(Strategy)
- 템플릿메서드(Template Method)
- 방문자(Visitor)
2022년 03월 05일 기출
15. 아키텍처 설계과정
- 설계목표설정 -시스템 타입 결정 - 아키텍처 패턴 적용 - 서브시스템 구체화 - 검토
2022년 03월 05일 기출
17. 디자인 패턴
- 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴
- 각 모듈의 세분화된 역할 or 모듈들 간 인터페이스와 같은 코드를 작성하는 수준의 세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
- GoF의 디자인 패턴은 가장 일반적 사례에 적용될 수 있는 패턴들을 분류하여 정리함. 가장 많이 사용되는 디자인 패턴 (1995)
- 재사용 가능한 기본형 코드
- 한 패턴에 변형을 가하거나 특정 요구사항을 반영하면 유사한 형태의 다른 패턴으로 변화
2022년 03월 05일 기출
19. 분산 시스템에서의 미들웨어 (Middleware)
- 위치 투명성 제공
- 분산 시스템에서 다양한 부분을 관리하고 통신하며 데이터를 교환하게 해주는소프트웨어로 볼 수 있다.
- 분산 시스템의 여러 컴포넌트가 요구하는 재사용가능한 서비스의 구현을 제공한다.
- 복잡한 이기종 환경에서 응용 프로그램과 운영환경 간에 원만한 통신을 이룰 수 있게 해주는 소프트웨어
- 애플리케이션 - 사용자 사이 외에도 프로그램과 환경간에서 서비스를 제공
2021년 08월 14일 기출
20. 객체지향
- Method(메서드) : 클래스로부터 생성된 객체를 사용하는 방법, 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산
- Message(메시지) : 객체 간 상호 작용을 하기 위한 수단, 객체에게 어떤 행위를 하도록 지시하는 방법
- Class(클래스) : 특정 객체 내에 있는 변수와 메서드를 정의하는 일종의 틀, 객체 지향 프로그래밍에서 데이터를 추상화하는 단위
- Field(필드) : SQL에서 열 또는 속성이라고 불리는 것
2022년 03월 05일 기출
'정보처리기사 (필기) > 1. 소프트웨어 설계' 카테고리의 다른 글
[정보처리기사] 1-7. 소프트웨어 아키텍쳐 및 아키텍쳐 패턴 (0) | 2022.04.19 |
---|---|
[정보처리기사] 1-6. 사용자 인터페이스 및 품질 요구사항 (0) | 2022.04.19 |
[정보처리기사] 1-5. UML (Unified Modeling Language) (0) | 2022.04.16 |
[정보처리기사] 1-4. 요구사항 정의 (0) | 2022.04.16 |
[정보처리기사] 1-3. 개발 기술 환경 파악 (0) | 2022.04.12 |