본문 바로가기
컴퓨터과학[4-1]/소프트공학

소프트웨어 공학 - [제7강] 소프트웨어 설계

by boolean 2017. 1. 2.
728x90

소프트웨어 공학 - [제7강] 소프트웨어 설계


주요용어

소프트웨어 아키텍처: 소프트웨어 구조를 말하며 시스템을 구성하는 요소들과 그들 간의 관계를 표현

하향식/상향식 설계: 하향식 설계는 시스템의 주요 컴포넌트를 먼저 찾아 설계한 후  그 것들을 낮은 수준의 컴포넌트들로 분해하여 설계하는 것. 상향식 설계는 가장 기본적인 컴포넌트들을 설계한 후, 이것들을 사용하는 상위 수준의 컴포넌트들을 차례로 설계하는 방법

아키텍처 스타일: 유사한 애플리케이션들에 적용되는 공통적인 아키텍처 패턴으로 같은 부류의 시스템을 설계할 때 초안으로 사용될 수 있는 아키텍처

구조적 설계: 데이터 흐름을 분석하여 시스템을 기능적으로 분해하는 전통적 설계 방법

구조도: 구조적 설계 기법에서 아키텍처를 표현하기 위해 사용되는 시스템 모델

모듈화: 시스템을 잘 정의되고 관리 가능한 단위들로 분해하는 것

결합도와 응집력: 결합도는 두 모듈 간의 상호 의존성 정도를 의미하며 응집력은 한 모듈이 가지는 기능적 집중성에 관한 상대적 척도


설계

물건을 만들기 위한 계획 또는 만들어야 할 물건을 의미 있게 표현하는 것

계획이나 표현은 요구사항을 만족하고 품질이 좋아야 함

소프트웨어 설계는 외부에서 관찰 가능한 행위 명세(요구사항)에 구현을 위한 방법을 명시

하는 것

설계 프로세스

설계 작업의 입력은 요구사항과 분석 모델 및 환경적 제약 사항

설계 결과물은 구성 요소들의 관계를 보여주는 소프트웨어 아키텍처, 요소들의 인터페이스

와 알고리즘, 데이터에 관한 정의를 기술한 문서임

설계 프로세스는 반복적 프로세스로 지속적으로 정형화를 가하고 세세하게 기술함으로써 초

기 모델을 개선해 감. 결과는 추상화 수준이 다른 여러 모델로 나타남

설계 행위

아키텍처 설계: 시스템을 구성하는 서브시스템들과 그들 간의 관계를 파악하고 명세

어떤 서브시스템을 소프트웨어로 구현할 것인지 분석

전체 시스템과 외부 인터페이스, 전체 제어 구조를 설계

데이터베이스 설계

서브시스템 설계: 각 서브시스템이 담당하는 기능과 제약 사항을 명세하고 다른 서브시스템

과의 인터페이스를 설계

컴포넌트 설계: 서브시스템이 수행하는 기능을 여러 컴포넌트에 할당하고, 컴포넌트들의 인

터페이스를 설계

자료구조와 알고리즘 설계

설계 원리

문제 분할

분할과 정복의 원칙을 적용

어느 수준까지 분할할지 판단해야 함

수평 분할

기능들을 분리된 가지에 할당

단순한 형태는 입력, 데이터 변환, 출력 작업 담당하도록 분리

테스트, 유지보수, 확장이 용이하고 부작용의 파급 효과가 줄어듬

많은 데이터가 모듈 인터페이스를 통해 이동되어 전체 제어가 복잡해짐

수직 분할

제어와 작업을 위와 아래로 분산함

상위 수준의 모듈들은 제어 기능을, 하위의 모듈들은 실제 작업(입출력과 데이터 변형 작업)을 수행

작업 모듈이 변경되기 쉬우며, 제어 모듈이 변경되면 부작용이 큼

추상화

모듈들을 추상화하여 표현

추상화란 내부의 상세한 내용을 생략하고 외부 행위만을 기술하는 것. 상세 설계와 구현 작업은 추상화되어 있는 각 모듈의 명세를 구현하는 작업

추상화된 시스템 모델을 통해 시스템의 분석이 가능함

기능 추상화

수행하는 기능으로 모듈을 명세하는 것

전체를 작은 기능들로 분해하는 것(기능 중심의 분할 방법)

데이터 추상화

데이터와 데이터 조작에 필요한 오퍼레이션을 함께 묶는 것

객체의 상세한 구현 내용이 감추어지며 공개된 오퍼레이션만을 사용해야 함

하향식과 상향식 설계

시스템 명세가 명확한 경우와 모든 것을 새로 개발하는 작업에는 하향식이 적합하며, 기존 컴포넌트들을 조합하여 시스템을 개발하는 경우에는 상향식이 적합

하향식 설계

계층 구조상에서 시스템의 주요 컴포넌트들을 찾고 그것을 낮은 수준의 컴포넌트들로 분해하는 것으로 단계적 정제라 하며 메인 모듈의 설계에서 시작하여 단계적으로 구체화시키는 것

상향식 설계

가장 기본적인 컴포넌트를 먼저 설계한 다음 이것을 사용하는 상위 수준의 컴포넌트를 설계하는 것


소프트웨어 설계와 품질

  • 설계 결과물이 가져야 하는 바람직한 속성들
  • 정확성은 요구사항을 만족하도록 설계하는 것
  • 검증가능성은 설계 결과의 정확성을 검증할 수 있어야 하는 것
  • 완전성은 데이터 구조, 모듈 내부, 외부 인터페이스를 모두 설계하는 것
  • 추적성은 설계 결과를 검증하기 위해 관련 요구사항을 찾을 수 있어야 하는 것
  • 효율성은 비용 측면을 고려하여 설계하는 것


아키텍처 설계

아키텍처 설계시스템의 주요 기능을 제공하는 구성 요소들을 식별하고 이들 간의 관계를 정하는 것

시스템의 구조를 정하는 초기 설계

개발이 진행된 후에는 시스템 구조를 수정하기 어려움

시스템은 서브시스템들로 구성되고 서브시스템은 모듈들로 구성됨

대형 시스템의 경우에는 구성 요소별로 명세서를 나누어 작성해야 함

아키텍처의 중요성

설계 초기 또는 요구 명세 활동에서 이루어지며 개발 과정에 큰 영향을 줌

프로젝트 참여자들 사이의 중요한 의사소통 수단

요구 공학 과정과 상세 설계의 연결고리

주요 구성 요소들을 개별적으로 명세하기 위한 출발점

아키텍처 스타일

  • 유사한 애플리케이션들에서 사용되는 공통적인 아키텍처 패턴
  • 미리 만들어진 시스템 설계 모델로 아키텍처 설계의 초안이 됨
  • 스타일에 따라 적합한 응용 분야가 있으며 장단점이 알려져 있음

데이터 중심 아키텍처

저장소 모델이라 하며 대규모 데이터를 공유하는 소프트웨어 시스템에 사용됨

공유된 데이터베이스에 기반한 아키텍처로 저장소를 통해 상호 작용함

장점

데이터 공유에 효율적

데이터를 생성하는 서브시스템과 데이터를 사용하는 서브시스템이 서로 독립적임

공유 데이터 모델을 사용하는 경우 시스템의 확장이 용이함

단점

서브시스템은 공통의 데이터 모델을 사용해야 함

중앙 저장소의 성능이 저하되면 병목 현상이 발생함

데이터 모델을 변경하면 큰 비용이 발생함

모든 서브시스템에 동일한 정책이 적용됨

데이터 흐름 아키텍처

파이프 필터 구조

데이터 요소들에 대한 개별 변환 작업들로 시스템을 구성

서브시스템은 필터에 해당하며 입력 데이터를 받아 처리하고 다른 곳으로 출력함

사용자 간섭없이 데이터 스트림에 일련의 변환 작업을 적용하는 시스템에 적합함

구성 요소들 간의 복잡한 상호 작용이 요구되는 경우에는 적합하지 않음

클라이언트-서버 아키텍처

서비스를 제공하는 서버들과 서비스를 이용하는 클라이언트들로 시스템을 구성

분산 시스템의 아키텍처로 서버와 클라이언트는 네트워크로 연결됨

장점

데이터의 분산이 용이함

분산된 프로세서들을 효율적으로 사용할 수 있음

새로운 서버를 추가하기 쉬움

단점

공유 데이터 모델이 없으므로 데이터의 교환이 비효율적

모든 서버가 각각 데이터 관리 책임을 가짐

계층형 아키텍처

추상 기계 모델이라 하며 시스템을 계층별로 구성

하위 계층이 제공하는 서비스를 상위 계층이 이용

가장 외부(상위) 계층은 사용자 인터페이스 기능을 제공하고 가장 내부(하위) 계층은 하드웨어와의 상호 작용을 제공

특징

각 계층은 특정 서비스를 제공하며 서브시스템들의 점증적 개발이 가능

특정 계층의 인터페이스가 변경되면 인접 계층만 영향을 줌

실제로는 시스템을 계층 구조로 만들기 어려움

MVC 아키텍처

도메인 지식을 관리하는 모델(M), 그것을 사용자에게 보여주는 뷰(V), 사용자와의 상호자용을 제어하는 컨트롤러(C)로 분류

컨트롤러는 사용자에게 입력을 얻어 모델에 알리고, 모델은 뷰를 통해 디스플레이 함

모델은 데이터를 관리하며 뷰의 변경이 모델에 영향을 주지 않음

저장소 모델의 특수한 형태이며 하나의 모델에 대해 여러 뷰를 제공해야 하는 대화형 시스템에 적합

p2p 아키텍처

서브시스템들은 클라이언트와 서버 양쪽의 역할을 수행

클라이언트-서버 시스템보다 복잡

3계층 아키텍처

사용자 인터페이스, 애플리케이션 로직, 저장소의 3계층으로 분리하여 시스템을 구성

사용자 인터페이스 계층은 사용자와의 상호작용을 담당

애플리케이션 로직 계층은 애플리케이션이 필요로 하는 기능을 담당

저장소 계층은 데이터 관리를 담당

인터페이스 계층과 애플리케이션 로직 계층을 분리함으로써 같은 애플리케이션에 대해 다른 사용자 인터페이스의 개발이 가능함


아키텍처와 비기능적 속성

  • 소프트웨어 아키텍처는 비기능적 요구사항에 큰 영향을 줌
  • 비기능적 속성을 고려하여 설계해야 함
  • 성능: 서브시스템들 간의 통신을 최소화
  • 보안: 계층형 아키텍처를 사용하고 보안이 중요한 시스템을 내부 계층에 위치시킴
  • 안전성: 안전성이 요구되는 요소들을 하나의 서브시스템에 집중시킴
  • 가용성: 동일 기능의 컴포넌트를 중복시킴
  • 유지보수성: 자료의 공유를 피하고 모듈화시켜야 함
  • 모순되는 점이 존재하므로 타협이 필요함

예) 성능을 위해서는 큰 규모의 컴포넌트가 좋으나 유지보수성이 떨어짐. 중복된 데이터를

유지하는 것은 가용성을 좋으나 보안 유지가 힘듦

구조적 설계

구조적 분석(SA)의 결과물을 이용해 아키텍처를 설계하고 모듈을 개발하는 방법

아키텍처 설계는 데이터 흐름도에 표현된 정보의 흐름을 이용하여 구조도로 변환하는 작업

데이터 흐름을 분석하여 시스템을 계층적으로 구성

결과물은 구조도, 모듈 명세서, 자료 사전

구조도(structure chart)

  • 모듈들의 계층 구조, 모듈의 매개 변수, 모듈들 간의 상호 연결 관계를 보여줌
  • 모듈들은 블랙박스로 표현되며 계층적으로 배열됨
  • 상위 모듈이 하위 모듈을 호출함(위에서 아래로, 좌에서 우로 해석됨)

구조도의 구성 요소

모듈, 라이브러리 모듈, 데이터 흐름, 제어 흐름, 호출, 선택적 호출, 반복적 호출

구조적 설계

구조적 분석의 결과물을 이용하여 아키텍쳐를 설계하고 모듈을 정의하는 일

구조적 설계에서 아키텍쳐 설계란 데이터 흐름도를 구조도로 변환하는 것

데이터 흐름과 변환을 보여주는 네트워크 형태의 자료 흐름도를 모듈들의 계층 구조로 변환하는 것

1) 데이터 흐름의 유형을 선정(변환 흐름과 트랜잭션 흐름)

2) 흐름 경계선을 파악

3) 데이터 흐름도를 구조도로 변환

4) 제어 계층을 정의

5) 산출된 구조도를 검토

변환 분석에 의한 구조도 설계

데이터 흐름의 유형이 변환 흐름인 경우 사용

변환 흐름은 데이터를 입력받고, 가공하고, 결과를 출력하는 유형

구조도에 입력, 변환, 출력 모듈을 제어하는 모듈을 만듦

트랜잭션 분석에 의한 구조도 설계

데이터 흐름의 유형이 트랜잭션 흐름인 경우 사용

트랜잭션 흐름은 입력을 여러 경로의 데이터 흐름으로 유출하는 유형

트랜잭션 중심 모듈은 트랜잭션의 유형을 결정하고 적당한 모듈을 호출하는 모듈


상세 설계

개별 모듈에서 사용되는 자료 구조와 알고리즘을 자세히 설계

아키텍처 설계와의 비교

아키텍처 설계는 비기능적 요구사항에 초점을 두고 아키텍처 스타일, 컴포넌트 재사용, 설계 원리를 고려함

상세 설계는 기능적 요구사항에 초점을 맞춤

모듈화

시스템을 잘 정의되고 관리 가능한 단위인 모듈들로 분해하는 것

모듈들은 잘 정의된 인터페이스를 통해 소통함시스템을 구현할 때 각 컴포넌트별로 분리하여 구현할 수 있음

장점

구성 요소들이 기능적으로 독립되어 있어 이해하기 쉬움

구성 요소들을 독립된 단위로 문서화할 수 있음

작고 간단한 문제에 집중할 수 있음

테스트와 디버깅 작업이 쉬움

재사용하기 용이함

모듈의 독립성

기능이 분리될 수 있고, 인터페이스 관계가 단순해짐

다른 모듈과의 상호 작용이 최소화됨

개발 작업과 테스트 작업이 쉬워지고 수정할 때 파급 효과가 작아짐

모듈화의 평가란 모듈의 독립성을 평가하는 것으로 하나의 모듈은 높은 응집력을 가지며 다

른 모듈과의 결합도가 느슨해야 함

결합도(coupling)

두 모듈 사이의 상호 의존성 정도로 두 모듈을 연결하는 인터페이스의 복잡도에 좌우됨

데이터의 수와 유형, 공유 데이터의 사용 여부, 제어 흐름의 전달 여부 등을 판단

결합도의 수준

데이터 결합: 기본 유형의 데이터

스탬프 결합: 구조체와 같은 복합 자료

제어 결합: 제어 플래그

외부 결합: 외부 환경(데이터 포맷, 통신 프로토콜 등)

공통 결합: 전역 변수를 공유

내용 결합: 코드의 공유

응집력(cohesion)

하나의 모듈이 가지는 기능적 집중성에 관한 척도

모듈을 구성하는 요소들이 기능적으로 얼마나 관련성이 있는가를 의미

응집력의 수준

기능적 응집력: 요소들이 단일 작업을 수행하기 위해 협력

순차적 응집력: 한 요소가 출력한 것이 다른 요소의 입력이 됨

통신 응집력: 수행하는 기능들이 같은 자료 구조를 다룸

절차적 응집력: 특정 절차를 따르는 기능들

시간적 응집력: 같은 시간 주기에 실행되는 기능들

논리적 응집력: 같은 범주의 기능들(모든 출력을 수행하는 모듈)

우연적 응집력: 무작위

01
소프트웨어 아키텍쳐에 관한 설명으로 옳지 않은 것은?
1 물리적 구성을 기반으로 정의되는 시스템의 상세 설계도이다.
2 이해 당사자들 간의 상호 이해, 협상 및 의사 교환을 위한 도구이다.
3 설계 과정의 초기에 작성되며 개발 및 유지보수 작업에 영향을 준다.
4 아키텍쳐의 결정은 비기능적 요구사항에 영향을 준다.정답 | 1
해설 | 아키텍쳐 설계를 초기 설계 또는 개략 설계라 할 수 있다. 아키텍쳐는 시스템의 논
리적 구성을 보여주며 여기서 구성 요소들은 블랙박스로 표현된다. 블랙박스로 표현된 개별
모듈들의 내부 구성을 상세히 설계하는 것은 상세 설계(또는 컴포넌트 설계) 작업에서 수행
된다.
02
시스템에 요구되는 비기능적 속성은 소프트웨어 아키텍처의 결정에 영향을 준다.
비기능적 속성을 개선하기 위한 설명으로 잘못된 것은?
1 성능-서브시스템 간의 통신을 최소화하는 것이 좋다.
2 보안-계층형 아키텍처를 사용하고 주요한 요소를 내부 계층에 놓는다.
3 유지보수성-컴포넌트를 큰 규모로 만들고 컴포넌트 간에 자료를 공유한다.
4 가용성-동일 기능의 컴포넌트를 중복시켜 설계한다.
정답 | 3
해설 | 유지보수성을 높이려면 작은 규모의 컴포넌트들로 분해하고 자료의 공유를 피해야
한다.
03
다음이 설명하는 소프트웨어 아키텍처 스타일은 무엇인가?
1 파이프 필터 아키텍처 2 P2P 아키텍처
3 계층형 아키텍처
4 MVC 아키텍처
정답 | 4
해설 | MVC 아키텍처는 하나의 모델을 여러 뷰로 표현해야 하는 경우에 사용된다.
04
아키텍쳐 스타일 가운데 추상화의 성질을 잘 이용한 구조로 시스템을 계층적으로
분할하며 하위층이 제공하는 서비스를 상위층의 서브시스템이 사용하도록 구성하는 것은?
1 클라이언트-서버 아키텍쳐 2 파이프 필터 구조
3 MVC 아키텍쳐 4 계층형 아키텍쳐
정답 | 4
해설 | 계층형 아키텍쳐를 추상 기계 모델이라고도 한다. 층과 층 사이의 인터페이스 제약
을 지킨다면 각 층을 변경해도 인접 계층에 영향을 주지 않는다.
05
소프트웨어 설계 작업을 위한 주요 원리로 볼 수 없는 것은?
1 모듈화 2 추상화
3 단계적 정제 4 정보 노출
정답 | 4
해설 | 추상화는 블랙박스로 표현하는 것이고 모듈화는 전체를 작은 단위들로 분할하는 것
이며 단계적 정제는 점차적으로 구체화하는 것을 의미한다. 불필요한 상호작용을 제거하기
위해 세부 정보를 감추고 최소한의 인터페이스만 노출하는 것을 정보 은닉이라 한다.
06
다음 구조도에 설명으로 맞지 않은 것은?
1 모듈 m1이 m2, m3, m4를 호출한다.
2 m1이 m2에 데이터 흐름을 전달한다.3 m1이 m3와 m4를 반복적으로 호출한다.
4 m4는 라이브러리 모듈이다.
정답 | 2
해설 | m1이 m2에 전달하는 것은 데이터 흐름이 아니고 제어 흐름이다. 제어 흐름은 단순
한 데이터가 아니라 상태 변화나 의사결정을 알리는 데이터이다.
07
전역 변수를 공유하는 경우의 결합도를 의미하는 것은?
1 공통 결합 2 제어 결합
3 데이터 결합 4 스탬프 결합
정답 | 1
해설 | 제어 결합은 제어용 신호를 전달하는 경우이며, 스탬프 결합은 배열이나 구조체와
같은 복합적 자료 구조가 전달되는 경우이다.
08
다음은 시스템 모듈화에 관한 설명이다. 잘못된 것은?
1 모듈화란 시스템을 독립된 단위들로 나누어 구성하는 것이다.
2 모듈화를 하면 테스트와 디버깅 작업이 쉬워진다.
3 하나의 모듈은 높은 응집력을 가지는 것이 좋다.
4 모듈 간 상호의존성이 강할수록 모듈화가 잘 된 것이다.
정답 | 4
해설 | 모듈 간 상호의존성이 약할수록 모듈의 독립성이 커지고 모듈화의 장점이 실현된다.
정리하기
01
하향식 설계와 상향식 설계는 어떻게 다른가?
하향식 설계는 최상위 모듈을 먼저 정하고 점차 구체화해가며 하위 수준의 모듈을 설계하는
것이다. 상향식 설계는 하위 모듈을 먼저 구성하고 이것들을 결합하여 상위 수준의 모듈을
설계하는 것이다. 시스템 명세가 명확한 작고 간단한 시스템의 경우는 하향식 방법이 적합
하다. 재사용 가능한 기존 컴포넌트들을 조합하여 시스템을 개발하는 것은 상향식이다.
02
소프트웨어 아키텍쳐가 무엇인지 설명하라.
소프트웨어의 구성 요소들과 그들 간의 관계를 표현한 것을 말한다. 구성 요소들은 블랙박
스로 표현될 수 있으며 상세 설계 단계에서 구체적으로 명세된다. 아키텍쳐 설계는 초기 설
계 과정으로 요구 공학 과정과 상세 설계 단계의 연결고리가 된다.
03
시스템, 서브시스템과 모듈의 의미는 무엇인가?
시스템은 서브시스템들로 구성되며, 서브시스템은 모듈들로 구성된다. 서브시스템은 고유의
서비스를 제공하며 그 자체로 독립적 시스템으로 볼 수 있다. 모듈이란 용어는 여러 의미로
사용될 수 있으나 보통 시스템을 구성하는 기본 단위를 말한다.
04
아키텍쳐 스타일이란 무엇인가?
같은 응용 분야에 속하는 애플리케이션들은 유사한 아키텍쳐를 가질 수 있다. 따라서 응용
분야별로 재사용될 수 있는 공통의 아키텍쳐가 존재하고 이것이 아키텍쳐 설계의 초안이 되
는 것이다.
05
아키텍쳐 스타일 가운데 파이프 필터 아키텍쳐란 무엇인가?
서브시스템이 입력 데이터를 받아 처리하고 결과를 다른 서브시스템에 보내는 작업이 반복되는 형태이다. 서브시스템을 필터라 하고 서브시스템 간의 관계를 파이프라 한다. 서브시
스템 간에 복잡한 상호작용이 필요없이 데이터 스트림에 일련의 변환을 가하는 시스템에 적
합하다.
06
성능과 가용성을 고려해 아키텍쳐를 설계한다면 어떻게 모듈화해야 하는지 설명하
라.
성능을 높이려면 가급적 서브시스템들 간의 통신을 최소화해야 하므로 주요 오퍼레이션들을
적은 수의 서브시스템들에 함께 위치시키도록 한다. 가용성을 높이려면 동일 기능의 컴포넌
트들을 중복시켜 아키텍쳐를 설계한다.
07
모듈화의 독립성을 평가하기 위한 척도인 결합도와 응집력의 의미를 설명하라.
결합도는 두 모듈간의 상호 의존성 정도를 말하며 응집력은 한 모듈 안에 존재하는 요소들
간의 기능적 관련성을 말한다. 모듈의 독립성을 높이려면 결합도를 낮추고 응집력을 높이는
것이 좋다.
Q1 소프트웨어 아키텍처에 관한 설명으로 옳지 않은 것은?
  • 1 물리적 구성을 기반으로 정의되는 시스템의 상세 설계도이다.
  • 2 이해 당사자들 간의 상호 이해, 협상 및 의사 교환을 위한 도구이다.
  • 3 설계 과정의 초기에 작성되며 개발 및 유지보수 작업에 영향을 준다.
  • 4 아키텍처의 결정은 비기능적 요구사항에 영향을 준다.
확인
정답 및 해설
정답입니다.
정답 : 1번
아키텍처는 시스템의 논리적 구성을 보여주며 여기서 구성 요소들은 블랙박스로 표현된다.
블랙박스로 표현된 개별 모듈들의 내부 구성을 상세히 설계하는 것은 상세 설계 작업에서 수행된다. 
Q2 아키텍처 스타일 가운데 추상화의 성질을 잘 이용한 구조로 시스템을 계층적으로 분할하며 하위층이 제공하는 서비스를 상위층의 서브시스템이 사용하도록 구성하는 것은?
  • 1 클라이언트 - 서버 아키텍처
  • 2 파이프 필터 구조
  • 3 MVC 아키텍처
  • 4 계층형 아키텍처
확인
정답 및 해설
정답입니다.
정답 : 4번
계층형 아키텍처를 추상 기계 모델이라고도 한다.
층과 층 사이의 인터페이스 제약을 지킨다면 각 층을 변경해도 인접 계층에 영향을 주지 않는다. 
Q3 소프트웨어 설계 작업을 위한 주요 원리로 볼 수 없는 것은?

  • 1 모듈화
  • 2 추상화
  • 3 단계적 정제
  • 4 정보 노출
확인
정답 및 해설
정답입니다.
정답 : 4번
추상화는 블랙박스로 표현하는 것이고 모듈화는 전체를 작은 단위들로 분할하는 것이며 단계적 정제는 점차적으로 구체화하는 것을 의미한다. 불필요한 상호작용을 제거하기 위해 세부 정보를 감추고 최소한의 인터페이스만 노출하는 것을 정보 은닉이라 한다. 
Q4 다음 구조도에 설명으로 맞지 않은 것은?



  • 1 모듈 m1이 m2, m3, m4를 호출한다.
  • 2 m1이 m2에 데이터 흐름을 전달한다.
  • 3 m1이 m3과 m4를 반복적으로 호출한다.
  • 4 m4는 라이브러리 모듈이다.
확인
정답 및 해설
정답입니다.
정답 : 2번
m1이 m2에 전달하는 것은 데이터 흐름이 아니고 제어 흐름이다.
제어 흐름은 단순한 데이터가 아니라 상태 변화나 의사결정을 제어하는 데이터이다. 
Q5 전역 변수를 공유하는 경우의 결합도를 의미하는 것은?

  • 1 공통 결합
  • 2 제어 결합
  • 3 데이터 결합
  • 4 스탬프 결합
확인
정답 및 해설
정답입니다.
정답 : 1번
제어 결합은 제어용 신호를 전달하는 경우이며, 스탬프 결합은 배열이나 구조체와 같은 복합적 자료 구조가 전달되는 경우이다. 


댓글