반응형

공통 모듈

모듈

1) 모듈의 개념

  • 프로그의 효율적인 관리를 위해 프로그램을 기능 단위로 분해한 것
  • 인터페이스가 단순해지고 소프트웨어의 이해가 쉬워짐
  • 재사용이 가능하기 때문에 프로그램 개발과 유지보수가 용이
  • 소프트웨어 통합, 수정 및 테스트가 용이하며 오류의 파급 효과가 적음
  • 다른 모듈들을 호출하거나 호출을 당할 수 있으며 종속적으로 수행

2) 모듈의 기본 요소

① 입력 : 모듈에 데이터가 입력되는 부분(매개 변수, Parameter)

② 출력 : 연산의 결과를 상위 모듈로 반환(Return)하는 부분

③ 기능 : 모듈이 수행하는 기능이 정의된 부분

④ 기관 : 모듈 내부 기능이 수행되는 알고리즘을 의미

⑤ 내부 자료 : 모듈 내부의 데이터들을 의미

3) 공유도와 제어도

① 공유도(Fan-in)

  • 해당 모듈을 사용(호출)하는 상위 모듈들의 개수
  • 공유도가 높다는 것은 해당 모듈의 호출이 가능한 상위 클래스가 많다는 것
  • 이상적인 모듈 설계지만, 단일 실패 지점이 발생할 가능성이 있으므로 중점적인 관리가 필요

② 제어도(Fan-out)

  • 해당 모듈이 사용하는 하위 모듈들의 개수
  • 제어도가 높다는 것은 해당 모듈이 호출할 수 있는 하위 클래스가 많다는 것
  • 불필요한 호출이 있는지, 업무 로직을 좀 더 단순화할 수 있는지 검토가 필요

4) 모듈 설계 시 고려사항

  • 모듈의 크기가 작을수록 모듈의 개수가 많아지므로 모듈을 통합하는 비용이 커짐
  • 모듈의 크기가 클수록 모듈의 개수가 적어지므로 모듈의 개방 비용이 커짐
  • 모듈 통합 비용과 개발 비용을 적절히 조절하여 최소 노력 비용을 산정
  • 가급적 100라인 이내로 설계

공통 모듈

1) 공통 모듈의 개념

  • 프로그램에서 공통적으로 사용할 수 있는 모듈
  • 정보 시스템 구축 시 자주 사용하는 기능들을 모듈화하여 재사용이 가능한 패키지로 제공하는 것

2) 공통 모듈의 설계 원칙

① 정확성(Correctness) : 시스템 구현에 필요 여부를 정확히 판단할 수 있도록 설계

② 명확성(Clarity) : 기능의 구성이 한 가지로 해석될 수 있도록 일관되게 설계

③ 완전성(Completeness) : 시스템 구현에 필요한 모든 요구사항을 수행할 수 있도록 설계

④ 일관성(Consistency) : 상호 충돌 없이 적용될 수 있도록 설계

⑤ 추적성(Traceability) : 요구사항 출처, 관련 시스템 등의 관계를 파악할 수 있도록 설계

3) 공통 모듈의 재사용 범위

① 함수와 객체 재사용 : 클래스나 메소드 단위로 재사용

② 컴포넌트 재사용

  • 컴포넌트 단위로 재사용
  • 해당 컴포넌트의 인터페이스를 통해 통신

③ 애플리케이션 재사용 : 공통된 업무에 대한 기능을 제공하도록 구현된 애플리케이션을 공유

4) 공통 모듈의 식별과 명세

① 공통 부분 식별

  • 단위 시스템의 업무 기능을 분석하여 공통으로 사용될 수 있는 부분을 식별하여 후보군으로 선정
  • 검토 회의를 통해 후보군으로 선정된 기능의 공통 모듈 선정 여부를 결정

② 검토 회의

  • 개발자와 이해관계자가 함께 검토회의 일정을 수립
  • 식별된 공통 기능이 재사용의 효과성이 높은지 검토
  • 식별되지 않은 공통 기능이 있다면 추가하여 효율성을 높일 수 있는지 의견을 취합
  • 공통 기능에 대한 관리 담당자를 정함

소프트웨어 재공학

1) 소프트웨어 재사용

① 소프트웨어 재사용의 개념

  • 개발 자원을 줄이기 위해 기능을 파악하고 재구성하여 시스템에 적용하는 최적화 작업
  • 소프트웨어를 개발할 때 재사용이 가능한 정보를 찾아 재사용이 가능한 코드로 발전시키는 것
  • 개발 지식의 공유가 가능하여 소프트웨어의 품질과 개발의 생산성을 높임
  • 이미 검증된 모듈을 재사용하기 때문에 프로젝트 실패의 위험을 줄여줌

② 소프트웨어 재사용의 기본 기술

  • 생성 중심(모듈화, Generation Based)
- 추상화 형태로 쓰여진 명세를 구체화하여 재사용 단위를 찾아 발전시키는 기술
- 패턴 구성 방법
  • 합성 중심(모델화, Composition Based)
- 모듈을 조립하여 소프트웨어를 완성시키는 기술
- 블록 구성 방법

③ 재사용 모듈 설계의 유의사항

  • 결합도는 약하게, 응집도는 높게 구성
  • 누구나 쉽게 이해하고 사용할 수 있도록 사용법이 공개
  • 공유도는 높이고, 제어도는 낮추어 설계되었는지 검토
  • 효과적인 제어를 위해 모듈 설계가 계층적으로 제시
  • 모듈은 유지보수가 용이하고 지나치게 제한적이지 않아야함

2) 소프트웨어 재공학

① 소프트웨어 재공학의 개념

  • 소프트웨어의 위기를 개발의 생산성이 아닌 유지보수의 생산성으로 해결하는 방법
  • 시스템에 대한 재분석을 통해 공학적으로 우수한 시스템으로 발전시키는 학문
  • 도구를 사용하여 정보 저장소의 정보를 충분히 활용하여 분석
  • 분석, 재구성, 역공학, 이식 활동 등으로 구분 가능

② 소프트웨어 재공학의 과정

  • 분석(Analysis)
  • 재구성(Restructuring)
  • 역공학(Reverse Engineering)
  • 이식(Migration)

③ 역공학

  • 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정에 대한 정보를 재발견하거나 다시 만들어 내는 작업
  • 프로그램으로부터 데이터, 아키텍처, 데이터 프로세스에 대한 분석 및 설계 정보를 추출
  • 외계인 코드를 분석하여 구성 요소와 그 관계를 파악하여 설계도를 추출
  • 코드의 역공학 : 소스코드를 분석하여 자료 흐름도를 생성
  • 데이터의 역공학 : 소스코드를 분석하여 자료 사전을 생성

※ <이기적> 환상의 콤비 정보처리기사 책으로 공부하며 정리한 내용입니다.

반응형

+ Recent posts