'스터디/소프트웨어공학'에 해당되는 글 2건

  1. 2010.01.25 BVT(Build Verification Testing)
  2. 2009.11.17 [Business Architecture] 프로세스 모델링 작성절차

1. BVT란?
     - Build Verification Testing의 약자로, Smoke Test라고도 함.

 2. BVT의 목적 및 의도
     - BVT는 특정 빌드에 대해서 수행한다. 
     - BVT는 빌드 마다 각각 수행될 수 있다. (매 빌드마다 수행하는 것이 좋다는 의미는 아님.) 
     - BVT는 해당 빌드가 더 이상 리소스를 투입해서 테스트를 진행할 가치가 있는 빌드인지 판단하고 
       개발팀에 피드백을 주기 위한 목적
.

       QA는 더 이상의 의미없는 테스팅 리소스를 투입하지 않을 수 있고, 개발팀은 테스팅이 더 진행되어서 
       문제의 원인 파악이 어려울 수 있는 전 단계에서 오류 여부를 확인할 수 있게됨.

 3. BVT 준비 단계 
     - TCL(Test Case List) 테스팅을 위해 마련된 TCL은 먼저 준비되어 있어야 한다. 
     - TCL은 한 가지 품질 속성 및 기능 군으로 작성하지 말고, 다수의 기능 군 영역, 품질 속성 영역으로 나누어 
       작성되어 있어야 한다.

     - 준비된 TCL이 커버하는 기능 군에서 중요하고 먼저 확인되어야 하는 선행 기능을 몇 개 추린다. 
       (가능한 한 케이스 간의 의존성이 없게 한다.)

     - 각 기능 군마다 1-4 정도의 케이스를 추려서 이를 하나의 양식으로 정리하면 BVT 수행을 위한 
       테스트 케이스가 완성된다. 

     - BVT 요소 선정의 또 다른 기준은 BVT에 오랜 시간이 걸려서는 안된다는 점이다. 
       따라서, 프로젝트의 상황을 보아 BVT에 투입할 수 있는 시간(예를 들면, 1시간 또는 2시간)에 따라서, 
       BVT의 수를 가감한다.
      (예를 들면, BVT는 1시간 이내로 수행 완료 하고 그 결과를 개발팀과 리뷰할 수 있도록 정한다 등의 규칙)

 4. BVT가 완료된 이후의 업무 처리 단계 
     - BVT 내용에 대해서 Peer Review(동료 검토)를 수행해서 피드백을 반영한다. 
       (반드시 수행하는 것이 좋다. 최적의 경우 2회 정도의 리뷰를 거쳐서 더 이상 QA 레벨에서는 
       수정 사항이 없다고 리뷰어 들과 합의가 되는 수준까지 진행한다.) 

     - QA 레벨에서 합의된 BVT 내용에 대해서 개발 선임 및 PM과 협의한다.

 5. 협의시 주의 사항 
     - BVT의 내용에 대해서는 하나의 항목이라도 Fail 또는 Block 인 경우 더 이상의 테스트를 진행하지 않는다. 
       이유는 더 이상의 테스팅 리소스를 투입할 가치가 없는 빌드라고 볼 수 있기 때문이다. 

     - BVT의 Expected Result 및 케이스에 수정 사항이 없는지 검토를 요청한다. 
     - BVT에 추가할 요소가 없는지 검토를 요청한다.

 6. 협의가 완료되면 
     - 이제 확정이 되었으므로 개발팀 전체를 대상으로 공표하고 BVT가 필요하다고 QA에서 판단되거나, 
       개발팀의 요청이 있는 경우 빌드를 선정해 BVT를 수행하고 그 결과를 분석, 개발팀에 통보한다.

 7. BVT를 기준으로 삼는 이슈들(반드시 PM 및 개발 선임과 사전 협의 필요) 
     - 모모 프로젝트에서 BVT를 이하는 방법은 다음과 같다.

     1) 모든 테스트의 시작에는 BVT가 반드시 있어야 한다. 
     2) TCL 테스트를 시작하려면 먼저 BVT가 통과된 빌드가 있어야 한다.
         (BVT를 통과해야만 TCL 테스트가 가능하다.) 

     3) 버그 추적 시스템에 올라온 이슈의 재 확인(Re-Testing)은 반드시 BVT를 통과한 빌드에 한정한다.
         (개발팀에서 수정이 반영되었을 것이라고 얘기하는 특정 빌드가 아니다.
          반드시 BVT가 통과된 수정 사항이 반영된 이후의 빌드를 선정해 Re-Testing을 수행한다.
          이때, BVT가 통과되지 않아 Re-Testing의 지연이 발생할 수 있으나, 이는 QA에서 통제할 수 있는 상황이
          아니다. 만일 Re-Testing이 빨리 처리되기를 희망한다면 - 버그 처리 시스템의 이슈가 Closed 되기를
         바란다면 - 최선의 방법은 개발팀이 BVT를 통과하는 빌드를 만들어 내는 것이라는 점을 개발팀에 설명하라.)

 8. 남은 문제들 
      1) BVT 내용에 대해서 트집을 잡는 경우를 주의하라.
          다시 강조하지만 BVT 요소에 대해서 개발팀 및 PM과 협의를 거쳐야 한다.
          BVT 정책을 수행한다는 내용과 함께 BVT 내용에 대해서도 Confirm을 받아 둔다.

      2) BVT에 대해서 가급적 테스트 하는 사람에 따라서 결과가 달라질 수 있는 요소는 배제하라.
          보는 사람에 따라(테스팅 하는 사람에 따라) BVT Pass / Fail이 달라지는 요소는 차후에 더 큰 이슈를
          불러 온다.

      3) 어느 수준에 이른 빌드는 이미 BVT는 가볍게 통과할 수 있다.
          이때는 BVT 요소의 변경 / 추가 / 삭제를 고려해 보라. (물론 개발팀은 힘들게 달성한 BVT통과 수준이기 때문에 거부할 지도 모른다.)


------------------------------------------------------------------------------------------------------------------------

Further Reading
아래에 BVT에 관해 언급하고 있는 참고 도서를 곁들여 보시면 더욱 좋습니다.


The Art of Project Management (마음을 움직이는 프로젝트관리) by 스콧 버쿤 pp. 419
일일 빌드를 수행할 경우, 체크인한 코드가 다른 부분에 피해를 입히면 프로그래머가 (그리고 전체 팀이) 이 사실을 즉각 알게 됩니다. 따라서 체크인 코드 품질이 높아집니다. 당일 빌드에 포함될 코드는 특정 시각까지 제출하게 하십시오. 그런 다음, 코드 기반을 안정화한 후 테스트를 수행하여 빌드 품질을 확인합니다. (흔히 이와 같은 일일 테스트를 동작 테스트_smoke test라고도 합니다. 전자 부품을 테스트하는 기법으로, 회로에 전기를 흘려서 글자 그대로 연기가 나는 부분이 있는지 확인합니다) 정해진 시간 이후에 체크인하는 코드는 다음 빌드에 포함됩니다.

 

빌드를 할 때마다 빌드 품질을 평가하는 테스트 집합이 있어야 합니다. 평가 기준은 합격 (모든 테스트 통과), 보류 (일부 테스트만 통과), 불합격 (몇몇 테스트만 통과 또는 모든 테스트 실패)이라는 세 단계 정도면 충분합니다. 테스트 실패 원인으로 파악된 버그는 빌드 정보에 기록하고 우선 순위를 높게 매겨야 합니다.

(중략)


Lessons Learned in Software Testing (소프트웨어 테스팅 법칙 293가지) by Cem Kaner외 2인 pp. 226
법칙 173. 때로는 빌드에 대한 테스트를 거부해야 한다.
때때로 빌드를 거절하고, 빌드에 대한 테스트를 거부해야 한다. 이와 같이 하는 것의 합리적, 기술적인 이유는 다음과 같다.

* 이번 빌드에서는 중요한 기능이 추가되었는데, 이 빌드에 존재하지 않는 기능이 있다는 것을 알아채거나 실행하자마자 오류가 발생하였다면 더 이상 테스트를 진행하는 것은 시간 낭비이다.

(중략)


법칙 174. 빌드를 평가하기 위하여 연기 테스트를 사용하라.
연기 테스트(일명 온전성 확인 또는 테스트 수락)는 빌드의 기본적인 기능성을 점검하기 위한 테스트 스위트이다. 만약 빌드가 이 테스트에 실패한다면 해당 빌드는 불안정하여 테스트할 가치가 없다고 말할 수 있다.

(중략)


Systematic Software Testing by Rick D. Craig and Stefan P. Jaskiel
스모크 테스트(Smoke Test)
스모크 테스트는 시스템이 안정적인가, 모든 주요 기능들이 존재하며 "일반적인" 상황에서 제대로 작동하는가를 입증하기 위한 테스트 케이스들의 집합입니다. 스모크 테스트의 목적은 소프트웨어의 모든 버그를 찾는 것이 아닙니다. 시스템을 테스트하는 팀에게 어디에서부터 테스트를 시작 해야 하는지 알게 해 주는 것입니다. 이 테스트는 개발자들에게 목표을 제공하며, 언제 개발자들이 '안정성을 보유한 단계'를 달성하게 되는 지를 알려줍니다.

 

중요 요점: Smoke test는 시스템이 안정적인가와 모든 주요 기능들이 존재하며, "일반적인" 상황에서 제대로 작동하는가를 입증하기 위한 테스트 케이스들의 집합입니다.

(중략)


Sustainable Software Development: An Agile Perspective by Kevin Tate
Practice 5. Nightly Builds
당신의 팀이 소프트웨어가 동작한다고 확신하기 위해서는 하루에도 몇 번씩 원소스로부터 완전하게 빌드가 생성되어야 한다. 그 빌드에는 통합의 문제를 일찍 발견해 내기 위해 가능한 한 많은 수의 자동화된 테스트를 담고 있어야 한다. 그리고 빌드의 결과는 설치 가능한 제품 이미지이어야 한다. 밤시간은 이러한 작업을 하기에 적당한 시간인데, 아무도 코딩을 하고 있지 않고, 놀고 있는 컴퓨터가 매우 많기 때문이다. 그럼에도 불구하고 가능한 한 낮에 많은 수의 제품을 빌드하는 것에 매우 많은 장점들이 있다. 만일 빌드나 테스트가 실패한 경우, 아침에 가장 먼저 할 일은 문제를 수정하는 것이다. 빌드가 다시 성공할 때까지는 아무도 자신의 추가 작업을 통합하지 못하게 하라. 그렇지 않으면, 잘못된 변경 사항이 누적되어 제품에 품질을 위태롭게 할 위험성이 있다.

(중략)


소프트웨어 프로젝트 생존전략 (Software Project Survival Guide) by 스티브 맥코넬 pp. 277
일별 빌드와 스모크 테스트 절차에서는 전체 프로그램이 날마다 빌드 된다. 즉 프로그램의 모든 소스 파일이 날마다 컴파일, 링크되어 실행 파일로 생성된다는 것이다. 그후 소프트웨어는 ‘스모크 테스트’를 거치는데, 이는 실행 중에 소프트웨어에서 ‘연기가 나거나’ 깨지지는 않는지 확인하는 비교적 간단한 테스트를 말한다. 스모크 테스트라는 용어는 전기 공학에서 나온 것인데, 글자 그대로 전기 장치를 켰을 때 연기가 나는지 검사하는 것이다.

 

날마다 일별 빌드와 스모크 테스트를 실시하면서, 빌드되지 않는 데에 책임 있는 개발자를 추적하고 그 원인을 수정하게 하려면 어느 정도 노력이 필요하다. 작은 규모의 프로젝트에서는 품질 담당자가 자신의 다른 업무를 병행하면서 일별 빌드를 수행한다. 좀더 큰 규모의 프로젝트에서는 전담 인원이나 전담 팀이 일별 빌드를 수행할 수도 있다.

 

스모크 테스트는 소프트웨어 개발에 보조를 맞추기 위해 프로젝트 전반에 걸쳐 업데이트해야 한다. 또한 날마다 실시해야 하기 때문에 대부분이 자동화하여 실행한다. 스모트 테스트는 모든 것을 철저하게 확인해야 하는 테스트는 아니지만, 그날의 빌드가 테스트할 수 있을 만큼의 안정성을 지닌 소프트웨어 기능인지 확인해야 한다. 소프트웨어가 테스트할 수 없을 만큼 불안정하다면, 그 소프트웨어는 스모크 테스트를 하지 말아야 한다.

(중략)


Game Testing All In One by Charles P. Schultz 외 2인
Entry Criteria

어떤 형태의 테스팅을 수행하더라도 사전에 테스트에 적합한지에 대한 어떤 통과 기준에 코드 릴리즈가 적합한지 확인하는 것이 권장된다. 이것은 우주 여행사나 파일럿이 비행 전에 항공 시스템이 운행에 적합한지 점검하는 체크리스트와 유사하다. 테스팅을 위해 제출된 빌드가 기본적인 진입 기준에 미달하는 경우 테스터와 프로그래머 둘 모두의 시간을 낭비하게 될 가능성이 많다. 테스팅의 카운트다운은 테스트 "발사" 통과 조건을 충분히 만족할 때까지 중단되어야 한다.

 

아래의 진입 기준으로 사용할 수 있는 제안들을 나열해 두었다. 반드시 개발팀의 인원들에게는 이 내용을 비밀로 하지 마라. 그 팀이 이것의 목적을 인식하고 (시간 낭비를 방지하기 위해) 전체 팀이 공감할 수 있는 통과 기준의 집합을 그들과 함께 만들도록 하라.

(중략)

 


Posted by 이완국
,
1. 프로세스모델
  1.1 프로세스모델의 정의
규모가 크고, 복잡한 업무를 분석할 때, 정해진 기간 내에 업무를 효율적으로 분석하여, 목표시스템에서 요구하는 기능을 만족할 수 있게 누락되거나 불필요한 업무를 골라내는 일이다. 또한 분석된 업무를 체계적으로 분류하여 목표시스템의 메뉴, 프로그램의 체계를 설계하여 품질이 우수한 시스템을 개발하는 일이 무엇보다도 중요하게 된다.
방법론을 사용하여 업무를 분석하면 업무를 체계적으로 정리하며, 누락되거나 불필요한 업무를 대부분 도출이 가능하게 됨은 물론, 데이터 모델을 작성하는 데에도 도움이 많이 된다.
주로 사용하는 프로세스 모델은 프로세스계층도(Process Hierarchy Diagram)가 있는데, 프로세스 계층도를 작성하기 위하여 간략한 설명과 작성절차 등을 설명하기로 한다.

  1.2 업무기능 분할(Business Function Decomposition)
업무 프로세스는 그 크기에 따라 기능영역(Function Area), 기능(Function), 프로세스(Process), 단위프로세스(Unit Process)로 상세화 수준(레벨; Level)I이 나뉘어진다. 예를 들면, 회계관리 업무는 기능영역, 재무회계관리, 세무회계관리는 기능이며 재무계획수립이나 법인세 산출은 프로세스이며, 재무제표자료 등록, 법인세 자료수정은 단위프로세스라고 할 수 있다.
프로세스계층도는 계획 단계에서부터 분석 단계까지 정보시스템화 대상이 되는 전체 업무영역을 계층적으로 표현하여 업무영역을 쉽게 이해하기 위하여 사용하는 기법이다. 사용자의 요구사항을 분석 시에 가장 어려운 문제는 업무기능을 적절하게 균형을 맞춰가며 구조적으로 분할하는 일이다.
이러한 작업은 분석자 개개인의 경험을 바탕으로 수행되고 있으나 그들의 견해와 관점의 차이로 말미암아 같은 업무를 분할한 결과가 일정하지 않고, 그 상세화 수준도 각각이다.
업무기능 분할은 대규모의 복잡한 업무영역을 분석하여 정보시스템을 구축하는데 매우 효과적인 방법이다. <그림2-1>은 기능 분할의 예이다. 통상적으로 정보시스템의 분석대상이 되는 기업이나 기관의 업무영역은 경영전략, 조직, 업무, 관련 자료로 이루어져 있다.

<그림2-1> 업무기능분할(Business Function Decomposition)의 예
이 중에서 업무를 좀 더 상세히 설명한다면, 업무는 기업이나 기관에서 실제로 사용중인 전사 업무처리 지침서, 사업장이나 부서의 업무처리 지침서 또는 부서원별 업무분장내역, ISO 매뉴얼 등에 나타나 있으며 그러한 자료들과 현업 실무자들과의 업무 면담 내용을 가지고 업무 분석을 하게 된다.
특정 부서의 업무는 타 부서와의 From/To 업무가 있고 부서만의 고유한 업무가 있다. 회사를 구성하는 전 부서의 업무를 통합하고 분류하면 전사적인 업무 구성도가 나온다. 회사의 전체적인 업무를 업무기능영역, 하위의 서브업무기능, 그리고 서브업무기능들은 다시 업무프로세스, 그리고 다시 더 이상 나뉘어 질 수 없는 단위프로세스로 나뉘어 지게 된다. 이러한 단위프로세스는 프로그램 모듈이 되는데, 프로그램 모듈의 처리 절차는 프로시저라고 부른다.
프로세스계층도는 업무를 체계적으로 분할하는 훌륭한 도구이면서 구축될 정보시스템의 메뉴체계가 된다. 기능 분할을 하는데 있어서 바람직한 접근 방법은 최상층에서부터 분할을 시작하는 상향식 접근방식과 최하층에서 유사 기능을 묶어서 체계화해 올라오는 상향식 접근방법을 적절하게 병행하는 것이다. 이 두 가지 접근 방법을 병행하는데 있어서 바람직한 방향은 우선 하향식 접근방법에 따라 전체 기능을 기능의 최하위 계층인 단위프로세스로 구성하고 그것들을 상향식 접근방식에 의해 유사한 것끼리 집단화(Aggregation)하고 분류화(Classification)하면서 상위 프로세스를 인위적으로 만들어내는 식으로 두 가지 방법을 병행하며 결과를 보완하는 것이다.

  1.3 프로세스의 종류
가. 기능영역(Function Area)
기능영역은 업무기능의 집합으로서의 의미를 가지나 일반 기업에서는 큰 의미를 가지지 않으며, 일반적으로 대기업에서의 "부문", "본부"등의 커다란 조직 단위에서 수행하는 업무 전체를 일컫는다고 할 수 있다. 그러나 이보다는 순수하게 업무기능의 상위 계층으로 업무기능의 그룹으로 생각하는 것이 좋다.

나. 업무기능(Business Function; Function)
업무기능 또는 기능은 기업이나 기관의 한 분야를 완전하게 지원하는 업무활동들의 집합이다.
일반적으로 해당 조직(부서)의 업무목표를 달성하기 위한 지속적이고도 정규적인 형태의 업무를 표현한다. 업무기능은 상위 계층의 업무활동이며, 한 기능을 구성하고 있는 액티비티 그룹은 일반적으로 유사한 업무 데이터를 사용하기 때문에 서로 관련되어 있다. 업무를 수행하는데 있어서 관련된 양식이나 보고서나 파일 등의 자료가 반드시 있기 때문이다.
  예) 경영 관리, 재무 관리, 자재 관리, 생산 관리, 영업 관리, 인적자원 관리

다. 업무프로세스(Business Process; Process)
업무프로세스는 잘 정의된 업무 활동들로 그것의 실행은 특정 엔티티(데이터)의 입력 및 출력으로 규정될 수 있다. 업무 기능이 지속적으로 이루어지는 활동으로 간주된다면, 이 업무 프로세스는 이러한 업무기능을 수행하기 위한 일시적인 특정 개별 업무이며, 특정한 시점과 종점을 가지고 있는 것이 특징이다.
  예) 프로젝트 계획수립, 프로젝트 계획변경

라. 단위프로세스(Unit Process; Primitive Process; Elementary Process)
단위프로세스는 프로세스를 구성하는 최하위 단위로 일반적으로 입력처리, 출력처리 등을 정의하고 있다. 보다 엄밀하게 말한다면, 특정 데이터의 항목에 대한 입력 또는 출력에 관계되는데 엔티티(파일, 테이블, 클래스 등)에 대한 4가지 기본 작업 즉, 신규생성, 수정, 삭제, 조회 중 한가지 작업을 규정하고 있다.
  예) 고객명단 확인(고객 엔티티의 조회), 주문상품 확인(상품 엔티티의 조회),
       주문내역 등록(주문내역 엔티티의 생성) 등

  1.4 분할 지침
기능 분할 작업을 수행 시에 유의해야 할 지침은 다음과 같다. 이러한 지침들은 업무를 자연스럽게 구조적으로 분할이 되게끔 하여주는 것으로서 분석가들은 명심해야 한다.
첫째,
업무프로세스를 업무가 발생하는 순서대로 상에서 하로 좌에서 우로 배치한다.
모든 업무는 시작과 끝이 분명히 있는 것으로써 같은 레벨이라도 업무가 먼저 일어나는 것을 우선적으로 배치하고 나중에 일어나는 것을 뒤에 배치한다.
둘째,
동일한 프로세스가 다른 부모 밑에서 여러 번 출현이 가능하다.
이른바 공통 프로그램 모듈이 되는 것으로서 특정 업무는 서로 다른 부모 레벨에서 여러 번 나타날 수 있다. '출고지시' 업무는 영업 업무에서도 나타날 수 있고, 생산 업무에서도 나타날 수 있으며, 구매 업무에서도 나타날 수 있다.
셋째,
부모마다 분할의 수준이 다를 수 있다.
같은 레벨에서도 업무프로세스와 단위프로세스, 업무기능 등이 같이 나타날 수 있다.
넷째,
분할의 최종 결과는 단위프로세스이다.
다섯째,
업무기능은 2개 이상의 업무기능 또는 2개 이상의 업무프로세스로 분할이 된다.
<그림2-2>는 프로세스계층도의 계층화 검증 그림이다.
(a)는 업무기능영역 바로 밑에 업무기능들이 나와야 하는데 업무프로세스가 나온 것이 잘못된 분석이다. 보통의 업무기능 분석 시에 이러한 일들이 자주 일어나는데 이러한 일이 발생하는 것은 업무기능 명, 업무프로세스 명을 명명하는 데에 잘못이 있었기 때문이다. (b)는 업무프로세스1 밑에 업무기능들이 위치하는 것이 잘못 되었으며, 업무프로세스2 밑에 단 하나의 업무프로세스가 위치한 것이 잘못된 것이다. (c)는 업무기능영역 밑에 하나의 업무기능이, 업무기능 밑에 단 하나의 업무프로세스가 위치한 것이 잘못 되었다.

<그림2-2> 프로세스 계층도(기능 분할도)의 계층화 검증
이렇게 업무영역을 단위프로세스까지 나누다 보면 업무와 관련된 자료도 자세하게 나누어지게 되어 자연스럽게 업무기능 및 관련된 자료와의 관계를 구할 수 있다.

2. 프로세스계층도 작성 사례
 
가. 채용업무 프로세스계층도 작성 예
시스템 분석가가 사용자의 요구사항을 분석할 때에 방법론의 도움이 없다면, 방대하고 복잡한 업무의 체계적인 정리와 더불어 하나도 빠짐없이 업무 규칙을 분석하는 일이 얼마나 어렵고 문제가 많이 발생할 것인지를 짐작하는 것은 어렵지 않은 일이다. 실제로 전문적이고 경험이 많지 않은 시스템 분석가가 사용자의 업무 요구사항을 분석하면서 방법론을 사용할 때 방법론의 강점을 피부로 느끼고 그것의 효과를 철저히 이해하면서, 방법론의 작성 지침에 따라 업무를 진행하지 못하는 경우가 대부분이다.
국내의 많은 시스템 개발자들이 방법론을 사용하여 시스템을 분석하는 것에 익숙하지 않은 것도 사실이다. 따라서 여기에 나와있는 사례들을 대상으로 실제로 실습을 해 볼 필요가 있다.
다음의 '채용업무'에 관한 문제공간을 가지고 기능 분할도(프로세스 계층도)를 작성하는 방법을 설명하기로 한다.

나. 문제공간
직원을 채용할 필요가 있을 때, 새로운 이력서와 보관되어 있는 이력서를 검토하여 명단을 작성한다. 명단에 등재된 각 후보들에 대하여 면담을 한다. 각 후보들은 반드시 교수나 전직장의 관리자가 작성한 추천서를 제출해야 한다. 제출된 추천서는 면담 후에 별도로 검토된다. 각 후보에 대한 채용 의사결정이 내려지고 난 후 한 명 이상의 후보가 채용된다.

다. 업무기능 분할 과정
<그림2-7>은 '채용업무'에 대한 기능 분할의 과정을 보여준다.
먼저 문제공간에서 가장 작은 업무의 단위인 단위프로세스를 도출해낸다. 단위프로세스는 대부분이 실체(Entity; 파일; 테이블; 클래스 등)가 되는 명사형 단어와 그 실체에 어떠한 행위(생성, 수정, 삭제, 조회 등)를 하는 동사형 단어의 형태인 명사+동사의 형태로 작성이 되되, 되도록 상세한 설명이 포함된 명사+동사로 작성한다.
<그림2-7>의 (a)는 초기 기능 분할도이다.

<그림2-7> '채용업무'에 대한 기능분할의 과정
대부분의 프로세스들이 단위프로세스들로 구성이 되어 있다. '채용업무'의 문제공간에서 우선은 업무기능으로부터 단위프로세스로 분석방향을 진행하는 것이 아니라, 단위프로세스로부터 업무기능으로의 하향식이 아닌 상향식의 접근방법을 우선적으로 사용한다.
작성된 단위프로세스가 더 이상 나누어질 수 없는 프로세스인지를 검증할 필요가 있다. 전술한 대로 단위프로세스는 하나의 입력자료와 하나의 출력자료를 가진다. 시스템 분석 초기에는 프로그램을 생각하지 않기 때문에, 단위프로세스와 관련된 입력 자료와 출력자료는 해당 업무와 관련된 자료 예를 들면, 장부, 원장(Ledger), 보고서, 증빙(영수증), 전표 등의 자료들을 생각해 본다.
그림에서 보면 '새로운 이력서 검토'라는 단위프로세스는 검토되지 않은 새로운 이력서가 입력되어 검토된 새로운 이력서의 출력자료가 만들어진다. 출력자료가 하나이상 만들어진다면 하위 단계로 더 나누어질 수 있으므로 그 프로세스는 단위프로세스가 아니라고 생각하면 된다. 이러한 단위프로세스들에서 유사한 종류의 프로세스들끼리 모아서 상위 프로세스를 만든다. 상위 프로세스는 한 레벨이 최대 12개의 프로세스를 넘지 않는 선에서 6-7 레벨로 나뉘어질 정도로 계층화가 이루어지면 가장 바람직한 분할이 이루어졌다고 볼 수 있다.
유념할 것은 시스템 분석가는 현업 실무자에게서의 업무 분석결과 이외에는 추측이나 상상에 의하여 업무프로세스를 추가하거나 함부로 누락시키지 말아야 한다는 것이다. 기능 분할도에 나타난 모든 단위프로세스는 거의 모두가 실제의 프로그램 모듈이 된다는 것을 생각한다면, 현업 실무자의 요청이 없었는데도 업무프로세스를 추가한다는 것은 정해진 프로젝트 기한을 지키지 못하는 일이 발생될 수도 있고 심지어는 현업 사용자가 활용할 수도 없고 운영할 수도 없는 프로그램을 제작하게 되는 우를 범할 지도 모르고, 업무 프로세스를 누락시키는 것은 더더욱 시스템을 완전하게 구축하지 못하는 일이 될지도 모른다.
원칙대로 기능 분할도를 작성하는 지침에 충실하여 작업을 수행하면 가장 만족스러운 시스템 분석작업이 이루어 질 수 있다는 것이다.
<그림2-7>의 (b)는 중간 과정의 기능 분할도를 나타내고 있다.
이때 아주 중요한 분할 지침은 프로세스의 이름을 균형 있게 명명하는 일이다. 어떤 노련한 분석가는 국어사전을 옆에다 놓고, 현업실무자까지 참여시켜 프로세스 이름을 지정한다고 하니 프로세스 명명이 기능분할도의 작성 나아가서는 시스템 분석의 성공적인 임무 수행에 얼마나 중요한 것인지를 짐작할 수 있겠다. 중간 기능 분할도처럼 단위프로세스를 식별하는 일부터 상향식으로 구조화된 기능 분할도는 어느 정도 유사한 업무프로세스들끼리 모아지면 반대의 하향식 접근방법으로 다시 말하면, 업무기능영역에서 업무기능으로, 다시 업무기능에서 업무프로세스로 계층화를 시킨다. 상향식과 하향식 접근식의 계층화를 반복적으로 하다 보면 만족스런 기능 분할이 이루어지게 된다.
<그림2-7>의 (c)는 완성된 최종 기능 분할도이다.

<그림2-7-c> 최종 기능 분할도

Posted by 이완국
,