일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준
- 알고리즘
- c
- 도커
- docker
- 코딩
- python
- 푸시푸시
- java
- 도커 elk
- 파이썬
- 클라우드
- streamsets 강의
- 정보처리기사
- 도커 mysql
- 데이트
- c++
- 앤서블 설치
- ansible install
- 스트림셋이란?
- elk stack
- nvidia docker
- 스트림셋
- 자바
- MySQL
- mysql on docker
- 데이터베이스
- mysql docker
- C언어
- 도커 시작하기
- Today
- Total
리그캣의 개발놀이터
소프트웨어 설계 - 응집도와 결합도 본문
분석analysis(What[spec], Problem)
설계design(How)
구현prementation
응집도
한 모듈 내에 있는 구성 요소의 기능적 관련성을 평가하는 기준으로 응집도가 높을수록 모듈의 독립성은 높아짐
응집도 순서 : 기능적 응집도 -> 순차적 응집도 -> 통신적 응집도 -> 절차적 응집도 -> 시간적 응집도 ->
논리적 응집도 -> 우연적 응집도
기능적 응집도 : 하나의 기능을 수행하는데 필요한 요소들만 포함한 경우
- 구조도 최하위 모듈에서 많이 발견
순차적 응집도 : 하나의 기능에서 생성된 출력자료가 다음 기능의 입력자료로 사용되는 경우
(예: 행렬 입력 후 그 행렬의 역행렬을 구해서 이를 출력)
통신적 응집도 : 동일한 자료 사용하지만, 자료에 대한 처리 절차가 완전히 다르고 서로 관계없는 경우
- 교환 응집, 정보 응집
(예: 같은 입력자료를 사용하여 A를 계산한 후 B를 계산한다.)
절차적 응집도 : 입출력을 공유하지 않으나 순서에 따라서 수행될 필요가 있는 경우
예: restart루틴
총계 출력하고 화면을 지우고 메뉴를 뿌린다.
시간적 응집도 : 특정한 시점에서 작업을 수행하는 경우
(예: 초기치 설정, 종료처리 등)
논리적 응집도 : 유사한 기능들이 하나의 모듈 안에 구성된 경우
- 사용하는 매개변수에 따라 처리하는 내용이나 경로가 달라진다
예: 오류처리- 자판기의 잔액부족, 음료수부족
출력처리- 직원 인사정보 출력, 회계정보 출력
우연적 응집도 : 관련 없는 요소들로 구성된 모듈 (단순히 일정한 크기로 분할한 경우)
- 모듈화 장점이 없다.
- 유지보수 작업 곤란
결합도
두 모듈간의 상호 의존도를 측정하는 것으로, 좋은 설계는 모듈간의 결합도를 최소화하여 모듈의 독립성을 높인것을 의미
결합도 순서: 자료결합도 -> 스태프 결합도 -> 제어 결합도 -> 외부 결합도 -> 공통 결합도 -> 내용 결합도
자료 결합도 : 단순한 매개변수 전단
스태프 결합도 : 모듈간 자료구조 전달 결합
제에 결합도 : 호출하는 모듈이 호출되어 지는 모듈의 제어를 지시하는 데이터를 매개변수로 사용
외부 결합도 : SW 외부환경과 연관되어 있음
공통 결합도 : 많은 모듈이 전역변수를 참조함
내용 결합도 : 특정 모듈이 다른 모듈의 내부 자료 나 제어정보를 사용함
'프로그래밍 기본 > 소프트웨어 설계' 카테고리의 다른 글
소프트웨어 설계 - UML 소개 (0) | 2018.01.25 |
---|---|
소프트웨어 설계 - 캡슐화 상속 (0) | 2018.01.25 |
소프트웨어 설계 - 설계 단계 (0) | 2018.01.25 |
소프트웨어 설계 - star uml 사용법 (0) | 2018.01.25 |
소프트웨어 설계 - Abstract class 예제 (0) | 2018.01.25 |