2013. 12. 9. [ 제 76 호 ] 워크플로우기반의제품라인소프트웨어개발지원환경 양진석 (Jin-Seok Yang), 강교철 (Kyo C. Kang) KIPS transactions on software and data engineering v.2 no.6 소프트웨어공학센터경영지원 TF 팀 C o n t e n t s Ⅰ. 서론 Ⅱ. 워크플로우기반의제품라인소프트웨어개발도구 Ⅲ. 활용예제 Ⅳ. 결론
SW 공학트렌드 동향분석 Webzine Ⅰ. 서론 최 근들어자동차, 의료, 제조등의산업분야에서 ICT 기술을적극적으로활용한융합소프트웨어개발의중요성이강조되고점차많은기업들이세계시장으로 진출을모색하고있다. 소프트웨어개발에반영해야하는휘처 (Feature) 의수는증가하고그에따라필연적으로따라오는다양성 (Variation) 을소프트웨어에반영하기위한노력을기울이고있다. 소프트웨어제품라인공학 (Software Product Line Engineering) 은소프트웨어를각각개별적으로개발하는전통적인소프트웨어개발방법의단점을보완하여소프트웨어의재사용에따른고품질과빠른시장적시성 (Time-to-Market) 을보장하여앞서설명한다양성문제를해결하는방법을제시하고있다. 개발자는개발대상소프트웨어의기능및비기능측면을고려한공통점과차이점분석 (Commonality and Variability Analysis) 을통해서핵심자산 (Core Asset) 을확보하고이후자산들을조합하여원하는소프트웨어 ( 제품 ) 을개발할수있다 [1]. 지난몇년간포항공과대학교융합소프트웨어개발센터 (CoSDEC) 는 Kyo C. Kang 이제안한 FORM(Feature Oriented Reuse Method)[2] 를기반으로하는제품라인공학기반의융합소프트웨어개발방법을제안하고, 방법론을지원하는개발도구인벌컨워크벤치 (VULCAN Workbench) 개념을제안하였다 [3]. 융합소프트웨어제품라인방법론에서는소프트웨어개발을위한아키텍처모델 (Architecture Model) 을제안하고어플리케이션의유형에따라명세 (Specification) 기반으로자동화된제어컴포넌트개발 (Control Component Development) 이될수있도록제어컴포넌트의행위 (Behavior) 를명세할수있는모두네가지의방법을제안하고있다 [4]. 그가운데워크플로우 (Workflow) 명세방법은트랜잭션을주로처리하는소프트웨어의제어행위를명세하기위해서제안되었다. 워크플로우명세를기반으로제품라인소프트웨어의제어컴포넌트개발이효과적으로진행되기위해서는도구의지원이반드시필요하지만, 기존의워크플로우모델링지원도구들은제품라인공학개념을지원하지않는다 [5][6]. 그래서융합소프트웨어제품라인방법론에서제안하는워크플로우기반의제품라인소프트웨어개발지원도구를앞서소개한벌컨워크벤치에포함시켜개발을진행하였다. 01 2013 December (No.76)
Ⅱ. 개발현장의문제점 휘 처중심의제품라인공학개념이반영된최대한으로단순하면서확장가능한워크플로우기반개발도구를개발을목표로하고그에따라결정된기능은다 음과같다. UML2.0 표기법을활용한최소워크플로우행위명세지원 제어컴포넌트와도메인컴포넌트와의결합을위한방법제공 휘처기반워크플로우행위명세의파라메터화 (Parameterization) 휘처모델-아키텍처-워크플로우행위명세사이의일관성검사 워크플로우행위명세기반의코드생성 1. 도구의구성과도구들사이의관계 그림 1_ 지원도구의개념적인아키텍처 목표에따라서개발된지원도구는 [ 그림 1] 과같이다섯개의모듈로구분되며각모 듈의주요기능은다음과같다. Workflow Diagram Editor : 워크플로우다이어그램모델편집환경을제공 Action Script Editor : 워크플로우를구성하는특정태스크가활성화되었을때호출되는특정도메인컴포넌트와의관계를정의하기위한액션스크립트 (Action Script) 의편집환경제공 Consistency Checker : 워크플로우모델에포함된휘처정보와휘처모델사이의일관성을검증하는기능을제공 02
SW 공학트렌드 동향분석 Webzine Workflow Diagram Instance Creator : 휘처컨피규레이션정보에따라서제품라인워크플로우모델에서제품워크플로우모델을생성하는기능을제공 Source Code Generator : 제품워크플로우모델과액션스크립트를이용하여실제구현을위해서워크플로우의행위의미 (Semantics) 를반영한소스코드를자동으로생성하는기능을제공 지원도구를구성하는모듈들가운데 워크플로우다이어그램편집기 (Workflow Diagram Editor) 를제외한나머지도구들은모두이클립스 IDE 플랫폼기반의이클립스플러그-인 (Eclipse Plug-in) 어플리케이션으로개발되었다. 워크플로우다이어그램편집기 의경우 UML 2.0 표기법을지원하는다이어그램의편집기능만제공하면되었기때문에오픈소스도구인 StarUML 5.0 을이용하였다 [7]. 소프트웨어개발자들은워크플로우기반의제품라인소프트웨어의제어컴포넌트개발을위해 [ 그림 2] 와같은흐름으로지원도구들을사용할수있다. 그림 2_ 제품라인공학기반의엔지니어링절차에따른도구의지원 개발자는제품라인소프트웨어의자산 (Asset) 을만드는제품라인공학의도메인엔지니어링 (Domain Engineering) 과정에서대상소프트웨어의제어컴포넌트의행위명세를작성하기위해서 워크플로우다이어그램편집기 와 액션스크립트편집기 를이용할수있다. 이도구들을이용하여개발자는가변성 (Variation) 정보가포함된제품라인워크플 03 2013 December (No.76)
로우다이어그램 (Product Line Workflow Diagram) 과특정액티비티가활성화될때실행되는도메인컴포넌트를연결하는액션스크립트 (Action Script) 를작성할수있다. 워크플로우를이용하여제어컴포넌트의행위명세를작성할때개발자는워크플로우의액티비티 (Activity) 와흐름 (Flow) 에 UML 스트레오타입 (Stereotype) 을이용하여휘처이름과 AND, OR 연산자를이용한간단한논리식 ( 이하, 휘처로직 ) 을만듬으로써가변정보를포함시킬수있다. 이러한휘처로직은어플리케이션엔지니어링과정에서휘처선택의결과에따라참 / 거짓이결정되며, 참으로판정난요소들만인스턴스생성시사용된다. 일관성검사기 (Consistency Checker) 를통해개발자는작성된워크플로우다이어그램에오류가있는지에대해서확인할수있다. 이도구는제품라인워크플로우다이어그램의검증과제품워크플로우다이어그램의검증에모두사용된다. 전자의경우, 도구는워크플로우행위명세에포함된가변성정보에대한검증을진행한다. 이검증과정에서도구는휘처모델 (Feature Model), 아키텍처 (Architecture), 그리고워크플로우다이어그램을입력으로받아, 앞서설명한워크플로우에포함된휘처로직과휘처와의일관성검사를진행한다. 휘처모델-아키텍처-워크플로우행위명세사이에일관성검사는현재아래의네가지기본적인규칙을통해서이뤄진다. 첫째, 모든휘처는적어도한번은아키텍처구성요소및워크플로우행위명세에연결되어야한다. 둘째, 아키텍처를구성하는모든구성요소는휘처에바인딩 (Binding) 되어있어야한다. 셋째, 아키텍처와워크플로우행위명세에연결된휘처들로부터도출되는휘처들사이의계층적관계는휘처모델의휘처들사이의계층적관계와동일해야한다. 넷째, 대체적 (Alternative) 관계의휘처는같은요소에연결될수없다. 후자의경우, 도구는비즈니스프로세스모델에서검증대상으로삼는문법적오류 (Syntax Error), 구조적오류 (Structural Error), 의미적오류 (Semantic Error)[8] 에대한검증을지원한다. 문법적오류는정의된워크플로우모델의표기법들에대한오류로워크플로우다이어그램편집도구에서제공하는사용제한으로오류를검출할수있는반면에구조적오류와의미적오류는워크플로우에내재된논리상의오류로반드시확인이필요하다. 하지만이번에개발된도구는데드락 (Deadlock), 결정적인무한루프 (Deterministic Infinite Loop), 동기화손실 (Lack of Synchronization), 종료불가능상태 (Activity without Termination), 비활성상태 (Activity without Activation) 와같은구조적오류 [9] 에만초점을둔다. 이와같은구조적오류를검증하기위해서현재 [9][10] 와같이다양한방법이연구되고있지만구조적오류검증에가장효율적인방법인페트리넷 (Petri Net) 을사용한다 [11]. 04
SW 공학트렌드 동향분석 Webzine 자산으로부터제품을만드는제품라인공학의어플리케이션엔지니어링 (Application Engineering) 과정에서개발자는 워크플로우다이어그램인스턴스생성기 (Workflow Diagram Instance Creator) 를이용해휘처컨피규레이션과정에서선택된휘처목록과제품라인워크플로우다이어그램을입력으로지정하여제품워크플로우다이어그램을생성할수있다. 생성된제품워크플로우다이어그램은휘처선택에따른가변요소에대한파라메터화가적용된제품라인워크플로우다이어그램의인스턴스 (Instance) 이다. 인스턴스의예는 3장에서확인할수있다. 2. 액션스크립트를이용한제어컴포넌트와도메인컴포넌트의연결 도메인엔지니어링과정에사용되는도구는제어컴포넌트의행위모델을작성하고, 명세된행위모델에서워크플로우를구성하는특정액티비티 (Activity) 가활성화되었을때도메인컴포넌트 ( 도메인컴포넌트는메뉴얼하게개발된다고가정한다.) 를사용또는적용할수있도록도와준다. 이를구현하기위해서도구에서는 UML2.0 의요소들가운데 State Diagram 과 State 의액션 (Action) 을활용하고, 도메인컴포넌트와의결합을위한액션스크립트 (Action Script) 를추가로제공한다. 이들사이의관계는 [ 그림 3] 과같다. 개발자는 State 의 do 액션속성에 exec(script_ name) 구문을이용하여액션스크립트를설정할수있다. 그리고액션스크립트의 connection.service(...) 구문을이용해특정클래스의메소드를실행할수있도록할수있다. 그림 3_ 스크립트를이용한제어컴포넌트와도메인컴포넌트사이의연결 정의된액션스크립트는크게내부변수선언부분과로직을작성할수있는부분으로 05 2013 December (No.76)
구분되어있으며로직을작성시사용되는타입과구문은자바 (Java) 언어의문법을따르며구문안에 @ 문자로시작되는매크로 (Macro) 를사용할수있다. 정의된매크로는 코드생성기 를통해서특정구문으로치환이된다. 매크로가사용된액션스크립트의예는다음과같다. //@VAR String orderid; Boolean result; //@BODY Vector<String> args = new Vector<String>(); orderid=(string)@getvalue( orderid ); result = (Boolean)connector.service( UserManager, Validate, args); 위의액션스크립트는매크로 @GETVALUE 를이용하여 orderid 의값을반환받는구 문과 connection. service() 를이용하여도메인컴포넌트의구현체인 User Manager 클래스 의 Validate 메소드를호출하는예제이다. 3. 가변정보의연결 파라메터화방법을적용하여워크플로우행위모델의인스턴스를생성하기위해서다이어그램을구성하는 State 에휘처를연결 (Binding) 할수있는방법으로앞서설명한것과같이스트레오타입 (Stereotype) 을사용한다. [ 그림 3] 에서 MSG_ENCRYPTION State의스트레오타입에 Encryption 휘처가연결되어있다. 어플리케이션엔지니어링과정에서선택된휘처집합에 Encryption 휘처가없다면해당휘처가연결된모든 State 와 State 에연결된모든 Sequence Flow 는인스턴스를생성하는과정에서사라지고삭제과정에서생성될수있는 Dead State( 도달할수없는상태를의미한다.) 까지사라지게된다. 4. 소스코드자동생성 마지막으로, 코드생성기 는제품워크플로우다이어그램과액션스크립트를이용해자바소스코드를자동으로생성한다. 다이어그램의구성요소는대응되는클래스로생성되며, 액션스크립트역시전처리과정을거친후하나의클래스로생성을시킨다. 06
SW 공학트렌드 동향분석 Webzine Ⅲ. 창의적인요구사항도출을위한제안 도 구의적용과정을보여주기위해서간단한물품구매소프트웨어를활용예제 로사용한다. 그림 4_ 물품구매소프트웨어의휘처모델 ( 부분 ) [ 그림 4] 는제품라인기반으로개발되는물품구매소프트웨어의휘처모델을보여준다. 가변요소는 Membership, Online Payment Service Connection, 그리고 Security 및 Encryption 휘처로정의되어있다. 정의된네개의가변휘처는모두선택적 (Optional) 휘처들이다. 그림 5_ 물품구매소프트웨어의제품라인아키텍처 07 2013 December (No.76)
FORM-UML 기법 [13] 을이용하여아키텍처모델링을진행하면서도출된컴포넌트들가운데두개의제어컴포넌트 Purchase Controller 와 Bank Connection Controller 에대해서워크플로우모델을이용하여행위명세를진행하였다. 아래의 [ 그림 5] 는 Bank Connection Controller 의행위명세를보여주며, 내부적으로 Encryption 과 Online Payment Service Connection 선택적휘처에대한가변요소가포함되어있다. 두개의제어컴포넌트들제외한다른도메인컴포넌트들은개발자에의해서직접개발이이뤄졌다. 제어컴포넌트의제품라인행위명세로부터휘처선택을통해서두개의제품을생성할수있다. 아래의 [ 그림 6] 은제품라인행위명세를, [ 그림 7] 과 [ 그림 8] 은휘처선택을통해자동으로생성된각제품의행위명세인스턴스를보여준다. 생성된제품워크플로우다이어그램과인액션스크립트를이용해서자바소스코드를생성하고간단한시뮬레이션이용해생성된제품소프트웨어가작성된행위명세와같이동작하는지생성된소스코드에포함된디버깅정보를이용하여시험하고생성된두제품모두행위명세에따라제어가되는것을확인할수있었다. 그림 6_ 제품라인 Bank Connection Controller 컴포넌트의행위명세 그림 7_Bank Connection Controller 컴포넌트행위명세의인스턴스예 1 (Encryption 휘처를선택하지않은경우 ) 08
SW 공학트렌드 동향분석 Webzine 그림 8_Bank Connection Controller 컴포넌트행위명세의인스턴스예 2 (Online Payment Service Connection 휘처를선택하지않은경우 ) 생성된제품워크플로우다이어그램과인액션스크립트를이용해서자바소스코드를생성하고간단한시뮬레이션이용해생성된제품소프트웨어가작성된행위명세와같이동작하는지생성된소스코드에포함된디버깅정보를이용하여시험하고생성된두제품모두행위명세에따라제어가되는것을확인할수있었다. Ⅳ. 결론 지 금까지워크플로우기반의제품라인소프트웨어개발을지원할수있는도구에대해서소개했다. 소개된도구를이용해기존워크플로우모델링도구에서 부족한제품라인개념을적용하여소프트웨어를개발할수있는환경을제공할수있었다. 하지만아직워크플로우모델링을위한최소한의요소만제공하기때문에추가요소를반영할필요가있으며, 추가요소반영에따른검증기개선및검증기의정확성향상을위해잘알려진오류예제에대한시험이진행되어야할것이다. 이러한부족한부분에대해서는도구를실질적인소프트웨어개발에적용하는과정을통해기능을개선보완할예정이다. * 본원고는해당논문의요약본임에따라자세한내용은논문원문을참조하시기바랍니다. 09 2013 December (No.76)
참고자료 1. P.Clemens, L.Northrop, Software product lines: practices and patterns, Addison-Wesly Professional, Aug., 2001. 2. K.Kang, S.Kim, J.Lee, K.Kim, E.Shin, and M.Huh, FORM: a feature-oriented reuse method with domain-specific reference architecture, Annals of Software Engineering, Vol.5, pp.143-168, May, 1998. 3. Hyesun Lee, Jin-Seok Yang, and Kyo C.Kang, VULCAN: Architecture-Model-Based Software Development Work bench, The Joint 10th Working IEEE/IFIP Conference on Software Architecture and 6th European Conference on Software Architecture, Aug., 20-24, 2012. 4. Hyesun Lee, Jin-Seok Yang, and Kyo C. Kang, VULCAN : Architecture-Model-Based Workbench for Product Line Engineering, The 16th International Software Product Line Conference, Sep., 02-07, 2012. 5. www.omg.org, Business Process Model and Notation, Jan., 2011. 6. Visual Paradigm, Business Process Visual ARCHITECT (BP-VA) 7. staruml.sourceforge.net/ko, StarUML 5.0-OpenSource UML/MDA Platform 8. Gun-Woo Kim, Jeong-Wha Lee, Jin Hyun Son, Design Anomalies in the Business Process Modeling, Journal of KIISE, Vol.14, No.9, pp.850-863, 2008. 12. 9. H.Bi, J.Zhao, Applying propositional logic to workflow verification, Information Technology and Management, 5(3-4), pp.293-318, 2004. 10. Eshuis, H., Semantics and Verification of UML Activity Diagrams for Workflow Modeling, PhD thesis, Universty of Twente. CTIT Ph.D.-thesis series No.02-04. 12. W.M.P. van der Aalst, Workflow verification: Finding control-flow errors using Petri-net-based techniques, Business Process Management, pp.161-183, 2000. 13. Kwan Woo Lee, Managing and Modeling Variability of UML Based FORM Architectures Through Feature-Architecture Mapping, KIPS Transactions, Vol.19-D, No.1, pp.81-94, 2012. 2. 10