본문 바로가기
IT기술노트/소프트웨어공학

소프트웨어 설계 (Software Design)

by 비트코기 2021. 1. 31.

추상화, 모듈화


I. 요구사항 명세서를 참조하여 상세 설계서 작성 활동, 소프트웨어 설계의 개요

가. 소프트웨어 설계 (Software Design)의 정의

   - 요구사항 명세서를 참조하여 분석 단계에서 고려하지 않았던 상세 내용을 충분히 반영하여 구체적인 설계서를 작성하는 활동


II. 소프트웨어 설계의 종류

구분

주요활동

설명

상위설계

아키텍처 설계

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

데이터 설계

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

시스템 분할

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

인터페이스 정의

시스템의 구조와 서브 시스템들 사이의 인터페이스를 명확히 정의

사용자 인터페이스 설계

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

하위설계

모듈 설계

각 모듈의 실제적인 내부를 알고리즘 형태로 표현

자료구조 설계

자료구조, 변수 등에 대한 상세한 정보를 작성


III. 소프트웨어 설계의 원리 및 추상화

가. 소프트웨어 설계의 원리

설계 원리

설명

분할과 정복

규모가 큰 소프트웨어를 개발할 때 여러개의 서브시스템으로 나누고 서브시스템을 아주 작은 시스템이나 모듈로 나누어 개발하여 하나씩 위로 올라가면서 완성시키는 방법

추상화

특정 목적과 관련된 필수 정보만 추출하여 강조하고, 관련 없는 세부 사항을 생략함으로써 본질적인 문제에 집중할 수 있도록 하는 작업

단계적 분해

기능을 점점 작은 단위로 나누어 점차적으로 구체화하는 방법으로 하향식 설계에 사용

모듈화

실제 개발할 수 있는 작은 단위로 나누는 것으로 모듈은 규모가 큰 것을 여러 개로 나눈 조각으로 소프트웨어 구조를 이루는 기본 단위를 의미

나. 소프트웨어 설계의 추상화

구분

내용

정의

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

개념

객체지향에서 객체들의 공통점을 뽑아 클래스라는 이름을 붙여 놓은 것을 추상화

유형

과정 추상화

- 주어진 문제에 대해 프로그래밍하기 전에 상세 부분을 생략하고 전체 흐름만 파악할 수 있게 알고리즘 형태로 작성하는 활동

데이터 추상화

- 현실 세계의 사물을 데이터적 측면과 기능적 측면을 통해 정의하여 사용자에게 꼭 필요한 기능만 사용할 수 있도록 개방한 구조

- (사례) 데이터와 메소드를 클래스 형태로 캡슐화

제어 추상화

- 프로그래밍 언어에서 쓰는 제어 구조를 추상화

 

 

반응형

'IT기술노트 > 소프트웨어공학' 카테고리의 다른 글

다형성 (Polymorphism)  (0) 2021.01.31
객체지향 (Object-Oriented)  (0) 2021.01.31
객체지향 설계원칙  (0) 2021.01.31
모듈화 (Modularity)  (0) 2021.01.31
도메인공학  (0) 2021.01.31
페르소나 (Persona)  (0) 2021.01.31
요구사항 추적표  (0) 2021.01.31
요구공학(Requirements Engineering)  (0) 2021.01.31

댓글