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 |