-
소프트웨어 설계 원리Topcit/소프트웨어 개발 2018. 6. 11. 15:10
- 소프트웨어 설계 원리
- 분할
- 분할과 정복
- 사용자의 요구사항을 지속적으로 분할하여 문제영역의 복잡성을 줄이고 이를 통해 얻어진 결과를 적절한 그룹으로 재조합 하는 것
- 서브 시스템
- 시스템 상위 레벨에서 분할한 시스템 구성 요소
- 시스템 설계자는 문제를 서브 시스템으로 분할하고 추후 여러 개발자들이 서로 다른 서브시스템을 독립적으로 개발할 수 있도록 한다.
- 추상화
- 상세한 수준의 구현 보다는 상위 수준에서 제품의 구현을 먼저 생각하는 것
- 추상화를 통해 관심분야가 아니거나 필수적이지 않은 세부적인 것을 생략함
- 유형
- 자료 추상화
- 제어 추상화
- 과정 추상화
- 정보 은닉
- 각 모듈의 내부 내용을 감추고 인터페이스를 통해서만 메시지를 전달할 수 있도록 하는 개념
- 모듈들 사이의 독립성을 유지시켜준다.
- 단계적 정제
- 프로그램 구조에서 모듈에 대한 세부 사항으로 내려가면서 구체화 된다.
- 정제 과정에서 추상화의 수준은 낮아지며 각 기능은 분할되어 해결 방안을 제시하게 된다.
- 모듈화
- 모듈을 프로그래밍 언어로 표현하면 서브루틴, 프로시저, 함수 등으로 부른다.
- 모듈화는 시스템을 지능적으로 관리할 수 있도록 해주며 복잡도 문제를 해결해 준다.
- 크고 복잡한 문제를 해결하기 위해 문제를 모듈로 분할하여 정복하게 된다.
- 어떻게 역할별 모듈간 간섭을 최소화하고 목적에 집중하여 효과적으로 역할을 수행하게 할 것인지가 모델 평가 기준이 된다.
- 구조화
- 소프트웨어 시스템의 구조화는 분할 과정에서 얻어질 수 있다.
- 응집도와 결합도
- 응집도
- 모듈 내의 각 구성 요소들이 서로 얼마나 관련이 있는지 연관 정도를 나타내는 것
- 모듈 내부 요소들 사이의 응집도가 증가하도록 설계하는 것이 바람직하다.
- 모듈의 응집도를 높이면 모듈 사이의 낮은 결합도를 얻을 수 있다.
- 결합도
- 모듈 사이의 상호 연관성의 복잡도를 말한다.
- 모듈들 사이의 상호 교류가 많고 서로의 의존이 많을수록 모듈들 사이의 결합도는 높아진다.
- 결합도가 높을수록 한 모듈을 독립적으로 변경하기 어렵다.
- 구조적 설계 기법
- 정의
- 구조적 분석 결과를 구조적 설계로 옮기는 과정을 자료흐름 중심 설계라고 한다.
- 구조적 방법을 적용하는 경우 시스템을 모듈화하고, 하향식으로 세분화하는 작업이 이루어진다.
- 구조적 설계에는 구조 도표가 사용된다.
- 구조 도표 : 소프트웨어의 구조와 설계를 구체적으로 나타내는데 사용된다.
- 구조적 설계는 요구사항 명세서를 설계 문서로 바꾸는 데 필요한 가이드라인을 제시한다.
- 변환흐름 중심 설계
- 정보를 받아들여 가공 처리한 후 그 결과를 외부에 출력하는 시스템을 컴퓨터 구조로 매핑 시키는 기법
- 이 기법은 시스템을 구성요소들로 분할시켜주며 모듈 사이의 계층 구조를 생성한다.
- 변환흐름 중심 시스템
- 입력 흐름 : 입력을 받아들여 시스템에서 사용할 수 있는 데이터로 정제
- 변환 중심 : 데이터를 가공 처리
- 출력 흐름 : 가공 처리된 정보를 받아 적당한 출력물로 변환시켜 출력
- 자료흐름도의 입력 출력 경계
- 변환흐름에 기초한 상위 프로그램 구조
- 트랜잭션 흐름 중심 설계
- 들어온 입력을 여러 갈래의 출력흐름으로 쪼갤 수 있는 경우에 가능하다.
- 입력 값을 평가하고 그 결과에 따라 출력 경로 중 하나를 따라 흘러간다.
- 트랜잭션 흐름
- 트랜잭션에 기초한 프로그램 구조
'Topcit > 소프트웨어 개발' 카테고리의 다른 글
객체지향 설계 과정 (0) 2018.06.11 소프트웨어 아키텍처 설계 (0) 2018.06.11 요구사항 분석과 명세화 (0) 2018.06.11 소프트웨어 기반 기술 (0) 2018.06.11 소프트웨어 개발 및 관리 (0) 2018.06.11 댓글