소프트웨어 아키텍처 분석 및 설계 개요 (구조적 방법론)

유동우·2023년 6월 13일
0

소프트웨어 공학

목록 보기
10/11
post-thumbnail

구조적 방법론 소개

구조적 분석 모델의 구조

1) 데이터 분석 및 모델링

  • 시스템에서 사용하는 데이터의 종류와 타입을 기록
  • 시스템이 처리해야 할 데이터 확인

2) 기능 및 데이터흐름 분석 및 모델링

  • 데이터가 시스템을 이동하면서 어떻게 변환되는지를 확인하기 위해 사용
  • 데이터를 변환하는 함수(또는 함수의 하위 함수)를 구분하기 위해 사용

2-1 ) 제어 흐름 분석

  • 이벤트의 시스템에서 어떻게 이동하는지를 확인하기 위해 사용
  • 데이터 흐름 다이어그램과 같은 프로세스 사용

3) 제어 및 상태 분석 및 모델링

데이터 흐름 다이어그램 (DFD)

  • 프로세스 : 대부분 원이나 둥근 사각형. 프로세스 이름을 내부에 기재
      입력 자료 흐름을 출력 자료 흐름으로 변환
      이름규칙 : 수행하는 기능 or 행위자로 기술
      고유 번호 기술
      최종 단계에서 미니 명세서 작성 대상

  • 데이터 흐름: 두 프로세스 사이의 데이터 경로는 화살표로 표시한다. 전달되는 데이터 이름을 기재

      데이터 흐름은 변형되어 이동중인 데이터를 나타낸다
       화살표 위에 데이터의 이름을 붙인다
       데이터 저장소에 연결된 데이터흐름은 저장소에 데이터를 운반하여 저장하는 것이다


  • 파일 혹은 데이터 저장소 : 한쪽이 열린 사각형 or 한 쌍의 평행선으로 표시 . 이름을 안에 기재

      저장된 데이터의 집합 - 파일, DB, 서류철 등


  • 데이터 출처와 도착지 : 직사각형으로 표시, 내부에 이름을 기재

      대상 시스템밖에서 데이터를 전달하는 사람 or 외부시스템
      이름은 역할을 기술


  • DFD의 특징

    	  배경도: 대상 시스템전체를 프로세스로 두고 외부의 데이터 입출력관계를 표현한 DFD
    	  원시 프로세스: 프로세스중 더 이상 분할되지 않는 프로세스, 원시 프로세스에 대한 미니 명세서로 기술
    	  미니 명세서: 원시 프로세스에 대한 상세한 설명을 기록하며, 프로세스 명세서로도 불린다.
     	  해당 프로세스를 설명하기 위해 Activity Diagram, 순서도, N-S 차트 등을 사용한다.

DFD 작성 방법

  • 계층적으로 분할하여 단계적으로 작성

  • 시작은 배경도로 작성

    개발하려는 시스템과 외부환경의 인터페이스 식별
     시스템 분석의 범위를 설정
     시스템 전체를 나타내는 하나의 처리와 관련된 단말들로 표시
  • 중간 단계의 데이터 흐름도 작성

    	DFD내의 하나 이상의 처리가 하위 데이터 흐름도로 분할되는 흐름도
  • 최하위 단계의 데이터 흐름도 작성

    	데이터흐름도내의 모든 처리가 더 이상 분할되지 않는 데이터 흐름도
     	모든 프로세스들은 궁극적으로 미니 명세서로 설명되어야한다.
     
  • 추상화와 단계적 분해

    	 같은 계층의 문제는 같은 수준의 상세함을 가져야한다.
    	 각 문제는 독립적인 문제로 분리되어야 한다.
    	 부분 문제들의 해가 모여서 원래 문제를 해결할 수 있어야 한다. 
  • 명명 원칙

    	 프로세스의 이름은 동사형 명사와 단일 직접 목적어를 사용하여 간결하게 한다.
    	  ex) 개와 고양이에게 먹이를 줌 (X)
    	  어떤 경우에도 다 적용될 수 있는 포괄적인 명칭은 피한다
  • 변환 된 데이터 흐름의 명칭

    데이터 흐름은 프로세스를 거쳐 변환 될 때 마다 새로운 이름을 부여한다
  • 데이터 흐름의 균형

    프로세스를 중심으로 입력과 출력 데이터의 흐름은 어디서나 일치되어야 한다.
  • 데이터 흐름의 분할 및 통합

    	  데이터 흐름은 (구체화의 정도에 따라) 분할 또는 통합이 가능하다
  • 프로세스와 데이터 저장소 간의 데이터 흐름

    	  프로세스 -> 데이터 저장소 (자료 수정, 삽입, 삭제)
    	  데이터 저장소 -> 프로세스 (자료 검색)
  • 블랙홀과 화이트홀은 없어야한다

    	  블랙홀 : 데이터의 입력만 있는 데이터 저장소
    	  화이트홀 : 데이터의 출력만 있는 데이터 저장소
  • 단계적으로 나누어서 프로세스를 표시한다

    	  (원칙적으로) 한 장의 분석서에 한 계층의 데이터 흐름도만 그린다.
    	  한 장에 7±2 정도가 적당하다.

DFD 작성 개선

  • 개선 규칙
    1) 데이터 흐름이 하나만 나와서 다음 프로세스의 입력이 프로세스는 과다하게 분할 될 가능성이 높음으로 통합 가능성이 높다
     2) 여러 프로세스가 동일한 외부 개체와 상호작용하고 프로세스 하나는 상호작용이 없는 경우 -> 데이터 흐름과 변환 과정 검토
     3) 여러 프로세스가 동일한 데이터 저장소에 접근하는 경우-> 저장소에서 읽는 데이터 흐름을 비교하여 반복이 있으면 통합
     4) 여러 프로세스가 동일 저장소에 여러 번 데이터를 저장하는 경우-> 같은 데이터를 쓰는지 검사하고 필요하면 재구성 및 통합
     5) 단순하고 과다하게 세분화 된 프로세스의 경우-> 이웃 프로세스와 통합

데이터 사전

  • 데이터 흐름도에 나타나는 데이터에 대한 정의를 모은 사전
  • 데이터 흐름도에 쓰인 데이터 항목들이 사전처럼 정렬되어 있어야 함
  • 형식
    : 데이터 항목 이름 = 데이터 항목의 구성을 나타내는 수식

미니 명세서

  • 데이터 흐름도의 최하위 프로세스가 어떤 기능을 수행하는지를 기술한 명세
  • 미니 명세서는 프로세스 명세서 또는 활동 명세서라 부르기도 함
  • 미니 명세서 작성 방법
    : 구조적 영어, 의사결정표/트리, N-S 차트, 전후 조건 등

구조적 영어

  • 안할래

의사결정표

의사결정 트리

상태전이 다이어그램

  • 프로세스, 객체 등이 존재할 수 있는 상태의 전이 관계를 표현함
  • 객체와 전이 관계로 표현됨
  • 전이 관계는 조건이 추가될 수 있다
  • FSM (Finite State Machine)을 표현

구조적 설계의 이해

설계의 정의

  • 개발될 제품에 대한 의미있는 공학적 표현
  • 고객의 요구사항을 만족하고, 품질이 대해서도 검증이 되어야 한다.

소프트웨어의 설계

  • 프로그램 구현이 들어가기에 앞서 소프트웨어를 구성하는 뼈대를 정의해 구현의 기반을 만드는 것이다
  • 모듈설계, 상세설계라고도 한다
  • 시스템의 각 구성요소들의 내부 구조, 동적 행위 등을 결정한다
  • 각 구성요소의 제어와 데이터들 간의 연결에 대한 구체적인 정의 (구조적 설계방법 OR 객체지향 설계방법)
  • 구조적 : 기능 + 데이터 관점, Top-Down, 업의 처리절차를 중심으로 설계의 구성요소 구분
  • 객체지향 : 자료와 적용될 기술을 함께 추상화, 객체 = 자료 + 기능, 시스템의 실제 객체 요소를 중심으로 설계

상위설계 vs 하위설계

  • 상위설계: 구조설계, DB설계, 인터페이스 설계
  • 하위설계: 컴포넌트 설계, 자료구조 설계, 알고리즘 설계

대표 설계 원리

추상화

  • 자세한 구현전에 상위 레벨에서의 제품의 구현을 먼저 생각
  • 복잡한 문제를 일반화하여, 쉽게 이해할 수 있도록 하는 원리
    (과정 추상화, 데이터 추상화, 제어 추상화)

단계적 분해

  • 문제를 상위개념부터 더 구쳊적인 단계로 분할하는 Top-Down 원리
  • 모듈에 대한 구체적 설계 시 사용
  • 문제를 하위 수준의 독립된 단위로 나눈다
  • 점진적으로 구체화 작업을 계속한다

모듈화

  • 모듈: 수행 가능 명령어, 자료구조 또는 다른 모듈을 포함하고 있는 독립단위
  • 되도록 쉽게 이해될 수 있도록 가능한 작아야 함
  • 너무 작은 모듈로 나눠지지 않도록 함
  • 특성
    : 독립적으로 컴파일
    : 다른 모듈을 사용할 수 있음
    : 다른 프로그램에서 사용될 수 있음

효과적인 모듈화

모듈은 응집력은 높고 (모듈내부) 결합도는 낮아야한다 (모듈간)

구조적 설계 (구조 다이어그램)

점진적 확장

  • 시스템의 단계적 점진적 확장
  • 기능의 단계적 점진적 확장

구조확장

  • 수평확장
  • 수직확장

응집도

결합도

구조 설계 시 "팬케이크" 구조는 지양한다

구조도의 요건

  • 전체적으로 균형을 이루어야 한다
    (과다한 깊이를 가지면 하위 모듈까지 통신 오버헤드가 커지기 때문에 재배치가 필요하다)
  • 과다한 너비를 가지면 병목현상이 나타날 수 있다
  • 편중이 없도록 한다
    (입력편중, 처리편중, 출력편중)

구조도 설계 요령

  • 양파모양의 구조가 일반적이다
    (복잡하고 과다한 깊이의 구조는 피함)
  • 모듈의 영향권을 극 모듈의 하위에 둔다

구조도 작성 방법

  • 데이터 흐름도에서 입력
    자료 흐름과 출력 자료 흐름을 파악한다
  • 중앙 변환 부분을 식별한다
  • 변환 중심부를 축으로 최상위 구조를 작성한다
  • 각 모듈의 하위구조도 같은 방법으로 분석한다
  • 설계 기준을 적용하여 수정 및 최적화한다
profile
효율적이고 꾸준하게

0개의 댓글