← 목록

소프트웨어 설계 · 오답노트

2025년 2회

Q1

럼바우(Rumbaugh)의 객체지향 분석 절차를 가장 바르게 나열한 것은?

1객체 모형 → 동적 모형 → 기능 모형
2객체 모형 → 기능 모형 → 동적 모형
3기능 모형 → 동적 모형 → 객체 모형
4기능 모형 → 객체 모형 → 동적 모형
정답 1번 · 객체 모형 → 동적 모형 → 기능 모형

핵심 해설

럼바우(Rumbaugh)의 객체지향 분석 기법인 OMT(Object Modeling Technique)는 시스템을 세 가지 관점으로 나누어 순차적으로 분석한다. 먼저 객체 모형(Object Model)에서 시스템에 필요한 객체와 클래스, 속성, 객체 간 관계를 객체 다이어그램으로 표현한다. 다음 동적 모형(Dynamic Model)에서 상태 다이어그램을 이용해 시간 흐름에 따른 객체의 상태 변화와 사건(event)에 의한 제어 흐름을 표현한다. 마지막 기능 모형(Functional Model)에서 자료 흐름도(DFD)로 프로세스 간 자료의 흐름과 값의 변환 과정을 표현한다. 따라서 순서는 객체 → 동적 → 기능이며 '객동기'로 암기한다.

보기별 해설

1. 객체 모형 → 동적 모형 → 기능 모형이 럼바우 OMT의 정확한 분석 순서이다. 정적 구조(객체)를 먼저 확정하고, 그 위에 시간에 따른 상태 변화(동적)를 얹은 뒤, 마지막에 자료 변환 과정(기능)을 정의하는 흐름이다.
2. 객체 모형 → 기능 모형 → 동적 모형은 동적 모형과 기능 모형의 순서가 뒤바뀐 배열이다. 자료 흐름도로 표현하는 기능 모형은 상태 변화를 정리한 뒤 마지막에 작성한다.
3. 기능 모형 → 동적 모형 → 객체 모형은 순서를 완전히 뒤집은 배열이다. 럼바우 기법은 객체와 클래스를 식별하는 객체 모형에서 출발하므로 기능 모형이 첫 단계가 될 수 없다.
4. 기능 모형 → 객체 모형 → 동적 모형 역시 시작이 기능 모형이므로 옳지 않다. 구조 파악 없이 자료 변환부터 정의할 수는 없으며, 동적 모형은 기능 모형보다 앞선다.

정리

럼바우 OMT 3단계 — 객체 모형(객체 다이어그램) → 동적 모형(상태 다이어그램) → 기능 모형(자료 흐름도), 앞글자 '객동기'로 암기한다.
#소프트웨어설계#객체지향
Q2

UI의 종류로 멀티 터치(Multi-touch), 동작 인식(Gesture Recognition) 등 사용자의 자연스러운 움직임을 인식하여 서로 주고받는 정보를 제공하는 사용자 인터페이스를 의미하는 것은?

1GUKGraphical User Interface)
2OUI(Organic User Interface)
3NUI(Natural User Interface)
4CLK(Command Line Interface)
정답 3번 · NUI(Natural User Interface)

핵심 해설

사용자 인터페이스(UI)는 사용자가 시스템과 상호작용하는 방식에 따라 분류된다. 멀티 터치, 동작 인식, 음성 인식처럼 사람이 본래 가진 자연스러운 움직임과 감각을 그대로 입력으로 사용하는 인터페이스를 NUI(Natural User Interface)라 한다. 별도의 장치 조작법을 배우지 않아도 되도록 사람의 신체 동작 자체를 명령으로 삼는 것이 특징이다. 스마트폰의 핀치 줌이나 키넥트 방식의 제스처 제어가 대표적인 사례이다.

보기별 해설

1. GUI(Graphical User Interface, 보기의 'GUK'는 PDF 추출 오류)는 아이콘·창·버튼 등 그래픽 요소를 마우스나 포인팅 장치로 조작하는 인터페이스이다. 그래픽 객체를 매개로 하므로 신체 동작 자체를 인식하는 방식은 아니다.
2. OUI(Organic User Interface)는 현실에 존재하는 모든 사물이 입출력 장치가 되는 유기적 인터페이스로, 휘거나 접히는 디스플레이처럼 형태 변화 자체가 입력이 되는 개념이다. 멀티 터치·동작 인식을 가리키는 표준 용어는 아니다.
3. NUI(Natural User Interface)는 멀티 터치, 동작 인식, 음성 인식 등 사람의 자연스러운 움직임과 감각을 그대로 입력으로 사용하는 인터페이스이다. 별도의 조작 장치 학습 없이 직관적으로 정보를 주고받게 한다.
4. CLI(Command Line Interface, 보기의 'CLK'는 PDF 추출 오류)는 사용자가 키보드로 명령어 텍스트를 입력하고 결과를 문자로 받는 인터페이스이다. 정해진 명령어 문법을 익혀야 하므로 자연스러운 움직임 인식과는 정반대에 가깝다.

정리

UI 유형 — CLI(명령어 텍스트), GUI(그래픽 요소 + 포인팅), NUI(터치·제스처·음성 등 자연스러운 동작), OUI(사물 자체가 입출력 장치).
#소프트웨어설계
Q3

소프트웨어 설계에서 사용되는 대표적인 추상화(Abstraction) 기법 이 아닌 것은?

1자료 추상화
2제어 추상화
3과정 추상화
4강도 추상화
정답 4번 · 강도 추상화

핵심 해설

추상화(Abstraction)는 복잡한 문제에서 세부 사항을 감추고 본질적인 특성만 추려내어 표현하는 설계 기법이다. 소프트웨어 설계에서 사용하는 대표적인 추상화는 과정 추상화, 자료 추상화, 제어 추상화의 세 가지이다. 과정 추상화는 알고리즘의 세부 절차를 생략하고 수행 흐름만 표현하며, 자료 추상화는 데이터의 내부 표현을 감추고 연산 중심으로 자료 구조를 정의한다. 제어 추상화는 이벤트나 인터럽트 같은 제어 사건의 정확한 처리 메커니즘을 숨기고 개념적으로만 표현한다. '강도 추상화'는 존재하지 않는 용어이다.

보기별 해설

1. 자료 추상화는 대표적인 추상화 기법이다. 데이터가 내부적으로 어떻게 저장·표현되는지를 감추고, 자료에 수행할 수 있는 연산 중심으로 자료 구조를 정의한다(추상 자료형, ADT).
2. 제어 추상화는 대표적인 추상화 기법이다. 이벤트, 인터럽트 등 제어 사건이 실제로 어떤 메커니즘으로 처리되는지는 감추고 개념적으로만 표현한다.
3. 과정 추상화는 대표적인 추상화 기법이다. 전체 알고리즘의 세부 절차를 생략하고 수행 과정의 흐름만 개괄적으로 표현하며, 상세 설계 단계에서 점차 구체화된다.
4. 강도 추상화는 소프트웨어 설계에서 쓰이는 표준 용어가 아니다. '강도'는 응집도(Cohesion)를 '모듈 강도'로 부르던 관행에서 온 표현일 뿐 추상화 기법의 분류에는 존재하지 않는다.

정리

설계 추상화 3종 — 과정 추상화(알고리즘 흐름), 자료 추상화(데이터 표현 은닉·ADT), 제어 추상화(제어 사건 메커니즘 은닉). '강도 추상화'는 없다.
#소프트웨어설계
Q4

다음 설명에 해당하는 도표는? 시스템의 기능을 여러 개의 고유 모듈들로 분할하여 이들 간의 인터페이스를 계층 구조로 표현한 것으로, 가시적 도표(Visual Table of Contents), 총체적 도표(Overview Diagram), 세부적 도표(Detail Diagram)가 있다.

1Flow Chart
2Burn-down Chart
3Visual Diagram
4HIPO Chart
정답 4번 · HIPO Chart

핵심 해설

HIPO(Hierarchy Input Process Output)는 시스템의 기능을 여러 모듈로 분할하고 각 모듈의 입력·처리·출력 관계와 모듈 간 계층 구조를 도표로 표현하는 기법이다. HIPO Chart는 세 종류로 구성되는데, 가시적 도표(Visual Table of Contents)는 전체 기능의 계층 구조를 트리 형태로 보여주는 목차 역할을 하고, 총체적 도표(Overview Diagram)는 각 기능의 입력·처리·출력을 개괄적으로 나타내며, 세부적 도표(Detail Diagram)는 총체적 도표의 내용을 상세히 기술한다. 문제의 세 도표 명칭이 그대로 HIPO의 구성 요소이다.

보기별 해설

1. Flow Chart(순서도)는 처리 절차와 판단 분기를 기호와 화살표로 이어 알고리즘의 실행 흐름을 나타내는 도표이다. 기능의 계층 구조나 입력·처리·출력 구분을 표현하지 않는다.
2. Burn-down Chart(번다운 차트)는 애자일·스크럼에서 스프린트 기간 동안 남은 작업량이 줄어드는 추이를 그린 진척 관리 그래프이다. 설계 도표가 아니라 프로젝트 관리 도구이다.
3. Visual Diagram은 소프트웨어 공학의 표준 도표 명칭이 아니다. HIPO의 구성 요소는 '가시적 도표(Visual Table of Contents)'이며 이와 혼동하도록 만든 보기이다.
4. HIPO Chart는 시스템 기능을 모듈로 분할해 입력·처리·출력과 계층 구조를 표현하는 도표로, 가시적 도표(VTOC)·총체적 도표(Overview Diagram)·세부적 도표(Detail Diagram)로 구성된다. 하향식 설계와 문서화에 함께 쓰인다.

정리

HIPO = Hierarchy + Input·Process·Output. 구성은 가시적 도표(VTOC, 계층 목차) + 총체적 도표(개괄 IPO) + 세부적 도표(상세 IPO).
#소프트웨어설계#네트워크
Q5

요구사항 분석이 어려운 이유가 아닌 것은?

1개발자와 사용자 간의 지식이나 표현의 차이가 커서 상호 이해 가 쉽지 않다.
2사용자의 요구는 예외가 거의 없어 열거와 구조화가 어렵지 않다.
3사용자의 요구사항이 모호하고 불명확하다.
4소프트웨어 개발 과정 중에 요구사항이 계속 변할 수 있다.
정답 2번 · 사용자의 요구는 예외가 거의 없어 열거와 구조화가 어렵지 않다.

핵심 해설

요구사항 분석이 어려운 근본 원인은 요구사항 자체가 불완전하고 유동적이며, 이를 전달하는 사람과 받는 사람의 배경 지식이 다르다는 데 있다. 사용자는 자신이 원하는 바를 정확한 용어로 표현하지 못해 요구가 모호하거나 상충하고, 개발자와 사용자의 도메인 지식·표현 방식 차이 때문에 같은 말을 다르게 이해하기 쉽다. 또한 요구사항은 개발이 진행되는 도중에도 시장·업무 환경 변화로 계속 바뀐다. 여기에 사용자의 요구는 예외 상황과 특수 규칙이 매우 많아 빠짐없이 열거하고 구조화하기가 오히려 어렵다.

보기별 해설

1. 개발자와 사용자 간 지식·표현 차이는 요구사항 분석을 어렵게 만드는 대표적 원인이다. 업무 도메인 용어와 기술 용어의 간극 때문에 같은 문장을 서로 다르게 해석하는 의사소통 장벽이 생긴다.
2. 사용자의 요구에 예외가 거의 없어 열거와 구조화가 쉽다는 진술은 사실과 반대이다. 실제 업무 요구에는 예외 규칙과 특수 케이스가 많아 모두 나열하고 체계적으로 정리하기가 어렵다.
3. 사용자 요구사항의 모호성과 불명확성은 분석을 어렵게 하는 원인이 맞다. '빠르게', '편리하게' 같은 주관적 표현은 검증 가능한 기준으로 바꾸기 전까지 구현 근거가 되지 못한다.
4. 개발 도중 요구사항이 계속 변하는 것 역시 분석을 어렵게 하는 원인이다. 요구사항 변경은 이미 확정된 설계와 산출물에 파급되므로 변경 관리와 추적이 필요하다.

정리

요구사항 분석의 난점 — 표현의 모호성, 개발자·사용자 간 지식 격차, 개발 중 잦은 변경, 그리고 예외와 특수 규칙이 많아 완전한 열거·구조화가 곤란함.
#소프트웨어설계#요구사항
Q6

자료 흐름도(DFD)의 각 요소별 표기 형태의 연결이 옳지 않은 것은?

1Process : 원
2Data Flow : 화살표
3Data Store : 삼각형
4Terminator : 사각형 - 1 기출문제 & 정답 년 2회 정보처리기사 필기
정답 3번 · Data Store : 삼각형

핵심 해설

자료 흐름도(DFD, Data Flow Diagram)는 시스템 내 자료의 흐름과 변환 과정을 네 가지 기본 기호로 표현하는 구조적 분석 도구이다. 처리(Process)는 원 또는 둥근 사각형, 자료 흐름(Data Flow)은 화살표, 자료 저장소(Data Store)는 평행선(두 줄 또는 한쪽이 열린 직사각형), 단말(Terminator, 외부 엔티티)은 사각형으로 표기한다. 따라서 자료 저장소를 삼각형으로 연결한 것이 옳지 않다. 삼각형은 DFD의 기본 기호가 아니다.

보기별 해설

1. Process : 원 연결은 옳다. 처리(Process)는 입력 자료를 받아 출력 자료로 변환하는 기능 단위이며 원 또는 둥근 사각형(버블)으로 표기하고 내부에 처리 이름과 번호를 적는다.
2. Data Flow : 화살표 연결은 옳다. 자료 흐름은 구성 요소 사이를 이동하는 자료를 나타내며, 화살표 위에 흐르는 자료의 이름을 표기한다.
3. Data Store : 삼각형 연결이 틀렸다. 자료 저장소는 파일이나 데이터베이스처럼 자료가 머무는 곳으로, 두 개의 평행선 사이에 저장소 이름을 적는 형태로 표기한다.
4. Terminator : 사각형 연결은 옳다. 단말(외부 엔티티)은 시스템 경계 밖에서 자료를 제공하거나 제공받는 사람·조직·외부 시스템이며 사각형으로 표기한다.

정리

DFD 4대 기호 — Process(원/둥근 사각형), Data Flow(화살표), Data Store(평행선 두 줄), Terminator(사각형). 삼각형은 DFD 기호가 아니다.
#소프트웨어설계
Q7

익스트림 프로그래밍(XP)의 5가지 가치로 거리가 먼 것은?

1용기
2의사소통
3정형 분석
4피드백
정답 3번 · 정형 분석

핵심 해설

익스트림 프로그래밍(XP, eXtreme Programming)은 짧은 반복 주기와 고객 참여를 강조하는 애자일 방법론이며, 실천 방법의 바탕이 되는 다섯 가지 가치를 제시한다. 그 다섯은 의사소통(Communication), 단순성(Simplicity), 피드백(Feedback), 용기(Courage), 존중(Respect)이다. Pair Programming, Test-Driven Development, Continuous Integration 같은 실천 항목은 이 가치들을 실현하기 위한 구체적 기법이다. '정형 분석'은 수학적 표기로 명세를 기술하는 정형 기법 계열의 용어로 XP의 가치가 아니다.

보기별 해설

1. 용기(Courage)는 XP의 다섯 가치 중 하나이다. 잘못된 코드를 과감히 버리고 리팩토링하거나 어려운 진실을 팀에 말할 수 있는 태도를 뜻한다.
2. 의사소통(Communication)은 XP의 다섯 가치 중 하나이다. 문서보다 개발자·고객 간 대면 대화를 중시하며 Pair Programming과 고객 상주(On-site Customer)로 실현된다.
3. 정형 분석은 XP의 가치가 아니라 수학적 원리와 표기법으로 요구사항을 명세·검증하는 정형 기법(Formal Method) 계열의 개념이다. 경량 반복 개발을 지향하는 XP의 가치 목록과는 무관하다.
4. 피드백(Feedback)은 XP의 다섯 가치 중 하나이다. 단위 테스트와 짧은 릴리즈 주기를 통해 시스템과 고객으로부터 빠르게 반응을 받아 다음 반복에 반영한다.

정리

XP 5가지 가치 — 의사소통, 단순성, 피드백, 용기, 존중. 앞글자로 '용단의 피존'처럼 묶어 외운다.
#소프트웨어설계
Q8

UI의 설계 지침으로 틀린 것은?

1이해하기 편하고 쉽게 사용할 수 있는 환경을 제공해야 한다.
2주요 기능을 메인 화면에 노출하여 조작이 쉽도록 하여야 한다.
3치명적인 오류에 대한 부정적인 사항은 사용자가 인지할 수 없도록 한다.
4사용자의 직무연령성별, , 등 다양한 계층을 수용하여야 한다.
정답 3번 · 치명적인 오류에 대한 부정적인 사항은 사용자가 인지할 수 없도록 한다.

핵심 해설

UI 설계 지침은 사용자가 시스템을 쉽고 정확하게 사용할 수 있게 하는 원칙들로, 직관성·유효성·학습성·유연성을 바탕으로 한다. 특히 오류 처리에서는 오류가 발생했을 때 그 사실과 원인, 대처 방법을 사용자가 즉시 알 수 있도록 명확한 메시지로 알려야 한다는 것이 핵심 원칙이다. 오류를 감추면 사용자는 잘못된 상태를 인지하지 못한 채 작업을 계속해 더 큰 피해를 입는다. 따라서 치명적 오류를 사용자가 인지할 수 없게 한다는 지침은 틀렸다.

보기별 해설

1. 이해하기 편하고 쉽게 사용할 수 있는 환경 제공은 UI의 직관성·학습성 원칙에 해당하는 옳은 지침이다. 누구나 쉽게 이해하고 최소한의 학습으로 사용할 수 있어야 한다.
2. 주요 기능을 메인 화면에 노출해 조작을 쉽게 하는 것은 유효성과 접근 효율을 높이는 옳은 지침이다. 자주 쓰는 기능일수록 적은 단계로 도달할 수 있어야 한다.
3. 치명적 오류를 사용자가 인지할 수 없게 한다는 것은 틀린 지침이다. 오류 발생 시에는 원인과 해결 방법을 명확한 메시지로 즉시 알려 사용자가 상황을 파악하고 복구할 수 있게 해야 한다.
4. 직무·연령·성별 등 다양한 계층을 수용해야 한다는 것은 접근성(Accessibility)과 유연성 원칙에 해당하는 옳은 지침이다. 특정 사용자군만을 전제로 설계해서는 안 된다.

정리

UI 설계 4원칙 — 직관성(쉬운 이해), 유효성(정확·신속한 목적 달성), 학습성(쉬운 습득), 유연성(오류 수용과 다양한 사용자 포용). 오류는 감추지 말고 명확히 알린다.
#소프트웨어설계
Q9

UI를 설계할 때 사용자 측면에서의 요구사항으로사용자가, 원하는 목표를 달성하기 위해 수행할 내용을 기술하는 것은?

1프로토타입
2레이아웃
3유스케이스
4스토리보드
정답 3번 · 유스케이스

핵심 해설

유스케이스(Use Case)는 사용자(액터)가 시스템을 통해 달성하려는 목표와 그 목표를 이루기 위해 수행하는 상호작용 절차를 기술한 것이다. 시스템이 내부적으로 어떻게 구현되는지가 아니라 '사용자가 무엇을 하려 하고 시스템이 무엇을 해 주는가'를 사용자 관점에서 서술하므로, UI 설계 시 사용자 측면의 요구사항을 도출하는 데 쓰인다. 유스케이스 다이어그램과 유스케이스 명세서(기본 흐름, 대안 흐름, 사전·사후 조건)로 표현한다.

보기별 해설

1. 프로토타입(Prototype)은 최종 제품에 앞서 만드는 시험용 모형이다. 화면과 동작을 미리 구현해 사용자에게 확인받는 검증 수단이지, 사용자가 수행할 내용을 기술한 요구사항 문서는 아니다.
2. 레이아웃(Layout)은 화면 안에서 메뉴, 버튼, 콘텐츠 영역 등 구성 요소를 어떤 위치와 크기로 배치할지 정한 화면 배치 설계이다. 사용자 목표와 수행 절차가 아니라 시각적 배열을 다룬다.
3. 유스케이스(Use Case)는 사용자가 원하는 목표를 달성하기 위해 시스템과 주고받는 상호작용 절차를 사용자 관점에서 기술한 것이다. 액터, 기본 흐름과 대안 흐름, 사전·사후 조건으로 구성된다.
4. 스토리보드(Storyboard)는 화면 이미지와 각 화면의 설명·동작 정의를 순서대로 엮어 개발자와 디자이너가 참조하는 UI 설계 산출물이다. 화면 단위 구현 지침서에 가까우며 요구사항 자체를 정의하는 문서는 아니다.

정리

유스케이스 = 액터가 목표 달성을 위해 시스템과 주고받는 상호작용 절차(사용자 관점 요구사항). 프로토타입은 시험 모형, 레이아웃은 화면 배치, 스토리보드는 화면 설계 문서.
#소프트웨어설계#요구사항
Q10

다음 중 SOLID 원칙이라고 불리는 객체지향 설계 원칙에 속하지 않는 것은?

1ISP(Interface Segregation Principle)
2DIP(Dependency Inversion Principle)
3LSP(Liskov Substitution Principle)
4SSO(Single Sign On)
정답 4번 · SSO(Single Sign On)

핵심 해설

SOLID는 로버트 마틴이 정리한 객체지향 설계 5원칙의 머리글자이다. SRP(Single Responsibility Principle, 단일 책임), OCP(Open-Closed Principle, 개방-폐쇄), LSP(Liskov Substitution Principle, 리스코프 치환), ISP(Interface Segregation Principle, 인터페이스 분리), DIP(Dependency Inversion Principle, 의존 역전)로 구성된다. SSO(Single Sign On)는 한 번의 인증으로 여러 시스템을 이용하는 통합 인증 기술로, 설계 원칙이 아니라 보안·인증 분야의 용어이다.

보기별 해설

1. ISP(Interface Segregation Principle, 인터페이스 분리 원칙)는 SOLID의 'I'이다. 클라이언트가 사용하지 않는 메소드에 의존하지 않도록 큰 인터페이스를 역할별로 잘게 나누라는 원칙이다.
2. DIP(Dependency Inversion Principle, 의존 역전 원칙)는 SOLID의 'D'이다. 상위 모듈이 하위 구체 클래스에 직접 의존하지 말고 양쪽 모두 추상(인터페이스)에 의존하도록 하라는 원칙이다.
3. LSP(Liskov Substitution Principle, 리스코프 치환 원칙)는 SOLID의 'L'이다. 서브타입은 언제나 자신의 기반 타입으로 교체해도 프로그램의 정확성이 유지되어야 한다는 원칙이다.
4. SSO(Single Sign On)는 한 번의 로그인으로 연계된 여러 시스템에 재인증 없이 접근하게 하는 통합 인증 기술이다. 보안·인증 영역의 용어이므로 객체지향 설계 원칙인 SOLID에 속하지 않는다.

정리

SOLID — SRP(단일 책임), OCP(개방-폐쇄), LSP(리스코프 치환), ISP(인터페이스 분리), DIP(의존 역전). SSO는 통합 인증 기술로 무관하다.
#소프트웨어설계#객체지향#네트워크
Q11

객체지향 분석 방법론 중 Jacobson 방법에 해당하는 것은?

1E-R 다이어그램을 사용하여 객체의 행위를 데이터 모델링하 는데 초점을 둔 방법이다.
2객체동적기능, , 모델로 나누어 수행하는 방법이다.
3미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하 는 방법이다.
4Use-Case를 강조하여 사용하는 방법이다.
정답 4번 · Use-Case를 강조하여 사용하는 방법이다.

핵심 해설

객체지향 분석 방법론은 제안자마다 강조점이 다르다. 야콥슨(Jacobson)의 OOSE(Object-Oriented Software Engineering)는 사용자와 시스템의 상호작용을 Use-Case로 도출하고, 이 Use-Case를 분석·설계·테스트 전 과정의 중심 축으로 삼는 것이 가장 큰 특징이다. 이에 비해 코드-요든은 E-R 다이어그램 기반, 럼바우는 객체·동적·기능 세 모형, 부치(Booch)는 미시적·거시적 개발 프로세스를 사용한다. 따라서 Use-Case를 강조하는 방법이 야콥슨에 해당한다.

보기별 해설

1. E-R 다이어그램을 사용해 객체의 행위를 데이터 모델링하는 방법은 코드-요든(Coad-Yourdon) 방법이다. 객체 식별, 구조 식별, 주제 정의, 속성과 서비스 정의 순으로 분석을 진행한다.
2. 객체·동적·기능 세 모형으로 나누어 수행하는 방법은 럼바우(Rumbaugh)의 OMT 기법이다. 객체 다이어그램, 상태 다이어그램, 자료 흐름도를 각각 사용한다.
3. 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 방법은 부치(Booch) 방법이다. 여러 다이어그램으로 클래스와 객체를 분석하며 정적·동적 측면을 함께 다룬다.
4. Use-Case를 강조하여 사용하는 방법이 야콥슨(Jacobson)의 OOSE이다. 액터와 시스템의 상호작용을 유스케이스로 정의하고 이를 분석·설계·테스트 전 과정의 기준으로 삼는다.

정리

객체지향 분석 방법 — 럼바우(객체·동적·기능), 부치(미시적·거시적 프로세스), 야콥슨(Use-Case 중심 OOSE), 코드-요든(E-R 기반), 위르파스-브록(고객 만족 중심).
#소프트웨어설계#객체지향#프로세스
Q12

한 모듈 내의 각 구성 요소들이 공통의 목적을 달성하기 위하여 서로 얼마나 관련이 있는지의 기능적 연관의 정도를 나타내는 것은?

1Cohesion
2Coupling
3Structure
4Unity
정답 1번 · Cohesion

핵심 해설

모듈의 품질은 응집도와 결합도라는 두 축으로 평가한다. 응집도(Cohesion)는 한 모듈 내부의 구성 요소들이 하나의 공통 목적을 위해 얼마나 밀접하게 관련되어 있는지를 나타내는 기능적 연관의 정도로, 모듈 '내부'를 보는 척도이다. 결합도(Coupling)는 서로 다른 모듈 '사이'의 상호 의존 정도를 나타낸다. 좋은 설계는 응집도는 높고 결합도는 낮아야 하므로, 문제에서 묻는 모듈 내부의 기능적 연관 정도는 Cohesion이다.

보기별 해설

1. Cohesion(응집도)은 한 모듈 안의 구성 요소들이 공통 목적을 위해 얼마나 밀접하게 관련되어 있는지를 나타내는 척도이다. 기능적 응집도가 가장 강하고 우연적 응집도가 가장 약하며, 높을수록 좋은 설계이다.
2. Coupling(결합도)은 모듈과 모듈 사이의 상호 의존 정도를 나타내는 척도이다. 모듈 내부가 아니라 모듈 간 관계를 보는 개념이며, 자료 결합도가 가장 약하고 내용 결합도가 가장 강하다.
3. Structure(구조)는 시스템을 구성하는 모듈들의 계층적 짜임 자체를 가리키는 일반적인 용어이다. 모듈 내부의 기능적 연관 정도를 측정하는 척도의 이름은 아니다.
4. Unity는 모듈화 평가에서 쓰이는 표준 용어가 아니다. 소프트웨어 설계에서 모듈 내부 연관도를 가리키는 정식 명칭은 Cohesion이다.

정리

좋은 모듈 = 응집도(Cohesion, 모듈 내부 연관) 높게 + 결합도(Coupling, 모듈 간 의존) 낮게.
#소프트웨어설계
Q13

소프트웨어 공학에서 모델링(Modeling)과 관련한 설명으로 틀린 것은?

1개발팀이 응용문제를 이해하는 데 도움을 줄 수 있다.
2유지보수 단계에서만 모델링 기법을 활용한다.
3개발될 시스템에 대하여 여러 분야의 엔지니어들이 공통된 개 념을 공유하는 데 도움을 준다.
4절차적인 프로그램을 위한 자료 흐름도는 프로세스 위주의 모 델링 방법이다.
정답 2번 · 유지보수 단계에서만 모델링 기법을 활용한다.

핵심 해설

모델링(Modeling)은 복잡한 시스템을 추상화해 그림·기호·문서로 표현하는 활동으로, 개발 전 과정에서 활용된다. 요구사항 분석 단계에서는 문제 영역을 이해하는 수단이 되고, 설계 단계에서는 구조와 동작을 표현하며, 구현·유지보수 단계에서는 시스템 이해와 변경 영향 파악을 돕는다. 또 개발자·기획자·현업 담당자 등 서로 다른 분야의 사람들이 같은 개념을 공유하는 의사소통 도구가 된다. 따라서 유지보수 단계에서만 모델링을 활용한다는 진술은 틀렸다.

보기별 해설

1. 개발팀이 응용 문제를 이해하는 데 도움을 준다는 것은 모델링의 옳은 효과이다. 추상화된 모델은 복잡한 업무 도메인의 핵심 구조를 드러내 문제 파악을 쉽게 한다.
2. 유지보수 단계에서만 모델링 기법을 활용한다는 진술은 틀렸다. 모델링은 요구사항 분석, 설계, 구현, 유지보수까지 개발 생명주기 전반에서 사용된다.
3. 여러 분야 엔지니어가 공통 개념을 공유하는 데 도움을 준다는 것은 모델링의 옳은 효과이다. 표준화된 표기법(UML 등)은 서로 다른 배경의 참여자 사이에서 공통 언어 역할을 한다.
4. 절차적 프로그램을 위한 자료 흐름도가 프로세스 위주의 모델링 방법이라는 것은 옳은 설명이다. DFD는 자료가 어떤 프로세스를 거쳐 변환되는지를 중심으로 시스템을 표현한다.

정리

모델링은 개발 전 단계(분석·설계·구현·유지보수)에서 활용되는 추상화·의사소통 수단이다. DFD는 프로세스 중심, 객체 모델은 데이터·객체 중심 모델링이다.
#소프트웨어설계#프로세스
Q14

GoF(Gangs of Four) 디자인 패턴 중 생성 패턴으로 옳은 것은?

1Singleton Pattern
2Adapter Pattern
3Decorator Pattern
4State Pattern 1
정답 1번 · Singleton Pattern

핵심 해설

GoF 디자인 패턴은 목적에 따라 생성(Creational), 구조(Structural), 행위(Behavioral) 세 그룹으로 나뉜다. 생성 패턴은 객체를 만드는 과정을 캡슐화해 시스템이 어떤 구체 클래스를 사용하는지 감추는 패턴으로 Factory Method, Abstract Factory, Builder, Prototype, Singleton이 속한다. 그중 Singleton은 특정 클래스의 인스턴스가 오직 하나만 생성되도록 보장하고 전역 접근점을 제공하는 생성 패턴이다. Adapter와 Decorator는 구조 패턴, State는 행위 패턴이다.

보기별 해설

1. Singleton Pattern은 생성(Creational) 패턴이다. 클래스의 인스턴스가 하나만 만들어지도록 생성자를 제한하고 어디서나 그 유일한 인스턴스에 접근할 수 있는 전역 접근점을 제공한다.
2. Adapter Pattern은 구조(Structural) 패턴이다. 호환되지 않는 인터페이스를 가진 클래스를 클라이언트가 기대하는 인터페이스로 변환해 함께 동작하게 하므로 생성 패턴이 아니다.
3. Decorator Pattern은 구조(Structural) 패턴이다. 객체를 감싸는 방식으로 상속 없이 실행 중에 기능을 동적으로 덧붙이며, 객체 생성 방식을 다루지 않는다.
4. State Pattern은 행위(Behavioral) 패턴이다. 객체의 내부 상태에 따라 행동이 달라지도록 상태별 클래스를 두어 조건문 없이 동작을 전환하며, 생성 패턴에 속하지 않는다.

정리

GoF 생성 패턴 5종 — Factory Method, Abstract Factory, Builder, Prototype, Singleton. Adapter·Decorator는 구조, State는 행위 패턴이다.
#소프트웨어설계#디자인패턴#GoF
Q15

요구사항 명세 기법에 대한 설명으로 틀린 것은?

1비정형 명세 기법은 사용자의 요구를 표현할 때 자연어를 기반 으로 서술한다.
2비정형 명세 기법은 사용자의 요구를 표현할 때 Z 비정형 명세 기법을 사용한다.
3정형 명세 기법은 사용자의 요구를 표현할 때 수학적인 원리와 표기법을 이용한다.
4정형 명세 기법은 비정형 명세 기법에 비해 표현이 간결하다.
정답 2번 · 비정형 명세 기법은 사용자의 요구를 표현할 때 Z 비정형 명세 기법을 사용한다.

핵심 해설

요구사항 명세 기법은 표현 방식에 따라 비정형(Informal) 명세와 정형(Formal) 명세로 나뉜다. 비정형 명세는 자연어나 그림, 도표를 사용해 서술하므로 작성과 이해가 쉬운 대신 의미가 모호해질 수 있다. 정형 명세는 Z, VDM, Petri-net처럼 수학적 원리와 표기법을 사용해 요구사항을 기술하므로 표현이 간결하고 명세의 일관성·완전성을 검증할 수 있으나 작성자와 독자 모두 전문 지식이 필요하다. 따라서 Z는 정형 명세 기법이며, 이를 비정형 명세 기법이라고 한 진술이 틀렸다.

보기별 해설

1. 비정형 명세 기법이 자연어를 기반으로 사용자의 요구를 서술한다는 것은 옳은 설명이다. 상태 차트나 유스케이스 명세처럼 이해하기 쉬운 형태를 쓰지만 의미의 모호성이 남을 수 있다.
2. 비정형 명세 기법이 Z를 사용한다는 설명은 틀렸다. Z 명세는 집합론과 술어 논리를 기반으로 하는 대표적인 정형(Formal) 명세 기법이며, 같은 계열로 VDM, Petri-net이 있다.
3. 정형 명세 기법이 수학적 원리와 표기법을 이용한다는 것은 옳은 설명이다. 요구사항을 엄밀하게 기술해 명세의 정확성과 일관성을 검증할 수 있게 한다.
4. 정형 명세 기법이 비정형 명세보다 표현이 간결하다는 것은 옳은 설명이다. 수학적 기호로 압축해 기술하므로 간결하고 모호성이 적으나, 이해하려면 전문 지식이 필요하다.

정리

명세 기법 — 정형: Z, VDM, Petri-net(수학적 표기, 간결·검증 가능, 난이도 높음) / 비정형: 자연어·상태 차트·유스케이스(작성 쉬움, 모호성 존재).
#소프트웨어설계#요구사항
Q16

GoF(Gang of Four) 디자인 패턴을 생성구조행동, , 패턴의 세 그룹으로 분류할 때구조, 패턴이 아닌 것은?

1Adapter 패턴
2Bridge 패턴
3Builder 패턴
4Proxy 패턴
정답 3번 · Builder 패턴

핵심 해설

GoF 디자인 패턴의 구조(Structural) 패턴은 클래스와 객체를 조합해 더 큰 구조를 만드는 방법을 다루며 Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy 일곱 가지가 속한다. 반면 Builder는 복잡한 객체의 생성 과정과 표현 방법을 분리해 동일한 생성 절차로 서로 다른 표현의 객체를 만들 수 있게 하는 생성(Creational) 패턴이다. 객체를 '어떻게 만드는가'를 다루므로 구조 패턴에 해당하지 않는다.

보기별 해설

1. Adapter 패턴은 구조(Structural) 패턴이다. 서로 다른 인터페이스를 가진 클래스 사이에 변환 계층을 두어, 기존 클래스를 수정하지 않고 클라이언트가 원하는 인터페이스로 사용할 수 있게 한다.
2. Bridge 패턴은 구조(Structural) 패턴이다. 추상 계층과 구현 계층을 분리해 두 계층이 서로 독립적으로 확장될 수 있게 하며, 상속에 의한 클래스 조합 폭발을 위임으로 해결한다.
3. Builder 패턴은 생성(Creational) 패턴이다. 복잡한 객체의 생성 과정과 표현 방법을 분리해, 동일한 생성 절차로 서로 다른 표현의 객체를 단계적으로 만들 수 있게 하므로 구조 패턴이 아니다.
4. Proxy 패턴은 구조(Structural) 패턴이다. 실제 객체에 대한 대리자를 두어 접근을 제어하며, 생성 비용이 큰 객체의 지연 생성이나 접근 권한 검사, 원격 객체 대리에 사용된다.

정리

GoF 구조 패턴 7종 — Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy. Builder는 생성 패턴이다.
#소프트웨어설계#디자인패턴#GoF
Q17

UML에서 활용되는 다이어그램 중시스템의, 동작을 표현하는 행위 (Behavioral) 다이어그램에 해당하지 않는 것은?

1유스케이스 다이어그램(Use Case Diagram)
2시퀀스 다이어그램(Sequence Diagram)
3활동 다이어그램(Activity Diagram)
4배치 다이어그램(Deployment Diagram)
정답 4번 · 배치 다이어그램(Deployment Diagram)

핵심 해설

UML 다이어그램은 시스템의 정적 구조를 표현하는 구조(Structural) 다이어그램과 동작·흐름을 표현하는 행위(Behavioral) 다이어그램으로 나뉜다. 구조 다이어그램에는 클래스, 객체, 컴포넌트, 배치(Deployment), 복합체 구조, 패키지 다이어그램이 속한다. 행위 다이어그램에는 유스케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 타이밍 다이어그램이 속한다. 배치 다이어그램은 소프트웨어 산출물이 어느 하드웨어 노드에 배포되는지 물리적 구성을 나타내는 구조 다이어그램이므로 행위 다이어그램이 아니다.

보기별 해설

1. 유스케이스 다이어그램(Use Case Diagram)은 행위 다이어그램이다. 액터와 시스템이 제공하는 기능(유스케이스), 그 사이의 관계를 표현해 사용자 관점의 시스템 동작을 나타낸다.
2. 시퀀스 다이어그램(Sequence Diagram)은 행위 다이어그램이다. 객체 간에 주고받는 메시지를 시간 순서에 따라 생명선(lifeline) 위에 배열해 상호작용 흐름을 표현한다.
3. 활동 다이어그램(Activity Diagram)은 행위 다이어그램이다. 업무나 처리의 흐름을 액션, 분기, 병렬 처리(fork/join)로 표현해 순서도와 유사한 형태로 작업 절차를 나타낸다.
4. 배치 다이어그램(Deployment Diagram)은 구조(Structural) 다이어그램이다. 실행 모듈과 컴포넌트가 어떤 물리적 노드(서버, 장비)에 배치되고 어떻게 연결되는지를 표현하므로 행위 다이어그램에 속하지 않는다.

정리

UML — 구조: 클래스·객체·컴포넌트·배치·복합체 구조·패키지 / 행위: 유스케이스·시퀀스·커뮤니케이션·상태·활동·타이밍.
#소프트웨어설계#UML
Q18

분산 시스템에서의 미들웨어(Middleware)와 관련한 설명으로 틀린 것은?

1분산 시스템에서 다양한 부분을 관리하고 통신하며 데이터를 교환하게 해주는 소프트웨어로 볼 수 있다.
2위치 투명성(Location Transparency)을 제공한다.
3분산 시스템의 여러 컴포넌트가 요구하는 재사용 가능한 서비 스의 구현을 제공한다.
4애플리케이션과 사용자 사이에서만 분산 서비스를 제공한다.
정답 4번 · 애플리케이션과 사용자 사이에서만 분산 서비스를 제공한다.

핵심 해설

미들웨어(Middleware)는 운영체제와 응용 프로그램 사이, 또는 서로 다른 시스템 사이에 위치해 통신과 데이터 교환, 트랜잭션 관리 등을 중계하는 소프트웨어이다. 분산 시스템에서 미들웨어는 클라이언트와 서버, 응용 프로그램과 데이터베이스, 서로 다른 플랫폼의 컴포넌트 등 다양한 구성 요소 사이를 연결하며, 자원의 실제 위치를 몰라도 사용할 수 있게 하는 위치 투명성을 제공한다. 따라서 '애플리케이션과 사용자 사이에서만' 분산 서비스를 제공한다는 설명은 미들웨어의 역할 범위를 지나치게 좁힌 틀린 진술이다.

보기별 해설

1. 분산 시스템의 여러 부분을 관리하고 통신·데이터 교환을 가능하게 하는 소프트웨어라는 설명은 미들웨어의 정의로 옳다. 이기종 환경을 잇는 중간 계층 역할을 한다.
2. 위치 투명성(Location Transparency) 제공은 미들웨어의 옳은 특징이다. 사용자나 응용 프로그램이 자원의 물리적 위치를 알지 못해도 동일한 방식으로 접근할 수 있게 한다.
3. 여러 컴포넌트가 요구하는 재사용 가능한 서비스의 구현을 제공한다는 설명은 옳다. 인증, 트랜잭션 관리, 메시지 전달 같은 공통 기능을 미들웨어가 공통 서비스로 제공한다.
4. 애플리케이션과 사용자 사이에서만 분산 서비스를 제공한다는 설명은 틀렸다. 미들웨어는 클라이언트-서버, 응용-데이터베이스, 서로 다른 플랫폼의 컴포넌트 등 다양한 계층 사이에서 동작한다.

정리

미들웨어 = OS와 응용, 또는 이기종 시스템 사이의 중계 소프트웨어. 위치 투명성과 공통 서비스를 제공하며 적용 범위는 사용자-응용 구간에 한정되지 않는다.
#소프트웨어설계
Q19

결합도(Coupling)에 대한 설명으로 틀린 것은?

1데이터 결합도(Data Coupling)는 두 모듈이 매개 변수로 자료 를 전달할 때 자료 구조 형태로 전달되어 이용될 때 데이터가 결합되어 있다고 한다.
2내용 결합도(Content Coupling)는 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다고 한다.
3공통 결합도(Common Coupling)는 두 모듈이 동일한 전역 데 이터를 접근한다면 공통 결합되어 있다고 한다.
4결합도(Coupling)는 두 모듈 간의 상호작용또는, 의존도 정도 를 나타내는 것이다.
정답 1번 · 데이터 결합도(Data Coupling)는 두 모듈이 매개 변수로 자료 를 전달할 때 자료 구조 형태로 전달되어 이용될 때 데이터가 결합되어 있다고 한다.

핵심 해설

결합도(Coupling)는 두 모듈 사이의 상호 의존 정도를 나타내며, 약한 순서로 자료(Data) → 스탬프(Stamp) → 제어(Control) → 외부(External) → 공통(Common) → 내용(Content) 결합도로 구분한다. 이 중 자료 결합도는 모듈 간에 꼭 필요한 개별 데이터 항목만을 매개변수로 주고받는 가장 바람직한 결합이다. 반면 배열이나 레코드 같은 자료 구조 전체를 매개변수로 전달하고 일부만 사용하는 경우는 스탬프 결합도(Stamp Coupling)에 해당한다. 따라서 자료 결합도를 자료 구조 형태의 전달로 설명한 1번이 틀렸다.

보기별 해설

1. 데이터 결합도(Data Coupling)를 자료 구조 형태로 전달하는 경우라고 설명한 것은 틀렸다. 데이터 결합도는 개별 자료 항목(원자값)만 매개변수로 주고받는 가장 약한 결합이며, 자료 구조 전체를 전달하는 것은 스탬프 결합도이다.
2. 내용 결합도(Content Coupling)는 한 모듈이 다른 모듈의 내부 자료나 코드를 직접 참조·수정하는 가장 강하고 나쁜 결합으로, 설명이 옳다. 다른 모듈 내부로 분기하는 경우도 여기에 해당한다.
3. 공통 결합도(Common Coupling)는 두 모듈이 동일한 전역 변수·공유 데이터 영역을 함께 사용하는 결합으로, 설명이 옳다. 전역 데이터가 바뀌면 참조하는 모든 모듈이 영향을 받는다.
4. 결합도(Coupling)가 두 모듈 간 상호작용 또는 의존 정도를 나타낸다는 것은 옳은 정의이다. 결합도가 낮을수록 모듈의 독립성이 높아 수정과 재사용이 쉬워진다.

정리

결합도 약→강 — 자료(개별 인자) < 스탬프(자료 구조 전달) < 제어(제어 플래그) < 외부(외부 자료 참조) < 공통(전역 변수) < 내용(내부 직접 참조).
#소프트웨어설계
Q20

소프트웨어 개발 방법 중 요구사항 분석(Requirements Analysis)과 거리가 먼 것은?

1비용과 일정에 대한 제약 설정
2타당성 조사
3요구사항 정의 문서화
4설계 명세서 작성
정답 4번 · 설계 명세서 작성

핵심 해설

요구사항 분석(Requirements Analysis)은 사용자의 요구를 도출하고 그 타당성을 조사해 무엇을 만들 것인지 정의한 뒤 요구사항 명세서로 문서화하는 활동이다. 여기에는 타당성 조사(경제적·기술적·법적 검토), 요구사항 도출과 분류, 비용과 일정 등 제약 조건 설정, 요구사항 정의 문서화와 검토가 포함된다. 반면 설계 명세서 작성은 확정된 요구사항을 어떻게 구현할지 구조와 모듈을 정하는 설계(Design) 단계의 산출물이다. 즉 분석은 'What', 설계는 'How'를 다루므로 설계 명세서 작성이 가장 거리가 멀다.

보기별 해설

1. 비용과 일정에 대한 제약 설정은 요구사항 분석에 포함되는 활동이다. 가용 예산과 납기라는 제약을 확인해야 요구사항의 우선순위와 실현 범위를 정할 수 있다.
2. 타당성 조사(Feasibility Study)는 요구사항 분석의 초기 활동이다. 도출된 요구사항이 기술적·경제적·법적으로 실현 가능한지 검토해 개발 착수 여부를 판단한다.
3. 요구사항 정의 문서화는 요구사항 분석의 결과를 요구사항 명세서(SRS)로 정리하는 활동이다. 이후 설계와 테스트의 기준이 되므로 분석 단계의 핵심 산출물이다.
4. 설계 명세서 작성은 요구사항이 확정된 뒤 시스템 구조, 모듈 분할, 인터페이스, 자료 구조를 정의하는 설계 단계의 활동이다. '무엇을'이 아니라 '어떻게'를 다루므로 요구사항 분석과는 거리가 멀다.

정리

요구사항 분석 = 무엇(What)을 만들지 정의 — 타당성 조사, 제약(비용·일정) 설정, 요구사항 명세서 문서화. 설계 명세서 작성은 어떻게(How)를 다루는 설계 단계의 활동이다.
#소프트웨어설계#요구사항