728x90
[1] 공통 모듈
1. 공통 모듈의 개념
1) 모듈의 개념
- 모듈은 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어
- 모듈화를 통해 분리된 시스템의 기능들로 서브프로그램, 서브 루틴, 소프트웨어 내의 단위 프로그램, 작업 단위 등과 같은 의미로 사용된다.
2) 모듈의 특징
- 각각의 모듈은 상대적으로 독립성을 가지고 있다.
- 모듈 내부에는 그 모듈을 하나로 통합하는 수많은 조합이 존재할 수 있다.
- 모듈은 단독으로 컴파일할 수 있으며, 재사용할 수 있다
- 독립성이 높은 모듈일수록 모듈 수정 시에도 다른 모듈들에는 영향을 거의 미치지 않고, 오류가 발생 시에도 쉽게 해결할 수 있다.
- 모듈의 독립성은 결합도와 응집도에 의해 측정되며, 독립성을 높이려면 모듈의 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야 한다.
3) 공통 모듈의 개념
- 전체 프로그램의 기능 중 특정 기능을 처리할 수 있는 실행 코드를 의미한다
- 자체적으로 컴파일 가능하고, 다른 프로그램에서 재사용이 가능하다.
- 여러 기능 및 프로그램에서 공통으로 사용할 수 있는 모듈을 의미하며 날짜 처리를 위한 유틸리티 모듈 등이 해당된다.
2. 공통 모듈 원칙
원칙 | 설명 |
정확성(Correctness) | - 해당 기능이 실제 시스템 구현 시 필요한지 아닌지를 알 수 있도록 정확하게 작성 |
명확성(Clarity) | - 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성 |
완전성(Completeness) | - 시스템이 구현될 때 필요하고 요구되는 모든 것을 기술 |
일관성(Consistency) | - 공통 기능 간에 상호 충돌이 없도록 작성 |
추적성(Tranceability) | - 공통 기능에 대한 요구사항 출처와 관련 시스템 등의 유기적 관계에 대한 식별이 가능하도록 작성 |
3. 모듈화
1) 모듈화 개념
- 모듈화는 프로그램이 효율적으로 관리될 수 있도록 시스템을 분해하고 추상화함으로써 소프트웨어 제품의 성능을 향상시키거나 시스템의 수정 및 재사용, 유지 관리를 쉽게 하는 기법
- 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법
기법 | 설명 |
루틴 (Routine) | - 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임 |
메인 루틴 (Main Routine) | - 프로그램의 주요한 부분이며, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴 - 메인 루틴은 서브 루틴을 호출 |
서브 루틴 (Subroutine) | - 메인 루틴에 의해 필요할 때마다 호출되는 루틴 |
2) 모듈화 필요성
- 모듈의 크기가 너무 작아 모듈 개수가 ㅁ낳아지면 모듈 간 통합 비용이 많이 발생한다
- 모듈의 크기가 너무 크면 모듈 간의 통합 비용이 줄어드는 대신 모듈 당 개발 비용이 커진다
3) 바람직한 모듈 설계 방안
- 모듈의 독립성과 재사용성을 높이기 위하여 결합도는 낮추고 응집도는 높인다,
- 모듈의 복잡도와 중복성을 줄이고 일관성을 유지한다
- 모듈의 기능은 예측이 가능하여야 하며, 지나치게 제한적이어서는 안된다.
- 적당한 모듈의 크기를 유지한다
- 모듈 간의 효과적인 제어를 위해 설계에서 계층적 자료 조직이 제시되어야 한다
- 유지보수가 용이해야 한다.
4. 모듈화 유형
유형 | 설명 |
응집도 | - 모듈 내부에서 구성요소 간에 밀접한 관게를 맺고 있는 정도 - 응집도가 높을수록 필요한 요소들로 구성되어 있고 낮을수록 관련이 적은 요소들로 구성 |
결합도 | - 모듈과 모듈 간에 어느 정도 관련성이 있는지를 나타내는 정도 - 관련이 적을수록 모듈의 독립성이 높아 모듈 간 영향이 적어짐 |
5. 팬인(Fan-In) 및 팬아웃(Fan-Out)
1) 팬인(Fan-In) 팬아웃(Fan-Out) 개념
- 소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해서 팬인, 팬아웃을 활용한다
- 팬인과 팬아웃 분석을 통하여 시스템의 복잡도를 측정할 수 있다.
- 시스템 복잡도를 최적화하기 위해서는 팬인은 높게, 팬아웃은 낮게 설계해야 한다.
구분 | 팬인 | 팬아웃 |
개념 | - 어떤 모듈을 제어(호출)하는 모듈의 수 | - 어떤 모듈에 의해 제어(호출)되는 모듈의 수 |
모듈 숫자 계산 | - 모듈 자신을 기준으로 모듈에 들어오면 팬인 | - 모듈 자신을 기준으로 모듈에서 나가면 팬아웃 |
고려사항 | - 팬인이 높으면 재사용 측면에서 설계가 잘되었지만, 단일 장애점 발생 가능 - 팬인이 높으면 관리 비용 및 테스트 비용 증가 |
- 팬아웃이 높을 경우는 불필요한 모듈 호출 여부 검토 필요 - 팬아웃이 높을 경우는 단순화 여부 덤토 필요 |
2) 팬인 및 팬아웃 계산 방법
- G의 팬인은 B,C,D 3개
- G의 팬아웃은 I,J 2개
[2] 설계 모델링
1. 설계 모델링
1) 설계 모델링 개념
- 설계 모델링은 요구사항 분석 단계에서 규명된 필수 기능들의 구체적인 구현 방법을 명시하는 기법이다.
- 소프트웨어에 요구되는 기능과 성능 조건들을 만족하는 소프트웨어의 내부 기능, 구조 및 동적 행위들을 모델링하여 표현, 분석, 검증하는 과정이다.
2) 설계 모델링 원칙
- 소프트웨어 설계는 변경이 쉽도록 구조화되어야 한다
- 하나의 함수 안에 특정 기능을 수행하는데 필요한 자료만 사용하도록 규제한다.
- 독립적이고 기능적인 특성을 지닌 모듈 단위로 분할 설계한다.
- 계층적 구조를 가져야 한다
3) 설계 모델링 유형
유형 | 설명 | 구성요소 |
구조 모델링 | - 소프트웨어를 구성하는 컴포넌트들의 유형, 인터페이스 내부 설계 구조 및 이들의 상호 연결 구조를 모델링 - 시스템의 구성요소들과 이들 사이의 구조적인 관계와 특성들을 모델링 |
프로시저, 데이터 구조, 모듈, 파일 구조 |
행위 모델링 | - 소프트웨어의 구성요소들의 기능들과 이들이 언제, 어떠한 순서로 기능을 수행하고 상호작용하는지를 모델링 - 시스템의 구성요소들이 언제 어떠한 순서로 수행되는가와 같은 동적인 특성들을 모델링 |
입력 데이터, 출력 데이터, 데이터 흐름, 데이터 변환, 데이터 저장 등 |
*프로시져란?
- 프로그램을 기능에 따라 여러 개의 단위로 분해하여 작성하는 것으로 크게 서브 프로시저와 함수 프로시저로 구분한다
*모듈이란?
- 프로그램을 구성하는 구성요소의 일부로 관련된 함수나 변수 또는 클래스를 모아 놓은 파일.
2. 소프트웨어 설계 유형
- 자료 구조 설계 (Data Structure Design)
- 아키텍처 설계 (Architecture Design)
- 인터페이스 설계 (Interface Design)
- 프로시저 설계 (Procedure Design)
- 협약에 의한 설계 (Design by Contract)
자료 구조, 아키텍처, 인터페이스, 프로시저는 상위 설계, 모듈 설계는 하위설계
3. 코드 설계
1) 코드 설계 개념
- 코드 설계는 데이터의 분류나 조합을 쉽게 하기 위하여 사물을 표현하는 코드를 설계하는 기법
2) 코드의 기능
기능 | 설명 |
표준화 | - 정보들 종류, 모양, 크기 등의 일정한 기준에 따라 통일적으로 표현하는 기능 |
분류 | - 정보들을 동일한 특성을 가진 데이터로 그룹화하여 나누는 기능 |
식별 | - 다른 것과 구별될 수 있는 기능 |
배열 | - 일련의 순서로 나열할 수 있는 기능 |
간소화 | - 정보의 표현을 간소화해서 나타낼 수 있는 기능 |
연상 | - 정보를 표현하고자 하는 대상체 뜻과 의미가 코드에 내포되게 하는 기능 |
암호화 | - 정보의 외부 표현을 감추고자 하는 기능 |
오류 검출 | - 정보 입력이나 관리 시 잘못된 정보를 찾아내는 기능 |
3) 코드 설계 종류
종류 | 설명 |
연상 코드(Memonic Code) | - 코드만 보고 대상을 연상할 수 있도록 명칭 일부를 약호(간단하고 알기 쉽게 나타내어 만든 부호) 형태로 넣어 구성된 코드 -> 나라 이름 (한국:KR) |
블록 코드(Block Code) | - 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 코드 - 구분 코드라고도 불림 -> 전화번호 (지역번호-국번-일련번호 조합에서 지역번호-국번은 같은 지역끼리 공통) |
순차 코드(Sequence Code) | - 일정한 기준에 따라 순서대로 일련번호를 부여한 코드 -> 중고등 학생들의 반에서 번호 (가나다순으로 1번,2번) |
표의 숫자 코드(Significant Digit Code) | - 대상 자료의 물리적인 수치인 길이, 넓이, 용량 등을 표시한 코드 -> 20-10-300(길이-넓이-용량 조합) |
십진 코드 (Decimal Code) | - 10진수 형태로 표현한 코드 -> 상품 바코드 (880...) |
그룹 분류식 코드 (Group Classification Code) | - 대상을 기준에 따라 대분류, 중분류, 소분류로 구분하여 번호를 부여한 코드 -> 학번(입학 연도 - 일련번호 조합) |
4) 코드 설계 절차
- 코드화 항목 선정 -> 코드화 목적 설정 -> 코드화 대상 확인 -> 코드화 범위 결정 -> 코드 사용 기간 설정 -> 코드화 항목의 특성 분석 -> 코드화 방식 결정 -> 문서화
5) 코드 오류 종류
종류 | 설명 |
사본 오류 (Transcription Error) | - 한 자리를 잘못 표기한 경우 - 필사 오류, 오자 오류라고도 불림 |
전위 오류 (Transposition Error) | - 연속된 두 글자가 서로 바뀌어 표기된 경우 |
생략 오류 (Omission Error) | - 한 글자를 빼먹고 기술한 경우 |
첨가 오류 (Addition Error) | - 한 글자를 추가되어 기술한 경우 |
이중 전위 오류(Double Transposition Error) | - 전위 오류가 중복 발생한 경우 |
4. HIPO
1) HIPO 개념
- HIPO는 시스템의 분석 및 설계, 문서화할 때 사용되며 하향식 소프트웨어 개발을 위한 문서화 도구이다.
2) HIPO 특징
- 체계적인 문서 관리가 가능하다
- 기호, 도표 등을 사용해서 보기가 쉽고 이해가 쉽다.
- 기능과 자료의 의존 관계를 동시에 표현할 수 있다.
- 변경, 유지보수가 용이하다
- 시스템의 기능을 고유 모듈들로 분할하여 이들 간의 인터페이스를 계층구조로 표현한 것을 HIPO 차트라고 한다
3) HIPO 차트 종류
종류 | 설명 |
가시적 도표 (VIsual Table of Contents) | - 시스템의 전체적인 기능과 흐름을 보여주는 계층구조도 |
총체적 도표 (Overview Diagram) | - 입력, 처리, 출력에 대한 정보를 제공하는 도표 - 프로그램을 구성하는 기능을 기술 |
세부적 도표 (Detail Diagram) | - 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술하는 도표 |
728x90
'정보처리기사' 카테고리의 다른 글
[정보처리기사] UI 설계 (0) | 2021.01.26 |
---|---|
[정보처리기사] UI 요구사항 확인 (2) (0) | 2021.01.24 |
[정보처리기사] UI 요구사항 확인 (1) (0) | 2021.01.13 |
[정보처리기사] 분석 모델 확인 (0) | 2021.01.13 |
[정보처리기사] 요구사항 확인 (2) (0) | 2021.01.13 |
댓글