본문 바로가기
정보처리기사/필기

[정보처리기사] 필기 - 소프트웨어 설계(2)

by UDDT 2025. 2. 11.

⎮ 소프트웨어 모델링

 소프트웨어 모델링 : 현실 세계에 존재하는 데이터를 추상화하여 컴퓨터 세계로 옮기는 변환 과정

 모델링 작업의 결과물은 다른 모델링에 영향을 줌.

 개념적 모델링 / 논리적 모델링으로 구분

 데이터 모델링의 결과물 : '데이터 모델'

1. 소프트웨어 모델링과 관련한 설명으로 틀린 것은?
① 모델링 작업의 결과물은 다른 모델링 작업에 영향을 줄 수 없다.
② 구조적 방법론에서는 DFD(Data Flow Diagram), DD(Data Dictionary) 등을 사용하여 요구사항의 결과를 표현한다.
③ 객체지향 방법론에서는 UML 표기법을 사용한다.
④ 소프트웨어 모델을 사용할 경우 개발될 소프트웨어에 대한 이해도 및 이해 당사자 간의 의사소통 향상에 도움이 된다.

2. 소프트웨어 공학에서 모델링(Modeling)과 관련한 설명으로 틀린 것은?
① 개발팀이 응용 문제를 이해하는 데 도움을 줄 수 있다.
② 유지보수 단계에서만 모델링 기법을 활용한다.
③ 개발될 시스템에 대하여 여러 분야의 엔지니어들이 공통된 개념을 공유하는 데 도움을 준다.
④ 절차적인 프로그램을 위한 자료 흐름도는 프로세스 위주의 모델링 방법이다.
-> 전반적인 부분에서 모델링을 활용함. 모델링의 주된 목적은 '의사소통'

 

⎮ 자료 흐름도(DFD)

 자료는 처리를 거쳐 변환될 떄마다 새로운 명칭을 부여해야 함

 자료 흐름도의 최하위 처리(Process)는 소단위 명세서를 갖는다.

 어떤 처리(Process)가 출력 자료를 산출하기 위해서는 필요한 자료가 반드시 입력되어야 함

 시스템이나 프로그램 간의 총체적인 데이터 흐름을 표시할 수 있으며, 기본적인 데이터 요소와 그들 사이의 데이터 흐름 형태로 기술.

 다차원적이며 자료 흐름 그래프 또는 버블(Bubble) 차트라고도 함.

 구조적 분석 기법에 이용 됨.

 그림 중심의 표현이고 하향식 분할 원리를 적용

DFD 예시 그림

1. 자료 흐름도(Data Flow Diagram)의 구성 요소로 옳은 것은?
① Process, Data Flow, Data Store, Comment
② Process, Data Flow, Data Store, Terminator
③ Data Flow, Data Store, Terminator, Data Dictionary
④ Process, Data Store, Terminator, Mini-Spec

2. DFD(Data Flow Diagram)에 대한 설명으로 틀린 것은?
① 자료 흐름 그래프 또는 버블(Bubble) 차트라고도 한다.
② 구조적 분석 기법에 이용된다.
③ 시간 흐름을 명확하게 표현할 수 있다.
④ DFD의 요소는 화살표, 원, 사각형, 직선(단선 / 이중선)으로 표시한다.
-> 시간 흐름이 아니라 데이터의 흐름을 명확하게 표현하는 것

 

⎮ 데이터 사전(DD, Data Dictionary)

 데이터 사전(자료사전) : 시스템 자신이 필요로 하는 여러 가지 *객체에 관한 정보를 포함하고 있는 시스템 데이터베이스

 시스템 카탈로그(System Catalog), 메타 데이터(Mata data)라고도 함.

 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 SQL 문을 이용하여 내용 검색이 가능함.

 * 객체 : 기본 테이블, 뷰, 인덱스, 데이터베이스, 패키지, 접근 권한 등

 - 자료 사전 표기법

기 호 의 미 설 명
= 자료의 정의 ~로 구성되어 있다(is compose of)
+ 자료의 연결 그리고(and, along with)
( ) 자료의 생략 생략 가능한 자료(Optional)
[ | ] 자료의 선택 다중 택일(Selection), 또는(or)
{ } 자료의 반복
(Iteration of)
{ }n : 최소 n번 이상 반복
{ }m  : 최대 m번 이하 반복
{ }ⁿ𝘮 : m번 이상 n번 이하 반복
** 자료의 설명 주석(Comment)
| 대체 항목 나열 또는(or)
1. 데이터 사전에 대한 설명으로 틀린 것은?
① 시스템 카탈로그 또는 시스템 데이터베이스라고도 한다.
② 데이터 사전 역시 데이터베이스의 일종이므로 일반 사용자가 생성, 유지 및 수정할 수 있다.
③ 데이터베이스에 대한 데이터인 메타 데이터(Metadata)를 저장하고 있다.
④ 데이터 사전에 있는 데이터에 실제로 접근하는데 필요한 위치 정보는 데이터 디렉터리(Data Directory)라는 곳에서 관리한다.
-> 시스템 데이터를 일반 사용자가 참조는 할 수 있으나 생성 유지, 수정할 수는 없음. (DBMS가 자동으로 관리)

2. 자료 사전에서 자료의 생략을 의미하는 기호는?
① { }
② **
③ =
④ ( )

 

⎮ 응집도, 결합도 그리고 효과적인 모듈 설계

  모듈은 하나의 기능만 잘 수행하면 되고, 독립성 있게 설계하고 개발하는 것이 좋음.

 응집도가 높을수록 독립성을 보장하고, 결합도는 낮을수록 독립성을 보장함.

 - 응집도(Cohesion) : 한 모듈 내에 있는 처리 요소들 사이의 기능적인 연관 정도를 나타내는 것

 (높음) 기능적 응집도 > 순차적 응집도 > 교환적 응집도 > 절차적 응집도 > 시간적 응집도 > 논리적 응집도 > 우연적 응집도 (낮음)

 - 결합도(Coupling) : 모듈들이 변수를 공유하지 않도록 결합도를 낮추어야 함.(모듈 간의 관계에 대한 얘기)

 (낮음) 데이터 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도 (높음)

 - 효과적인 모듈화 설계 방법

    응집도는 강하게, 결합도는 약하게 설계

    복잡도와 중복성을 줄이고, 일관성을 유지할 수 있도록 설계

    유지보수가 용이하도록 설계

    모듈 크기시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 설계

    모듈 기능예측이 가능해야 하며 지나치게 제한적이어서는 안됨.

1. 다음 중 Myers가 구분한 응집도(Cohesion)의 정도에서 가장 낮은 응집도를 갖는 단계는?
① 순차적 응집도(Sequential Cohesion)
② 기능적 응집도(Functional Cohesion)
③ 시간적 응집도(Temporal Cohesion)
④ 우연적 응집도(Coincidental Cohesion)
-> 시스템 데이터를 일반 사용자가 참조는 할 수 있으나 생성 유지, 수정할 수는 없음. (DBMS가 자동으로 관리)

2. 효과적인 모듈 설계를 위한 유의 사항으로 거리가 먼 것은?
① 모듈 간의 결합도를 약하게 하면 모듈 독립성이 향상된다.
② 복잡도와 중복성을 줄이고 일관성을 유지시킨다.
③ 모듈의 기능은 예측이 가능해야 하며 지나치게 제한적이어야 한다.
④ 유지보수가 용이해야 한다.
-> 지나치게 제한적이지 않게 설계

 

⎮ 객체지향 / 캡슐화

 - 객체지향(Object Oriented) : 현실 세계의 대상체인 개체(Entity)를 속성(Attribute)과 메서드(Method)로 결합하여

    객체(Object)로 표현(모델링)하는 것.

    소프트웨어 개발의 대상을 기능이 아닌 개체를 대상으로 하며, 개체 간의 상호관계를 모델링하는 방식

 - 캡슐화(Encapsulation) : 서로 관련성이 높은 데이터(속성)와 그와 관련된 기능(메서드, 함수)을 묶는 기법

    결합도가 낮아져 소프트웨어 개발에 있어 재사용성이 높아짐.

    정보은닉을 통하여 타 객체와 메시지 교환 시 인터페이스가 단순해짐.

1. 객체지향의 주요 개념에 대한 설명으로 틀린 것은?
① 캡슐화는 상위 클래스에서 속성이나 연산을 전달받아 새로운 형태의 클래스로 확장하여 사용하는 것을 의미한다.
② 객체는 실세계에 존재하거나 생각할 수 있는 것을 말한다.
③ 클래스는 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 것이다.
④ 다형성은 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질이다.
-> 상위 클래스에서 속성이나 연산을 전달받아 새로운 형태의 클래스로 확장하여 사용하는 것은 상속

2. 객체지향 기법에서 상위 클래스의 메서드와 속성을 하위 클래스가 물려받는 것을 의미하는 것은?
① Abstraction
② Polymorphism
③ Encapsulation
④ Inheritance
-> 지나치게 제한적이지 않게 설계

 

객체지향의 구성 요소와 설계 원칙

- 객체지향의 구성 요소

구 분 내 용
Class - 유사한 객체를 정의한 프로그램
- 같은 종류의 객체 집합으로 '속성 + 행위'를 정의한 것으로, 일반적인 Type을 의미
- 객체지향 프로그램의 기본적인 사용자 정의 데이터형
- 객체지향 프로그램에서 데이터를 추상화하는 단위
- 같은 종류의 Object 속성과 연산을 정의하고 있는 Template
- Class에 속한 Instance를 Object라 함
- 상위 클래스(부모 클래스, Super Class), 하위 클래스(자식 클래스,Sub Class)가 있음.
Object - 데이터와 함수를 묶어 캡슐화한 것
- 데이터와 함수를 묶어 캡슐화하는 대상이 됨
- 하나의 소프트웨어 모듈
- Class(클래스)에 속한 Instance(인스턴스)를 Object(객체)라 함
   Attribute : Object가 가지고 있는 데이터 값
   Method : Object의 행위가 되는 함수
Message Object 간에 서로 주고받는 통신
1. 객체에 대한 설명으로 틀린 것은?
① 객체는 상태, 동작, 고유 식별자를 가진 모든 것이라 할 수 있다.
② 객체는 공통 속성을 공유하는 클래스들의 집합이다.
③ 객체는 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 독립된 존재이다.
④ 객체의 상태는 속성값에 의해 정의된다.
->  클래스는 공통 속성을 공유하는 객체들의 집합

2. 객체지향 프로그램에서 데이터를 추상화하는 단위는?
① 메소드
② 클래스
③ 상속성
④ 메시지
-> 지나치게 제한적이지 않게 설계

 

- 객체지향 설계 원칙(SOLID)

구 분 설 명
단일 책임의 원칙, SRP
(Single Responsibility 
Principle)
모든 클래스는 단일 목적으로 생성되고, 하나의 책임만 가져야 한다.
개방-폐쇄의 원칙, OCP
(Open Closed Principle)
소프트웨어 구성 요소확장에 대해서는 개방되어야 하나 수정에 대해서는 폐쇄적이어야 한다.
리스코프 치환 원칙, LSP
(Liskov Substitution
Principle)
부모 클래스가 들어갈 자리에 자식 클래스를 대체하여도 계획대로 작동해야 한다.
인터페이스 분리 원칙, ISP
(Interface Segregation 
Principle)
클라이언트는 자신이 사용하지 않는 메소드와 의존관계를 맺으면 안된다.
클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다.
의존 역전 원칙, DIP
(Dependency Inversion
Principle)
의존 관계를 맺으면 변하기 쉽고 변화 빈도가 높은 것보다
변하기 어렵고 변화 빈도가 낮은 것에 의존한다.
1. 클래스 설계 원칙에 대한 바른 설명은?
① 단일 책임 원칙 : 하나의 클래스만 변경 가능해야 한다.
② 개방 - 폐쇄의 원칙 : 클래스는 확장에 대해 열려 있어야하며, 변경에 대해 닫혀있어야 한다.
③ 리스코프 교체의 원칙 : 여러 개의 책임을 가진 클래스는 하나의 책임을 가진 클래스로 대체되어야 한다.
④ 의존관계 역전의 원칙 : 클라이언트는 자신이 사용하는 메소드와 의존관계를 갖지 않도록 해야 한다.

 

⎮ CBD

 - CBD(Component Based Development) : 재사용이 가능한 컴포넌트의 개발 또는 상용 컴포넌트들을 조합하여

    애플리케이션 개발 생산성과 품질을 높이고, 시스템 유지보수 비용을 최소화할 수 있는 개발 방법 프로세스

    컴포넌트 단위의 개발 및 조립을 통하여 정보 시스템의 신속한 구축, 변경,

    확장의 용이성과 타 시스템의 호환성을 달성하고자 하는 소프트웨어 공학 프로세스, 방법론 및 기술의 총체적 개념

1. 소프트웨어 개발 방법론 중 CBD(Component Based Development)에 대한 설명으로 틀린 것은?
① 생산성과 품질을 높이고, 유지보수 비용을 최소화할 수 있다.
② 컴포넌트 제작 기법을 통해 재사용성을 향상시킨다.
③ 모듈의 분할과 정복에 의한 하향식 설계 방식이다.
④ 독립적인 컴포넌트 단위의 관리로 복잡성을 최소화할 수 있다.

 

GoF 디자인 패턴

 - GoF(Gang of Four) 디자인 패턴 : 설계가 아닌 코드적으로 재사용하는 것.

    구조 : Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy

    행위 : Chain of Responsibility, Iterator, Command, Interpreter, Memento, Observer, State, Strategy,

              Vistor, Template Method, Mediator

    생성 : Factory Method, Singleton, Prototype, Builder, Abstraction Factory

 

 - 디자인 패턴을 사용할 때 장∙단점

구 분 설 명
장점 - 개발자 간의 원활한 의사소통 지원
- 소프트웨어 구조 파악이 쉬움
- 재사용을 통한 개발 시간 단축
- 설계 변경 요청에 대한 유연한 대처 가능
- 객체지향 설계 및 구현의 생산성을 높이는데 적합
단점 - 객체지향 설계 / 구현 위주로 사용
- 초기 투자 비용이 부담됨.

 

- 디자인 패턴의 특징

   자주 사용하는 설계 형태를 정형화하여 유형별로 설계 템플릿을 만들어 두고 소프트웨어 개발 중 나타나는 과제를

  해결하기 위한 방법 중 한 가지이므로 개발 프로세스를 무시할 수는 없음. (효율적이라고 해서 무조건 사용하는 게 아님)

1. GoF(Gang of Four) 디자인 패턴을 생성, 구조, 행동 패턴의 세 그룹으로 분류할 때, 구조 패턴이 아닌 것은?
① Adapter 패턴
② Bridge 패턴
③ Builder 패턴
④ Proxy 패턴
-> Builder 패턴은 생성 패턴

2. 디자인 패턴을 이용한 소프트웨어 재사용으로 얻어지는 장점이 아닌 것은?
① 소프트웨어 코드의 품질을 향상시킬 수 있다.
② 개발 프로세스를 무시할 수 있다.
③ 개발자들 사이의 의사소통을 원활하게 할 수 있다.
④ 소프트웨어의 품질과 생산성을 향상시킬 수 있다.

 

요구사항 검토 기법

 - 요구사항 검토 기법

방 법 설 명
프로토타이핑 시제품인 프로토타입을 제작하여 검증
테스트 설계 Test Case를 생성하고, 요구사항이 현실적으로 테스트 가능한지 검토
CASE(Computer Aid
Software Engineering)
- 소프트웨어를 개발하는 시점부터 요구 분석, 설계, 개발, 유지보수에 이르기까지
소프트웨어 생명주기의 전 단계를 연결
- 요구사항 변경의 추적과 분석을 통해 요구사항을 관리
동료 검토(Peer Review) 명세 작성자가 동료들에게 설명하고 동료들이 결함을 찾는 방법
워크스루(Walk Through)
* 짧은 회의가 핵심
- 절차 : 검토 회의 전 명세서 배포 > 짧은 검토 회의 > 결함 발견
- 사용 사례를 확장하여 명세하거나 설계 다이어그램, 원시 코드, 테스트 케이스 등에
적용할 수 있음.
- 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을
이해하려고 할 때 유용함
- 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해보는 것
인스펙션(Inspection) 명세서 작성자와 전문가가 명세서의 결함을 발견하는 방법
1. 소프트웨어 공학에서 워크스루(Walkthrough)에 대한 설명으로 틀린 것은?
① 사용 사례를 확장하여 명세하거나 설계 다이어그램, 원시 코드, 테스트 케이스 등에 적용할 수 있다.
② 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용하다.
③ 인스펙션(Inspection)과 동일한 의미를 가진다.
④ 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해 보는 것이다.
-> 워크스루는 짧은 회의를 통해 결함을 발견하는 것, 인스펙션은 전문가와 상세하게 결함을 발견하는 방법.

2. 요구사항 검증(Requirements Validation)과 관련한 설명으로 틀린 것은?
① 요구사항이 고객이 정말 원하는 시스템을 제대로 정의하고 있는지 점검하는 과정이다.
② 개발 완료 이후에 문제점이 발견될 경우 막대한 재작업 비용이 들 수 있기 때문에 요구사항 검증은 매우 중요하다.
③ 요구사항이 실제 요구를 반영하는지, 문서상의 요구사항은 서로 상충되지 않는지 등을 점검한다.
④ 요구사항 검증 과정을 통해 모든 요구사항 문제를 발견할 수 있다.

3. 코드 인스펙션과 관련한 설명으로 틀린 것은?
① 프로그램을 수행시켜보는 것 대신에 읽어보고 눈으로 확인하는 방법으로 볼 수 있다.
② 코드 품질 향상 기법 중 하나이다.
③ 동적 테스트 시에만 활용하는 기법이다.
④ 결함과 함께 코딩 표준 준수 여부, 효율성 등의 다른 품질 이슈를 검사하기도 한다.
-> 코드 인스펙션은 정적 테스트 기법

 

⎮ 미들웨어

 - 미들웨어 솔루션의 정의

    DB(DataBase) : 데이터베이스 벤더에서 제공하는 클라이언트와 데이터베이스를 연결하는 미들웨어(2-Tier 아키텍처)

    클라이언트와 서버 간의 통신을 담당하는 시스템 소프트웨어

    이기종 하드웨어, 소프트웨어, 네트워크, 프로토콜, PC 환경, 운영체제 환경 등에서 시스템 간의 표준화된 연결을 도와주는 소프트웨어

    표준화된 인터페이스를 통해 시스템 간의 데이터 교환에 있어 일관성 제공

    운영체제와 애플리케이션 사이에서 중간 매개 역할을 하는 다목적 소프트웨어

 

 - 미들웨어 솔루션의 유형

    TP-Monitor(Transaction Processing Monitor) : 여러 프로토콜에서 동작하는 세션, 시스템, 데이터베이스 사이의 트랜젝션을 

    감시하여 일관성 있게 보관 유지하는 역할

    ORB(Object Request Broker) : 객체지향 미들웨어코바(CORBA) 표준 스펙을 구현한 미들웨어

    RPC(Remote Procedure Call) : 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식

    MOM(Message Oriented Middleware) : 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어

    온라인 업무보다는 이기종 분산 데이터 시스템의 데이터 동기화를 위해 많이 사용함.

    WAS(Web Application Server) : 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어

1. 분산 시스템에서의 미들웨어(Middelware)와 관련한 설명으로 틀린 것은?
① 분산 시스템에서 다양한 부분을 관리하고 통신하며 데이터를 교환하게 해주는 소프트웨어로 볼 수 있다.
② 위치 투명성(Location Transparency)을 제공한다.
③ 분산 시스템의 여러 컴포넌트가 요구하는 재사용 가능한 서비스의 구현을 제공한다.
④ 애플리케이션과 사용자 사이에서만 분산 서비스를 제공한다.
-> '둘 사이'는 맞는데, '클라이언트와 서버', 이기종간의 연결도 한다.

2. 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 로컬 프로시저처럼 호출하는 방식의 미들웨어는?
① WAS(Web Application Server)
② MOM(Message Oriented Middleware)
③ RPC(Remote Procedure Call)
④ ORB(Object Request Broker)

 

⎮ 인터페이스 보안 기술

 - IPSec(IP Security Protocol)

   보안에 취약한 인터넷 상에서 안전한 통신을 실현하는 통신 약어

   가상 전용 회선을 구축하여 데이터를 도청 당하는 등의 행위를 방지하기 위한 통신 규약

 - SSL(Secure Sockets Layer)

    웹 브라우저와 웹 서버 간에 데이터를 안전하게 주고받기 위한 업계 표준 프로토콜

    미국 넷스케이프 커뮤니케이션스사가 개발. 마이크로소프트사 등 주요 웹 제품 업체가 채택

    FTP 등 다른 TCP/IP 애플리케이션에 적용할 수 있음

   인증 암호화 기능을 제공

1. 인터페이스 보안을 위해 네트워크 영역에 적용될 수 있는 것으로 거리가 먼 것은?
① IPsec
② SSL
③ SMTP
④ S-HTTP
-> SMTP(Simple Mail Transfer Protocol) : 인터넷을 통해 이메일을 보내고 받는 데 사용되는 프로토콜

 

본 게시물은 과학기술정보통신부와 정보통신기획평가원이 지원한 'SW중심대학'의 결과물로써

국립안동대학교 SW융합교육원의 자료를 참고하여 작성하였습니다.

최근댓글

최근글

skin by © 2024 ttuttak