비기능 요구
“동시 사용자 1,000명일 때 응답시간 2초 이하”는 기능/비기능 중 무엇인가?
정답과 풀이 확인
정답 비기능 요구사항
제공 기능 자체가 아니라 성능의 수준을 제한한다.
이 브라우저에서 다음 학습에도 적용됩니다.
정보처리 실무 · 학습 노트
개발 경험을 정확한 용어에 연결하기
요구사항부터 모듈과 UML, 디자인 패턴까지 묶었다. 문제의 단서를 보고 가장 구체적인 용어로 답하는 연습을 한다.
기호와 용어가 낯설면 기초·상세 보강을 먼저 읽고, 기존 핵심 정리로 연결하세요. 예제의 값을 손으로 계산한 뒤 확인 질문을 답하고 마지막에 문제를 풉니다.
핵심 규칙을 설명하고, 연습문제의 답과 이유를 해설 없이 적을 수 있으면 체크하세요. 이해 체크와 정답 기록은 별도로 저장됩니다.
기능 요구는 무엇을 하는가, 비기능 요구는 성능·보안·신뢰성 등 어떤 수준으로 동작하는가다. 도출 → 분석 → 명세 → 확인의 흐름으로 이해한다. 폭포수는 단계 순차, 프로토타입은 시제품 피드백, 나선형은 위험 분석의 반복이다.
“요구사항과 개발 모형”의 핵심 규칙과 헷갈리는 지점을 설명해 보세요.
애자일은 짧은 반복과 피드백. 스크럼의 제품 백로그·스프린트 백로그·스프린트·회고를 구별한다. “2초 이내 응답”은 비기능 요구. “주문을 취소한다”는 기능 요구다.
애자일은 짧은 반복과 피드백. 스크럼의 제품 백로그·스프린트 백로그·스프린트·회고를 구별한다.
헷갈리는 지점 “2초 이내 응답”은 비기능 요구. “주문을 취소한다”는 기능 요구다.
클래스·객체·컴포넌트·배치·패키지는 구조 표현, 유스케이스·활동·상태·시퀀스는 행위 표현이다. 시퀀스는 시간 순 메시지, 상태는 이벤트에 따른 상태 전이다.
“UML 관계와 다이어그램”의 핵심 규칙과 헷갈리는 지점을 설명해 보세요.
일반화는 상속, 실체화는 인터페이스 구현, 연관은 연결, 의존은 사용. 집합은 빈 마름모, 합성은 찬 마름모를 전체 쪽에 표시한다. 합성은 강한 소유 관계다. 화살표의 방향과 마름모가 있는 쪽을 뒤바꾸지 않는다.
일반화는 상속, 실체화는 인터페이스 구현, 연관은 연결, 의존은 사용. 집합은 빈 마름모, 합성은 찬 마름모를 전체 쪽에 표시한다.
헷갈리는 지점 합성은 강한 소유 관계다. 화살표의 방향과 마름모가 있는 쪽을 뒤바꾸지 않는다.
응집도는 한 모듈 안의 관련성으로 높을수록 좋다. 강→약: 기능→순차→교환(통신)→절차→시간→논리→우연. 결합도는 모듈 사이 의존으로 낮을수록 좋다. 강→약: 내용→공통→외부→제어→스탬프→자료.
“응집도와 결합도”의 핵심 규칙과 헷갈리는 지점을 설명해 보세요.
순차 응집은 앞 출력이 뒤 입력, 교환 응집은 같은 자료 사용. 스탬프 결합은 구조 전체 전달, 자료 결합은 필요한 자료 전달. 외부 결합은 외부 형식·프로토콜·장치 의존, 공통 결합은 공통 전역자료 공유, 내용 결합은 내부 구현 직접 참조·수정이다.
순차 응집은 앞 출력이 뒤 입력, 교환 응집은 같은 자료 사용. 스탬프 결합은 구조 전체 전달, 자료 결합은 필요한 자료 전달.
헷갈리는 지점 외부 결합은 외부 형식·프로토콜·장치 의존, 공통 결합은 공통 전역자료 공유, 내용 결합은 내부 구현 직접 참조·수정이다.
캡슐화는 상태와 동작 묶기·접근 통제, 추상화는 핵심 모델링, 상속은 기존 특성 확장, 다형성은 같은 메시지에 다른 구현이다. SRP 단일 책임, OCP 확장에 열리고 수정에 닫힘, LSP 대체 가능, ISP 인터페이스 분리, DIP 추상에 의존.
“객체지향과 SOLID”의 핵심 규칙과 헷갈리는 지점을 설명해 보세요.
DIP는 고수준 정책이 저수준 구현의 구체 클래스에 직접 묶이지 않도록 추상에 의존한다. 의존성 주입 DI는 DIP 구현을 도울 수 있는 기법이지 같은 용어가 아니다.
DIP는 고수준 정책이 저수준 구현의 구체 클래스에 직접 묶이지 않도록 추상에 의존한다.
헷갈리는 지점 의존성 주입 DI는 DIP 구현을 도울 수 있는 기법이지 같은 용어가 아니다.
Singleton은 하나의 인스턴스 접근, Factory Method는 생성할 객체 결정을 하위 구현에 위임, Abstract Factory는 관련 제품군 생성, Builder는 복잡한 객체 조립 단계 분리, Prototype은 기존 객체 복제다.
“생성 패턴 5개”의 핵심 규칙과 헷갈리는 지점을 설명해 보세요.
“관련 객체들의 제품군” → Abstract Factory. “복잡한 생성 순서” → Builder. Singleton이 자동으로 스레드 안전을 보장하지는 않는다. Factory Method와 Abstract Factory의 초점을 구별한다.
“관련 객체들의 제품군” → Abstract Factory. “복잡한 생성 순서” → Builder.
헷갈리는 지점 Singleton이 자동으로 스레드 안전을 보장하지는 않는다. Factory Method와 Abstract Factory의 초점을 구별한다.
Adapter 인터페이스 변환, Bridge 추상과 구현의 독립 확장, Composite 부분-전체 트리의 동일 취급, Decorator 객체 감싸 기능 추가, Facade 복잡한 내부에 단순한 창구, Flyweight 공유로 비용 절감, Proxy 대리 접근·통제.
객체에 기능을 감싸서 추가하는 구조 패턴은?
Decorator.
“호환되지 않는 API 연결” Adapter / “추상·구현 계층 분리” Bridge / “대리인” Proxy.
헷갈리는 지점 Decorator는 기능 추가, Proxy는 접근·생명주기 등 대리 제어에 초점. 모양이 비슷해도 목적이 다르다.
Observer 상태 변화 알림, Strategy 교체 가능한 알고리즘, State 상태별 행동, Template Method 처리 뼈대와 세부 단계, Command 요청을 객체화, Iterator 순차 접근, Mediator 상호작용 중재, Memento 상태 보관·복원, Visitor 연산 분리, Chain of Responsibility 처리자 연결, Interpreter 문법 해석.
처리자들이 요청을 순서대로 넘겨 처리 가능한 곳을 찾는 패턴은?
Chain of Responsibility.
옵저버는 발행자와 구독자, 전략은 정렬·결제 방식 교체, 상태는 상태 변화에 따른 동작 변화로 떠올린다.
헷갈리는 지점 Strategy와 State를 구별할 때 “선택한 알고리즘 교체”인지 “객체 내부 상태에 따른 행동”인지 본다.
UI 원칙은 직관성·유효성·학습성·유연성으로 정리한다. 와이어프레임은 화면 뼈대, 스토리보드는 화면 흐름과 설명, 프로토타입은 동작 검증용 모형이다. MVC는 데이터·화면·입력 제어 책임을 나눈다.
“UI와 아키텍처”의 핵심 규칙과 헷갈리는 지점을 설명해 보세요.
계층형은 책임별 층, 클라이언트-서버는 요청·서비스 분리, 파이프-필터는 처리 단계의 흐름. UI는 접점, UX는 이용 경험 전체다. 시각 디자인만으로 UX를 정의하지 않는다.
계층형은 책임별 층, 클라이언트-서버는 요청·서비스 분리, 파이프-필터는 처리 단계의 흐름.
헷갈리는 지점 UI는 접점, UX는 이용 경험 전체다. 시각 디자인만으로 UX를 정의하지 않는다.
이벤트 기반 아키텍처는 상태 변화를 이벤트로 발행하고, 관심 있는 구성요소가 이를 구독해 비동기로 반응하는 구조다. CQRS(명령과 조회의 책임 분리)는 데이터를 변경하는 명령과 데이터를 조회하는 질의의 모델을 분리해 서로 다른 최적화를 적용한다.
“이벤트 기반 아키텍처와 CQRS”의 핵심 규칙과 헷갈리는 지점을 설명해 보세요.
이벤트 기반 구조는 발행자와 구독자를 느슨하게 결합해 확장에 유리하지만 전체 흐름 추적이 어려워질 수 있다. CQRS가 항상 별도의 데이터베이스를 요구하는 것은 아니다. 명령과 조회의 책임을 분리하는 것이 핵심이다.
이벤트 기반 구조는 발행자와 구독자를 느슨하게 결합해 확장에 유리하지만 전체 흐름 추적이 어려워질 수 있다.
헷갈리는 지점 CQRS가 항상 별도의 데이터베이스를 요구하는 것은 아니다. 명령과 조회의 책임을 분리하는 것이 핵심이다.
폭포수는 요구·설계·구현·테스트를 단계적으로 진행한다. 프로토타입은 사용자가 만져 볼 모형으로 요구를 구체화한다. 나선형은 계획→위험 분석→개발→고객 평가의 반복으로 위험을 줄인다. V 모형은 개발 단계와 대응 검증 단계를 연결한다.
애자일은 짧은 반복과 피드백을 중시한다. 스크럼의 제품 백로그는 전체 제품 작업, 스프린트 백로그는 이번 스프린트의 선택 작업·계획이다. 스프린트 리뷰는 결과물·향후 방향 점검, 회고는 팀의 일하는 방법 개선이다.
| V 모형 개발 단계 | 대응 테스트 |
|---|---|
| 요구 분석 | 인수 테스트 |
| 시스템 설계 | 시스템 테스트 |
| 아키텍처 설계 | 통합 테스트 |
| 모듈 설계 | 단위 테스트 |
팀의 협업 방식 개선을 논의하는 스크럼 행사는?
스프린트 회고.
나선형의 핵심 단서 위험 분석. 리뷰는 제품, 회고는 작업 과정.
헷갈리는 지점 애자일을 계획·문서가 전혀 없는 개발이라고 쓰지 않는다.
도출은 인터뷰·설문·관찰·워크숍 등으로 요구를 찾는다. 분석은 모호함·충돌·우선순위를 정리하고 모델을 만든다. 명세는 요구를 문서화하며 확인은 요구가 정확하고 일관되고 검증 가능한지 살핀다.
좋은 요구는 무엇을 측정하는지 명확하다. “빠르게 응답”보다 “동시 사용자 100명에서 95% 요청이 2초 이내 응답”이 검증하기 쉽다. 추적성 매트릭스는 요구를 설계·구현·테스트와 연결해 변경 영향을 확인한다.
요구사항 변경이 어떤 테스트에 영향을 주는지 찾는 도구는?
요구사항 추적성 매트릭스.
기능 요구: 수행할 기능 / 비기능 요구: 품질·제약·성능 수준.
헷갈리는 지점 기술·법적·운영 제약도 요구다. 화면 버튼에 대한 표현이라고 전부 UI 미관 요구인 것은 아니다.
연관은 객체 사이의 지속적인 연결, 의존은 한 요소의 변화가 다른 요소에 영향을 주는 사용 관계다. 일반화는 is-a 상속, 실체화는 인터페이스 계약의 구현이다. 집합은 느슨한 전체-부분, 합성은 전체가 부분의 수명을 강하게 소유하는 관계다.
일반화는 실선·빈 삼각형이 부모를 향하고 실체화는 점선·빈 삼각형이 계약을 향한다. 집합의 빈 마름모와 합성의 채운 마름모는 전체 쪽에 표시한다. 관계 이름은 다이어그램 표기와 문제의 소유·수명 단서를 함께 본다.
| 관계 | 예 | 표기 단서 |
|---|---|---|
| 일반화 | 고양이는 동물 | 실선+빈 삼각형 |
| 실체화 | 클래스가 인터페이스 구현 | 점선+빈 삼각형 |
| 의존 | 메서드 인자로 잠시 사용 | 점선 화살표 |
| 집합 | 독립 수명 팀과 선수 | 빈 마름모 |
| 합성 | 전체가 부분 수명 소유 | 채운 마름모 |
인터페이스를 구현하는 UML 관계는?
실체화(Realization).
빈 마름모 집합 / 채운 마름모 합성 / 빈 삼각형 일반화·실체화.
헷갈리는 지점 마름모를 부분 쪽에 그리지 않는다. 전체 쪽이다.
구조 다이어그램은 구성의 정적 모습을, 행위 다이어그램은 시간·흐름·상호작용을 표현한다. 클래스는 타입·필드·메서드, 객체는 특정 시점 인스턴스, 패키지는 그룹과 의존, 컴포넌트는 구성 요소, 배치는 실행 노드와 배포를 나타낸다.
유스케이스는 액터와 시스템 기능, 시퀀스는 시간 순서의 메시지, 커뮤니케이션은 객체 연결과 메시지, 활동은 처리 흐름, 상태는 상태와 전이 조건을 나타낸다. “시간 순 메시지”와 “업무 처리 흐름”을 구별하면 시퀀스·활동을 혼동하지 않는다.
서버 노드에 실행 파일을 배포하는 모습을 표현하는 것은?
배치(Deployment) 다이어그램.
구조: 클래스·객체·패키지·컴포넌트·배치·복합 구조. 행위: 유스케이스·활동·상태·상호작용.
헷갈리는 지점 패키지 다이어그램과 실제 장비 배치 다이어그램은 다른 것이다.
응집도는 한 모듈 내부 기능들이 한 목적에 얼마나 모이는지다. 결합도는 모듈들이 서로 얼마나 의존하는지다. 유지보수에는 높은 응집도·낮은 결합도가 유리하다.
기능 응집은 한 기능, 순차 응집은 앞 출력이 뒤 입력, 통신 응집은 같은 데이터, 절차 응집은 실행 순서, 시간 응집은 같은 시점, 논리 응집은 비슷한 종류, 우연 응집은 관련 없는 기능의 모음이다. 결합은 단순 자료 전달보다 제어 플래그·공유 전역·다른 모듈 내부 접근일수록 강하다.
| 사례 | 판정 |
|---|---|
| 앞 단계 결과를 뒤 단계 입력으로 사용 | 순차 응집 |
| 같은 고객 파일을 읽는 여러 처리 | 통신 응집 |
| 플래그로 상대 모듈 처리 분기 지시 | 제어 결합 |
| 필요한 정수 하나만 인자로 전달 | 자료 결합 |
| 서로 전역 변수를 공유 | 공통 결합 |
| 다른 모듈 내부 자료·코드에 직접 접근 | 내용 결합 |
구조체 전체를 넘기지만 일부 필드만 쓰는 결합은?
스탬프(자료 구조) 결합.
응집 약→강: 우연·논리·시간·절차·통신·순차·기능. 결합 약→강: 자료·스탬프·제어·외부·공통·내용.
헷갈리는 지점 교재별 외부 결합 위치 표현은 다를 수 있다. 가장 강한 내용과 가장 약한 자료를 확실히 구별한다.
SRP는 클래스가 변경되는 이유를 한 책임으로 모으는 원칙이다. OCP는 기존 안정 코드를 계속 수정하기보다 확장으로 새로운 동작을 넣도록 설계한다. LSP는 자식이 부모 계약을 지켜 대신 사용되어도 동작이 깨지지 않아야 한다.
ISP는 클라이언트가 쓰지 않는 메서드에 의존하지 않도록 인터페이스를 나누고 DIP는 고수준 정책과 저수준 구현이 구체 구현보다 추상에 의존하게 한다. 의존성 주입 DI는 필요한 의존 객체를 밖에서 제공하는 기법이다.
부모 대신 자식을 넣어도 계약이 유지되어야 한다는 원칙은?
LSP(리스코프 치환 원칙).
단일 책임·개방 폐쇄·리스코프 치환·인터페이스 분리·의존 역전.
헷갈리는 지점 DIP와 DI는 같은 약어가 아니다. DIP는 설계 원칙, DI는 구현 기법.
생성 패턴은 객체를 어떻게 만들지, 구조 패턴은 객체들을 어떻게 연결할지, 행위 패턴은 책임과 상호작용을 어떻게 나눌지 다룬다. 이름 하나만 외우기보다 변경하려는 축을 찾는다.
Adapter는 기존 API를 목표 인터페이스로 바꾼다. Bridge는 추상과 구현을 별도 계층으로 나눠 독립 확장한다. Observer는 상태 변화 통지를 구독자에게 전파하고 Strategy는 교체할 알고리즘을 외부 객체로 분리한다. State는 내부 상태에 따른 행동을 별도 상태 객체로 표현한다.
| 상황 | 패턴 | 분류 |
|---|---|---|
| 테마별 버튼·체크박스 제품군 생성 | Abstract Factory | 생성 |
| 필수·선택 옵션을 단계별 조립 | Builder | 생성 |
| 기존 외부 결제 API를 우리 인터페이스에 연결 | Adapter | 구조 |
| 리모컨 종류와 기기 종류를 독립 확장 | Bridge | 구조 |
| 파일·폴더를 동일 연산으로 처리 | Composite | 구조 |
| 주가 변경을 구독 화면들에 알림 | Observer | 행위 |
| 할인 계산 방법을 교체 | Strategy | 행위 |
| 편집기 실행 취소용 상태 보관 | Memento | 행위 |
| 전체 알고리즘 뼈대 고정, 일부 단계 재정의 | Template Method | 행위 |
요청을 객체로 만들어 실행·예약·취소를 관리하는 패턴은?
Command.
패턴 선택은 구현 모양보다 해결하려는 목적을 본다.
헷갈리는 지점 Factory Method는 생성 결정의 위임, Abstract Factory는 관련 제품군 생성이다.
MVC의 Model은 데이터·업무 규칙, View는 표시, Controller는 입력을 받아 흐름을 조정한다. 계층형은 화면·업무·데이터 접근처럼 책임을 층으로 나눈다. 파이프-필터는 독립 처리 단계를 연결하고 브로커는 중개자를 통해 분산 구성 요소를 연결한다.
UI 설계에서 와이어프레임은 배치 뼈대, 목업은 시각 형태, 프로토타입은 상호작용 검증, 스토리보드는 화면·이동·동작 설명이다. 서버에서 DTO는 계층 사이 전달 자료, DAO는 데이터 접근, 서비스는 업무 규칙을 담당하는 관용적 구분이다.
화면 흐름·입력·예외 처리 설명까지 적는 UI 문서는?
스토리보드.
UI 원칙 직관성·유효성·학습성·유연성. 책임 분리는 변경 영향을 줄인다.
헷갈리는 지점 DTO가 데이터베이스 테이블 그 자체인 것은 아니다. 명칭은 프레임워크·설계마다 다를 수 있다.
스프린트 리뷰는 결과와 목표 진척을 이해관계자와 살펴보고 다음 적응을 논의한다. 회고는 팀의 협업·과정·도구를 돌아보고 효과와 품질을 높이는 개선을 계획한다. Product Owner는 가치 극대화와 Product Backlog의 효과적인 관리에 책임이 있다.
협업 방식과 도구를 돌아보고 다음 스프린트의 개선을 정하는 이벤트는?
Sprint Retrospective(스프린트 회고).
2026.10.14 재확인: Scrum Guide 공식 가이드
리뷰는 제품 결과와 적응, 회고는 팀의 작업 방식 개선.
헷갈리는 지점 Daily Scrum을 관리자의 업무 보고 시간으로 정의하지 않는다. Sprint Review를 단순 승인 게이트로 외우지 않는다.
모두 유형 연습을 위해 직접 만든 문제입니다. C 예제의 printf·strlen은 필요한 표준 헤더가 포함된 상황을 가정합니다. Java는 표시된 클래스·main 위치에서 실행합니다. 단답은 동의어가 있을 수 있어 자동 판정 대신 자기 채점을 사용합니다.
“동시 사용자 1,000명일 때 응답시간 2초 이하”는 기능/비기능 중 무엇인가?
정답 비기능 요구사항
제공 기능 자체가 아니라 성능의 수준을 제한한다.
서로 호환되는 Button·Menu·Dialog 제품군을 테마별로 생성하는 패턴은?
정답 Abstract Factory
관련 제품군을 일관된 방식으로 만드는 추상 팩토리다.
주문 상태가 바뀌면 등록된 화면·메일 모듈에 알리는 패턴은?
정답 Observer
상태 변화에 의존 객체들을 통지하는 옵저버 패턴이다.
외부 결제 모듈의 다른 메서드 형태를 내부 Payment 인터페이스에 맞추는 패턴은?
정답 Adapter
기존 인터페이스를 기대하는 형태로 변환한다.
다른 모듈의 내부 지역 구현을 직접 참조·수정한다. 가장 해당하는 결합도는?
정답 내용 결합도
모듈 경계를 깨고 내부 내용에 직접 의존하는 강한 결합이다.
앞 작업의 출력이 다음 작업의 입력으로 사용되는 응집도는?
정답 순차적 응집도
같은 자료를 사용한다는 교환적 응집도보다 단계 사이 데이터 흐름이 강하게 연결된다.
객체 간 메시지 교환을 시간 흐름에 따라 보여주는 다이어그램은?
정답 시퀀스 다이어그램
생명선과 메시지로 상호작용 순서를 나타낸다.
매 반복에서 위험 분석을 핵심 단계로 두는 개발 모형은?
정답 나선형 모형
계획·위험 분석·개발·평가를 반복하며 위험을 줄이는 방식이다.
데이터를 변경하는 명령과 조회하는 질의의 모델을 분리하는 설계 원칙의 약어는?
정답 CQRS
Command Query Responsibility Segregation.
상태 변화를 이벤트로 발행하고 구독자가 비동기로 반응하는 아키텍처 스타일은?
정답 이벤트 기반 아키텍처
Event-Driven Architecture. 발행자는 구독자를 직접 알 필요가 없다.
전체 객체가 부분 객체의 수명을 소유하며 채운 마름모로 표시하는 관계는?
정답 합성
Composition. 집합은 빈 마름모이며 더 느슨한 전체-부분 관계.
앞 작업 결과를 다음 작업 입력으로 이용하는 모듈의 응집도는?
정답 순차 응집도
같은 데이터를 공유하는 통신 응집과 다르다.
업무 서비스가 특정 DB 구현 클래스 대신 저장소 인터페이스에 의존한다. 원칙은?
정답 의존 역전 원칙(DIP)
고수준 정책과 저수준 구현이 추상에 의존하도록 한다.
객체 사이 메시지를 시간 순으로 표현하는 UML 다이어그램은?
정답 시퀀스 다이어그램
업무 흐름 중심 활동 다이어그램과 구별한다.
관련된 버튼·메뉴·체크박스의 제품군을 테마별로 생성하는 패턴은?
정답 Abstract Factory
관련 제품군을 일관되게 생성한다. 생성 과정을 단계별 조립하는 Builder와 다르다.
팀이 협업 과정과 도구를 돌아보고 개선을 계획했다. 스크럼 이벤트는?
정답 Sprint Retrospective
스프린트 회고다. 결과와 다음 적응을 이해관계자와 살피는 Sprint Review와 구별한다.
알림 대상 객체 목록을 관리하다 상태 변경 시 등록 객체에 통지한다. 패턴명은?
정답 Observer
일대다 의존 관계에서 상태 변경을 관찰자에게 알리는 행위 패턴이다.
2024년 1회 · Java 객체 공유·C 비트 연산·응집도
2025년 3회 · 패키지 다이어그램·조건 커버리지·C/Java·SQL
2026년 1회 · Bridge·Observer·DB 설계 단계·비기능 요구·ISMS·HDLC