본문 바로가기

정보 처리 기사 필기/1. 소프트웨어 설계

1-4 애플리케이션 설계 - 공통 모듈, 모듈의 평가

반응형

공통 모듈

 

1. 모듈

 

개념
  • 전체 프로그램을 기능 단위로 분해
  • S/W 성능 향상, 시스템 디버깅, 시험, 통합 및 수정 용이
  • 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 기능 단위
  • 프로그램이 효율적으로 개발, 관리될 수 있도록 시스템 분해하고 추상화하여 S/W 제품 성능 향상시키거나 시스템 수정 및 재사용, 유지 관리 용이
5가지 기본 요소
  • 입력 요소 : 데이터 입력 부분 a, b(parameter, 매개 변수)
  • 출력 요소
  • 기능요소
  • 기관 요소 : 모듈 내부의 알고리즘
  • 내부 자료 요소 : 모듈 내부 기억 장소
장점
  • 효율적 관리 및 성능 향상
  • 전체적 S/W 이해 쉬워지고 복잡성 감소
  • S/W 시험, 통합, 수정 용이
  • 기능 분리되어 인터페이스 단순화
  • 오류 파급으로 인한 부작용 최소화
  • 모듈 재사용 가능하여 개발/유지보수 용이
공유도(Fan-in)/
제어도(Fan-out)
  • 공유도
    • 상위 모듈의 수: 얼마나 많은 모듈이 주어진 모듈 호출하는 지에 대한 척도
    • 공유도 높을수록 해당 클래스 사용하는 클래스 수 많음
    • 단일 실패점 발생 가능성 잇으므로 중점 관리 및 더 많은 테스트 통한 검증 필요
  • 제어도
    • 하위 모듈의 수: 주어진 모듈이 호출하는 모듈의 개수
    • 제어도 높을 수록 하나의 모듈이 많은 다른 모듈 사용
    • 불필요한 기능 호출하고 있지 않은지 추가 검토 진행, 업무 로직 단순화 검토
모듈 개수 및 비용 간 상관도
특징
  • 프로그램에서 특정 기능 처리할 수 있는 실행 코드
  • 다른 프로그램에서 재사용 가능
  • 코딩(구현), 컴파일 독립적으로 수행
  • 실행은 종속적 수행
  • 모듈은 다른 모듈을 호출 할 수도/당할 수도 있음
  • 모듈 호출 시 매개 변수 전달하거나 받을 수 있음
  • 기본 라인 수는 100라인 이내가 적당
  • 모듈 찾아 실행하는 시간 느림

 

 

 

2. 공통 모듈

 

개념
  • 복잡한 계산식, 반복 사용되는 검증 기능, 연관되어 발생하는 조건식 등의 경우 별도의 공통 모듈로 구성하여 프로젝트 재사용성 향상
  • 정보 시스템 구축 시 자주 사용하는 기능들로써 재사용이 가능하게 패키지로 제공하는 독립된 모듈 의미
원칙
  • 정확성(Correctness): 시스템 구현 시 필요 여부 알도록 정확히 작성
  • 명확성(Clearity): 해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성
  • 완전성(Completeness): 시스템 구현 시 필요하고 요구되는 모든 것 기술
  • 일관성(Consistency): 상호 충돌 없도록 작성
  • 추적성(Traceability)
공통 모듈 식별 및 명세
  • 기능 분석하여 공통 부분 식별
    • 단위 시스템 업무 기능 분석하여 공통 부분 식별/후보군 선정
    • 후보군 공통 모듈 선정 여부 검토
    • 공통 모듈 선정 시 별도의 기능으로 분리
  • 공통 부분에 대한 검토 회의
    • 공통 부분으로 식별된 기능 시스템 담당자와 검토회의를 통해 공통화 여부 확정
    • 업무 선임 개발자와 주요 개발자 식별, 이해관계자와 함께 검토 회의 일정 수립
    • 식별된 공통 기능 재사용의 효과성 높은지 검토
    • 식별되지 않은 공통 기능 잇을 시 추가하여 효율성 높일 수 있는지 의견 취합
    • 공통 기능에 대한 관리 담당자 선별
공통 분류의 재사용 범위에 따른 분류
  • 함수와 객체 재사용
  • 컴포넌트 재사용
  • 애플리케이션 재사용

 

 

 

재사용 종류

재공학         기존 소프트웨어 버리지 않고 기능 개선/새로운 소프트웨어로 재활용하는 소프트웨어 재사용 기법        
역공학         SW에 대한 디버깅, 디컴파일 등의 분석 통해 기존 제품에 구현된 구조, 원리, 기술, 알고리즘 등을 역으로 분석하여 재구성
재개발 기존 시스템 내용을 참조하여 완전히 새로운 시스템 개발, 기존 시스템에 새로운 기능 추가, 기존 시스템의 기능 변경

 

 

 

 

3. 재공학(Re-Engineering)

 

소프트웨어 재사용
  • 재사용 가능한 정보: 프로그램 전체, 모듈, 명령어, 소스 코드, 컴포넌트
  • 개발된 S/W 반복 사용으로 생산성 향상
  • 개발 기간, 비용 줄이기 위해 기능 파악하고 재구성하여 시스템 응용하기 위한 최적화 작업
소프트웨어 재사용의 2가지 기본 기술
  • 생성 중심(Generation Based, 모듈화) : 재사용 단위 찾아 발전. 전자 칩 같은 유용한 S/W 부품 찾아내는 기술
  • 합성 중심(Composition Based, 모델화) : 모듈을 생산성있게 조립. S/W 부품(모듈/블록)을 만들어 끼워 맞추는 방법
소프트웨어 재사용 이점
  • 개발 시간과 비용 단축
  • 프로젝트 실패의 위험성 감소
  • 개발 지식 공유
  • S/W 품질 향상
  • S/W 개발 생산성 증진
재사용 모듈 설계 유의 사항
  • 이해도 높아야 함
  • 공통 기능에의 응집도 최대한 높게 구성
  • 모듈 독립성 향상 위해 결합도 최대한 낮게 구성
  • 복잡도,중복성 줄이고 일관성 유지
  • 기능 예측 가능하며 제한적이지 않도록
  • 유지보수 용이
모듈 평가 기준
  • 결합도(연관성): 모듈 간의 관계성 척도
  • 응집도(완성도): 한 모듈 내 처리 요소 사이의 기능적 연관 정도
  • 결합도 작을수록 응집도 클 수록 좋은 설계
  • 결합도 높을 시 시스템 구현 및 유지보수 어려움
  • 결합도 낮을 시 몯류 독립성 향상, 재사용성 올라가 활용도 좋음

 

 

 

모듈의 평가

 

 

1. 소프트웨어 모듈 결합도(Coupling)

자스제외공내

  • 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호 의존성
  • 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도

 

자료 결합도(Data Coupling)
  • 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우의 결합도
  • 두 모듈간의 인터페이스가 자료 요소만으로 구성된 결합으로 가장 좋은 결합도록 실인수와 가인수 번지 독립적 사용(모듈이 파라미터나 인수로 다른 모듈에게 데이터 넘겨주고 호출받은 모듈은 받은 데이터에 대한 처리 결과 돌려줌)
스탬프 결합도
(Stamp Coupling, 구조 결합)
  • 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
  • 두 모듈 간 같은 레코드 부분적으로 공유하여 모듈 간 독립성 유지
제어 결합도
(Control Coupling)
  • 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우의 결합도
  • 처리하는 방법을 제어 요소로 전달. 모듈 간에는 제어 변수로 종속적인 관계
외부 결합도
(Extern Coupling)
  • 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도
  • 외부 변수에 의해 영향 받는 두 모듈이 결합된 관계
공통 결합도
(Common Coupling)
  • 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도
  • 모듈이 다른 모듈의 내부 자료를 참조 하는 형태의 결합된 관계
내용 결합도
(Content Coupling)
  • 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
  • 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 참조하는 형태의 결합된 관계

 

 

 

2. 소프트웨어 모듈 응집도

우논시절통순기

 

우연적 응집도
(Coincidental Cohesion)
 모듈 내부의 루틴들이 뚜렷한 관계 없이 묶인 경우로 응집도 가장 약하고 가장 좋지 않은 모듈 설계
논리적 응집도
(Logical Cohesion)
모듈 내부 루틴들이 같은 범주에 속하는 기능끼리 묶인 모듈
시간적 응집도
(Temporal Cohesion)
모듈 내부 루틴들이 시간적으로 수행 시기가 같은 기능끼리 묶인 모듈
절차적 응집도
(Procedure cohesion)
모듈 내부 루틴들이 수행 시기가 순위가 있는 기능끼리 묶인 모듈
통신적 응집도
(Communication cohesion, 정보적, 교환적)
모듈 내부 루틴들 중 작업 대상이 같은 기능끼리 묶인 모듈
순차적 응집도
(Sequential cohesion)
모듈 내부 루틴들이 이전의 명령어로부터 나온 출력 결과를 그 다음 명령어의 입력 자료로 사용하는 경우의 응집도
기능적 응집도
(Functional cohesion, 함수적 응집도)
모듈 내부가 하나의 단일 기능으로 존재하는 경우로, 프로그램 언어에서 지원받는 라이브러리

 

 

 

 

Reference

https://book.naver.com/bookdb/book_detail.naver?bid=17134434 

 

이기적 정보처리기사 필기 기본서

- 기초부터 탄탄히 잡아주는 영진닷컴의 이기적 수험서!영진닷컴이 자랑하는 수험서 브랜드 ‘이기적’ 시리즈는 쉽고 풍부한 내용으로 기초부터 튼튼하게 쌓아주는 합격의 동반자입니다. 기

book.naver.com

 

 

 

반응형