주제 #4 : 소프트웨어 신뢰도 추정모델의 최적모델 선택 및 적합성 분석


소프트웨어 신뢰도를 산출하기 위하여 우리는 복수의 추정모델을 사용하여 실제 누적 결함수와 비교하여 단 하나의 최적모델을 선택하여야 현재와 미래 신뢰도를 추정할 수 있다. 이러한 과정에서 실제 데이터와 가장 유사한 형태의 모델을 선택하는 방법으로 SSE와 AIC 값을 비교하여 선택하는 방법을 사용할 수 있다.


LSM 파라미터 추정 방법을 사용할 경우 SSE 값이 낮은 순서에 따라 모델 순위가 결정된다. 각 추정 모델 적합성에 대한 검증은 Chi-square으로 계산한 결과를 사용한다. SSE와 Chi-square의 계산하는 과정을 설명하기 위해 Failure Count Data를 표1에 제시하였다.

 

[표1] Failure Count Data의 수집



표 1에서 제시한 FCD를 가지고 각 모델에 대한 SSE를 계산한 결과 최소 SSE 값을 가진 Weibull이 최적모델로 선택되었다. 이 모델의 Chi-square 값은 Chi-square 참조에 제시된 90% 이내일 경우 최적의 모델로 선택할 수 있다. 표 2에 제시된 Chi-square 값은 6개 모델 모두 90% 이내이므로, 우리는 Weibull 모델을 최적의 모델로 선택할 수 있다.

 

표2. 각 모델의 SSE and chi-square 값



Coverage data를 활용하여 MLE 모수 추정 방법을 사용하는 경우 포아송 분포를 통해 FCD를 확률로 변환하여 확률 함수를 계산한다. 이 경우 모델순위 및 적합성 검증을 위해 우리는 AIC(Akaike Information Criterion)를 사용하고 AIC 값이 가장 낮은 모델을 최적의 모델로 선택할 수 있다.

 

표3. Coverage data 수집(예)



표3의 커버리지 데이터를 사용하여 각 모델에 대한 AIC를 계산한 결과, 최소 AIC 값을 가진 Inflection-S모델이 최적모델로 선택되었다. 이 모델의 Chi-square 값은 Chi-square 참조에 제시된 90%이내일 때 최적모델로 선택할 수 있다. 표 4에 제시된 Chi-square 값은 6개 모델 모두 90% 이내이며 Inflection-S모델을 최적모델로 선택할 수 있다.

 

표4. 각 모델의 AIC and Chi-square 값



위에서 설명한 프로세스를 통해 얻을 수 있는 Output은 그림 1과 같이 총 예측 결함 수, 현재 결함 수, 잔여 결함 수, 목표 신뢰도에 도달하는 시간이다. 이러한 계산 결과 목표 신뢰도에 도달하지 않은 경우 계속 시험을 수행하고, 목표 신뢰도에 도달한 경우 소프트웨어 시험을 멈추고 소프트웨어를 릴리즈 할 수 있다.  

 

 

그림1. 추정모델의 Output

 

 

다음 주제는 무기체계 소프트웨어 군수지원 ‘소프트웨어 신뢰도 평가 실제 사례’에 관하여 기술하고자 한다.  
(모아소프트 소프트웨어 ILS 센터장 류인수)

 

업무총괄 류인수 센터장 02.6945.2111 isryu@moasoftware.co.kr

기술지원 이기영 수석 컨설턴트, 김용 팀장, 손현승 팀장

주제 # 4 : 추정모델의 Mean Value Function Prameter 추정 방법

소프트웨어 테스트 단계에서 얻을 수 있는 FCD(Failure Count Data)의 변화량으로 현재의 신뢰도와 목표 신뢰도에 도달하는 시간을 추정할 수 있다. 소프트웨어 요구사항분석 단계에서 코딩 단계에 걸쳐 예측모델을 활용하여 Defect Density와 Defect Count를 산출하였다. 이것은 시험 단계에서 초기에 나타날 것으로 예상되는 결함 수이다. 테스트 초기 단계에서는 예측 모델에 의해 Defect Density와 Defect Count를 선택하여 신뢰도를 추정할 수 있으며, 예측모델과 추정모델의 Defect Density와 Defect Count의 연관성은 그림1에서 볼 수 있다.

 

[그림1] 예측모델과 추정모델의 연관성

 

소프트웨어 신뢰도 추정모델은 소프트웨어에 내재된 총 결함수와 관련된 parameters를 가진다. 현재 발견된 결함의 수와 총결함의 수를 알면 소스코드에 얼마나 많은 Defects가 남아 있는지 알 수 있다. [그림 2]

 

그림2] Total Defects와 남은 결함수

The Mean Value Function은 누적 결함수로 계산되며, 남은 결함수와 연관이 있다. 각 모델의 Mean Value Function 그림 3과 같다.

 

[그림3] 추정모델의 Mean Value Function

추정모델의 Mean value function의 Parameters를 추정하는 방법에는 두 가지가 있다. 그중 하나는 LSM(Least Square Method)이고, 다른 하나는 MLE(Maximum Likelihood Estimation)이다.

LSM(Least Square Method)은 실제 값과 추정값의 차이를 x라고 하면, 이는 x의 제곱의 합을 최소로 하는 추정 방법이다. LSM 추정 방법은 수집된 데이터 량이 적은 경우와 데이터 분포가 선형적인 경향이 있을 때 주로 사용한다.

최대우도추정(Maximum Likelihood Estimation)은 모수(parameter)가 미지의 θ인 확률분포에서 뽑은 표본(관측치) x들을 바탕으로 θ를 추정하는 기법이다. MLE 추정 방법은 일반적으로 데이터가 대량일 때 주로 사용되며, 통계적 관점에서 다양하게 활용되는 추정방법이다.

다음 주제는 ‘소프트웨어 신뢰도 추정 모델의 최적 모델선택과 적합성 분석’에 관하여 기술하고자 한다.

======================================================================

본 게시글은 (주)모아소프트 소프트웨어 ILS 센터 류인수 센터장의 연재글로 해당주제에 대한 게시글이 정기적으로 업데이트 됩니다.

www.moasoftware.co.kr

업무총괄 류인수 센터장 02.6945.2111 isryu@moasoftware.co.kr

기술지원 이기영 수석 컨설턴트, 김용 팀장, 손현승 팀장

 

 

Qt는 고성능 UI 및 어플리케이션을 개발하는 툴과 환경을 제공합니다. 또한 많은 수의 Cross-Platform 클래스 라이브러리를 제공하여 쉽고 빠르게 다양한 종류의 플랫폼에서 동작하는 어플리케이션을 개발할 수 있습니다.


Qt Design Studio는 복잡하고 확장 가능한 UI를 신속하게 프로토 타이핑하고 개발하기위한 UI 디자인 및 개발 환경입니다.

디자이너가 유창하고 현대적인 UI를 만드는 데 집중할 수 있도록하는 향상된 워크 플로를 제공하는 동시에 개발자는 명령 논리에 집중할 수 있습니다.

==================================================================

제품 정보 더보기 : http://www.moasoftware.co.kr/product/qt.asp

솔루션담당 장정훈 부장 02.6945.2120 jhjang@moasoftware.co.kr

Qt는 고성능 UI 및 어플리케이션을 개발하는 툴과 환경을 제공합니다. 또한 많은 수의 Cross-Platform 클래스 라이브러리를 제공하여 쉽고 빠르게 다양한 종류의 플랫폼에서 동작하는 어플리케이션을 개발할 수 있습니다.


Qt Creator IDE

Qt Creator는 Qt 응용 프로그램 프레임 워크를 사용하여 응용 프로그램을 설계 및 개발할 수 있는 도구를 사용자에게 제공하는 IDE입니다.

단일 툴로 통합 된 종합 도구로써 다음과 같은 장점이 있습니다.

  ▷ 개발 중에 여러 도구 간의 전환이 필요가 없습니다.

  ▷ 여러 도구 간에 파일을 복사 할 필요가 없습니다.

  ▷ 대상 HW에서 직접 테스트 및 프로파일링 할 수 있습니다.

==================================================================

제품 정보 더보기 : http://www.moasoftware.co.kr/product/qt.asp

(주)모아소프트

소프트웨어 신뢰성시험,RAMS,LSA모델링,RF,EMC,종합군수지원 전문기업

 

솔루션담당 장정훈 부장 02.6945.2120 jhjang@moasoftware.co.kr

Qt는 고성능 UI 및 어플리케이션을 개발하는 툴과 환경을 제공합니다. 또한 많은 수의 Cross-Platform 클래스 라이브러리를 제공하여 쉽고 빠르게 다양한 종류의 플랫폼에서 동작하는 어플리케이션을 개발할 수 있습니다.

 


지원 가능 플랫폼

 

Cross Platform 지원

Qt 솔루션 적용 분야

  - 국방, 항공, 자동차, 의료기기, 공장 자동화 보안

  - 이외 다양한 분야에서 사용되고 있습니다.

 

특징 및 장점

  - 재사용성 재사용 가능한 QML 기반의 HMI 및 앱을 설계할 수 있어 시간과 노력을 절약

  - 확장성 새로운 HW 및 SW 모듈을 쉽게 추가하고 맞춤형 Qt API를 사용 가능

  - 유연성 HW 환경이 다른 여러 프로젝트에 단일 플랫폼을 사용 가능

 

 

==================================================================

제품 정보 더보기 : http://www.moasoftware.co.kr/product/qt.asp

솔루션담당 장정훈 부장 02.6945.2120 jhjang@moasoftware.co.kr

사람은 코드, 소프트웨어, 시스템, 또는 문서 안에 결함을 만들어내는 오류(실수)를 범할 수 있습니다. 만약 결함 코드가 실행되면 시스템은 정상 동작 중 에러가 발생하거나, 비정상 동작 할 수 있습니다.

따라서 시스템이나 시스템의 구성 요소 또는 소프트웨어를 실행하고 평가해야 합니다. 테스트는 보다 적은 테스트 케이스로 보다 많은 결함을 찾을 수 있도록 설계하기 위해, 테스트 기법을 활용할 필요가 있습니다.

다음 포스팅에선 국제표준(ISO/IEC 29119)에 따른 동적 SW 테스트 기법을 소개하겠습니다.

 

출처

https://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%ED%85%8C%EC%8A%A4%ED%8A%B8

https://www.oss.kr/info_test/show/a1f416ee-689d-40a6-8356-96b384c0c613?page=6

https://www.oss.kr/info_test/show/afda9e9d-3be7-471a-9c55-9e2c3ac58221?page=4

C# Coding conventions

C#은 2000년 7월에 개최되었던 Professional Developers Conference(PDC)에서 .NET 프로젝트와 함께 발표된 객체 지향 프로그래밍 언어입니다. 마이크로소프트에서 개발되었으며, 1983년에 등장한 C++와 1995년에 등장한 Java에서 강한 영향을 받았습니다.

마이크로 소프트에서 개발되었기 때문에 해당 언어에 대한 코딩 규칙 또한 마이크로소프트에서 제공합니다. 다음은 마이크로소프트에서 제시하는 코딩규칙이 사용되는 목적입니다.

• 독자는 코드를 일관된 모양으로 만들어 독자가 레이아웃이 아닌 컨텐츠에 집중할 수 있습니다.

• 이전 경험을 바탕으로 가정을하여 독자가 코드를 더 빨리 이해할 수 있도록합니다.

• 코드 복사, 변경 및 유지 관리가 용이합니다.

• C # 모범 사례를 보여줍니다.

문서의 지침은 Microsoft에서 샘플 설명서를 개발하는 사용된다고 합니다.

 

C# 개발도구인 Visual Studio에서 개발하는 프로젝트에서 특정 코딩규칙 집합을 선택할 수 있습니다. 일부 규칙은 둘 이상의 기본 제공 규칙 집합에 포함되며, 예를 들어 기본 수정 규칙 집합은 관리 권장 규칙 집합에 있는 규칙을 포함합니다.

기본 제공 규칙 집합 중 하나를 사용하거나 프로젝트 요구 사항에 맞게 규칙 집합을 사용자 정의할 수 있습니다. 사용자 정의 규칙 집합에 동일한 규칙을 포함하는 여러 규칙 집합을 포함하는 경우 해당 규칙은 사용자 정의 규칙 집합에 한 번만 표시됩니다.

 

다음은 기본 제공 규칙 집합과 여기에 포함된 규칙(또는 경고)에 대해 설명합니다.

규칙 집합

포함 된 규칙

모든 규칙

사용 가능한 모든 관리 및 C++ 규칙을 포함 합니다.

기본 정확성 규칙

논리 오류 및 프레임 워크 사용에 대 한 관리 권장 규칙 및 규칙을 포함 합니다.

확장 된 정확성 규칙

기본 정확성 규칙 (관리 권장 규칙 포함)과 논리 오류 및 프레임 워크 사용에 대 한 추가 규칙을 포함 합니다.

기본 디자인 지침 규칙

코드를 쉽게 읽고 이해 하 고 유지 관리할 수 있도록 관리 권장 규칙과 규칙을 포함 합니다.

확장 된 디자인 지침 규칙

기본 디자인 지침 규칙 (관리 권장 규칙 포함) 및 이름 지정에 초점을 맞춘 추가 유지 관리 규칙을 포함 합니다.

전역화 규칙

세계화 문제에 대 한 규칙을 포함 합니다.

관리 되는 최소 규칙

중요 한 관리 코드 문제에 대 한 네 가지 규칙을 포함 합니다.

관리 권장 규칙

관리 되는 최소 규칙 및 중요 한 관리 코드 문제에 대 한 추가 규칙을 포함 합니다.

혼합 최소 규칙

CLR에 대 한 코드의 C++ 중요 한 문제에 대 한 규칙을 포함 합니다.

혼합 권장 규칙

CLR에 대 한 코드에 C++ 중요 한 문제에 대 한 추가 규칙을 포함 한 최소 규칙을 포함 합니다.

네이티브 최소 규칙

네이티브 코드의 중요 한 문제에 대 한 규칙을 포함 합니다.

기본 권장 규칙

네이티브 코드의 주요 문제에 대 한 기본 최소 규칙 및 추가 규칙을 포함 합니다.

보안 규칙

보안 취약성을 찾기 위한 규칙을 포함 합니다.

C# Coding conventions은 방위사업청 무기체계 소프트웨어 코딩규칙에 규정되어 있습니다. 해당 문서에서 코딩규칙, 취약점 점검, 코드메트릭의 기준값을 준수해야 한다고 명시되어 있습니다. C# Coding conventions 통해 코딩 규칙과 취약점 점검을 점검할 수 있습니다. 코드메트릭 같은 경우 Sparrow 툴을 사용하여 점검할 수 있습니다. C# 정적분석 외에 동적분석을 위한 툴은 SquishSquishcoco를 소개합니다. 이상 포스팅을 마치며 다음 포스팅부터는 각 코딩 규칙에 대한 설명을 하겠습니다.

출처 :

https://namu.wiki/w/C%23 // C# - 나무위키

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/inside-a-program/coding-conventions

// C # 코딩 규칙 (C # 프로그래밍 가이드) – 마이크로소프트

https://docs.microsoft.com/ko-kr/visualstudio/code-quality/rule-set-reference?view=vs-2019

// 코드 분석 규칙 세트 참조 – 마이크로소프트

이번 포스팅에서는 지난 포스팅에서 만든 Command Line Batch 파일을 활용하여 Jenkins에서 정적분석을 진행하는 방법에 대해 알아보겠습니다.

LDRA를 9.8.3 이하의 버전을 사용하거나 플러그인을 사용하지 않을 경우에 다음과 같은 방법으로 Jenkins에서 정적분석을 진행하고 테스트 결과를 공유 및 관리할 수 있습니다.

 

Step 1. Jenkins 대시보드 → 새로운 Item 생성 (Freestyle Project) → 구성 → Build 탭 → Execute Windows batch command로 생성 → 작성한 Batch 파일 선택

 

그림 1 작성한 Command Line batch 파일 지정하기 위한 옵션

 

 

그림 2 Command Line Batch 파일 경로 입력

Step 2. 빌드 후 조치 탭에서 Archive the artifacts 선택 → 아래의 내용 입력

 

그림 3 Jenkins Workspace Report 저장 경로 입력

Step 3. Jenkins 대시보드로 돌아와서 Build Now 로 정적분석 수행 → 작업 공간에서 정적분석 결과 Report 확인, Jenkins에서 Report가 열리지 않으면 Jenkins Workspace에서 결과 Report 확인

 

그림 4 Jenkins에 올라온 정적분석 결과 Report

 

그림 5 LDRA Tbpublish Report에서 Code Review Report 확인

 

이번 포스팅에서는 LDRA Command Line를 Batch 파일로 만들어 Jenkins에서 활용하는 방법을 알아보았습니다. 이전에 포스팅했던 Jenkins plugin 방식이나 Command Line 방법을 사용하여 Jenkins에서 개발한 소스코드의 테스트 진행과 코드 관리, 결과 공유 등 여러 가지 업무를 지속적으로 진행할 수 있습니다.

이번 포스팅에서는 두개의 포스팅으로 나눠 LDRA Command Line을 Batch 파일로 작성하여 LDRA 9.8.3 이하 버전의 Jenkins에서 정적분석을 진행하는 방법에 대해 알아보겠습니다.

 

먼저 LDRA Testbed 또는 LDRA Rules에서 SET 구성 후 File 메뉴의 Save File or Set to TCF로 생성한 SET의 .tcf 파일을 만들어 줍니다.

TCF 생성 후 다음과 같이 Batch 파일을 작성합니다.

그림 1 LDRA Command Line Batch 파일 작성

 

빨간색 박스가 되어 있는 부분이 LDRA Command Line 명령으로 LDRA Testbed를 실행시키는 부분으로 마지막 Flag인 ‘112a34q’ 가 정적분석 단계를 선택하는 옵션입니다.

(TBED Flag는 LDRA의 설치 경로인 LDRA_Toolsuite 경로)

아래 그림과 같이 LDRA에서 제공하는 Command_line.pdf를 참고하면 다음과 같은 Flag를 확인할 수 있습니다.

 

 

그림 2 LDRA Command Line 분석 Flag

 

위에서 작성한 Command Line에서는 Testbed를 실행시키지만 LDRA_Toolsuite 폴더를 보면 Contestbed.exe 라는 파일이 존재합니다.

이 파일을 통해서도 Command Line 명령어를 실행시킬 수 있다. Contestbed.exe 를 사용한 Command Line은 다음과 같습니다.

 

 

그림 3 Contestbed 명령어

 

LDRA Testbed 이외에도 TBrun도 테스트케이스가 작성된 TCF 파일이 있다면 Command Line 명령어로 테스트를 진행할 수 있습니다.

다음 포스팅에서는 이번 포스팅에서 작성한 Batch 파일을 사용하여 Jenkins에서 LDRA 정적 분석 방법을 알아보겠습니다.

Jenkins를 활용하여 지속적인 테스트 결과 공유 및 관리를 위해서 LDRA에서 이번 포스팅에서는 LDRA에서 제공하는 Jenkins Plugin을 적용하여 Jenkins에서 정적분석을 진행하는 방법을 알아보겠습니다.

Step 1. LDRA Testbed 또는 LDRA Rules에서 정적분석을 진행할 코드들의 SET을 생성

Step 2. Jenkins로 넘어와 대시보드의 Jenkins 관리 → 플러그인 관리 → 고급 → 플러그인 올리기 → 파일 선택 → C:\LDRA_Toolsuite\Utils\Jenkins 경로의 Com.ldra.coderview.hpi 선택 → 올리기

Step 3. 대시보드로 돌아와 Jenkins 관리 → 시스템 설정 → LDRA Code Review 탭으로 이동 → 아래 그림과 같이 입력 (LDRA 설치 경로를 변경하지 않은 경우)

 

그림 1 LDRA 경로 설정 ​

Step 4. 대시보드 → 새로운 Item → Freestyle Project 선택 → Build 탭에서 LDRA Code Review 선택 후 아래와 같이 입력 (LDRA Testbed 또는 LDRA Rules에서 SET 생성시 TCF가 LDRA_Workarea/SET명 경로에 생성) → 빌드 후 조치 탭에서 아래와 같이 입력

 

그림 2 SET 및 Source Code 정보가 들어있는 .tcf 파일 위치 지정 ​

 

그림 3 정적분석 결과 파일 지정

Step 5. 설정을 마친 후 Jenkins에서 Build Now 로 정적분석 시작 → 분석 종료후 LDRA Violations 에 들어가서 정적분석 결과(검출 내역) 확인

Step 6. LDRA Violations 메뉴에서 결과 확인

아래의 예시에서는 LDRA Rule 139 S가 검출된 것을 확인할 수 있다. 파일 이름을 클릭하면 소스코드로 연결되어 어느 부분에서 검출되었는지 확인이 가능합니다.

 

그림 4 정적분석 상세 결과

 

그림 5 위반 사항 검출 코드 라인

위의 Step에 따라 Jenkins에서 Plugin을 적용하여 정적분석 진행 방법에 대해 알아보았습니다. 다음 포스팅에서는 LDRA의 버전에 관계없이 LDRA에서 제공하는 Command Line 명령어로 정적분석 진행 방법에 대해 알아보겠습니다.

+ Recent posts