소프트웨어 설계 · 오답노트
2025년 3회
프로토타이핑 모형(Prototyping Model)에 대한 설명으로 옳지 않은 것은?
핵심 해설
프로토타이핑 모형은 사용자의 요구사항이 불명확할 때 최종 제품의 일부 기능이나 화면을 미리 견본(prototype)으로 만들어 보여 주고, 그에 대한 피드백을 받아 요구사항을 구체화해 나가는 개발 모형이다. 견본 제작 → 사용자 평가 → 요구 수정의 과정을 반복하기 때문에 개발 도중에 발견된 새로운 요구사항을 적극적으로 반영하는 것이 이 모형의 존재 이유이자 가장 큰 장점이다. 따라서 '새로운 요구사항의 반영이 불가능하다'는 설명은 오히려 폭포수 모형처럼 단계가 확정된 뒤 되돌아가기 어려운 선형 모형의 특징에 가깝다. 프로토타입은 완제품이 아니라 요구 확인용 견본이므로 폐기형(throwaway)과 진화형(evolutionary)으로 나뉜다.
보기별 해설
정리
자료 흐름도(DFD)의 각 요소별 표기 형태의 연결이 옳지 않은 것은?
핵심 해설
자료 흐름도(DFD)는 시스템 안에서 자료가 어떤 경로로 흐르고 어떤 처리를 거쳐 변환되는지를 도형으로 표현한 구조적 분석 도구로, 네 가지 구성 요소를 정해진 기호로 나타낸다. 처리(Process)는 원 또는 둥근 사각형, 자료 흐름(Data Flow)은 화살표, 자료 저장소(Data Store)는 두 줄의 평행선(직선), 단말(Terminator, 외부 엔티티)은 사각형으로 그린다. 따라서 자료 저장소를 삼각형으로 연결한 것이 잘못된 짝이다. 삼각형은 DFD의 표준 기호가 아니다.
보기별 해설
정리
HIPO(Hierarchy Input Process Output)에 대한 설명으로 거리가 먼 것은?
핵심 해설
HIPO(Hierarchy Input Process Output)는 시스템의 기능을 계층 구조로 나누고 각 기능을 입력-처리-출력의 형태로 기술하는 하향식(Top-down) 소프트웨어 개발 및 문서화 도구이다. 전체 기능을 큰 단위에서 작은 단위로 분할해 내려가므로 하향식이며, 상향식 개발 도구가 아니다. 도표는 시스템 전체 기능을 나무 구조로 보인 가시적 도표(도식 목차), 기능별 입력·처리·출력을 개괄한 총체적 도표(총괄 도표), 각 기능을 상세히 기술한 세부적 도표(상세 도표)로 구성된다. 표기가 간단해 이해와 유지보수가 쉽다는 점이 장점이다.
보기별 해설
정리
그래픽 표기법을 이용하여 소프트웨어 구성 요소를 모델링하는 럼바우 분석 기법에 포함되지 않는 것은?
핵심 해설
럼바우(Rumbaugh)의 객체지향 분석 기법인 OMT(Object Modeling Technique)는 시스템을 세 가지 관점의 그래픽 모델로 나누어 분석한다. 객체 모델링은 객체와 클래스, 속성, 연관 관계를 객체 다이어그램으로, 동적 모델링은 시간 흐름에 따른 상태와 사건을 상태 다이어그램으로, 기능 모델링은 자료의 변환 과정을 자료 흐름도(DFD)로 표현한다. 즉 객체·동적·기능 세 가지만이 럼바우 기법의 구성 요소이며, '분석 모델링'은 이 세 모델 어디에도 속하지 않는 명칭이다.
보기별 해설
정리
다음 내용이 설명하는 객체지향 설계 원칙은? • 클라이언트는 자신이 사용하지 않는 메소드와 의존관계 를 맺으면 안 된다. • 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안 된다.
핵심 해설
객체지향 설계 5원칙(SOLID) 가운데 클라이언트가 자신이 사용하지 않는 메소드에 의존하지 않도록 인터페이스를 사용 목적별로 잘게 쪼개라는 원칙은 인터페이스 분리 원칙(ISP, Interface Segregation Principle)이다. 하나의 거대한 인터페이스를 여러 클라이언트가 공유하면, 자신과 무관한 메소드가 바뀌어도 재컴파일·재배포 등의 영향을 받게 되므로 이를 막자는 취지이다. 지문의 두 문장 모두 '사용하지 않는 것에 의존하지 않는다'는 ISP의 정의를 그대로 서술한 것이다.
보기별 해설
정리
N-S(Nassi-Schneiderman) Chart에 대한 설명으로 거리가 먼 것은?
핵심 해설
N-S 차트(Nassi-Schneiderman Chart)는 순서도(Flowchart)의 단점을 보완하기 위해 고안된 도형식 표현 방법으로, 논리 기술에 중점을 두고 상자를 겹겹이 채워 넣는 방식으로 알고리즘을 표현한다. 순차, 선택 및 다중 선택, 반복이라는 구조적 프로그래밍의 세 가지 제어 구조만 사용하며, GOTO 같은 임의 분기를 표현할 수 없다는 것이 특징이다. 결정적으로 N-S 차트에는 화살표와 흐름선이 없고 상자의 중첩만으로 흐름을 나타내며, 화살표로 제어 흐름을 표현하는 것은 순서도(Flowchart)의 특징이다.
보기별 해설
정리
럼바우(Rumbaugh)의 객체지향 분석 절차를 가장 바르게 나열한 것은?
핵심 해설
럼바우(Rumbaugh)의 OMT 분석 절차는 객체 모형 → 동적 모형 → 기능 모형 순서로 진행되며, 앞 글자를 따 '객동기'로 암기한다. 먼저 객체 모형에서 시스템에 존재하는 객체와 클래스, 속성, 관계를 파악해 정적 구조를 확정하고, 다음으로 동적 모형에서 그 객체들이 사건에 따라 어떤 상태로 변하는지 시간 흐름을 분석하며, 마지막으로 기능 모형에서 자료가 어떤 처리를 거쳐 변환되는지를 자료 흐름도로 정리한다. 즉 구조를 먼저 세우고 그 위에 동작과 기능을 얹는 순서이다.
보기별 해설
정리
한 모듈 내의 각 구성 요소들이 공통의 목적을 달성하기 위하여 서로 얼마나 관련이 있는지의 기능적 연관의 정도를 나타내는 것은?
핵심 해설
한 모듈 내부의 구성 요소들이 공통의 목적을 위해 얼마나 밀접하게 관련되어 있는지를 나타내는 척도는 응집도(Cohesion)이다. 응집도는 모듈 '내부'의 결속력을 재는 개념으로 높을수록 좋은 설계이며, 기능적 > 순차적 > 교환(통신)적 > 절차적 > 시간적 > 논리적 > 우연적 순으로 강하다. 이에 대비되는 개념이 모듈 '사이'의 상호 의존 정도를 재는 결합도(Coupling)로, 결합도는 낮을수록 좋다. 좋은 모듈 설계의 원칙은 '응집도는 높게, 결합도는 낮게'이다.
보기별 해설
정리
결합도(Coupling) 단계를 약한 순서에서 강한 순서로 가장 옳게 표시한 것은?
핵심 해설
결합도(Coupling)는 모듈 사이의 상호 의존 정도로, 약한 것부터 강한 것 순으로 자료(Data) → 스탬프(Stamp) → 제어(Control) → 외부(External) → 공통(Common) → 내용(Content) 결합도의 여섯 단계로 나뉜다. 필요한 값만 매개변수로 주고받는 자료 결합도가 가장 약하고, 자료구조 전체를 넘기는 스탬프, 제어 플래그를 넘겨 상대의 논리를 좌우하는 제어, 전역 변수를 공유하는 공통, 다른 모듈의 내부를 직접 참조·수정하는 내용 결합도로 갈수록 강해진다. 보기 중 이 순서를 만족하는 배열은 Data → Stamp → Control → Common → Content이다.
보기별 해설
정리
UML에서 시퀀스 다이어그램의 구성 항목에 해당하지 않는 것은?
핵심 해설
시퀀스 다이어그램(Sequence Diagram)은 객체들이 시간 순서에 따라 주고받는 메시지를 표현하는 UML 동적(행위) 다이어그램이다. 구성 요소로는 상호작용에 참여하는 객체(Actor 포함), 객체의 존재 기간을 나타내는 점선인 생명선(Lifeline), 객체가 실제로 동작 중임을 나타내는 가는 직사각형인 실행(Activation, 활성 상자), 객체 사이의 요청·응답인 메시지(Message)가 있다. '확장(extend)'은 유스케이스 다이어그램에서 유스케이스 사이의 확장 관계를 나타내는 표기이므로 시퀀스 다이어그램의 구성 항목이 아니다.
보기별 해설
정리
UI의 종류로 멀티 터치(Multi-touch), 동작 인식(Gesture Recog nition) 등 사용자의 자연스러운 움직임을 인식하여 서로 주고받는 정보를 제공하는 사용자 인터페이스를 의미하는 것은?
핵심 해설
멀티 터치, 동작(제스처) 인식, 음성 인식처럼 사람의 자연스러운 신체 움직임을 그대로 입력으로 받아들이는 사용자 인터페이스를 NUI(Natural User Interface)라고 한다. 별도의 입력 장치 조작법을 배울 필요 없이 만지고 움직이는 일상적 행동만으로 조작한다는 점이 특징이다. UI 유형은 명령어를 직접 입력하는 CLI, 아이콘·창을 마우스로 조작하는 GUI, 신체 동작을 인식하는 NUI, 사물 자체가 인터페이스가 되는 OUI 순으로 발전해 왔다.
보기별 해설
정리
LOC 기법에 의하여 예측된 총 라인수가 36000라인개발에, 참여할 프로그래머가 6명프로그래머들의, 평균 생산성이 월간 300라인일 때 개발에 소요되는 기간을 계산한 결과로 가장 옳은 것은?
핵심 해설
LOC(원시 코드 라인 수) 기법에서 개발 기간은 '총 라인 수 ÷ (투입 인원 × 1인당 월 생산성)'으로 구한다. 여기서 총 라인 수는 36,000라인, 참여 인원은 6명, 1인당 월 생산성은 300라인이다. 전체 팀의 월 생산량은 6명 × 300라인 = 1,800라인이므로, 개발 기간은 36,000 ÷ 1,800 = 20개월이 된다. 참고로 노력(인월, M/M)은 36,000 ÷ 300 = 120인월이며, 이를 인원 6명으로 나누어도 같은 20개월이 나온다.
보기별 해설
정리
분산 시스템에서의 미들웨어(Middleware)와 관련한 설명으로 틀린 것은?
핵심 해설
미들웨어(Middleware)는 운영체제와 응용 프로그램 사이, 또는 서로 다른 이기종 시스템 사이에 위치해 통신과 데이터 교환을 중계하는 소프트웨어이다. 분산 환경에서 클라이언트와 서버, 응용 프로그램과 데이터베이스, 서로 다른 플랫폼의 컴포넌트 등 여러 구성 요소 사이를 폭넓게 연결하며, 서버의 물리적 위치를 몰라도 서비스를 이용할 수 있게 하는 위치 투명성을 제공한다. 따라서 연결 대상을 '애플리케이션과 사용자 사이'로만 한정한 설명은 미들웨어의 역할을 지나치게 좁게 서술한 것이라 틀렸다.
보기별 해설
정리
객체에게 어떤 행위를 하도록 지시하는 명령은?
핵심 해설
객체지향에서 객체에게 어떤 행위(연산)를 수행하라고 지시하는 명령은 메시지(Message)이다. 객체는 자신의 데이터를 캡슐화해 감추고 있으므로 다른 객체가 직접 속성을 건드릴 수 없고, 오직 메시지를 보내 해당 객체의 메소드를 호출하는 방식으로만 상호작용한다. 메시지는 수신 객체의 이름, 실행할 메소드 이름, 필요한 인자로 구성된다. 클래스는 객체의 틀, 객체는 그 틀로 만들어진 실체이며, 메시지는 그 실체들 사이를 오가는 요청이다.
보기별 해설
정리
애자일 소프트웨어 개발 기법의 가치가 아닌 것은?
핵심 해설
애자일 선언문(Agile Manifesto)이 밝힌 네 가지 가치는 프로세스와 도구보다 개인과 상호작용을, 포괄적인 문서보다 작동하는 소프트웨어를, 계약 협상보다 고객과의 협력을, 계획을 따르기보다 변화에 대응하기를 더 중시한다는 것이다. 각 문장은 '오른쪽 것도 가치가 있지만 왼쪽 것에 더 가치를 둔다'는 형식이다. 따라서 '작동하는 소프트웨어보다 문서에 더 가치를 둔다'는 서술은 애자일 가치의 방향을 정확히 뒤집은 것으로, 오히려 문서 중심의 전통적 개발 방식에 해당한다.
보기별 해설
정리
GoF(Gangs of Four) 디자인 패턴의 구조 패턴에 속하지 않는 것은?
핵심 해설
GoF 디자인 패턴은 목적에 따라 생성(Creational) 5개, 구조(Structural) 7개, 행위(Behavioral) 11개로 총 23개가 분류된다. 구조 패턴은 클래스나 객체를 조합해 더 큰 구조를 만드는 방법을 다루며 Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy가 여기 속한다. 보기 중 Observer는 한 객체의 상태 변화를 의존 객체들에게 자동으로 통지하는 행위 패턴이므로 구조 패턴에 속하지 않는다.
보기별 해설
정리
UML에 대한 설명으로 옳지 않은 것은?
핵심 해설
UML(Unified Modeling Language)은 OMG(Object Management Group)가 표준으로 채택한 통합 모델링 언어로, 객체지향 분석·설계 방법론의 표기법을 통일하는 것을 목표로 만들어졌다. 사물(Things), 관계(Relationships), 다이어그램(Diagrams)으로 구성되며 구조 다이어그램 7종과 행위 다이어그램 7종을 제공한다. UML은 특정 도메인에 한정되지 않는 범용 모델링 언어이므로 실시간 시스템이나 분산 시스템의 분석·설계에도 얼마든지 사용할 수 있다. 따라서 '사용될 수 없다'는 서술이 옳지 않다.
보기별 해설
정리
미들웨어(Middleware)에 대한 설명으로 틀린 것은?
핵심 해설
미들웨어(Middleware)는 여러 운영체제 환경에서 응용 프로그램들 사이에 위치해 통신과 연계를 담당하는 소프트웨어로, 이기종 시스템을 이어 주는 인프라 역할을 한다. 미들웨어의 중요한 설계 목표는 투명성(Transparency)으로, 사용자와 응용 프로그램이 내부의 통신 방식이나 데이터 교환 절차를 몰라도 서비스를 이용할 수 있게 감추는 것이다. 따라서 '사용자가 내부 동작을 쉽게 확인할 수 있어야 한다'는 서술은 투명성 원칙과 정면으로 어긋나므로 틀렸다. 오히려 내부 동작은 드러나지 않아야 한다.
보기별 해설
정리
럼바우(Rumbaugh)의 객체지향 분석 기법 중 자료 흐름도(DFD)를 주로 이용하는 것은?
핵심 해설
럼바우(Rumbaugh) 객체지향 분석의 세 모델은 각각 사용하는 표기 도구가 다르다. 객체 모델링은 객체 다이어그램(클래스 다이어그램), 동적 모델링은 상태 다이어그램(State Diagram), 기능 모델링은 자료 흐름도(DFD)를 사용한다. 기능 모델링은 프로세스 사이에서 자료가 어떻게 흘러 어떤 값으로 변환되는지를 다루므로 자료의 이동과 처리를 그리는 DFD가 가장 적합하다. 따라서 자료 흐름도를 주로 이용하는 것은 기능 모델링이다.
보기별 해설
정리
모듈화를 통해 분리된 시스템의 각 기능들로서브루틴서브시스템, , , 소프트웨어 내의 프로그램작업, 단위 등과 같은 의미로 사용되는 것은?
핵심 해설
모듈화(Modularization)를 통해 분리된 시스템의 각 기능 단위를 모듈(Module)이라고 하며, 서브루틴·서브시스템·프로그램·작업 단위 등이 모두 같은 의미로 쓰인다. 모듈은 독립적으로 컴파일·수정·재사용이 가능한 최소 단위로, 하나의 모듈은 하나의 기능을 수행하도록 설계하는 것이 바람직하다. 좋은 모듈은 응집도가 높고 결합도가 낮으며, 이렇게 나누면 개발과 유지보수, 오류 추적이 쉬워진다.