본문 바로가기
정보처리기사

[소프트웨어 설계] 18. 모듈

by reve5 2022. 2. 27.

6. 바람직한 소프트웨어 설계 지침이 아닌 것은?
① 모듈의 기능을 예측할 수 있도록 정의한다.
② 이식성을 고려한다.
③ 적당한 모듈의 크기를 유지한다.
④ 가능한 모듈을 독립적으로 생성하고 결합도를 최대화한다.

>> 정답 4번
모듈은 독립성이 높아야 한다. 
결합도가 높을 수록 독립성이 낮아진다.
결합도를 최소화 해야 한다.

8. 다음은 어떤 프로그램 구조를 나타낸다. 모듈 F에서의 fan-in과 fan-out의 수는 얼마인가?

① fan-in:2, fan-out:3
② fan-in:3, fan-out:2
③ fan-in:1, fan-out:2
④ fan-in:2, fan-out:1

>> 정답 2번

팬인은 들어오는 것
팬아웃은 나가는것
위에서 아래로 내려오는 계층적 구조로 판단하고 BCD에서 F로 들어오는 것이 3개 F에서 GH로 나가는 것이 2개 



20. 바람직한 소프트웨어 설계 지침이 아닌 것은?
① 적당한 모듈의 크기를 유지한다.
② 모듈 간의 접속 관계를 분석하여 복잡도와 중복을 줄인다.
③ 모듈 간의 결합도는 강할수록 바람직하다.
④ 모듈 간의 효과적인 제어를 위해 설계에서 계층적 자료 조직이 제시되어야 한다.


>> 정답 3번
결합도는 낮을 수록 모듈의 독립성이 높아져서 품질이 좋아진다.
응집도는 높을 수록 모듈의 독립성이 높아진다.



19. 공통 모듈에 대한 명세 기법 중 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성하는 원칙은?
① 상호작용성 ② 명확성
③ 독립성 ④ 내용성


>> 2번


https://www.youtube.com/watch?v=BjVOyCbZBTA&list=PLKpxllD6C8CnkSWfqRJsHOYtbBFnvtrcY&index=19 


모듈 = 부품
모듈화를 통해 분리 된 기능
재사용, 유지보수가 용이하다

재사용이 용이하려면 모듈끼리의 영향을 주지 않아야 함 >> 독립성 강함 = 품질이 좋음


독립성 = 결합도, 응집도로 판단

결합도 > 상호의존의 정도
결합도가 약해야 품질이 상슴
상호의존이 적다 독립성이 높다 품질의 상승

약한 결합도 - 강한 결합도 순
자료 결합도 : 데이터로 구성됨
- 스탬프 결합도 : 자료 구조로 구성(다른 모듈이 영향을 받음)
- 제어 결합도 : 다른 모듈에서 흐름을 제어
- 외부 결합도 : 다른 모듈이 내부 데이터 접근
- 공유 결합도 : 여러 모듈들이 공통으로 데이터 사용
- 내용 결합도 : 내부 기능과 데이터 직접 참조

응집도 > 내부 요소들끼리도 관련성을 판단하여 서로 기능 간섭이 없게하는 것
응집도가 강할 수록 독립성이 강해지고 품질이 좋아진다.

강한 응집도 - 약한 응집도 순
기능 응집도 : 단일 문제 단일 기능
- 순차 응집도 : 이전 모듈 출력 이후 다음 모듈 입력 (전후)두가지 기능이 연결됨
- 통신 응집도 : 동일 입출력으로 서로 다른 기능 수행 (모임, 둘이상 모듈 관련)
- 절차 응집도 : 다수의 기능이 순차적으로 진행 (다수)
- 시간 응집도 : 특정 시간대에 처리되는 기능 모듬
- 논리 응집도 : 유사한 기능 모음
- 우연 응집도 : 관련 없는 요소로 구성


팬인 팬아웃
팬인 : 제어 신호가 들어온다  (들어오는 화살표)
팬아웃 : 제어신호가 나간다(나가는 화살표)

시스템 복잡도 최소화는 인은 높게 아웃은 낮게

공통모듈 : 공통적으로 사용하는 모듈
정확성(필요성), 명확성(비중의적) 완전성(필요한 모든것) 일관성(충돌방지) 추적성(출처, 관계 파악)

효과적인 모듈 설계 방안
결합도 낮게 응집도는 높게 = 독립성 높아지고 = 재사용 및 유지보수 가능
복잡도하지 않고 중복되지 않으면서 하나의 입출력을 가지도록 설게 = 독립적이고 단순하게 설계 = 높은 품질


댓글