최초 작성일: 2024-08-27
최종 작성일: 2024-08-27
목표 : 정처기 합격 및 CS 지식 쌓기
1. 단위 모듈 구현
(1) 단위 모듈 구현의 개념
소프트웨어를 기능 단위를 분해하여 개별적으로 구현하는 기법
서브 시스템, 서브루틴, 작업 단위 등으로 나누어 각 모듈이 독립적으로 활용될 수 있게 한다 (독립적 -> 응집도를 높이고 결합도를 낮춰)
모듈은 작은 크기를 가지며, 하나의 기능만을 수행하는 것이 이상적이다
모듈의 크기가 작을수록 이해, 구현 및 테스트가 용이하다
(2) 단위 모둘 구현 시 장점
소프트웨어의 효율적인 관리 및 성능 향상에 기여한다
전체적인 소프트웨어의 복잡성이 감소하고, 이해성이 증대된다
모둘별 테스트와 통합, 변경이 용이해진다
기능의 분리가 가능하며, 인터페이스가 단순해진다
오류의 파급효과를 최소화하고, 모듈의 재사용으로 개발 및 유지보수가 용이해진다
(3) 효과적인 모듈화
결합도(Coupling)을 낮추고 응집도(Cohension)를 높여 모듈의 독립성을 강화한다
FAN-OUT(한 모듈이 호출하는 다른 모듈의 수)을 최소화 하고, FAN-IN(한 모듈을 호출하는 다른 모듈의 수)을 증가시킨다
모듈 인터페이스를 평가하여 복잡성과 중복성을 줄이고 일관성을 높인다.
기능 예측이 가능한 모듈을 정의하여 효과적인 관리와 사용을 도모한다
가능한 하나의 입력과 하나의 출력을 유지하여 모듈의 단순성과 이해성을 증대시킨다
(4) 단위 모듈 설계의 뭔리
원리 | 설명 |
단계적 분해 | 단순한 형태로 시작하여 점진적으로 상세화 |
추상화 | 복잡한 문제를 간단하고 일반적인 형태로 변환 |
독립성 | 높은 응집도와 낮은 결합도로 모듈의 독립성 강화 |
정보 은닉 – 캡슐화 | 모듈 내부의 데이터와 로직을 외부로부터 보호 |
분할과 정복 | 큰 문제를 작은 부분으로 나누어 해결 |
2. 결합도
(1) 결합도(Coupling)의 개념
모둘과 모듈 간의 관련성/의존성 정도
관련이 적을수록 모듈의 독립성이 높아 모듈 간 영향이 적어진다
결합도가 낮을수록 잘 설계된 모듈
(2) 결합도 유형 ( 데스제외공내)
데이터 : 어떤 모듈을 호출 할 때 값만 전달
스탬프 : 어떤 모둘을 호출 할 때 자료 구조만 전달
제어 : 제어요소가 전달 ( 함수 호출 시,
외부 : 외부에 있는 변수 사용
공통/유 : 전역 변수를 사용 할 때
내용 :
구분 | 설명 |
자료 결합도 (Data Coupling) |
모듈 간의 인터페이스로 값이 전달되는 경우 Ex) a()함수 호출 하면서 b(1,2) 호출 가능 b(x,y)라는 함수가 정의 되어 있으니 1,2 라는 값만 전달 하면 됨 |
스탬프 결합도 (Stamp Coupling) |
모듈 간의 인터페이스로 자료구조, 주소 값, 배열이나 오브젝트, 스트럭처 등이 전달 되는 경우 Ex) b(*a,*c) |
제어 결합도 (Control Coupling) |
단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야한다는 제어요소가 전달 되는 경우 Ex) b(1,2) if (x>1) else y =0 |
외부 결합도 (external coupling) |
어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조하는 경우 – 외부 변수를 사용하는 정도 |
공통 결합도 (Common Coupling) |
파라미터가 아닌 모듈 밖에 선언되어 있는 전역변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용 하는 경우 |
내용 결합도 (Content Coupling) |
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우 |
3. 응집도
(1) 응집도(Conhension)의 개념
모듈 내부에서 구성요소 간에 밀접한 관계를 맺고 있는 정도
응집도가 높을수록 필요한 요소들로 구성되어 있고 낮을수록 관련이 적은 요소들로 구성
응집도가 높을수록 잘 설계된 모듈
(2) 응집도 유형 ( 우논시절통순기 – 우리 논던 시절 먹었던 순대 기가 막히게 맛있어)
구분 | 설명 |
기능적 응집도 (Functional Cohension) |
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 |
순차적 응집도 (sequential cohension) |
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우 |
통신적 응집도 (Communication Cohension) |
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있는 경우 |
절차적 응집도 (Procedural Conhension) |
모듈의 다수의 관련 기능을 가질 때 모듈 안의 구성들이 그 기능을 순차적으로 수행하는 경우 |
시간적 응집도 (Temporal Cohension) |
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우 |
논리적 응집도 (Logical Cohension) |
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우 |
우연적 응집도 (Coincidental Cohension) |
모듈 내부의 각 구성요소들이 연관이 없을 경우 |
4. 팬인(Fan-In), 팬아웃(Fan-Out)
(1) 개념
모듈의 복잡도와 상호작용을 분석하는 데 사용되는 지표
시스템의 복잡도를 측정하고 이를 최적화할 수 있다
시스템 복잡도를 최적화하기 위해서는 팬인은 높게 팬 아웃은 낮게 설계
구분 | 설명 |
팬인 | -특정 모듈을 호출하거나 참조하는 상위 모듈의 수 -높은 팬인 값은 해당 모듈의 중요성이나 재사용성이 높음을 나타낸다 -설계 시 팬 인 값을 높게 유지하는 것이 좋다 |
팬아웃 | -특정 모듈이 호출하거나 참조하는 하위 모듈의 수 -높은 팬아웃 값은 해당 모듈이 여러 다른 모듈들과의 상호작용이 많음을 의미한다(복잡도가 높아짐) -설계시 팬 아웃 값을 낮게 유지하는 것이 좋다 |
5. 공통 모듈 구현
(1) 공통 모듈 구현 순서
DTO/VO (데이터 덩어리)
SQL문 구현(xml 형태)
DAO 구현 (SQL문을 호출할 수 있는 것)
Service 구현
Controller 구현
필요시 화면 구현
(2) 공통 모듈 구현 요소
구현요소 | 설명 |
DTO(Data Transfer Object) | -프로세스 사이에서 데이터를 전송하는 객체 -Getter, Setter 메서드만 포함한다 |
VO(Value Object) | -도메인에서 속성들을 묶어서 특정 값을 나타내틑 객체 -DTO와 동일한 개념이나 차이점이나 Read Only 속성 객체 이다 |
DAO (Data Access Object) |
-실질적으로 DB에 접근하기 위한 객체 -DB에 접근하기 위한 로직& 비즈니스로직을 분리하기 위해 사용 |
Service | -DAO 클래스를 호출하는 객체 |
Controller | -비즈니스 로직을 수행하는 객체 |
(3) Annotation
1) 개념 : 사전적으로 ‘주석’이라는 의미를 가지고 있다/ 자바코드에 주석처럼 달아 특수한 의미를 부여한다/ 컴파일 또는 런타임에 해석된다
2) 종류
종류 | 설명 |
Controller | -스프링 MVC에서 컨트롤러 객체임을 명시 -웹 요청과 응답을 처리하는 컴포넌트를 정의 |
RequestMapping | -클래스나 매서드가 특정 uri에 매핑되어 있음을 명시 -주로 url요청을 매서드에 연결하는데 사용 |
'스터디스터디 > 정처기' 카테고리의 다른 글
[실기] 소프트웨어 구축- 배치프로그램 구현 (1) | 2024.09.01 |
---|---|
[실기] 소프트웨어 구축- 서버프로그램 구현 (2) | 2024.08.28 |
[실기] 소프트웨어 구축- 개발 프레임워크 (0) | 2024.08.27 |
[실기] 소프트웨어 구축- 개발 환경구축 (1) | 2024.08.27 |
[실기] 소프트웨어 구축- UI 구현 (1) | 2024.08.26 |