추상화, 모듈화 |
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 |
댓글