그래프 변환을 이용한 부정적용조건 기반의 사용자 사례 진화 분석

읽는 시간: 6 분
...

📝 원문 정보

- Title: Use Case Evolution Analysis based on Graph Transformation with Negative Application Conditions
- ArXiv ID: 1910.13592
- 발행일: 2019-10-31
- 저자: Leila Ribeiro, Lucio Duarte, Rodrigo Machado, Andrei Costa, Erika Cota, Jonas Bezerra

📝 초록

사용 사례(UC)의 품질은 시스템 전체의 품질과 결함률에 영향을 미치며, 이들은 구현의 예상 동작을 지정합니다. 이전 연구에서는 자연어로 작성된 UC를 그래프 변환(GT)을 통해 순차적으로 번역하는 접근법을 정의하였습니다. 각 UC 단계는 하나의 변환 규칙으로 번역되며, 이를 통해 실제 구현이 이루어지기 전에 여러 사양 문제를 검출할 수 있어 개발 비용을 줄일 수 있습니다. 이 논문에서는 UC 진화를 다루기 위해 "진화 규칙"이라는 개념을 확장하였습니다. 이러한 진화 규칙은 고차 규칙으로 표현되며, 동시에 변환 규칙 집합의 동작을 변경합니다. 또한 변환 및 진화 규칙에 연관된 **부적용 조건(NAC)** 을 지원합니다. 진화 규칙과 UC 단계를 설명하는 규칙 간 상호 작용 분석은 진화 효과와 잠재적인 영향력을 식별하는데 도움을 줍니다, 실제로 변경 사항이 이루어지기 전에 이를 수행할 수 있습니다. 이 논문에서는 NAC를 사용한 UC 진화의 이론적 기반뿐만 아니라 Verigraph 도구에서 진화 분석 기법을 구현하고 3개의 다른 사례 연구에서 잠재적인 영향력을 검증하였습니다. 결과는 개발자가 UC에 기반한 진화 과정을 돕기 위해 우리 접근법이 적용 가능하고 유용하다는 것을 입증합니다.

💡 논문 해설

**핵심 요약**: 이 논문은 그래프 변환(Graph Transformation, GT)을 사용하여 사용 사례(UC)의 진화를 분석하는 방법론에 대해 다룹니다. UC는 시스템의 예상 동작을 지정하며, 이를 그래프로 표현하고 변경사항을 적용할 수 있는 방식으로 번역함으로써 개발 비용을 줄이고 문제 해결을 돕습니다.

문제 제기: 소프트웨어가 항상 진화하는 것이므로, 시스템에 대한 변경 사항을 명시하고 분석하는 방법이 필요합니다. 기존 UC를 직접 수정하면 모호하고 정확도가 떨어지는 언어에서 작업하게 되며, 이는 형식적인 그래프 변환(GT) 모델과의 일관성을 유지하지 못하게 합니다.

해결 방안 (핵심 기술): 논문은 UC를 수정할 때 GT 모델을 직접 변경하는 방법을 제시합니다. 이를 위해 “진화 규칙"이라는 개념을 도입하여, 기존 규칙을 수정하거나 새로운 규칙을 추가할 수 있습니다. 또한 부적용 조건(Negative Application Conditions, NAC) 을 사용하여 특정 조건 하에서 규칙이 적용되지 않도록 하는 방식도 포함하고 있습니다.

주요 성과: 논문은 Verigraph 도구를 이용해 진화 분석 기법을 구현하고 이를 세 가지 다른 사례 연구에 적용하였습니다. 이로 인해 변경사항의 영향력을 미리 검증할 수 있었으며, 개발자가 UC를 바탕으로 시스템을 진화시키는 과정에서 도움을 받을 수 있음을 입증했습니다.

의의 및 활용: 이 접근법은 복잡한 시스템에서도 변경사항이 전체 시스템에 미치는 영향력을 정확하게 분석할 수 있게 하며, 이를 통해 개발자가 UC를 수정하거나 새로운 기능을 추가하는 과정에서 더 효율적으로 작업할 수 있습니다. 또한 GT 모델과 UC 간의 일관성을 유지함으로써 시스템의 안정성도 높일 수 있습니다.

📄 논문 발췌 (ArXiv Source)

소프트웨어는 항상 진화하고 있어 변화를 명시하고 분석하는 방법을 만들 필요가 있습니다. 기존 사용 사례(UC)를 직접 수정하면 모호하고 정확도가 떨어지는 언어에서 작업하게 되며, 이는 형식적인 그래프 변환(GT) 모델과의 일관성을 유지하지 못하게 합니다. 대신 GT 모델을 직접 변경하여 정확한 진화를 정의하고 분석할 수 있습니다.

진화를 기술하고 분석하기 위해 우리는 GT를 사용하며, UC는 마지막 단계에서만 수정됩니다. 이를 통해 진화가 원하는 효과를 시스템에 미치는지 확신할 수 있으며, 이렇게 함으로써 업데이트된 형식 모델(GT)과 대응되는 업데이트된 UC를 얻을 수 있습니다.

진화를 GT로 표현하기 위해 2차 규칙이라는 형태론적 기반을 사용합니다. 이러한 2차 규칙은 다른 규칙을 수정하는 역할을 합니다(1차 규칙). 주요 아이디어는 변경 패턴을 정의하는 규칙을 생성하는 것입니다. 이 패턴은 특정 진화에 따라 변경해야 하는 항목과 어떻게 변경되어야 하는지를 나타냅니다. 그런 다음 이러한 패턴을 GT 모델의 모든 규칙(단계 규칙)과 비교할 수 있습니다. 일치가 있는 경우 해당 규칙이 수정됩니다. 이렇게 하면 진화를 정확하게 기술하고 진화 과정에서 발생하는 변경 사항의 분석도 가능합니다.

제안된 방법은 세 단계로 구성됩니다:

단계 1 - 진화 정의: 개발자는 GT 규칙을 사용하여 수정, 추가 또는 삭제할 시스템의 동작을 정의합니다. 수정해야 하는 동작은 진화 규칙(2차 규칙)으로 설명되며, 새로운 동작은 단계 규칙(1차 규칙)으로 표현됩니다. 삭제할 규칙은 명시적으로 지정하거나 단계 3.2에서 선택할 수 있습니다.

단계 2 - 진화 분석: 진화 규칙을 사용하여 기반한 분석을 수행합니다:

  • 단계 2.1 – 진화 규칙 간 CPs(비판적 쌍): 진화 과정의 일관성과 종료 여부에 대한 힌트를 제공합니다.
  • 단계 2.2 – 진화와 실행 사이의 CPs: 시스템의 단계 규칙(및 대응하는 UC 단계)이 어떻게 진화 규칙에 의해 영향을 받는지 설명합니다. 이러한 CPs를 분석하여 개발자는 진화가 현재 상태로 수행되어야 하는지 또는 원하지 않는 동작을 방지하기 위해 수정해야 하는지를 결정할 수 있습니다.

단계 3 - 진화 실행: 의도된 진화를 수행합니다:

  • 단계 3.1 – 새로운 GT 생성: 단계 1에서 정의한 수정 사항을 원래 GT에 적용합니다.
  • 단계 3.2 – 새 GT 분석: 새로운 GT의 CPA 그래프를 구성하고 제거해야 하는 규칙(더 이상 필요하지 않은)을 식별하고, 필요한 경우 다시 분석하여 GT가 원하는 동작을 나타내도록 합니다.
  • 단계 3.3 – UC 수정: 진화로 인해 영향을 받은 단계 규칙에 해당하는 UC를 적절하게 수정합니다.

진화의 정의와 수행 방법을 자세히 설명하기 전에, 이 논문에서 사용된 간단한 진화 예제를 보여드리겠습니다. 이 예에서는 하나의 UC만 고려하지만, 더 복잡한 사례 연구는 Section 12에서 보고됩니다.

(도표: 진화 규칙)

예 (진화 1: 지문 로그인 삽입): 예로 은행이 ATM을 통해 고객이 로그인하는 방식을 변경한다고 가정하겠습니다. 기존 카드와 비밀번호 방법 외에도 이제는 지문으로도 식별할 수 있게 합니다. 이 변화에 따라 UC의 어떤 단계가 ATM 시작 상태로 돌아가며 “카드 삽입” 메시지를 표시하는 경우, 이를 수정하여 “인식 방식 선택” 메시지가 표시되도록 해야 합니다.

단계 1: 도표 3은 이러한 수정을 모델링하는 진화 규칙을 설명합니다. 진화 규칙의 LHS(진화 규칙의 위쪽 화살표)는 특정 단계 규칙에서 발견되어 그 규칙을 수정하도록 트리거할 패턴입니다. 이 예에서는 ATM이 보존되고 “카드 삽입” 타입의 Output 노드가 생성되는 모든 단계 규칙과 일치합니다. 효과로, 진화 규칙의 RHS(진화 규칙의 아래쪽 화살표)는 “카드 삽입” 타입의 Output 노드를 삭제하고 이를 “인식 방식 선택” 타입의 Output 노드로 대체합니다. 진화 규칙의 NAC(도표 상단에 표시됨)은 이 변환을 단순히 “카드 삽입” 타입의 Output 노드를 생성하는 규칙에만 적용되도록 보장합니다.

단계 2: 이 진화에는 하나의 규칙이 포함되어 있으며, 이는 자신과 충돌합니다. 즉, 적용된 후 이 변화로 인해 진화 규칙은 해당 단계 규칙에 대해 다시 적용되지 않습니다. 따라서 진화 과정은 일관되고 종료됩니다. 진화 규칙과 실행 규칙 간의 매칭 및 충돌을 분석하면 모든 변경이 필요한 단계 규칙을 검출하고, 그에 따라 UC 단계를 변경하여 진화를 적용할 수 있습니다.

단계 3: 이제 진화를 수행(단계 3.1)하고 CPA 그래프를 생성(단계 3.2)할 수 있습니다. 이 예에서는 어떤 규칙도 삭제되지 않으며, 따라서 해당 UC를 업데이트할 수 있습니다: 변경되지 않은 단계 규칙에 대응하는 원래 UC의 단계는 그대로 유지되며, 변경된 규칙에 대응하는 단계는 수정되어야 하며, 새로운 규칙에 대응하는 단계는 추가됩니다.

(도표: CPA 그래프 - 진화 1)

(도표: 로그인 사용 사례 설명 - 진화 1)

이 섹션에서는 이전에 논의하고 ATM 예제에 적용한 진화 단계를 공식적으로 정의합니다.

단계 1: 시스템의 진화를 표현하는 방법을 이제 정의하겠습니다. 그래프 변환 시스템을 수정할 때, 요소 유형을 삽입하거나 삭제하여 타입 그래프를 변경하고 새로운 규칙을 추가하며 사용되지 않는 규칙을 삭제하고 2차 규칙(이 경우 진화 규칙이라고도 함)을 통해 기존 규칙을 업데이트하는 방법 등을 코드화할 수 있습니다. 이러한 모든 수정은 “진화 구조"라는 구조를 통해 코딩됩니다.

정의: GT 시스템 $`\mc{G} = (T,P)`$에 대한 진화 구조는 튜플 $`ES = (ET,EP,Del,New)`$입니다. 여기서:

  1. $`ET = T \xleftarrow{l} T' \xrightarrow{r} T''`$는 그래프 사상의 스팬으로, 이는 진화를 통해 타입 그래프가 어떻게 수정되는지 설명합니다.
  2. $`EP`$는 보존된 규칙을 업데이트하기 위한 2차 규칙(진화 규칙) 집합입니다; 각 진화 규칙의 LHS는 $`T`$에 대해 타이핑되고 RHS는 $`T''`$에 대해 타이핑됩니다.
  3. $`Del \subseteq P`$는 삭제할 GT 규칙 집합입니다.
  4. $`New`$는 생성할 GT 규칙($`T''`$-타입) 집합입니다.

(도표: 진화 구조)

예 (진화 2: 카드/비밀번호 로그인 제거): 은행이 기존의 카드와 비밀번호 방법을 제거하고 지문 인식만 사용할 수 있는 유일한 로그인 방법으로 변경한다고 가정하겠습니다. 이 경우 모든 단계 규칙은 어떤 카드나 비밀번호에 대한 참조가 포함되어 있으면 수정해야 합니다.


📊 논문 시각자료 (Figures)

Figure 1



Figure 2



Figure 3



Figure 4



Figure 5



Figure 6



Figure 7



Figure 8



Figure 9



Figure 10



Figure 11



Figure 12



Figure 13



Figure 14



Figure 15



Figure 16



Figure 17



Figure 18



Figure 19



Figure 20



Figure 21



Figure 22



Figure 23



Figure 24



Figure 25



Figure 26



Figure 27



Figure 28



Figure 29



Figure 30



Figure 31



Figure 32



Figure 33



Figure 34



Figure 35



Figure 36



Figure 37



Figure 38



Figure 39



Figure 40



Figure 41



Figure 42



Figure 43



Figure 44



Figure 45



Figure 46



Figure 47



Figure 48



Figure 49



감사의 말씀

이 글의 저작권은 연구하신 과학자분들께 있으며, 인류 문명 발전에 공헌해주신 노고에 감사를 드립니다.

검색 시작

검색어를 입력하세요

↑↓
ESC
⌘K 단축키