1-6. 소프트웨어 설계의 기본원칙

2022. 6. 19. 14:22· information processing
목차
  1. CHAPTER 3. 소프트웨어 설계Section 1. 소프트웨어 설계의 기본 원칙
  2. 1. 소프트웨어 설계
  3. 2. 설계 모델링

CHAPTER 3. 소프트웨어 설계Section 1. 소프트웨어 설계의 기본 원칙

1. 소프트웨어 설계

⑴ 소프트웨어 설계의 개념

- 요구사항 명세서를 참조하여 소프트웨어의 구체적인 설계서를 작성하는 단계
- 물리적으로 구현이 가능하도록 시스템을 구체적으로 정의하는 단계


⑵ 소프트웨어 설계의 종류

상위설계는 분석,설계 / 하위설계는 구현,테스트

① 상위설계
■ 아키텍처 설계
- 시스템의 전체적인 구조 설계
■ 데이터 설계
- 시스템에 필요한 정보를 설계
- 데이터 베이스 설계
■ 인터페이스 정의
- 시스템의 구조와 서브 시스템들 사이의 인터페이스를 명확히 정의
■ 사용자 인터페이스 설계
- 사용자가 익숙하고 편리하게 사용하도록 인터페이스 설계
② 하위설계
■ 모듈 설계
- 각 모듈의 실제적인 내부를 알고리즘 형태로 표현
■ 자료구조 설계
- 자료구조, 변수 등에 대한 상세한 정보를 설계
■ 알고리즘 설계
- 업무의 처리 절차 등을 설계

-자료구조: HDD, RAM 한정된 공간에다 효율적으로 자료를 배치하기 위함
-알고리즘: 문제를 해결하는 절차   ex) 라면 끓이는 방법


⑶ 소프트웨어 설계의 원리

■ 분할과 정복(Divide & Conquer)
- 규모가 큰 소프트웨어를 여러 개의 작은 서브 시스템으로 나누어 하나씩 완성 시킨다.
■ 추상화(Abstraction)
- 특정한 목적과 관련된 필수 정보만 추출하여 강조하고, 관련이 없는 세부 사항을 생략함으로써, 본질적인 문제
에 집중할 수 있도록 한다.
- 자세한 구현 전에, 상위 레벨에서 제품의 구현을 먼저 생각해보는 것
- 추상화 기법
 · 과정 추상화: 자세한 단계를 고려하지 않고 상위 수준에서 수행 흐름만 먼저 설계
 · 데이터 추상화: 데이터 구조를 대표할 수 있는 표현으로 대체하는 것이다.
 · 제어 추상화: 여러 명령들을 간단한 표현으로 대체하는 것이다.

과정 추상화: 데이터흘러가는 과정 추성화
데이터 추상화: 데이터 구조 추상화 (공통된 것 묶어서)

■ 단계적 분해(Gradual Decomposition)
- 기능을 점점 작은 단위로 나누어 점차적으로 구체화 하는 방법
■ 모듈화(Modulization)
- 실제로 개발할 수 있는 작은 단위로 나눈다.
■ 정보은닉(Information Hiding)
- 다른 객체에게 자신의 정보를 숨기고, 자신의 연산만을 통해 접근이 가능하도록 한다.
- 클래스 외부에서 특정 정보에 대한 접근을 막는다는 의미
- 캡슐화와 밀접한 관계가 있다.

2. 설계 모델링

⑴ 설계 모델링 개념

요구사항 그림 바탕으로 좀더 세부적으로 그린 것

- 소프트웨어를 구성하는 모듈들을 식별하고, 이것들의 연결을 그림으로 표현한 것
- 소프트웨어를 만들기 위한 계획 또는 만들어야 할 물건을 의미있게 표현한 것
- 소프트웨어에 대하여 여러 엔지니어들이 공통된 개념을 공유하는데 도움을 준다.


⑵ 설계 모델링 원칙

- 소프트웨어 설계는 변경이 용이하도록 구조화되어야 한다.
- 한 함수 안에 특정 기능을 수행하는 데 필요한 자료만을 사용하도록 한다.  => 독립성을 높여야 함
- 요구사항 분석에서 얻은 정보를 이용하여 반복적 방법을 통해 이루어져야 한다.
- 독립적이고 기능적인 특성들을 지닌 모듈 단위로 설계되어야 한다.


⑶ 설계 모델링 유형

■ 구조 모델링
- 소프트웨어를 구성하는 컴포넌트들의 유형, 인터페이스, 내부 설계 구조 및 이들의 연결 구조를 모델링
- 시스템의 구성 요소들과 이들 사이의 구조적인 관계와 특성들의 모델링
- UML 정적 다이어그램

구조모델링: 구조설계 / 연관관계


■ 행위 모델링
- 소프트웨어의 구성요소들의 기능들이 언제, 어떠한 순서로 기능을 수행해야 작용하는지를 모델링
- 시스템의 구성 요소들이 언제 어떠한 순서로 수행되는가와 같은 동적 특성들의 모델링
- UML 동적 다이어그램

행위모델링: 사용자가 어떤 기능 동작하는지


⑷ 소프트웨어 설계 절차 및 유형

■ 유형
- 아키텍처 설계: 시스템을 구성하는 서브시스템들과 그들 간의 관계를 파악하고 명세한다.
- 데이터베이스 설계: 시스템 구현에 사용되는 데이터의 구조를 자세하게 설계하고 명세한다.
- 서브시스템 설계: 각 서브시스템이 담당하는 서비스와 제약사항들에 대해 명세한다.
- 컴포넌트 설계: 서브시스템이 수행하는 기능을 여러 컴포넌트에 할당하고, 컴포넌트들의 인터페이스를
설계하고 명세한다.
- 자료구조와 알고리즘: 컴퓨터에 자료를 효율적으로 저장하는 방식과, 자료구조 내에서 기본적인 연산방법을
설계하고 명세
- 협약에 의한 설계: 클래스에 대한 여러 가정을 공유하도록 명세

협약에 의한 설계란 클래스에다 어떤 값을 집어넣었을때 어떤 결과값이 나오는지

 · 선행 조건: 컴포넌트 오퍼레이션 사용 전에 참이 되어야할 조건  = 입력값
 · 결과 조건: 사용 후 만족되어야 할 결과조건
 · 불변 조건: 오퍼레이션이 실행되는 동안 항상 만족되어야할 조건

 

 

참고 자료

https://m.blog.naver.com/dejavuhyo/222508514998

 

다이어그램의 종류

1. UML이란 통합 모델링 언어(UML, Unified Modeling Language)는 소프트웨어 공학에서 사용되는 ...

blog.naver.com

 

'information processing' 카테고리의 다른 글

1-8. UML  (0) 2022.06.19
1-7. 소프트웨어 아키텍처  (0) 2022.06.19
1-4,5. 요구사항 분석  (0) 2022.06.12
1-3. 프로젝트 계획  (0) 2022.06.12
1-2. 소프트웨어 개발 방법론  (0) 2022.06.09
  1. CHAPTER 3. 소프트웨어 설계Section 1. 소프트웨어 설계의 기본 원칙
  2. 1. 소프트웨어 설계
  3. 2. 설계 모델링
'information processing' 카테고리의 다른 글
  • 1-8. UML
  • 1-7. 소프트웨어 아키텍처
  • 1-4,5. 요구사항 분석
  • 1-3. 프로젝트 계획
nana-log
nana-log
포스팅이 좋았다면 "❤️공감" 눌러주세요!
nana-log
nana-log
nana-log
전체
오늘
어제
  • 분류 전체보기 (104)
    • TIL (26)
    • project (7)
    • algorithm (18)
    • information processing (30)
    • etc (19)

인기 글

태그

  • 원티드프리온보딩
  • dev-tools
  • 자바스크립트
  • docker
  • 회고
  • 알고리즘
  • JS

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
nana-log
1-6. 소프트웨어 설계의 기본원칙
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.