Experiences with Model and Autocode Reviews in Model-based Software Development


autocode genenerator의 correctness를 입증하기 위해서 모델와 코드간 비교는 필요함. 

모델 리뷰도 필수적이다.

Functional, structural-related review가 model-level로 옮겨졌다.

 

Model Review의 목적

  • Textual specified functional requirement가 model로 잘 표현되었는지를 확인하기 위해
  • Modeling guideline이 잘 지켜졌는지
  • Quality criteria(portability, maintainability, testability)가 잘 지켜졌는지
  • Implement model이 safe code와 efficient code로 생성되었는지 확인하기 위해

Buzzer model을 Figure 1과 Figure 2로 표현할 수 있다.

 var1  var2

 

Figure 1보다는 Figure 2가 직관적이고 이해하기 쉬운 모델이다.

 

그리고 Figure 1에는 두 가지 오류가 있다.

AND 연산을 해야 하는데, bitwise연산을 한 것이 첫 번째이고,

Temporal operator를 사용하여 Timing constraint가 있는 동작을 수행해야 하는데, counter가 어떻게 증가하는지 모르기 때문에 이런 사용은 옳지 않은 것이 두 번째이다.

 

이와 같이 Model로 표현한다고 해서, 무조건 잘 된 것이 아니기 때문에 Model review가 필요하다. 이 논문을 봐도, Modeling guideline이 잘 만들어져 있으면 좋을 거란 생각이 든다.

Autocode Review

Autocode Review의 목적

  • configuration설정 이상 또는 적절하지 않은 모델링으로 Code generator에 의해 생성된 code가 정상적이지 않을 수 있기 때문에
  • model에서 찾기 어려운 문제를 autocode에서는 찾기 쉬운 문제일 수 있으므로
  • custom code part가 적절하게 통합되었는지를 확인하기 위해
  • code level에서 detect하기 쉽기 때문에 가능한 efficiency improvement를 찾기 위해
  • Code generator의 오류를 찾아내기 위해

 

아래의 autocode에서 16-18 line의 code는 dead code이다. – dead code detection하는 도구를 사용해도 괜찮을 것 같음.

ex2-code

Model과 code level에서의 metric간의 관계는 [21]에서 논의되었다.

 

Our Review Approach

Review 접근방법

  1. Model reviews
  2. Implementation Model tests(Floating point modus)
  3. Static analysis of the autocode
  4. Autocode reviews
  5. Implementation Model regression tests(Floating point modus)
  6. Back-to-back tests Implementation model vs Fixed-point autocode

 

Review에서 suggestions 및 comments를 5개의 class로 나눌 수 있다. Questions, editorial remarks, uncritical remarks, important remarks, critical remarks) 모든 findings는 DOOR도구를 이용하여 관리한다.

ToolNet framework를 이용하여 Model Review를 수행한다[13]. ToolNet은 도구이다.

 

Autocode review

두 단계로 나누어서 수행한다.

1st phase: comprehensibility, structure, form of the code에 집중한다.

2nd phase: specific error cause들을 찾는다, code line과 model patterns를 mapping한다.

 

Typical Findings

Model review

Div/0, overflow, underflow등과 같은 에러

 

[22]의 연구에서 밝혔듯이 model-based c code가 hand-code보다 더 적은 오류를 포함한다.

 

Auto code review에서 잘못된 유형

  • Improper scaling and definition of data types
  • Model parts are not translated, since they were modeled in a faulty way
  • Code inefficiencies resulting from inappropriate modeling
  • Code generator errors

 

Autocode review를 넣어야 하느냐 빼야 하느냐의 의견에서 code generator의 능력이 검증되지 않는다면 review가 필요하다고 생각한다. Code generator를 평가하기 위한 테스트 케이스는 [9]를 참고하면 된다.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s