🖋 애플리케이션 설계 #1 - 공통모듈 설계
2020. 7. 18. 23:23ㆍ컴퓨터언어/소프트웨어공학
728x90
반응형
공통모듈의 개념을 설명하고, 공통모듈을 도출하고 분리해 낼 수 있다.
공통 모듈 설계를 위한 모듈화 원리를 이해할 수 있다.
모듈화 지표인 결합도와 응집도를 이해하고, 결합도의 최소화와 응집도의 최대화를 적용할 수 있다.
👍 공통모듈이란?
시스템을 구축할 때 여러 하위 시스템에서 공통으로 사용되는 모듈로, 클래스, 라이브러리(클래스의 묶음), 컴포넌트(라이브러리가 체계화된 형태의 소프트웨어로, 독립적으로 동작 가능), 프레임워크가 있다.
👊 클래스
공통모듈이 존재할 수 있는 가장 기본적인 형태
👊 라이브러리
여러 개의 클래스를 종합한 것
클라이언트 소프트웨어가 일방적으로 호출함
👊 컴포넌트
라이브러리가 체계화된 형태의 소프트웨어
독립적으로 동작하고 구현, 명세화, 패키지화, 배포가 가능하다
내/외부 인터페이스를 통해서만 접근할 수 있다.
👊 프레임워크
여러 기능을 하는 클래스/컴포넌트들이 서로 유기적인 관계를 맺은 형태
클라이언트 소프트웨어가 호출하기도 하고 호출을 당하기도 함
👍 공통모듈의 설계
공통모듈의 설계는 요구사항 기술서를 바탕으로 시스템이 담당해야 할 기능부분을 Use Case Diagram으로 나타낸다.
Use Case Diagram을 정적으로 나타내면 정적 모델링, 동적으로 나타 내명 동적 모델링이라고 한다.
- 정적 모델링 : 클래스 다이어그램, 컴포넌트 다이어그램
- 동적 모델링 : 시퀀스 다이어그램, 액티비티 다이어그램
👍 공통 모듈 평가 지표
응집도 : 인터페이스의 요청을 처리함에 있어서 공통 모듈 내의 클래스들 간에 얼마나 유기적으로 협업하여 처리하는가에 관한 정도
응집도가 높은 것에서 낮은 것 순으로 정렬하면 다음과 같다.
기능적 응집도(Functional) | 모듈 내부의 모든 기능이 단일한 목적을 위해 수행됨 |
순차적 응집도(Sequential) | 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용 |
통신적 응집도(Communication) | 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있음 |
절차적 응집도(Procedual) | 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행 |
시간적 응집도(Temporal) | 기능이 연관되기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리되는 것들의 모임 |
논리적 응집도(Logical) | 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 것 |
우연적 응집도(Coincidental) | 모듈 내부의 각 구성요소들이 연관이 없는 경우 |
결합도 : 어떤 모듈이 다른 모듈에 의존하는 정도
결합도가 높은 것에서 낮은 것 순으로 정렬하면 다음과 같다.
내용 결합도(Content) | 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용 |
공통 결합도(Common) | 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용 |
외부 결합도(External) | 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행 |
제어 결합도(Control) | 단순 처리할 대상인 값만 전달되는 것이 아니라, 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우 |
스탬프 결합도(Stamp) | 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우 |
자료 결합도(Data) | 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간 상호작용이 일어나는 경우 |
728x90
반응형
'컴퓨터언어 > 소프트웨어공학' 카테고리의 다른 글
📐 인터페이스 설계 #1 - 인터페이스 요구사항 (0) | 2020.07.20 |
---|---|
🖋 애플리케이션 설계 #2 - 객체지향, 디자인패턴 (0) | 2020.07.20 |
📝 화면 설계 #2 - UI 설계서와 UI 유용성, UI 시나리오 (0) | 2020.07.18 |
📝 화면 설계 #1 - 소프트웨어 아키텍처 (0) | 2020.07.18 |
📐 소프트웨어 설계 - 현행 시스템 분석하기 (0) | 2020.07.16 |