상위 설계

Posted by yunki kim on April 27, 2021

분석 단계에서 파악한 비기능적 요구 사항과 제약 사항을 고려한다. How에 대한 관점을 가진다.

설계는 요구분석 명세서를 기반으로 어떻게 구축할 것인가를 결정한다. 설계자는 다양한 제약 조건을 만족시킬 수 있는 최적의 설계안을 만드는 것이 중요하다.

 

 좋은 설계의 조건

1. 요구 분석 명세서의 내용을 설계서에 모두 포함해야 한다.

2. 유지보수가 용이하도록 추적이 가능해야 한다.

3. 변화에 쉽게 적응할 수 있어야 한다.

4. 시스템 변경으로 인한 영향이 최소화되도록 국지적이여야한다.

5. 설계서는 읽기 쉽고, 이해하기 쉽게 작성해야 한다. 

 

설계의 종류

1. 상위 설계:

  1.1 아키텍쳐 설계: 시스템 전체적인 구조

  1.2 데이터 설계: 시스템에 필요한 정보를 자료주고와 데이터베이스 설계에 반영

  1.3 인터페이스 정의: 서브시스템들 사이의 인터페이스를 명확히 정의

  1.4 사용자 인터페이스 설계: 사용자가 익숙하고 편리하게 사용할 수 있도록 사용자 인터페이스 설계

  1.5 시스템 분할: 전체 시스템을 여러 개의 서브시스템으로 나눔

2. 하위 설계:

  2.1 모듈 설계: 각 모듈의 실제적인 내부를 psedu-code로 표현

  2.2 자료구조 설계

  2.3 알고리즘 설계

       -인터페이스에 대한 설명, 자료구조, 변수 등에 대한 상세한 정보를 작성

설계의 원리

1. 분할과 정복

2. 추상화

3. 단계적 분해

4. 모듈화

5. 정보은닉

 

1. 분할과 정복

  1.1 큰 문제를 솓ㄴ위로 나누고 소 단위의 작접을 하나씩 처리하여 전체 일을 끝내는 방식

  1.2 분할 형태:

     - 분시스템은 클라이언트와 서버로 분할

     - 시스템은 여러 서브시스템으로 분할

     - 서브시스템은 하나 이상의 패키지로 분할

     - 패키지는 여러 클래스로 분할

     - 클래스는 여러 메서드로 분할

2. 추상화

  2.1 주어진 문제에 대해 현재의 관심사에 초점을 맞추기 위해 특정한 목적과 관련된 필수 정보만 추출해 강조하고 관련 없는 세부사항을 생략해 본질적인 문제에 집중할 수 있도록 하는 방식.

  *목적은 시점에 따라 변한다.

  2.2 추상화 종류

     2.2.1 과정 추상화:

         상세 부분은 생략하고 전체 흐름만 파악할 수 있을 정도의 알고리즘으로 표현한것

     2.2.1 데이터 추상화

          -기본적 추상화: 프로그래밍 언어에서 컴퓨터 내부의 자료 표현을 추상화 하는 것(변수, 자료형)

          -구조적 추상화: 관련된 자료의 집합을 추상화(배열, 레코드)

          -단위 추상화: 자료와 자료에 대한 처리(operation)을 함께 묶어 캡슐화. 자료 밖에서는 내부의 내용은 가려져 있고 자료에 대한                                         operation만을 볼 수 있게 함(java 클래스)

     2.2.3 제어 추상화

          -기본적 추상화: 몇 개의 명령어를 모아 이해하기 쉬운 추상 구문으로 만든다.(배정문)

          - 구조적 추상화: 어떤 검사된 값에 따라 분할된 명령어의 그룹을 수행하도록 하는 것(제어문)

          - 단위 추상화: 프로시저의 집합을 추상화(라이브러리)

 

3 단계적 분해

  1. 하향식 설계에서 사용

  2. 기능을 점점 작은 단위(모듈)로 나누어 점차적으로 구체화 하는 방법

 

모듈화

1. 규모가 큰 것을 여러개로 나눈 조각

2. 소프트웨어 구조를 이루는 기본적인 단위

3. 하나 또는 몇개의 논리적인 기능을 수행하기 위한 명령어들의 집합

4. 특징

  4.1 다른것들과 구별될 수 있는 독립적인 기능을 갖는 단위

  4.2 유일한 이름을 가져야 한다.

  4.3 독립적으로 컴파일이 가능하다

  4.5 모듈에서 또 다른 모둘을 호출할 수 있어야 한다.

  4.6 다른 프로그램에서도 모듈을 호출할 수 있다.

 

다이어그램

패키지 다이어그램

 -계층, 서브시스템, 패키지 등 시스템의 논리적 아키텍처를 표현하는데 사용됨

    *점선화살표(의존관계), xor기호(중첩 페키지)

패키지: namespace를 표현

UML 패키지 다이어그램

  -클래스의 집합을 표현할 수도 있고 유스케이스 등 무엇이든 그룹을 짓고자 할 떄 사용

  -패키지는 중첩적으로 다른 패키지를 포함할 수 있음

  -패키지들 간의 의존관계

배치 다이어그램

  1. 실행 파일과 같이 구체적인 소프트웨어 산출물이 계산을 담당하는 노드로 할당되는 것을 표현

  2. 소프트웨어 요소가 물리적 아키텍처로 배치되는 것과 네트워크로 표현되는 물리적 요소 간의 통신을 보여줌

  3. 요소

      -장치노드(device node): 처리 능력을 갖고 있는 하드웨어

      -실행환경 노드(Execution Environment Node): 소프트웨어 컴퓨팅 자원