반응형
-
설계 원리 개념
- 소프트웨어를 구성 요소로 나누는데 적용되는 기준
- 기능과 데이터 구조를 소프트웨어에 대한 개념적 표현으로부터 분리하는 방법
-
소프트웨어 설계의 기술적 품질을 정의하는 균일한 기준
-
추상화
- 현실 세계를 컴퓨터 세계로 변환시키는 과정
-
소프트웨어 공학 프로세스의 각 단계에서 추상화가 정제됨
- 요구 사항 분석 시 환경에 친숙한 용어들로 설명
- 설계가 진행됨에 따라 추상화 수준이 낮아짐
-
소스 코드가 생성될 때 최하위 수준의 추상화에 도달
-
기능(프로시저) 추상화제한된 특정 기능을 갖는 명령어들의 명명된 순서
-
자료(데이터) 추상화데이터 객체를 기술하는 데이터들의 명명된 집합체
-
제어 추상화내부적인 상세 표현이 없는 프로그램 제어 메커니즘
-
-
단계적 정제(Stepwise Refinement)
- Niklaus Wirth에 의해 제안된 하향식(Top-down) 설계 전략
-
정제는 높은 수준의 추상화 단계에서 정의된 기능 명세로부터 시작되어 모든 문장이 컴퓨터의 기본 명령이나 프로그래밍 언어로 표현될 때 완료
-
모듈성
- 소프트웨어 아키텍처는 모듈성을 구체적으로 표현한 것
- 하나의 모듈로 구성된 대형 프로그램은 제어 경로의 수, 참조 범위, 변수의 수, 전체적인 복잡도로 인해 이해하는 데 어려움이 있음
- 분할 및 정복(Divide and Conquer)을 이용하여 복잡한 문제를 여러 작은 문제로 나누면 문제 해결이 쉬워짐
-
모듈성은 모듈 내부의 응집도는 높이면서 각 모듈 간의 결합도는 낮을 때 가장 효과적
-
소프트웨어 아키텍처
-
정의
- 광의 : 주요 시스템 요소들과 이들 간의 상호 작용을 표현
- 협의 : 프로그램 구성 요소(모듈)들의 계층 구조, 상호 작용 방법, 구성 요소에 의해 사용되는 데이터의 구조를 총칭
-
아키텍처 설계에서 명세 되어야 할 성질
- 구조적 성질 : 시스템 구성 요소들이 패키지화되고 상호 작용하는 방법
- 특별/기능적 성질 : 시스템 특성들을 달성하는 방법(성능, 용량, 신뢰도, 보안)
- 관련 시스템들의 집합 : 관련된 시스템들의 설계에서 공통적으로 직면하는 반복 패턴들을 유도해 내야 함
-
아키텍처 설계 모델 종류
-
Structural 모델프로그램 구성 요소들의 조직화된 모임으로 아키텍처 표현
-
Framework 모델유사한 타입의 애플리케이션에서 직면하는 반복적인 아키텍처 설계 프레임워크(패턴)들을 식별함으로써 추상화 수준을 향상시킴
-
Dynamic 모델구조나 시스템 형상이 외부사건의 함수로서 어떻게 변경되는지 프로그램 아키텍처의 행위 측면들을 나타냄
-
Process 모델시스템이 수용해야 하는 업무나 기술적 프로세스에 초점을 맞춤
-
Functional 모델시스템의 기능 계층 구조를 나타내기 위해 사용함
-
-
ADL(Architecture Description Language)모델들을 표현하기 위한 아키텍처 서술 언어
-
-
제어 계층 구조 : 프로그램 구조
- 프로그램의 구성 요소인 모듈들의 계층적인 구성을 나타내며, 제어의 계층 구조를 암시
-
대표적인 표기법은 구조 차트인 트리 구조
- Fan-out : 한 모듈에 의해 직접 제어되는 모듈의 수
-
Fan-in : 특정 모듈을 직접 제어하는 모듈의 수
-
구조적 분할
-
수평적 분할각 주요 프로그램 기능 단위로 모듈 계층 구조가 분리되는 분할
-
장점
- 소프트웨어의 테스트를 쉽게 해줌
- 유지보수를 쉽게 해줌
- 부작용(Side Effects)을 최대한 줄여줌
- 소프트웨어 확장을 수월하게 함
-
단점
- 모듈 인터페이스들 사이에 주고받는 데이터의 양을 증가 시키며, 프로그램 흐름의 전체 제어를 복잡하게 만들 수 있음
-
-
수직적 분할
- 제어(의사 결정)와 작업이 프로그램 아키텍처에서 하향식으로 분리되는 분할
- 상위 모듈들은 실제 처리 작업을 거의 수행하지 않고 제어 기능들을 수행하며, 하위 모듈들은 입.출력, 계산 등을 수행하는 작업 모듈
-
수직적으로 분할된 아키텍처는 변경이 일어날 때 부작용의 영향을 덜 받으며, 따라서 유지보수성이 좋아짐
- 분할이란 : 문제가 복잡할 때 문제를 쉽게 이해할 수 있는 부분으로 나누는 것을 의미하는데, 수평적 분할은 기능 단위로 분할하는 것이고, 수직적 분할은 각 기능에서 세부적으로 분할 하는 것을 의미
-
-
소프트웨어 프로시저
- 프로그램 구조는 계층적으로 제어를 결정해주며, 프로시저는 각 모듈이 어떻게 수행되는가를 자세하게 나타냄
- 프로시저는 반드시 연속된 사건, 정확한 결정 순간, 반복 수행, 데이터 구조까지 포함하여 정확한 수행 명세를 제공해야 함
-
정보 은닉(Information Hiding)
- 한 모듈 내부에 포함된 절차와 데이터 등의 정보는 이러한 정보를 필요로 하지 않는 모듈로부터 접근할 수 없도록 모듈이 명세화되고 설계되어야 한다는 개념
- 소프트웨어 기능을 수행하는데 반드시 필요한 정보들만을 전달하도록 독립적인 모듈들을 정의함으로써 효과적인 모듈화가 이루어지게 함
- 정보 은닉의 목정은 변경 시의 부주의로 인한 오류로부터 소프트웨어의 다른 부분이 영향을 받지 않도록 하기 위함
반응형
'밥벌이 > 소프트웨어 공학' 카테고리의 다른 글
소프트웨어 테스트 프로세스 (0) | 2010.12.27 |
---|---|
소프트웨어 설계 개요 (0) | 2010.11.25 |
소프트웨어 모듈화 (0) | 2010.11.25 |
소프트웨어 설계 방법 (0) | 2010.11.25 |
소프트웨어 요구사항의 개요 (0) | 2010.10.18 |