728x90
반응형
SMALL

 

상위: 아키텍처, 데이터, 인터페이스, 사용자 인터페이스

하위: 모듈을 설계 (자료 구조 및 알고리즘)

모듈의 배치 (각 기능을 어떻게 배치할 것인가)

 

구조 모델링: 컴포넌트 유형, 인터페이스, 내부 설계 구조 등 상호 연결

행위 모델링: 실제로 어떻게 움직이느냐, 어떤 순서로 기능을 수행하느냐, 어떻게 구조가 연결되는지

모듈 = 컴포넌트 (작은 하나의 기능)

컴포넌트는 인터페이스를 가지고 있다. 다른 모듈들과 서로 연결할 수 있는 아이

 

집을 지으면 사람이 살려고 짓는다.

구조에서는 틀을 만들고

행위는 사람들이 그 안에서 어떤 행위를 하느냐

 

구조적 설계

자료 중심 설계

추상화: 요약 및 함축

abstract (요약하다, 압축하다)

 

여기에서의 코드는 자료구조, 일반적인 코딩은 아님

자료를 분류하기 위한 기준

일련번호

1,2,3,4

A,B,C

삽입/삭제가 어려움

블록 코드

블록을 만든다

공통의 특성에 따라서 임의의 크기 별로 블록을 만든다

그 안에 숫자를 배치

대분류 > 중분류 > 소분류

도서 분류 코드

표의 숫자 코드

127-890-1245 : 두께 127, 폭 890, 길이 1245

전자제품 구매 시 코드

필사 오류

전위 오류

이중 오류

생략 오류

추가 오류

임의 오류

많은 자료들이 있는데 어떻게 흘러가는지

자료의 흐름

전체 시스템의 일관성을 파악

자료 흐름도, 자료 사전, 소단위 명세

다른 말로 버블 차트, 그림 중심으로 표현

출력 자료 흐름은 입력 자료 흐름을 이용해서 생성한다

자주 출제

프로세스 (처리)

자료 흐름 (자료 이동)

자료 저장소 (자료를 보관하는  곳)

단말 (자료를 입출력하는 것)

작은 명세서

작게 작게 쪼개서 쓴다

세분화된 자료 흐름도에서 가장 최하위 단계

프로세스 명세서라고도 한다.

자료흐름도를 지원하기 위해서 사용한다.

제한된 구조를 이용해서 명세 언어

STRUCTRUAL -> DECISION TREE -> DECISION TABLE

자료 사전

코드 모두 외우기

= 정의 

+ 연결

() 생략

[|] 선택

{} 반복

* * 주석

자료 흐름도에 기술한 모든 자료의 정의를 기술한 문서

하향식 분할 원칙에 맞추어 구성 요소를 재정의 한다.

자료 항목, 자료 저장소, 자료에 의미, 원소 단위의 값

하나의 프로그램

각각 조합하느냐에 따라서 시스템이 구성

재사용 가능

각각 컴파일 가능

작은 프로그램

변수의 선언을 효율적으로 할 수 있어 기억 장치를 유용하게 사용

모듈마다 변수를 정의하지 않고 상속하여 사용할 수 있음

서로 다른 모듈과의 과도한 상호 작용을 회피함으로써 기능적 독립성

결합도 = 커플링

얼마나 비슷하냐

낮을 수록 좋다

별도의 모듈이 너무 똑같을 필요는 없다

결합도를 약하게 만들면 모듈간의 독립성이 향상되고 유지보수 작업이 쉬워진다.

모듈 간의 인터페이스가 자료 요소로만 구성

주고 받을 것이 없다

서로 연결만 되어 있다

스탬프 결합도 : 두 모듈간의 서로 같은 자료 구조를 조회하는 경우

다른 모듈까지 영향을 미치게 된다, 배열, 레코드에 사용

제어 결합도: 다른 모듈 제어

외부 결합도: 외부로 선언한 변수를 가져다 쓴다, 변수를 공통으로 사용

공통 결합도: 여러 모듈이 공통 자료 영역을 쓴다

내용 결합도: 한 모듈의 다른 모듈의 내부 자료, 기능을 참조할 수 있게 되어 있는 것

-> 독립성이 보장되어야 한다 (낮으면 좋다)

모듈 안에 각각의 코드들이 있다

얼마나 응집되어 있느냐

관련 높은 애들끼리 모여있느냐

높으면 좋다

★기능적 응집도: 결제 - 관련 기능 모임

순차적 응집도: 한 기능 요소에 의해서 출력 자료가 다음 요소의 입력 자료로 제공됨

교환 응집도: 같은 입력과 출력을 사용하는 소작업이 모인 것

절차적 응집도: 모듈이 다수의 기능을 가질 때 기능을 순차적으로 수행할 때

시간적 응집도: 특정 시간에 수행되는 여러 기능을 한 개의 모듈로 작성

논리적 응집도: 유사한 성경을 갖거나 특정 형태로 분류된 처리 요소들이 하나의 모듈로 형성

우연전 응집도: 서로 관련이 없는 요소들이 하나의 모듈로 응집됨

컴포넌트는 인터페이스를 갖는다

예를 들어 결제 시스템에 다양한 단계의 기능들을 컴포넌트라고 이야기 한다.

장바구니와 연결, 쇼핑몰과 연결

컴포넌트(실행코드)는 하나의 기능을 하고 다른 큰 컴포넌트와 연결이 된다

모듈(소스코드)은 특정한 기능을 완벽하게 수행하지는 못한다.

공통 모듈: 여러 시스템에서 공통으로 사용되는 모듈

함수와 객체 단위 (모듈)

애플리케이션 단위 (컴포넌트의 집합)

컴포넌트 단위 (모듈의 집합)

gps: 지도, 쇼핑, 배달 등 공통 모듈 (안드로이드에서 제공해주는 모듈)

모듈을 자세히 표현

흐름도, 의사코드, 행위도, 상태 전이도... 등

N-S 도표: 구조적 프로그램의 순차, 선택, 반복의 구조를 사각형으로 도식화

순차 구조: 순차적으로 간다

선택 구조: 조건

케이스 구조: 케이스 바이 케이스

반복구조: 반복한다

큰 틀의 컴포넌트를 어떻게 조립할 것인가

- 구조적 프레임

- 비구조적 프레임

아키텍처의 구성 요소: 프레임워크 (기둥, 1층, 2층 큰 틀의 골조들만 보는 것)

복잡한 소프트웨어 구조를 서술하거나 설계하는데 기본 구조를 제공한다

- 설계도

- 이해관계자

- 관심사

- 관점

- 뷰

4+1 뷰 모델: 분석 및 설계, 프로그래머, 시스템 통합자, 시스템 엔지니어, 사용자

SAAM, ATAM, CBAM

자주 사용하는 아키텍처를 만들어 놓음

미리 설계도를 주는 것

예) 전원주택 카달로그

MODEL: 핵심 기능 + 데이터

하나의 서버와 다수의 클라이언트의 형태

예) 은행 (서버 - 지점마다 단말기 : 데이터를 주고 받음)

데이터의 흐름

필터는 파이프를 통해서 받은 데이터를 변경 시키는 것

파이프는 자료를 보내고, 필터는 변경하는 형태

파이프: 버퍼링 또는 동기화 목적으로 사용할 수 있다.

필터: 컴파일러, 연속한 필터들은 어휘 분석, 파싱, 의미 분석 그리고 코드 생성을 수행한다.

필터 교환가 재조합을 통해서 높은 유연성을 제공

비용이 많이 소요 되며 데이터 변환에 과부화가 될 수 있다.

동등 연결: 어느 쪽이드 서버/클라이언트가 될 수 있다.

분산 컴퓨팅에 일반적으로 사용한다.

중간에 누군가 끼어있는 것

컴포넌트가 컴퓨터와 사용자를 연결해주는 것

결정적인 해결 전략이 존재하지 않을 때 사용

음성인식, 신호해석

소스 이벤트가 메시지를 발행하면 해당 채널 구독자가 메시지 수신 후 해당 이벤트를 처리하는 방식

이벤트 소스, 리스너, 채널, 버스

인터프리터: 동시 통역사

특정 언어로 작성된 문장을 수행할 때 동시 통역사를 부른다.

한 클래스에서 똑같은 메서드를 여러 번 사용하는 것

상속

덮어쓰기

모든 클래스는 단일 목적으로 생성

개방-폐쇄의 원칙

리스코프 치환 원칙 (상속관계)

인터페이스 분리 원칙

의존 역전 원칙

인터페이스: 자료를 교환하는 아이

구조패턴

컴포넌트가 어떻게 연결되느냐

 

시스템 아키텍처를 분석을 해서 현제 시스템 상황을 파악

그리고 현재 시스템 인터페이스 식별 - 현제 시스템 끼리 어떤 형태로 연결되어 있는지, 자료를 어떻게 주고 받는지

보내는 애

받는 애

중계 시스템

자료를 주고 받는 데 있어서 표준화 되지 않은 언어를 사용하면 서로 자료가 연결이 안 된다

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST