c23 [SW 공학] 설계
본문 바로가기
[SW 공학]

[SW 공학] 설계

by Jarvis2304 2023. 10. 11.

▶소프트웨어 개발 과정

- (도메인 분석)  계획 → (요구)분석 → 설계 → 구현 → 테스트 → 유지보수

- 소프트웨어를 만들기 위해 계획 단계에서 유지보수 단계까지 이르기까지 일어나는 일련의 과정

- 소프트웨어 개발 생명주기라고 함

이미지 출처: 쉽게 배우는 소프트웨어 공학

 

▶ 3단계: 설계

- 사용자의 기능적, 비기능적 요구를 만족시키기 위하여 제약 조건이 반영된 구현 대안을 창출하는 일

- 요구 명세서와 설계 원리, 제약 조건에 따라 상위 설계(구조 설계)하위 설계(상세 설계)로 나눌수 있음

- 소트트웨어 시스템의 내부를 설계

- 분석 단계에서 표현한 유스케이스 다이어그램과 클래스 다이어그램을 가지고 코딩할 수 있는 수준으로 환경에 밀접하게 구체화함

- 요구 분석 단계에서 사용자의 요구를 what(무엇) 관점에서 바라보았다면, 설계 단계에서는 how(어떻게) 관점에서 생각

- 즉 설계의 목적은 요구 분석 명세서를 기반으로 어떻게 구축할 것인가를 결정

▷상세설계 단계의 주요 작업: 구조(아키텍처) 설계, 시스템 분할, 인터페이스 정의, 자료설계(데이터베이스 설계) → 시스템 구조도 작성

▷하위설계 단계의 주요 작업: 모듈 내부 설계(알고리즘, 지역 변수) 사용자 인퍼터페이스 설계, 자료구조 설계(구조형 및 배열)

 

▶설계 원리

● 추상화의 원리 :관련 없는 세부사항을 생략함으로써 본질적인 문제에 집중할수 있도록하는 작업

● 정보 은닉(information hiding) :각 모듈의 처리 내용이 시스템의 다른 부분으로부터 감추어져 있어야함, 다른 모듈에 영향 받지 않게 설계

● 단계적 분해 :기능을 최대한으로 떼어 내어 생각한 후  점차적으로 구체화

● 모듈화 :실제로 개발할 수 있는 작은 단위로 나누는 것(모듈의 응집력 높게, 모듈간의 결합력 낮게 설계해야함)

● 재사용성 증진

 

 

 

 

 

 

▶상위 설계(구조 설계)

▷구조(아키텍쳐) 설계

- 시스템의 전체적인 구조를 나타냄

 

▷시스템 분할(모듈 설계)

- 전체 시스템을 여러 개의 서브 시스템으로 나눔

 

▷인터페이스 정의

- 시스템의 구조와 서브시스템 사이의 인스페이스가 명확히 정의

- 모듈 간의 관계를 정립

 

▷ 자료설계(데이터 베이스 설계)

- 시스템에 필요한 정보를 자료구조와 데이터베이스 설계에 반영

- 데이베이스 스키마 및 전체 시스템에서 사용될 데이터 구조를 설계

- 이것은 전체 시스템에서 사용될 데이터의 논리적 구조를 다룸

 

 

→ 시스템 구조도(struct chart) 도출

 

 

▶시스템 구조도(struct chart)

- 시스템을 모듈 단위로 분할하여 모듈을 계층적으로 구성한 것

 

● 시스템 구조도 작성

- 시스템을 모듈 단위로 분할

- 모듈의 계층적 구성

- 모듈 사이의 입출력 인터페이스

- 모듈의 이름과 기능

 

 

 

 

▶ 하위 설계(상세 설계)

▷ 모듈 내부 설계(알고리즘, 지역 변수) 

 

▷사용자 인퍼테이스 설계

 

▷자료 구조 설계

- 각 모듈 또는 하위 시스템 내에서 데이터를 구조화하고 필요한 자료구조를 정의

- 이것은 모듈 내에서 데이터를 효율적으로 다루기 위한 구체적인 구조

→ 상위설계의 자료설계는 전체 시스템의 구조를 정의하고 데이베이스를 설계하는 것, 

    하위설계의 자료구조 설계는 모듈 내에서 데이터를 관리하는 방법을 정의하는 것에 초점을 둠

 

● 자료 구조 설계 주요 작업

- 데이터 구조 선택: 어떤 유형의 데이터를 저장하고 어떻게 구조화 할 것인지 결정, 이것은 데이터를 단순 리스트, 배열, 연결 리스트, 트리, 그래프 등과 같은 특정 구조에 맞게 저장하는 것을 의미

 

- 데이터 구조 세부 설계 :선택한 데이터 구조를 더 자세히 설계, 데이터를 어떻게 저장할 것인지, 각 요소의 속성은 무엇인지, 데이터 간의 관게는 어떻게 정의할 것인 등을 결정

 

- 데이터 구조와 알고리즘 연산: 데이터를 저장하고 조작하기 위한 알고리즘과 연산을 정의, 이것은 데이터를 추가, 삭제, 검색, 정렬 또는 필터링하는 방법과 같은 데이터 조작 작업을 다루는 것을 의미

 

 

 

'[SW 공학]' 카테고리의 다른 글

[SW 공학] 요구 분석  (1) 2023.10.11
[SW 공학] 계획-2  (0) 2023.09.27
[SW 공학] 계획-1  (1) 2023.09.25
[SW 공학] 개요  (0) 2023.09.24

댓글