Chapter 9 기능모델링 (Functional Modeling) 기능은입력물을받아결과물을내는활동이며, 기능을수행하는활동을프로세스라한다. 기능모델링은시스템에서요구되는정보의흐름과정보의변환을나타내주는프로세스를중심으로시스템을묘사하고있다. 이장에서는시스템을기능관점에서바라보고

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "Chapter 9 기능모델링 (Functional Modeling) 기능은입력물을받아결과물을내는활동이며, 기능을수행하는활동을프로세스라한다. 기능모델링은시스템에서요구되는정보의흐름과정보의변환을나타내주는프로세스를중심으로시스템을묘사하고있다. 이장에서는시스템을기능관점에서바라보고"

Transcription

1 개정판 이해하기쉬운 소프트웨어 공학 윤청지음

2 Chapter 9 기능모델링 (Functional Modeling) 기능은입력물을받아결과물을내는활동이며, 기능을수행하는활동을프로세스라한다. 기능모델링은시스템에서요구되는정보의흐름과정보의변환을나타내주는프로세스를중심으로시스템을묘사하고있다. 이장에서는시스템을기능관점에서바라보고모델링하는대표적인방법인구조적분석기법 (Structured Analysis) 에대하여알아본다. 9.1 구조적분석기법개요 9.2 자료흐름도 (Data Flow Diagram) 배경도 (Context Diagram) 자료흐름도프로세스번호 원시프로세스 (Functional Primitive) 자료흐름도의균형 (Balancing) 자료사전 (Data Dictionary) 구조적분석기법과기능분할 9.3 문제설명서 (Problem Statement)

3 Chapter 9 기능모델링 (Functional Modeling) 학습목표 1. 프로세스 ( 기능 ) 를정의한다. 2. 구조적분석기법에서사용하는도구를설명한다. 3. 배경도 (Context Diagram) 를정의하고그용도를설명한다. 4. 자료흐름도의균형을설명한다. 5. 미니명세서를설명한다. 6. 자료사전의용도를설명한다. 구조적분석기법 시스템을기능관점에서보는것은매우자연스러운일이다. 예를들어, 현금자동인출기 (ATM) 를관찰해보자. 사용자는 ATM이우리에게어떤서비스, 즉기능 (function) 을제공할수있는가를우선생각할것이다. ATM은 현금인출, 잔액조회, 계좌이체 등다양한기능을우리에게제공한다. 이런기능관점의생각은시스템이가진정보나동작을파악하려는것보다우선한다. 결국소프트웨어시스템도기능관점에서바라보는것은본능적이고자연스러운모습이며, 그결과로기능중심의프로그래밍언어인 Fortran, Cobol, Pascal, C 등이제일먼저출현하였다. 기능관점은다양한분야에서아주중요하게사용된다. 프로젝트관리영역에서이루어지는모든활동도기능들의연속으로이해할수있다. 기능은입력물을받아결과물을내는활동이며이를프로세스라한다. 앞에서설명한프로젝트관리도프로젝트를바로기능관점에서바라본것이며, PMBOK은프로젝트관리활동을프로세스의연속적인흐름으로설명하고있다. 소프트웨어개발라이프사이클도기능중심의프로세스흐름으로이해되어이를개선하려는노력이광범위하게이루어지고있다. 소프트웨어시스템은받아들인정보를여러단계를거쳐새로운정보로변환시킨뒤내보내는것이라할수있다. 이렇게시스템을기능관점에서바라보고시스템에서요구되는정보의흐름과정보의변환을나타내는대표적인기능모델이구조적분석기법 (Structured Analysis) 이다. 구조적분석기법은 1979년디마르코 (Tom DeMarco) 가도식적기초를사용하여소개하였는데 [ DEM 79 ], 1980년대부터널리활용되기시작하여지금도요구사항분석에많이사용되고있는기법이다. 286 제 4부요구사항분석

4 Software Engineering 정보 ( 객체 ) 모델링 (Informantion(object) Modeling) 정보 ( 객체 ) 관점 기능관점 동적관점 소프트웨어시스템 동적모델링 (Dynamic Modeling) 기능모델링 (Functional Modeling) [ 그림 9.1] 시스템의 3 가지관점 이장에서는구조적분석기법을중심으로기능모델링에대하여살펴본다. 하향식으로시스템을분할해나가는구조적분석기법의개요와구성하는요소들에대하여알아본다. 특히구조적분석기법에서사용하는자료흐름도 (DFD: Data Flow Diagram) 의구체적인표현기호와배경도, 정보흐름, 프로세스, 자료사전등에대하여다룬다. 구조적분석기법의결과가구조적설계로넘어가는변환과정은자료흐름중심설계에기술되어있다. 9.1 구조적분석기법개요 구조적분석기법의뿌리는구조적프로그래밍 (Structured Programming) 에서찾을수있다. 구조적프로그래밍은대부분의경우프로그래밍언어시간에소개된다. 이는프로그래밍의간결성을유지하고수정을용이하게하기위해, 시스템이수행하는기능을모듈화시켜분할하는기법으로 1960년대부터소개되어사용되고있다. 그러나그후구조적프로그래밍만가지고는시스템개발의한계점에부딪쳤고좀더안정감있는시스템을만들기위해서설계의원칙들이필요하게되었다. 이에맞추어소개된것이구조적설계기법 (Structured Design) 이다. 그러나설계의원칙만가지고는더욱복잡해지는시스템의기능들을제대로표시하지못하였으므로요구사항분석의필요성이대두되었고, 그필요성에의해나타나게된것이바로구조적분석기법 (Structured Analysis) 이다. 이러한일련의역사적과정에서볼수있듯이소프트웨어의진화과정은어떤기법을적용하여그한계점에부딪치면그것을해결하기위해새로운개발방법을모색하는것 구조적분석기법 9 장기능모델링 (Functional Modeling) 287

5 자료흐름도 이었다. 결국소프트웨어의개발역사는어떤방법을시도해문제점을발견하면새로운변화를시도하는진화과정이라볼수있다. 구조적분석기법은자료흐름도 (DFD: Data Flow Diagram) 를사용하여정보의흐름과변환을제시하며, 하향식 (top-down) 방법으로높은차원의기능을작은기능단위로쪼개나간다. 구조적분석기법에서시스템은받아들인정보를가공처리하여새로운정보를내보내는하나의큰프로세스 (Process) 이며, 이프로세스는세부기능을수행하는작은프로세스들로나누어진다. 이와같이시스템이반복적으로분할되는것을자료흐름의상세화 (data flow refinement) 라하며 [ 그림 9.2] 에나타나있다. if K D/V 2=0 then for each n check if if engine -running is on then [ 그림 9.2] 시스템의분할 이예는 Cadre 사의승인을받고 Teamwork 의예제에서발췌한것이다. 레벨화계층화 일반적으로큰시스템을상세화하면서계층적인배열을두어서로의종속관계를표시하는것을레벨화 (leveling) 또는계층화라한다. 큰시스템을분석하기위해서분할의개념은필수적이며이때요구되는개념이레벨화이다. 하향식 (top-down) 기법인구조적분석기법은표현의정도를구분하고읽기쉽도록하기위해레벨화를도입하고있다. 이러한기능중심의분할과레벨화는우리의주변에서도많이볼수있다. 회사의구조를보면기능과정보의흐름을관리하기위하여여러부서로나누어져있다 ( 예를들어인사부, 총무부등 ). 이들부서는각자가고유기능을수행하고있으며, 필요하면서로정보를주고받기도한다. 288 제 4부요구사항분석

6 Software Engineering 이들부서들은더욱분할되어각부서는다음레벨에서여러과로구성되어있고, 이들사이에도정보가교류하고있다. 한예로인사부의경우인사과, 인사기획과, 급여과등으로나누어져서로정보를주고받으며업무를수행한다. 자료흐름도는회사의경우에서볼수있는것과같이하향식방식으로시스템을분할하고그것을그림으로보여준다 ( 회사의경우도각부서간의자료흐름도를그리면유용하게사용할수있을것이다 ). 자료흐름도를이용하면여러단계를거쳐기능을분할해나갈수있는데, 이러한자료흐름도는프로세스사이의데이터흐름을강조하는관점에서시스템을기술한것이다. 구조적분석기법은자료흐름도외에각말단프로세스들의기능을설명하는프로세스명세서 (process specification), 자료흐름도에사용되는데이터의정의등을기록하여놓는자료사전 (data dictionary) 으로구성되어있다. 이장에서는구조적분석기법의기본개념을알아보고자동속도조절장치 (Perform Cruise Control and Monitoring System) 를모델링하는과정을살펴보기로한다. 프로세스명세서 9.2 자료흐름도 (Data Flow Diagram) 소프트웨어시스템은정보를받아들여가공처리하는변환기 (transformer) 라고볼수있고, 자료흐름도는정보가입력되어적용되는변화와그결과 ( 출력 ) 를그림으로묘사해주는도식적기법이라할수있다. 자료흐름도는기본적으로다음의 4가지기호를사용하여표기하고있다. 외부객체 : 시스템의외부에서시스템과정보를주고받는사용자등의 외부객체이다. 프로세스 : 시스템안에서정보를처리하고변환시키는변환기이며버블 이라고도부른다. 데이터항목 : 정보의흐름을표시하는자료항목또는데이터단위이며화 살표는데이터의흐름을표시한다. 자료저장소 : 오랫동안보관되는데이터를저장해놓는파일이나데이터베 이스시스템을말한다. [ 그림 9.3] 자료흐름도표기기호 9 장기능모델링 (Functional Modeling) 289

7 자료흐름도는데이터의흐름또는정보의흐름에초점을맞추었기때문에처리의순서나제어는명확하게표시하지못한다. 앞에서언급되었듯이구조적분석기법은기능관점을나타내고그외의동적관점, 정보관점은나타내지않는다. 이것을보완한것이다음장에나올확장된자료흐름도인데시스템의정보흐름뿐만아니라제어의흐름을포함한다. [ 그림 9.4] 는자료흐름도의간단한예를보여주고있다. 정보흐름 a는외부객체 S로부터오며프로세스 X에의해정보흐름 b로변환된다. 계속해서정보흐름 b는파일 F의정보흐름 d와결합하여프로세스 Y에의해새로운정보흐름 c를만들어내고외부객체 T에제공된다. S a X b Y c T d F [ 그림 9.4] 간단한자료흐름도 이때프로세스의이름은데이터의입력과출력에의해결정되어야하며, 프로세스에의해입출력데이터이름이결정되는것은바람직하지않다. 이는데이터흐름의이름이프로세스이름에우선한다는것을의미한다. 그러므로 프로세스 X는정보흐름 a를정보흐름 b로바꾸어준다. 고표현하는것이자연스러우며, 정보흐름 b는프로세스 Y에사용되기위해 X로부터만들어졌다. 고불리지는않는다. 각프로세스는앞에서언급했던것처럼더욱세부적으로묘사하기위해분할될수있다. [ 그림 9.5] 는하나의프로세스가계속하여단계별로분할될수있음을보여 주고있다. X 1 부터 X 5 까지의프로세스는 X 의자녀들이며, X 4.1, X 4.2, X 4.3 은 X 4 의자녀들이다. 290 제 4부요구사항분석

8 Software Engineering b a X b X 5 a c X 2 e g X 1 X 4 d X 3 f e X 4.1 h g f X 4.3 X 4.2 i [ 그림 9.5] 프로세스의분할 자료흐름도는시스템을하나의프로세스로놓고외부와의정보흐름을표시하는배경도 (context diagram) 로시작하며더이상쪼갤필요가없을때까지단계별로분할하여나간다. 더이상쪼개어지지않는프로세스를원시프로세스 (functional primitive) 라한다. [ 그림 9.5] 에서보듯이프로세스 X는그다음단계의그림 (X 1 에서 X 5 ) 로대치될수있으며 X 4 는그다음단계의 (X 4.1, X 4.2, X 4.3 ) 프로세스들로대치될수있다. 따라서배경도나중간과정의프로세스들은모두쪼개어지지않는원시프로세스들로대치될수있으며, 자료흐름도를그리는목적은이렇게원시프로세스와원시프로세스들사이의정보흐름을규명하는것이라볼수있다. 원시프로세스 배경도 (Context Diagram) 자료흐름도는상위프로세스, 중간프로세스, 원시프로세스들로구성되어있다. 최상위의하나로된프로세스를그린그림을배경도라하며, 이는분할되기이전시스템을하나의큰프로세스로이해한것이다. 배경도는우리가개발해야할시스템의영역을기술하고, 시스템과외부환경과의경계를결정하며, 외부와의인터페이스를제시하여시스템의입출력데이터를보여준다. 배경도는시스템을블랙박스로본것으로시스템과외부환경과의인터페이스 배경도 9 장기능모델링 (Functional Modeling) 291

9 에초점을맞춘다. 분석초기에, 분석가는사용자와시스템이상호어떠한데이터를주고받으며어떠한상호교류가일어나는지에우선초점을맞추어야한다. 배경도가완성되어사용자가무엇을얻을것인가를확립하게되면, 이를실현시키기위해시스템의내부에대한분석이이루어진다. 이는시스템을개발하는데있어서목표에대한우선순위를부여하는것과같다. 배경도는문제설명서 (Problem Statement) 또는제안서에기술되어있는데이터와시스템이반응해야하는행위, 사건등에서시스템과외부객체사이에오가는정보를추출하여만들어진다. 또한시스템의외부에서바라본시스템의모습을기술한다. 다음그림은자동차의자동속도조절장치 (Automobile Cruise Control System) 의배경도이다. Context Diagram Perform Cruise Control and Monitoring Driver ( 운전자 ) Command Display Shift_ Rotation Drive Shaft ( 변속기 ) Throttle_Position Perform Cruise Control and Monitoring 0 Engine_Running Fuel Engine ( 엔진 ) Gas Station ( 발유통 ) [ 그림 9.6] 자동속도조절장치배경도 이예는 Cadre 사의승인을받고 Teamwork 의예제에서발췌한것이다 자료흐름도프로세스번호 레벨화를구체적으로표시하기위해서각프로세스와자료흐름도는번호를가진다. 각자료흐름도는상위레벨의부모자료흐름도와연관된프로세스로부터번호를부여받는다. 배경도의프로세스는최상위프로세스로번호 0을가지고있다. 배경도의프로세스는분할되어자료흐름도로표시되며이자료흐름도에도 제 4부요구사항분석

10 Software Engineering 이란번호가붙는다. [ 그림 9.6] 배경도의프로세스 0은프로세스 1, 2, 3, 4를자녀프로세스로가지며, 프로세스 0은프로세스 1, 2, 3, 4의부모프로세스이다. 각프로세스의번호는그프로세스를분할하여표시하는자료흐름도의번호와일치하며, 이를통해프로세스와자료흐름도의관계및프로세스의구체적세부상황을보여준다. 프로세스는부모자료흐름도의번호와. 그리고프로세스자체의번호를붙인고유번호를가지게되고, 프로세스의레벨은프로세스번호에나오는. 의수보다하나가더많다. 예를들어, 프로세스 4.1.3은레벨 3에속하며프로세스 4.1의자녀프로세스이다. 다음그림은레벨화되어있는자료흐름도를보여준다. [ 그림 9.7] 은 [ 그림 9.6] 배경도프로세스의자료흐름도이며, [ 그림 9.6] 과의비교를통해이들이어떻게서로연결되어있는지를쉽게규명할수있기를바란다. [ 그림 9.8] 은프로세스 4(Monitor Automobile) 의자료흐름도이다. Diagram 0 Perfrom Cruise Control and Monitoring Shift_ Rotation Determine Speed 1 Pulse_Count Measure Mile 2 Shift_ Rotation Speed Distance Engine_ Running Control Speed 3 Control_ Command Throttle_ Position Monitor_ Command Monitor Automobile 4 Fuel Display [ 그림 9.7] 레벨 1 자료흐름도 이예는 Cadre 사의승인을받고 Teamwork 의예제에서발췌한것이다. 9 장기능모델링 (Functional Modeling) 293

11 Diagram 4 Monitor Automobile Distance Count Mile 4.1 Miles Miles Miles Compute Average Speed 4.3 Average_ Speed_ Display Monitor_Command Fuel Look Up Maintenance Schedule 4.2 Maintenance_ Display [ 그림 9.8] 레벨 2 자료흐름도 이예는 Cadre 사의승인을받고 Teamwork 의예제에서발췌한것이다 원시프로세스 (Functional Primitive) 원시프로세스미니명세서프로세스명세서 프로세스중더이상그아래로쪼개어지지않는하위프로세스를원시프로세스라한다. 프로세스를어디까지쪼갤것인가는분석가의손에달려있으며요구사항이충분히표시되어있으면더이상쪼개지않아도된다. 일반적으로는하나의프로세스가하나의기능을수행할정도로충분히작게쪼개는것이이상적이다. 원시프로세스의상세한설명은미니명세서 (mini-specification) 에기록한다. 미니명세서는프로세스명세서 (process specification) 라고도한다. 프로세스에미니명세서가있다는것은그프로세스가원시프로세스라는것을의미한다. 미니명세서의번호는그프로세스의번호와같다. 결국완성된미니명세서의수는원시프로세스의개수와일치한다. 일반적으로미니명세서의내용은한페이지에요약될수있을정도가적당하다. 앞에서도언급하였듯이자료흐름도의목표는원시프로세스를찾아내고, 원시프로세스들이서로어떻게연결되어있는지를규명하는것이다. 원시프로세스를제외한중간과정의프로세스들은원시프로세스로대치될수있으므로미니명세서가필요하지않다. [ 그림 9.9] 는프로세스 4.1(Count Miles) 의미니명세서를보여주고있다. 이프로세스는매번주행마일수가 1마일씩증가할때마다전체마일수및다른측정거리를증가시킨다. 294 제 4부요구사항분석

12 Software Engineering [ 그림 9.9] 의미니명세서가시스템의요구사항을담고있는지 (what), 또는수행하는방식 (how to) 을제시하고있는지에주의하며살펴보기바란다. 이렇듯구조적분석기법은요구사항명세서를나타내는모델이며, 시스템이제공해야할 ( 또는사용자가알아보아야할 ) 기능을어떻게수행하는지는표시하지않는다. Name 4.1 TITLE Count Miles / * 마일계산 */ INPUT/OUTPUT Distance : data_in Miles : data_out BODY /* * 이프로시저는매주행마일마다측정하는마일수를 *1마일씩증가시킨다. */ FOR EACH Distance Cummulative_Distance= Cummulative_Distance + Distance IF Cummulative_Distance >= 1 Mile THEN Increment MPG_Mileage Inerement Miles_Since_Oil_Change Increment Miles_Since_Air_Filter_Change Increment Miles_Since_Major_Service Increment Trip_Mileage Reset Cummulative_Distance END IF [ 그림 9.9] 미니명세서 9 장기능모델링 (Functional Modeling) 295

13 9.2.4 자료흐름도의균형 (Balancing) 자료흐름도의균형 부모자료흐름도의정보입출력은자녀자료흐름도의입출력과같아야하는데이는정보흐름의연속성을유지하기위하여필요하다. 이러한제약조건을자료흐름도의균형이라부른다. [ 그림 9.6] 의배경도입출력과자녀자료흐름도의입출력은균형이이루어져있는가? Display, Shift_Rotation, Engine_Running, Fuel, Throttle_ Position 등은 [ 그림 9.6] 과 [ 그림 9.7] 에서동일하게발견되고있다. 그러나 [ 그림 9.6] 의 Command는 [ 그림 9.7] 에서발견되지않으며대신 Control_Command와 Monitor_Command로나타나있다. 그렇다면이그림은균형이이루어져있는가? 만약 Command가 Control_Command와 Monitor_Command의결합으로이루어져있다고명시되어있으면이자료흐름도는균형을이루고있다고할수있다. 이러한균형의형태는상위레벨에서많은데이터를묶어하나로표시하고하위레벨로내려가면서쪼개어표시하는것에서나타난다. 이러한방법은읽기쉽다는장점이있다. 균형에대한정보는자료사전 (Data Dictionary) 에정의하여놓는다. 결국 Command가 Control_Command와 Monitor_Command 로이루어져있다는것이자료사전에표시되어있으면, 이자료흐름도는균형을이루고있는것이다. 자료사전에이관계가나타나지않은경우이자료흐름도는불균형의상태에있다고할수있다 자료사전 (Data Dictionary) 자료사전 자료흐름도로표시되어있는시각적인정보는체계적이며조직적으로모아져야한다. 자료사전은자료흐름도에나타난데이터에관한정보를한곳에모아놓음으로써개발자나사용자들이편리하게사용할수있게해준다. 자료사전은메타데이터 (metadata), 즉데이터에대한데이터를모아놓는저장소이며데이터항목, 데이터흐름등에관한정의가포함되어있다. 자료사전에서사용되는기호는다음과같다. 296 제 4부요구사항분석

14 Software Engineering 연산자 예 의미 = a = b + c a 는 b + c로구성된다 + a + b AND: a와 b의합성 [ ] [ a b ] OR: a와 b 중하나선택 { } 3{ a }5 a를 3번에서 5번사이반복 ( ) ( a ) a는선택적 (0{ a }1과동일 ) [ 그림 9.10] 자료사전기호 자료사전에들어가는예들은다음과같다. Command = Control_Command + Monitor_Command Engine_Running = [ ON OFF ] 구조적분석기법과기능분할 시스템의중요요소나기능을찾아내어분할해나가는것은분석가의임무이며일반적으로쉬운일이아니다. 시스템을어떻게분할해나갈것인가는간단한문제가아니다. 또한어떻게분할하면좋은지에대한완벽한가이드라인조차없다. 구조적분석기법 (Classical Structured Analysis) 은이들기능을분할하는일반적인방법을제시해주고있다. 이기법이잘적용되지않는경우에이용할수있는또다른방법으로서의사건분할 (event partitioning) 방식은시스템과외부객체사이의상호교류하는사건을이용하여시스템을분할하여자료흐름도를그려나가는것이다. 이러한사건분할방식은모던구조적분석기법 (Modern Structured Analysis) 에서제안되었다. 하향식 (top-down) 접근방법인구조적분석기법에유스케이스 (use case) 를적용하여분석할수있다. 유스케이스에의한분석방법은우선시스템을사용자의관점에서바라보아시스템을사용하는사용자들이볼수있는기능만을밝혀낸다. 그다음이기능들을사용하여 다이어그램 0 에서부터가장아래프로세스까지분할한다. 결국사용자가이용가능한기능에서출발하여시스템의중요요소들을찾아내려가며분할한다. 이런접근방법을사용하면시스템의분석이사용자의관점에서이루어질수있다. 또한사용자가볼수있는기능은다른기능보다찾아내기쉬우며, 사용자들도분석과정에참여하며그결과를쉽게이해할수있다는장점이있다. 구조적분석기법 9 장기능모델링 (Functional Modeling) 297

15 S of t ware 산책 ❶ 분할분석이란문제를쪼개서정복하는 (divide and conquer) 과정이다. 분석은어떤것을그기본요소들로분해하는것과관련되어있고이에요구되는개념이세분화또는분할 (partitioning) 이다. 이개념은우리의지식을체계적으로정돈하기위해필요하며추상화와공통적특성을이용하여더작고단순한것들로나누는것이다. 불행하게도분할에정도 ( 正道 ) 는없으며분할되어나타나는프로세스나객체들을쉽게찾아낼수있는간단한해결방법은없다. 시스템을어떻게분할해나갈것인가의문제는시스템을개발하는대부분의사람들에게어렵게느껴지는문제이다. 기존의분할에사용할수있는정보가있는경우이를활용할수도있다. 회사업무를위한시스템을만들때회사의조직 ( 인사부, 자재부등 ) 은기능중심으로이미분류되어있는경우가많고이를활용하여시스템을분할해나갈수도있다. 만약기존의정보가없이새로운시스템을만들어나갈경우분할은더욱어려운문제로느껴진다. 회사의분류방법을살펴보면기능을수행하는조직들은내부가단단히뭉쳐져있고외부조직과의결합은최소화되도록만들어져있음을볼수가있다. 이는시스템요소들이만들어질때응집력 (cohesion) 이극대화되고요소들사이의결합도 (coupling) 는최소화되도록설계되어있음을볼수있다. 일반적으로시스템분할에서추구하는중요한목표는, 요소들이독립성을가지며요소내부의결합도가높고외부와의결합은최소화되도록시스템을설계하는것이다. 모델링의결과는과학적인사실에근거하여엔지니어의관점이반영된균형잡힌예술품이되어야한다. 모델링은엔지니어의과학적인기술은물론문화, 얼이같이섞여어우러진합작품이라볼수있다. 모델링은업무분야나만들고자하는시스템에대한전문적인지식을가진전문가가하는것이바람직하며, 그렇지못한경우정확하지못한분할이이루어져시스템전체에큰손실을끼치게된다. 9.3 문제설명서 (Problem Statement) 문제설명서제안서 시스템을개발하려고할때우선되어야하는첫번째단계는시스템의요구사항을기술하는일이다. 일반적으로프로젝트를계획하거나계약할시기에는모든구체적인요구사항이정의되기어려우며추상적인시스템의목적만을나열한문제설명서 ( 문제기술 ) 또는제안서로일이시작되는경우가많다. 문제설명서에포함되어야하는내용은다음과같다. 1. 해결하려는문제점에대하여명확히기술해야한다. 현재의상황, 배경, 시 스템개발의필요성, 문제제약조건, 달성하려는목표에대한기술이포함 되어야한다. 문제설명서는고객의관점에서고객이사용하는용어로기술 298 제 4부요구사항분석

16 Software Engineering 되어야한다. 2. 자동화하는데요구되는추진전략및방법을기술한다. 적용하고자하는개발방법론및접근방법등이구체적으로기술된다. 3. 제공되어야할기능, 만들어질시스템의제약조건, 요구되는하드웨어, 연관된소프트웨어, 일의범위등을기술한다. 4. 시스템차원의목표, 개발과정에서요구되는사항, 결과물등이기술된다. 5. 추상적인차원 (high-level) 에서합격판정검증기준을확립하여기술한다. 6. 시스템이개발되었을때예상되는기대효과및활용방안을기술한다. 우리나라에서흔히연구또는개발에사용하는제안서의양식은다음과같다. 1. 연구 개발의필요성가. 국내 외기술개발현황나. 연구 개발하려는기술 ( 또는연구 개발내용 ) 의수준다. 문제점라. 앞으로의전망마. 연구 개발의중요성 2. 연구 개발목표 3. 연구 개발내용및범위 4. 연구결과물 5. 추진전략및방법 6. 지금까지의연구 개발실적 7. 기대성과및활용방안 8. 인원편성표 9. 연구 개발기자재현황 10. 연구추진일정계획 11. 소요예산명세 12. 참고문헌 문제설명서를쓰는과정은일반적으로계획단계에서이루어진다고볼수있 다. 문제설명서는문제를이해하기위한출발점이기때문에완벽한문서일수없 다. 따라서문제설명서뒤에이루어지는요구사항분석은문제점을완벽하게이 9 장기능모델링 (Functional Modeling) 299

17 해하기위한노력이라볼수있다. 문제설명서는일반적으로완벽하거나구체적이지못하여이를사용해시스템을검증하는일은쉽지않다. 2장에서언급한것과마찬가지로제안서는사회에서의헌법에해당되며제안서의목적을구체적으로분석한요구사항명세서는법률에해당된다고볼수있다. 따라서요구사항명세서는시스템을검증할수있는구체적인기준을제시해주어야한다. 다음은현금자동지급기 (ATM) 문제설명서로는부적당하다. 그이유를생각해보라. 고객이 ATM을사용하고자할때는 ATM 카드구멍에카드를넣어야한다. ATM은현금카드로부터고객번호를읽어들이고유효일자와소속은행등을조사하여유효한카드인지검증한다. 만약유효한카드이면고객이 PIN 번호 ( 암호 ) 를넣기를요구한다. 만약고객이정확한 PIN 번호를넣으면고객의요구를처리하게된다. 만약 PIN 번호가잘못되었으면 ATM은고객에게 PIN 번호를넣도록요구한다. ATM은고객에게 3번의기회를주며 3번째에도틀리게되면현금카드를압수하고합당한메시지를고객에게보여준다. 다음은 ATM 문제설명서로적당하다. 위의예와비교하여생각해보라. 고객은 ATM을사용하여그의구좌에서현금을찾을수있다. ATM은고객의요구를처리하기전에현금카드와암호를읽어유효한카드인지검증한다. 한번에찾을수있는현금의한계가있으며현금의지불이허용되면현금과영수증을고객에게지불한다. 300 제 4부요구사항분석

18 Software Engineering S of t ware 산책 ❷ 무엇 (What) 과어떻게 (How to) 이책은 무엇 (What) 을만들것인가와 어떻게 (How to) 만들것인가를구별하는것의중요성을설명하고, 무엇을만들것인가에우선순위를두라고제시하고있다. 앞에서설명하였듯이요구사항명세서에는 무엇 을, 설계명세서에는 어떻게 를기술하여야한다. 그러나실제개발에있어서 무엇 과 어떻게 가명확히구별되지않는경우가많다. 만약최적화된해답을구하는문제에서주경로 (critical path) 또는임계경로를구하는알고리즘이있다고하자. 이알고리즘을요구사항명세서에넣는것이맞는지, 설계명세서에넣는것이옳은지생각해보라. 디자이너가더좋은알고리즘을구하거나만들수있다면이알고리즘은요구사항명세서에들어가면안된다. 만약이문제에대한해답이이알고리즘하나밖에없으면 (unique) 요구사항명세서에들어갈수도있다. 문제를해결하는방법이오직하나이거나, 이방법을쓰기로모든사람이이미동의하고추후에도바꿀가능성이전혀없는경우요구사항명세서에기록할수있다. 필자의경험을하나들겠다. 연구소시절분산데이터베이스의병렬제어 (concurrency control) 를위한요구사항명세서를쓰게되었다. 요구사항명세서에병렬제어를위한로킹 (locking) 알고리즘을포함하여기술하였다. 데이터베이스의병렬제어해결방법으로는로킹, 타임스탬프 (time stamp) 등의여러기법이있다. 필자의상사는요구사항명세서에서이알고리즘을지우기를권유하며, 이는개발자 (developer) 들이결정할문제라고충고하였다. 시스템을개발하면서해결방법이하나밖에없어추후변할가능성이없는것은일종의프로그램이라하더라도요구사항명세서에기록될수있다. 무엇 과 어떻게 를굳어있는틀로해석해서는안된다. 무엇 과 어떻게 를구별하는것은우선순위를두고체계적인엔지니어링을하기위한것이목적이지, 그것을구별하는것자체가목적은아니기때문이다. 9 장기능모델링 (Functional Modeling) 301

19 요약 요구사항분석에가장많이사용되는구조적분석기법은정보의흐름과정보의변환을도식화시켜나타내는모델이다. 구조적분석기법은시스템과외부와의정보흐름에서시작하여하향식으로시스템의기능을분할해나간다. 이것은우리가지금까지해왔던구조적프로그래밍및구조적설계와깊은관계가있다. 구조적분석기법에서나온결과는다음단계인설계단계에서필요로하는시스템의골격을제공한다. 자료흐름도의각프로세스는설계에서필요로하는모듈 ( 또는모듈들 ) 로될가능성이높으며, 이경우각정보흐름은모듈들사이의매개변수로나타난다. 구조적설계는응용분야의관점에서컴퓨터관점으로이동하여, 구조적분석의결과에살을붙여가는과정이다. 현재구조적분석기법을지원하는많은 CASE 도구들이상업화되어활용되고있으며, 이들도구들은모델의무결성및오류에대한검증등을해결해준다. 구조적분석기법의실시간용확장은다음장에서소개되는데, 이기법들은복잡한문제들에효과적으로적용할수있는더욱강력한분석도구로발전하였다. 또한이들도구들은요구사항분석의결과를체계적으로문서화할수있게해주고수정을용이하게하여문서관리에많은도움을주고있다. 참고문헌 [BOO 94] Booch, G., Object-Oriented Analysis and Design with Applications, Benjamin/Cummings, [CAD 90] An Introduction to TeamWork Release 4.0, CORE Product Training Workbook, [DEM 79] Demarco, T., Structured Analysis and System Specification, Yourdon Press, [JAC 92] Jacobson, I., Object-Oriented Software Engineering, Addison-Wesley, [MIR 96] Mirza, M., 차승훈, 정재일, 이기종, 윤청, Use Case Driven Structured Analysis, Proceedings of IEEE COMSAC Conference, [MYN 90] Mynatt, B., Software Engineering with Student Project Guidance, Prentice Hall, [PRE 92] Pressman, R., Software Engineering : A Practitioner s Approach, McGraw-Hill, [YOU 79] Yourdon, E., and Constantine L., Structured Design, Yourdon Press, [YOU 89] Yourdon, E., Modern Structured Analysis, Yourdon Press, [ 왕창종 92] 왕창종, 구연설, 이언배, 구조적시스템분석과설계기법, 정익사, [ 우치수 94] 우치수, 구조적기법소프트웨어공학, 상조사, 제 4부요구사항분석

20 [ 연습문제 ] Software Engineering 객관식문제 1 프로세스 (Process) 에대한설명으로틀린것은? 1 시스템은받아들인정보를가공처리하여새로운정보를내보내는하나의큰프로세스 (Process) 이다. 2 큰프로세스는세부기능을수행하는작은프로세스들로나누어진다. 3 프로세스는입력물을받아결과물을내는활동이며, 기능을수행하는활동이다. 4 프로세스는정보와오퍼레이션의묶음이다. 2 프로세스정의에대한설명중옳은것은? 1 동적행위를일으키는주체 2 시간에종속적인프로그램 3 객체의속성 4 입력물을받아결과물을내는활동과기능 3 DFD(Data Flow Diagram) 에대한설명으로거리가먼것은? 1 자료흐름그래프또는버블 (Bubble) 차트라고도한다. 2 구조적분석기법에이용된다. 3 시간흐름의개념을명확하게표현할수있다. 4 DFD의요소는화살표, 원, 사각형, 직선 ( 단선 / 이중선 ) 으로표시한다. 4 자료흐름도 (DFD) 의구성요소가아닌것은? 1 프로세스 2 데이터저장소 3 데이터사전 4 데이터흐름 9 장기능모델링 (Functional Modeling) 303

21 [ 연습문제 ] 5 자료흐름도의핵심요소는? 1 프로세스와자료흐름 2 상태와사건 3 엔티티와관계 4 객체와클래스 6 미니명세서 (Mini-Specification) 에관한내용중옳지않은것은? 1 원시프로세스의상세한설명이다. 2 프로세스명세서 (process specification) 라고도한다. 3 미니명세서가있다는것은그프로세스가원시프로세스라는것을의미한다. 4 미니명세서의번호는그프로세스의번호와다르다. 7 미니명세서에관한내용중옳지않은것은? 1 일반적으로미니명세서의내용은한페이지에요약될수있을정도가적당하다. 2 미니명세서는구조적언어를사용하지않고, 자연어를사용하여이해하기쉽고엄밀하게기술한다. 3 원시프로세스를제외한중간과정의프로세스들은원시프로세스로대치될수있으므로미니명세서가필요하지않다. 4 미니명세서작성에는서술문장, 의사결정나무, 의사결정표, 표, 그래프등을사용한다. 8 자료흐름도의목표는? 1 원시프로세스를찾아내고, 원시프로세스들이서로어떻게연결되어있는지를규명하는것이다. 2 원시프로세스를제외한중간과정의프로세스들에대한미니명세서를작성하는것이다. 3 시스템이제공해야할기능을어떻게수행하는지표시하는것이다. 4 시스템의동작을보여주는것이다. 304 제 4 부요구사항분석

22 Software Engineering 9 자료흐름도의자료사전 (Data Dictionary) 에서필수가아닌선택을의미하는기호는? 1 = 2 { } ( ) 10 배경도 (Context Diagram) 에대한설명으로틀린것은? 1 최상위의하나로된프로세스를그린그림을말하며, 이는시스템이분할되기이전의프로세스이다. 2 배경도는우리가개발해야할시스템의영역을기술하고, 시스템과외부환경과의경계를결정하며, 외부와의인터페이스를제시하여시스템의입출력데이터를보여준다. 3 배경도는시스템을화이트박스로본것이며시스템내부인터페이스에초점을맞춘다. 4 배경도는사용자가무엇을얻을것인가를보여주는그림이다. 11 자료흐름도의균형 (Balancing) 에대한설명중틀린것은? 1 하위레벨에서많은데이터를묶어하나로표시하고상위레벨로올라가면서쪼개어표시하는것이다. 2 부모자료흐름도의정보입출력은자녀자료흐름도의입출력과같아야한다. 3 정보흐름의연속성을유지하기위하여필요하다. 4 균형에대한정보는자료사전에정의하여놓는다. 12 자료흐름도의자료사전에대한설명으로합당하지않은것은? 1 자료흐름도로표시되어있는시각적인정보를체계적이며조직적으로모아놓는것이다. 2 데이터에관한정보를한곳에모아놓음으로써개발자나사용자들이편리하게사용할수있게해준다. 3 메타데이터 (metadata), 즉데이터에대한데이터를모아놓는저장소이며데이터항목, 데이터흐름등에관한정의가포함되어있다. 4 원시프로세스들사이의정보흐름을설명하는것이다. 9 장기능모델링 (Functional Modeling) 305

23 [ 연습문제 ] 객관식주관식문제 1 구조적분석기법을정의하라. 2 기능모델링은시스템을어떤관점에서묘사하는가? 3 구조적분석기법과구조적프로그래밍의관계를설명하라. 4 구조적분석기법에서사용하는도구들을열거하라. 5 구조적분석기법의분할방식에대하여기술하라. 6 구조적분석기법의레벨화와여러분이속한조직의레벨화와연관지어보고여러분이 속해있는조직의자료흐름도를그려라. 7 프로세스명세서, 제어명세서, 자료사전, 배경도 (Context Diagram) 를정의하라. 8 시스템경계 (System boundary) 를정의하고그중요성을설명하라. 9 원시프로세스와미니명세서의수는어떤관계가있는가? 10 자료흐름도의균형이란무엇이며왜필요한가? 11 자료사전의용도는무엇인가? 12 문제설명서 (Problem Statement) 와요구사항명세서의역할분담에대하여논의하라. 13 앞에서다루었던자판기의기능에다음과같은기능이추가될때의자료흐름도를작성 하라. 크레디트카드를넣을수있는기능 자판기의물건이떨어지거나문제가발생하였을때관리자를호출할수있는기능 306 제 4 부요구사항분석

24 Software Engineering 14 자판기의편리함을위해추가할수있는기능들을 3 가지만써라. 15 CD 1 백장을수록하고일정금액을넣고즉석에서음악을들을수있는음악자판기의 문제설명서를작성하고자료흐름도와자료사전을사용하여요구사항명세서를작성하라. 16 즉석에서자신이원하는명함을만들수있는컬러명함자판기의문제설명서를작성하 고자료흐름도를사용하여요구사항을분석하라. 17 앞의질문들에서자판기의재사용가능한구성요소들을식별해보라. 18 사거리신호등시스템에대한문제설명서를작성하고요구사항명세서는자료흐름도를 사용하여작성하라. 19 프로세스와모듈의차이점을기술하라. 20 현금자동교환기 (ATM) 시스템에대한문제설명서를작성하고요구사항명세서는자료 흐름도를사용하여작성하라. 21 구조적설계기법을이용하여현금자동교환기의분석결과를설계하라. 22 엘리베이터에대한문제설명서를작성하고자료흐름도를사용하여요구사항명세서를 작성해보라. 23 구조적설계기법을이용하여엘리베이터의분석결과를설계하라. 24 고속도로통행료징수시스템 (tollway system) 대한문제설명서를작성하고자료흐름도 를사용하여요구사항명세서를작성해보라. 25 구조적설계기법을이용하여고속도로통행료징수시스템의분석결과를설계하라. 객관식문제정답 장기능모델링 (Functional Modeling) 307