어플리케이션의 설계

안희수·2021년 4월 22일
0

개요

  • 하나의 프로그램은 한번에 개발하는 것이 아니라
    프로그램을 기능별로 분리하여 부품처럼 개발한 후
    이 부품화된 프로그램을 조립하면서
    프로그램을 완성하게된다

  • 이 부품화된 프로그램을
    모듈, 서브루틴, 프로시저,함수, 라이브러리, 메소드라고 하는데
    이러한 모듈을 생성하고 조립하고 관계를 맺는 작업등은
    소프트웨어 설계에서 매우 중요한 작업이다
    그 중 이 본문은 모듈에 대한 내용을 중점적으로 다룬다


모듈(Module)

모듈(Module)의 개념

  • 전체 프로그램을 기능 단위로 분해한다

  • 소프트웨어의 성능을 향상시키거나
    시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 한다

  • 추상화되어 재사용 및 공유 가능한 수준으로 만들어진
    기능 단위를 모듈로 규정한다

  • 프로그램이 효율적으로 개발, 관리될 수 있도록
    시스템을 분해하고 추상화하여 소프트웨어 제품의 성능을 향상시키거나
    시스템의 수정 및 재사용, 유지 관리를 용이하게 하는 기법이다

모듈의 목표

  • 모듈간 결합도의 최소화(Loose Coupling)
  • 모듈 내 요소들 간의 응집도 최대화 (Strong Cohesion)

모듈(Module)의 장점

  • 프로그램의 효율적인 관리 및 성능을 향상시킨다
  • 전체적인 소프트웨어의 이해가 쉬어지고 복잡성을 감소시킨다
  • 소프트웨어의 시험, 통합, 수정을 쉽게 할 수 있다
  • 기능이 분리되어 인터페이스가 단순해진다
  • 오류의 파급으로 인한 부작용을 최소화한다
  • 모듈의 재사용이 가능하므로 개발과 유지보수가 용이해진다

모듈(Module)의 기본 요소


모듈의 요소를 설명 하기 위한 예제
2개의 인자를 받아 비교하여 더 큰 값을 가져오는 기능의 모듈

int Max_Value(int a, int b){
int max;
  if(a > b){
  	max = a; // a가 더 큼
  } else {
  	if(a != b){ // a 와 b가 동일하지 않음
    	max = b; // b가 더 큼
  	} else {
    	max = 0; // 두 값이 동일하여 최대값을 가져올 수 없음
    }  	 
  }  
  return max;
}

① 입력 요소

  • 모듈에 데이터가 입력되는 부분
    변수 a, b 에 수치를 입력받는다
    a,b 를 파라미터(Parameter), 매개변수라고도 한다

② 출력 요소

  • 변수 max에 기억되어 있는 큰값을 호출한 상위 모듈에 리턴한다

③ 기능 요소

  • 두개의 정수 값을 입력 받아 큰 값을 찾는 모듈로 정의한다

④ 기관 요소

  • 모듈 내부의 알고리즘을 의미한다

⑤ 내부 자료 요소

  • 모듈 내부의 기억 장소를 의미한다

모듈의 공유도(Fan-in)외 제어도(Fan-out)

① 공유도

  • 얼마나 많은 모듈이 주어진 모듈을 호출하는가를 나타내는 척도
    상위 모듈의 수이다

  • 공유도가 높은 경우 해당 클래스를 사용하는
    클래스의 수가 많다는 것을 의미한다

  • 공통 모듈화 즉면에서 잘 설계 되어 있으나
    단일 실패점이 발생할 수 있으므로
    중점 관리 및 더 많은 테스트를 통한 검증이 필요하다

② 제어도

  • 주어진 모듈이 호출하는 모듈의 개수
    하위 모듈의 수이다

  • 제어도가 높은 경우 하나의 모듈이
    많은 수의 다른 모듈을 사용한다는 것을 의미한다

  • 불필요한 기능을 호출하고 있지 않은지 추가 검토를 진행하고
    업무 로직을 단순화 시킬 수 있는지에 대해서도 검토한다

모듈의 개수 및 비용 간 상관도

  • 모듈의 개수가 많을수록 노력 비용은 감소한다(반비례)

  • 모듈의 개수가 많을수록 모듈 통합 비용이 증가한다(비례)

  • 모듈 통합 비용과 모듈 개발 비용이 교차되는 부분의 영역이
    최소 노력비용이 된다

  • 전체 소프트웨어 비용은 눈금 곡선 범위에서 결정 되어야 한다

모듈(Module)의 특징

  • 프로그램에서 특정 기능을 처리할 수 있는 실행 코드이다
  • 다른 프로그램에서 재사용이 가능하다
  • 코딩(구현), 컴파일이 독립적으로 수행된다
  • 실행은 종속적으로 수행된다
  • 모듈은 다른 모듈을 호출할 수도 있고 호출 당할 수도 있다
  • 모듈 호출 시 매개 변수를 전달하거나 전달 받을 수 있다
  • 기본 라인 수는 100 라인 이내가 적당하다
  • 모듈을 찾아서 실행하는 시간이 느리다

모듈의 크기

① 모듈의 크기가 너무 작은 경우

  • 모듈의 개수가 많아져
    모듈을 통합하는 비용이 과도하게 발생한다

② 모듈의 크기가 너무 큰 경우

  • 모듈의 통합 비용은 감소하지만
    하나의 모듈을 개발하는 소요비용은 커진다

공통 모듈

공통 모듈의 개념

  • 프로그램에서 공통적으로 사용할 수 있는 모듈이다

  • 복잡한 계산식, 반복 사용되는 검증 기능, 연관 되어 발생하는
    조건식 등의 경우 별도의 공통 모듈로 구성하여
    프로젝트의 재사용을 향상 시킬 수 있다

  • 공통 모듈은 정보 시스템 구축 시 자주 사용하는 기능들로써
    재사용이 가능하게 패키지로 제공하는 독립된 모듈을 의미한다

공통 모듈의 원칙

① 정확성(Correctness) :

  • 시스템 구현 시 필요한지 아닌지를 알 수 있도록
    정확하게 작성한다

② 명확성(Clarity) :

  • 일관되게 이해 되고
    한 가지로 해석될 수 있도록 작성한다

③ 완전성(Completeness) :

  • 시스템 구현 시
    필요하고 요구되는 모든 것을 기술한다

④ 일관성(Consistency) :

  • 상호 충돌이 없도록 작성한다

⑤ 추적성(Traceability) :

  • 요구 사항 출처와
    시스템 간 유기적 관계에 대한 식별이 가능하도록 작성한다

공통 모듈의 식별 및 명세

① 기능을 분석하여 공통 부분 식별

  • 단위 시스템의 업무 기능을 분석하여
    공통 부분을 식별한다

  • 단위 시스템 중
    공통으로 사용될 수 있는 기능을 식별하여
    후보군으로 선정한다

  • 후보군으로 선정된 기능을
    공통 모듈로 선정할 지 여부에 대해 검토한다

  • 공통 모듈로 선정하는 경우
    별도의 기능으로 분리한다

② 공통 부분에 대한 검토 회의

  • 공통 부분으로 식별된 기능을
    시스템 담당자와 검토회의를 통하여
    공통화 여부에 대해 확정한다

  • 업무 선임 개발자와 주요 개발자를 식별하고
    이해 관계자가 함께 검토 회의 일정을 수립한다

  • 식별된 공통 기능이
    재사용의 효과성이 높은지에 대해 검토한다

  • 식별되지 않는 공통 기능이 있다면 추가하여
    효율성을 높일 수 있는지 의견을 취합한다

  • 공통 기능에 대한 관리 담당자를 정한다

공통 모듈의 재사용 범위에 따른 분류

① 함수와 객체 재사용

  • 클래스나 메소드 단위로 사용하며
    소스 코드 등을 재사용한다

② 컴포넌트 재사용

  • 컴포넌트 단위로 재사용 하며
    컴포넌트 자체는 수정하지 않고
    인터페이스를 통해 통신한다

③ 어플리케이션 재사용

  • 공통된 업무가 기능을 제공하도록
    구현된 어플리케이션을 공유하여 재사용한다

profile
9년차 소프트웨어 개발자 (2024년 재 개편 예정입니다)

0개의 댓글