2024.07.05 공통모듈설계&설계모델링


공통 모듈 설계
모듈의 개념
모듈은 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어이다.
모듈화를 통해 분리된 시스템의 기능들로 서브프로그램, 서브 루틴, 소프트웨어 내의 단위 프로그램, 작업 단위 등과 같은 의미로 사용된다.
모듈의 특징
독립성
각각의 모듈은 상대적인 독립성을 가진다.
모듈의 독립성은 결합도와 응집도에 의해 측정된다.
다양한 조합
- 모듈 내부에는 모듈을 하나로 통합하는 수많은 조합이 존재할수 있다.
재사용
- 모듈은 단독으로 컴파일할 수 없으며 재사용 가능
영향 최소화
- 독립성이 높은 모듈일수록 수정 시 다른 모듈에 영향을 거의 미치지 않음
공통 모듈의 개념
전체 프로그램의 기능 중 특정 기능을 처리할 수 있는 실행 코드
자체적 컴파일 가능, 다른 프로그램에서 재사용 가능
여러 기능 및 프로그램에서 공통으로 사용 가능/ 날짜 처리 유틸리티 모듈이 예시
공통 모듈 원칙
정확성 : 실제로 필요한 기능인지 아닌지를 알 수 있도록 정확하게 작성해야 한다.
명확성 : 해당 기능에 대해 일관되게 이해하고 한 가지로 해석될 수 있도록 작성해야 한다.
완전성 : 필요한 요구되는 모든 것을 기술
일관성 : 공통 기능 간에 상호 충돌이 없도록 작성
추적성 : 요구사항 출처와 관련 시스템 등의 유기적 관계에 대한 식별이 가능하도록 작성해야 한다.
모듈화
개념 : 모듈화는 프로그램이 효율적으로 관리될 수 있또록 시스템을 분해하고 추상화 함으로써 소프트웨어 제품의 성능을 향상시키거나 시스템의 수정 및 재사용 유지 관리를 쉽게하는 기법이다.
성능 향상, 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위 모듈로 분해하는 설계 및 구현 기법
모듈화 기법
루틴 : 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임
메인 루틴 : 프로그램의 중요한 부분, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴
서브 루틴 : 메인 루틴에 의해 필요할 때마다 호출되는 루틴
모듈화 특징
재사용성
모듈의 이름으로 호출하여 다수가 이용
매개변수로 값을 전달하여 사용 가능
모듈마다 사용할 변수를 정의하지 않고 상속하여 사용 가능
변수의 선언을 효율적으로 하여 기억장치를 유용하게 사용
복잡도 감소
프로그램의 복잡도가 절감
모듈은 분담하여 독립성으로 작성
관리 용이
시스템 개발 시 시간과 노력을 절감
시스템의 디버깅과 수정이 쉬움
품질 향상
- 시스템 개발 시 소프트웨어의 품질을 증대
바람직한 모듈 설계 방안
결합도는 낮추고 응집도는 높인다.
복잡도와 중복성을 줄이고 일관성을 유지한다.
예측이 가능해야 하며, 지나치게 제한적이면 안된다.
적당한 크기를 유지해야 한다.
설계에서 계층적 자료 조직이 제시되어야 한다.
유지보수가 용이해야 하고, 이식성을 고려해야 한다.
모듈화 유형
응집도
모듈 내부에서 구성요소 간에 밀접한 관계를 맺고 있는 정도
응집도가 높을수록 필요한 요소들로 구성되어 있고 낮을수록 관련이 적은 요소들로 구성
결합도
모듈과 모듈 간에 얼마나 관련성이 있는지를 나타내는 정도
관련이 적을수록 독립성이 높아 모듈 간 영향이 적어짐
모듈 간의 최소한의 상호작용으로 하나의 기능만을 수행하는 정도
Fan-In & Fan-Out
소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해서 팬인, 팬아웃을 활용한다.
팬인, 팬아웃 분석을 통하여 시스템의 복잡도를 측정할 수 있다.
구분 | Fan - In | Fan - Out |
개념 | 어떤 모듈을 제어(호출) 하는 모듈의 수 | 어떤 모듈에 의해 제어(호출) 되는 모듈의 수 |
모듈 숫자 계산 | 모듈 자신을 기준으로 모듈에 들어오면 팬인 | 모듈 자신을 기준으로 모듈에서 나가면 팬아웃 |
고려사항 | 팬인이 높으면 재사용 측면에서 설계가 잘되었지만 단일 장애점 발생 가능 |
팬인이 높으면 관리 비용 및 테스트 비용 증가 | 팬아웃이 높을 경우는 불필요한 모듈 호출 여부 검토 필요
팬아웃이 높을 경우는 단순화 여부 검토 필요 |
설계 모델링
설계 모델링
개념
설계 모델링은 요구사항 분석 단계에서 규명된 필수 기능들의 구체적인 구현 방법을 명시하는 기법
소프트웨어에 요구되는 기능과 성능 조건들을 만족하는 소프트웨어의 내부 기능, 구조 및 동적 행위들을 모델링하여 표현, 분석, 검증하는 과정이다.
설계 모델링 원칙
변경이 쉽도록 구조화 되어야 한다.
하나의 함수 안에 특정 기능을 수행하는 데 필요한 자료만 사용하도록 규제한다.
독립적, 기능적 특성을 지닌 모듈 단위로 분할 설계한다.
계층적 구조를 가져야 한다.
설계 모델링 유형
- 구조 모델링과 행위 모델링이 있다.
* 구조 모델링
소프트웨어를 구성하는 컴포넌트들의 유형, 인터페이스, 내부 설계 구조 및 이들의 상호 연결 구조를 모델링
시스템의 구성요소들과 이들 사이의 구조적인 관계와 특성을 모델링
구조 모델링의 구성요소
- 프로시저, 데이터 구조, 모듈, 파일 구조
* 행위 모델링
소프트웨어의 구성요소들의 기능들과 이들이 언제, 어떠한 순서로 기능을 수행하고 상호 작용하는지를 모델링
시스템의 구성요소들이 언제 어떠한 순서로 수행되는가와 같은 동적인 특성들을 모델링
행위 모델링의 구성요소
- 입력 데이터, 출력 데이터, 데이터 흐름, 데이터 변환, 데이터 저장 등
소프트웨어 설계 유형
자료구조 설계 (Data Structure Design)
아키텍처 설계 (Architecture Design)
인터페이스 설계 (Interface Design)
프로시저 설계 (Procedure Design)
협약에 의한 설계 (Design by Contract)
소프트웨어 설계 원리
시스템 명세가 명확한 경우와 모든 것을 새로 개발하는 작업에는 하향식 설계가 적합
기존 컴포넌트들을 조합하여 시스템을 개발하는 경우에는 상향식 설계가 적합
상위 설계
자료구조 설계
아키텍처 설계
인터페이스 설계
프로시저 설계
협약에 의한 설계
하위 설계
- 모듈 설계
코드 설계
개념
- 코드 설계는 데이터의 분류나 조합을 쉽게 하기 위하여 사물을 표현하는 코드를 설계하는 기법
기능
- 표준화, 분류, 식별, 배열, 간소화, 연상, 암호화, 오류 검출 등이 있다.
코드 설계 종류
연상 코드 (Mnemonic Code)
코드만 보고 연상할 수 있도록 명칭 일부를 약호형태로 넣어 구성한 코드
ex) 한국 : KR
구분 코드 (Block Code)
공통성이 있는 것끼리 구분하고, 각 블록 내에서 일련번호를 부여하는 코드
ex)전화번호 (지역 - 국번 - 일련번호 조합에서 지역 - 구역은 같은 지역끼리 공통)
순차 코드 (Sequence Code)
일정한 기준에 따라 순서대로 일련번호를 부여한 코드
ex)가나다순으로 1번 2번
표의 숫자 코드 (Significant Digit Code)
대상 자료의 물리적인 수치인 길이, 넓이, 용량 등을 표시한 코드
ex) 20 - 10 - 300 (길이 - 넓이 - 용량 조합)
- 십진 코드 (Decimal Code)
10진수 형태로 표현한 코드
ex) 상품 바코드(777 ***)
그룹 분류식 코드 (Group Classification Code)
대상을 기준에 따라 대분류, 중분류, 소분류로 구분하여 번호를 부여하는 코드
ex) 학번(입학 연도 - 일련번호 조합)
코드 오류 종류
사본 오류 : 한자리를 잘못 표기한 경우, 오타
전위 오류 : 연속된 두 글자가 서로 바뀌어 표기된 경우
생략 오류 : 한 글자를 빼먹고 기술한 경우
첨가 오류 : 한 글자를 추가하여 기술한 경우
이중 전위 오류 : 전위 오류가 중복 발생한 경우
Subscribe to my newsletter
Read articles from Thunder directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Thunder
Thunder
안녕하세요! Web개발을 공부하고 있는 윤종일 입니다. 현재는 Java 백엔드 개발을 깊게 파고들고 있어요! 제 궁극적인 목표는 풀스택 개발자가 되는 것입니다. 프론트엔드와 백엔드 모두를 자유롭게 넘나들며, 사용자에게 가치를 전달할 수 있는 완성도 높은 애플리케이션을 만드는 것이 목표입니다.