-
공통 모듈 구현정보처리기사(자격증)/서버 프로그램 구현 2020. 10. 7. 17:41
모듈(Module)
- 모듈은 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를지칭하는 용어
- 모듈화를 통해 분리된 시스템의 각 기능들로 서브프로그램, 서브 루틴, 소프트웨어 내의 단위 프로그램
작업 단위 등과 같은 의미로 사용된다.
모듈의 특징
- 각각의 모듈은 상대적으로 독립성을 갖고 있다.
- 모듈 내부에는 그 모듈을 하나로 통합하는 수많은 조합이 존재 할 수 있다.
- 모듈은 단독으로 컴파일 할 수 있으며, 재사용할 수 있다.
- 독립성이 높은 모듈일 수록 모듈 수정 시에도 다른 모듈들에는 영향을 거의 미치지 않고, 오류 발생시에도 쉽게
해결할 수 있다.
- 모듈의 독립성은 결합도와 응집도에 의해 측정되며, 독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게 모듈의 크기는
작게 만들어야 한다.
모듈화(Modularity)의 개념 및 방법
- 소프트웽의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는
설계 및 구현 기법
기법 설명 루틴(Routine) 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령 들의 모임 메인 루틴(Main Routin) - 프로그램의 주요한 부분이며, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴
- 메인 루틴은 서브 루틴을 호출서브 루틴(Subroutine) - 메인 루틴에 의해 필요할 때마다 호출되는 루틴 공통 모듈 구현의 개념
- 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법
- 인터페이스 모듈, 데이터베이스 접근 모듈 등 필요한 공통 모듈을 구현
- 모듈 간의 결합도는 줄이고 응집도는 높인 공통 모듈 구현을 권장
응집도(Cohension)의 개넘
- 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소 간 연관 정도
- 정보은닉 개념의 확장개념으로, 하나의 모듈은 하나의 기능을 수행하는 것을 의미
응집도의 유형
- 응집도의 유형에는 우연적, 논리적, 시간적, 절차적, 통신적, 기능적 응집도 순서로 응집도가 높아진다.
* 우논시절 통순기
우연적 응집도
(Coincidental Cohension)모듈 내부의 각 구성요소가 연관이 없을 경우 논리적 응집도
(Logical Cohension)유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우 시간적 응집도
(Temporal Cohension)연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우 절차적 응집도
(Procedural Cohension)모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우 통신적 응집도
(Communication Cohension)동일한 입력과 출력을 사용하여 다른 기능을 수행하는 홛롱들이 모여 있을 경우 순차적 응집도
(Sequential Cohension)모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우 기능적 응집도
(Functional Cohension)모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 소프트웨어 모듈 결합도
결합도
- 모듈 내부가 아닌 외부 모듈과의 연관도 또는 모듈간의 상호의존성이다.
- 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도
결합도의 유형
- 결합도의 유형은 내용, 공통, 외부, 제어, 스탬프, 자료 결합도 순으로 결합도 낮아진다.
내공외제스자
내용 결합도
(Content Coupling)다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우 공통 결합도
(Common Coupling)파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용 하는 경우 외부 결합도
(External Coupling)두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우 제어 결합도
(Control Coupling)단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우 스탬프 결합도
(Stamp Coupling)모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우 자료 결합도
(Data Coupling)모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우 - 결합도가 낮을수록 품질이 좋아진다.
공통 모듈 구현 대상
- 공통 모듈 화면은 화면 모듈, 화면에서 입력받은 데이터 처리를 위한 서비스 컴포넌트, 비즈니스 트랜잭션 컴포넌트 등이 있다.
공통 모듈 구현 절차
- DTO/VO -> SQL -> DAO -> Service -> Controller -> 화면 구현 순
- 공통 모듈의 구현을 위해 절차에 구현되는 MVC 패턴의 개념을 이해한다.
* DAO(Data Access Object)
- 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부 내용 노출 없이 데이터를 조작하는 객체
* VO(Value Object)
- 간단한 엔티티를 의미하는 작은 가변 클래스인 DTO와는 달리 고정 클래스를 가지는 객체
* DTO(Data)
- 프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장,회수 외에 다른 기능이 없는 추상 객체
* 서비스(Service)
- 사용자의 요청을 처리하는 기능을 제공하기 위한 로직을 구현하고 DAO 클래스를 통해서 DB연동을 처리하는 기능을 수행하는 클래스
공통 모듈 상세 설계 확인
MVC 패턴 역할
구분 역할 모델(Model) - 애플리케이션이 무엇을 할 것인지를 정의
- 내부 비즈니스 로직을 처리하기 위한 역할뷰(View) - 화면에 무엇인가를 보여주기 위한 역할
- 모델, 컨트롤러가 보여주려고 하는 것들을 화면에 처리컨트롤러(Controller) - 모델이 어떻게 처리할지를 알려주는 역할
- 뷰에 명령을 보내어 화면 요청 결과를 전달팬인(Fan-In) 및 팬아웃(Fan-Out)
팬인 및 팬아웃 개념
- 소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해서 팬인, 팬아웃을 활용한다.
- 팬인과 팬아웃 분석을 통하여 시스템의 복잡도를 측정할 수 있다.
팬인 및 팬아웃
구분 팬인 팬아웃 개념 - 어떤 모듈을 제어(호출)하는 모듈의 수 - 어떤 모듈에 의해 제어(호출)되는 모듈의 수 모듈 숫자 계산 - 모듈 자신을 기준으로 모듈에 들어오면 팬인 - 모듈 자신을 기준으로 모듈에서 나가면 팬아웃 고려사항 - 팬인이 높으면 재사용 측면에서 설계가 잘되었지만,
단일 장애점 발생 가능
- 팬인이 높으면 관리 비용 및 테스트 비용 증가- 팬아웃이 높을 경우는 불필요한 모듈 호출 여부 검토
- 팬아웃이 높을 경우는 단순화 여부 검토 필요* 시스템 복잡도를 최적화하기 위해서는 팬인은 높게, 팬아웃 낮게 설계해야 한다.
'정보처리기사(자격증) > 서버 프로그램 구현' 카테고리의 다른 글
서버 프로그램 구현 - 배치 프로그램 구현 (0) 2020.10.08 서버프로그램 구현 - 서버 프로그램 구현 (0) 2020.10.08 공통 모듈 테스트 (0) 2020.10.08