추천 참고자료: https://worlf.tistory.com/55
# 1장 요구사항 확인
## 소프트웨어 생명 주기
애자일 모형 기반 소프트웨어 개발 모형 종류
- 스크럼
- XP
- 칸반
- Lean
- 크리스탈
- ASD
- 기능 중심 개발
-DSDM
- DAD
애자일 개발 4가지 핵심 가치
1. 개인, 상호작용 > 프로세스, 도구
2. 실행되는 SW > 방대한 문서
3. 고객과 협업 > 계역 협상
4. 변화에 반응 > 계획에 따르기
## 요구사항 정의
요구분석 사용 도구
- 애자일 방법
- UML(유스케이스 다이어그램, 시퀀스 다이어그램)
- 자료 흐름도(DFD)
- 데이터 사전
- 소단위 명세서
- 개체 관계도
- 상태 이전도
- 제어 명세서
자료 흐름도 구성 요소

데이터 사전 기호
## UML
사물
- structural Things(구조)
- Behavioral Things(행동)
- Grouping Things(그룹)
- Annotation Things(주해)
구조적(Structural, 정적) 다이어그램
- 클래스: 클래스와 클래스가 가지는 속성, 클래스 사이의 관계
- 객체: 클래스에 속한 사물들, 즉 인스턴스를 특정 시점의 객체와 객체의 관계
- 컴포넌트: 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스
- 배치: 결과물, 프로세스, 컴포넌트, 간의 관계나 컴포넌트 간의 인터페이스
- 복합체 구조: 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조
- 패키지: 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계
행위(Behavioral, 동적) 다이어그램
- 유스케이스: 사용자와 사용관계로 구성되며, 사용 사례 간에는 여러 형태의 관계로 이루어짐
- 순차(sequence): 상호 작용하는 시스템이나 객체들이 주고받는 메세지
- 커뮤니케이션: 순차 다이어그램과 같이 동작에 참여하는 객체들이 주고 받는 메세지를 포함, 추가로 객체들 간의 연관까지 표현
- 상태(state): 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변하는지 표현,
이벤트(event)에 의한 객체들의 상태 변화를 그림으로 표현
- 활동: 시스템이 어떤 기능을 수행하는지, 객체의 처리 로직이나 조건에 따라 처리의 흐름을, 순서에 따라 표현
- 상호작용 개요: 상호작용 다이어그램 간의 제어 흐름
- 타이밍: 객체 상태 변화와 시간 제약을 명시적으로 표현
※절차 다이어그램 없음, 주의
UML 사물
- Structural Things
- Behavioral Things
- Grouping Things
- Annotation Things
UML 관계
- 연관(Association): 2개 이상의 사물이 서로 관련됨
- 집합(Aggregation): 하나의 사물이 다른 사물에 포함됨
- 포함(Composition): 집합의 특수한 형태, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미침
- 일반화(Generalization): 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지 표현
- 의존(Dependency): 연관 관계와 같이 서로 연관은 있으나, 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지함
- 실체화(Realization): 한 사물이 다른 사물에게 오퍼레이션을 수행하도록 지정

## 주요 ULM 다이어그램
유스케이스 다이어그램 구성요소
- 시스템/시스템 범위
- 액터
- 유스케이스
- 관계(연관, 포함, 확장, 일반화)
클래스 다이어그램 구성요소
- 클래스(이름, 속성, 오퍼레이션)
- 제약조건
- 관계(연관, 집합, 포함, 일반화, 의존)
순차 다이어그램 구성요소
- 액터
- 객체
- 생명선
- 실행상자
- 메시지
- 회귀 메시지
- 제어 블록
# 2장 화면 설계
## 사용자 인터페이스
사용자 인터페이스 종류
- CLI(Command Line Interface)
- GUI(Graphical User Interface)
- NUI(Natural User Interface)
재스처: Tap(누르기), Double Tap(두번 누르기), Drag(누른 채 움직임), Pan(누른 채 계속 움직임), Press(오래 누르기), Flick(빠르게 스크롤), Pinch(두 손가락으로 넓히기/좁히기)
- VUI(Voice User Interface)
- OUI(Organic User Interface)
사용자 인터페이스 개발 시스템의 기능
- 사용자 입력의 검증
- 에러 처리와 에러 메시지 처리
- 도움 프롬프트 제공
# 3장 애플리케이션 설계
## 소프트웨어 아키텍처
추상화: 문제의 전체적이고 포괄적인 개념을 설계한 후 차례대로 세분화하여 구체화함
추상화 유형: 제과자(제어, 과정, 자료(데이터))
정보 은닉: 모듈에 대한 정보가 감추어져 있음
- 수정, 시험, 유지보수 용
시스템 품질 속성:
성능, 변경용이성, 사용성, 기능성, 가용성, 확장성, 보안 등
암기: 성능 좋은 폰으로 변경해서 용량이 사기가(4G) 확보 됐다.
아키텍처 설계 과정
1. 설계 목표 설정
2. 시스템 타입 결정
3. 아키텍처 패턴 적용
4. 서브시스템 구체화
5. 검토
협약에 의한 설계
- 선행 조건: 오퍼레이션 호출 전 참
- 결과 조건: 오퍼레이션 수행된 후 만족
- 불변 조건: 오퍼레이션 실행되는 동안 항상 만족
## 객체지향
객체지향 주요 구성요소
- 객체(Object): 데이터와 데이터를 처리하는 함수를 묶어놓은 하나의 소프트웨어 모듈
데이터(속성, 상태 변수, 상수, 자료구조)
함수(메소드, 서비스, 동작, 연산)
메세지: 객체에게 어떤 행위를 하도록 지시하는 명령
- 클래스(Class): 공통된 속성과 연산을 갖는 객체의 집합
- 캡슐화(Encapsulation)
- 상속(Inheritance)
- 다형성(Polymorphism)
메소드 오버로딩: 메소드명은 같지만 매개 변수의 개수와 타입을 다르게 함으로써 구현, 구분할 수 있음
- 연관성(Relationship)
## 객체지향 분석 및 설계
객체지향 분석: 소프트웨어를 개발하기 위한 비즈니스를 객체와 속성, 클래스와 멤버, 전체와 부분 드응로 나누어서 분석해내는 기법
객체지향 분석의 방법론
- Coad와 Yourdon 방법: ER 다이어그램 사용
- Rumbaugh 방법: 객체모델, 동적모델, 기능 모델
- Booch 방법: 클래스와 객체
- Jacobson: Use Case 강조
- Wirgs-Brock 방법: 고객 명세서 평가
럼바우의 분석 기법
객체 모델링(Object, 정보모델링): 객체 다이어그램
↓
동적 모델링(Dynamic): 상태 다이어그램
↓
기능 모델링(Functional): 자료 흐름도(DFD)
암기: 객동기
객체지향 설계 원칙
- 단일 책임 원칙(SRP, Single Responsibility Principle): 객체는 단 하나의 책임만 가져야함(응집도 높고 결합도는 낮게)
- 개방-폐쇄 원칙(OCP, Open-Closed Principle): 클래스는 확장에 대해 열려 있고 견경에 대해 닫혀 있어야함
- 리스코프 치환 원칙(LSP, Liskov Substitution Principle): 자식 클래스는 부모 클래스에서 가능한 행위를 수행하거나 교체 가능해야함
- 인터페이스 분리 원칙(ISP, Interface Segregation Principle): 자신이 사용하지 않는 인터페이스와 관계나 영향 받지 않아야함
- 의존 역전 원칙(DIP, Dependency Inversion Principle): 추상성이 낮은 클래스보다 높은 클래스와 의존 클래스를 맺어야함
## 모듈
결합도: 모듈 간의 연관 관계
- 자료 결합도(Data): 필요한 데이터만
- 스탬프 결합도(Stamp): 자료구조
- 제어 결합도(Control): 플래그로 동작제어
- 외부 결합도: 외부 선언 변수 참조
- 공통 결합도(Common): 전역 변수 공유
- 내용 결합도(Content): 내부를 직접 참조
암기: 자바스크립트 제발 외워 공부 내일 끝
응집도(Cohesion): 모듈의 내부 요소들이 서로 관련있는 정도
- 기능(Functional): 단일 가능
- 순차(Sequence): 출력->입력 연결
- 통신(Communication): 같은 데이터 사용
- 절차(Procedural): 순서대로 실행
- 시간(Temporal): 같은 시간에 실행
- 논리(Logical): 비슷한 종류끼리
- 우연(Coincidental): 아무 관계 없음
암기: 기순통 절시논우
팬인: 제어하는 모듈 수(모듈에 들어오는것)
팬아웃: 제어되는 모듈 수(모듈에 나가는것)
N-S 차트: 논리의 기술에 중점을 둔 도형을 이용한 표현 방법
- 논리구조로 표현
- GOTO나 화살표를 이용하지 않음
- 조건이 복합되어 있는 곳의 처리를 시각적으로 면확히 식별하는데 접합
디자인 패턴: 소프트웨어 설계에서 자주 발생하는 문제에 대한 일반적이고 반복적인 해결 방법, GoF가 구체화 및 체계화함
1. 생성패턴: 객체 생성 관련
- Factory Method: 객체 생성을 하위 클래스에서 담당 (객체 생성 책임 분리), Virtual-Constructor
- Abstract Factory: 관련된 객체들을 한 번에 생성할 수 있도록 하는 팩토리
- Builder: 복잡한 객체 생성을 단계별로 수행
- Prototype: 기존 객체를 복제하여 새로운 객체 생성
- Singleton: 하나의 인스턴스만 생성되도록 제한
암기: 팝스프(FABSP)
2. 구조 패턴: 클래스/객체 간 관계 정의
- Adapter : 서로 다른 인터페이스를 변환하여 연결
- Bridge: 구현과 추상을 분리하여 독립적으로 확장 가능하게 함
- Composite: 객체들을 트리 구조로 구성하여 계층적으로 관리
- Decorator: 그때그때마다 추가 설계
- Facade: 복잡한 서브시스템을 단순화하여 제공
- Flyweight: 객체를 공유하여 메모리 사용을 줄이는 패턴
- Proxy: 실제 객체 대신 대리 객체를 사용하여 접근을 제어
암기: ABCD2FP
3. 행위 패턴: 객체 간 협력 및 역할 분배
- Template Method: 알고리즘의 구조를 정의하고, 세부 구현은 하위 클래스에서 처리
- Visitor: 객체 구조를 변경하지 않고, 새로운 기능을 추가
- Observer: 한 객체의 상태 변화가 다른 객체들에게 자동으로 전파
- Interpreter: 언어의 문법을 정의하고 해석하는 패턴
- Iterator: 컬렉션 요소를 순차적으로 접근하는 패턴
- Chain if Resposibility: 요청을 여러 객체가 처리하도록 연결
- Command: 요청을 객체로 캡슐화하여 실행
- State: 객체의 상태에 따라 다른 동작을 수행
- Strategy: 알고리즘을 객체로 캡슐화하여 교체 가능하게 함
- Mediator: 객체 간 직접 통신을 막고, 중재자를 통해 통신
- Memnto: 객체의 상태를 저장하고 복원
암기: 티비 요(O)2익슴(TV O 2(ICSM))
참고: https://velog.io/@1117mg/%EC%A0%95%EC%B2%98%EA%B8%B0-%EC%8B%A4%EA%B8%B0-%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4-GoF-%ED%95%B5%EC%8B%AC%EB%A7%8C-%EC%99%B8%EC%9A%B0%EA%B8%B0
'정보처리기사 > 필기' 카테고리의 다른 글
| 내가 기억해야 할 정처기 - 5과목 정보시스템 구축 관리 (0) | 2026.05.29 |
|---|---|
| 내가 기억해야 할 정처기 - 3과목 데이터베이스 구축 (0) | 2026.05.28 |
| 내가 기억해야 할 정처기 - 2과목 소프트웨어 개발 (0) | 2026.05.21 |
| 내가 기억해야 할 정처기 - 4과목 프로그래밍 언어 활용 (0) | 2026.05.21 |