소프트웨어 설계 원리
1. 추상화
상위 수준에서 제품의 구현을 먼저 생각하는 것, 다루기 쉽고 필수적인 것만을 표현함
2. 정보 은닉
각 모듈의 내부 내용은 감추고 인터페이스를 통해서만 메시지 전달, 설계 과정에서 변경이 발생하는 경우 그 영향이 최소한의 모듈들에서만 미치도록 하는 것
3. 단계적 정제
프로그램의 구조에서 점차 모듈에 대한 세부 사항으로 내려가며 구체화됨. 추상화의 수준은 낮아지고 각 기능은 분해되어 해결방안을 제시
4. 모듈화
시스템을 지능적으로 관리할 수 있도록 해주고 복잡도의 문제를 해결해 줌. 크고 복잡한 문제를 해결하기 위해 작은 단위인 모듈로 분할하여 정복
5. 구조화
응집도와 결합도
1. 응집도
모듈 내부가 얼마나 강한 연관성으로 뭉쳐져 있는가를 나타내는 모듈 성숙도의 측정치.
모듈 내의 모든 원소들이 단일 기능을 수행하고 그 상위 모듈을 위해 수행되는 기능적 응집도가 가장 높은 응집도
(기능적 - 순차적 - 교환적 - 절차적 - 시간적 - 논리적 - 우연적)
2. 결합도
모듈 사이의 상호 연관성의 복잡도
모듈 간 매개변수로 통신하는 자료결합이 가장 이상적인 결합으로 가장 약한 결합도
파문 효과가 클수록 시스템을 유지보수하기 어려워짐
(자로 - 스탬프 - 제어 - 외부 - 공통 - 내용)
즉, 시스템을 설계할 때 모듈들은 높은 응집도(기능적 응집도)를 갖고, 모듈듈 사이의 결합도가 가장 낮게(자료결합)하는 것이 바람직함
구조적 설계
1. 변환흐름 중심 설계
정보를 받아들여 가공 처리한 후 그 결과인 외부세계에 출력하는 시스템을 이에 합당한 컴퓨터 구조로 매핑시키는 기법
2.트랜잭션흐름 중심 설계
DFD
- 개념
- 데이터의 프로세스 흐름 표현
- 소프트웨어의 설계 및 분석에서 유용하게 사용
- 구성요소
- Proces : 입력되는 데이터를 원하는 데이터로 변환하는 과정
- Data Flow : 구성요소간 인터페이스를 표현
- Data Store : 데이터가 저장된 장소
- External Entity : 프로세스 처리 과정의 시작과 끝을 표현
'CS' 카테고리의 다른 글
[CS / TOPCIT] 객체지향설계 (0) | 2023.05.04 |
---|---|
[CS / TOPCIT] 소프트웨어 아키텍처 설계 (0) | 2023.05.04 |
[CS / TOPCIT] 자료구조 (0) | 2023.05.01 |
[CS / TOPCIT] 소프트웨어 재사용 (0) | 2023.05.01 |
[CS / TOPCIT] 소프트웨어 공학 (0) | 2023.05.01 |