KR102461180B1 - 소프트웨어 안전성 분석 방법 및 장치 - Google Patents

소프트웨어 안전성 분석 방법 및 장치 Download PDF

Info

Publication number
KR102461180B1
KR102461180B1 KR1020160109690A KR20160109690A KR102461180B1 KR 102461180 B1 KR102461180 B1 KR 102461180B1 KR 1020160109690 A KR1020160109690 A KR 1020160109690A KR 20160109690 A KR20160109690 A KR 20160109690A KR 102461180 B1 KR102461180 B1 KR 102461180B1
Authority
KR
South Korea
Prior art keywords
risk
metric data
halstead
software
code
Prior art date
Application number
KR1020160109690A
Other languages
English (en)
Other versions
KR20170140753A (ko
Inventor
박지환
천선일
김지섭
김은정
Original Assignee
(주)씽크포비엘
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020160073243A external-priority patent/KR101734872B1/ko
Application filed by (주)씽크포비엘 filed Critical (주)씽크포비엘
Priority to KR1020160109690A priority Critical patent/KR102461180B1/ko
Publication of KR20170140753A publication Critical patent/KR20170140753A/ko
Application granted granted Critical
Publication of KR102461180B1 publication Critical patent/KR102461180B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

컴퓨터에 의해 수행되는, 전장용 소프트웨어의 안전성 분석 방법이 제공된다. 본 발명에 따른 전장용 소프트웨어의 안전성 분석 방법은, 전장용 소프트웨어 코드를 입력받는 단계; 전장용 소프트웨어 코드를 하나 이상의 코드 모듈로 분할하는 단계; 분석 머신 - 분석 머신은, 차량 기능 안전에 관련된, i개의 위험 메트릭 데이터 세트에 의해 미리 학습되고 훈련된 기계 학습 머신이며, i개의 위험 메트릭 데이터 세트 각각은 d개의 위험 메트릭 데이터들을 포함하고, d 및 i는 1 이상의 정수임 - 을 이용하여, 각각의 코드 모듈에 대해, 위험 메트릭 데이터 세트에 대응하는 위험 메트릭 데이터 값들을 측정하는 단계; 및 각각의 코드 모듈에 대해, 위험 메트릭 데이터 값들에 기초해서, 분석 머신을 이용하여, 위험 여부를 나타내는 값을 각각 결정하는 단계를 포함한다.

Description

소프트웨어 안전성 분석 방법 및 장치{METHOD AND APPARATUS FOR ANALYZING SAFETY OF SOFTWARE}
본 발명은, 차량 전장용 소프트웨어 안전성 분석 방법 및 장치에 관한 것으로, 보다 구체적으로는 머신러닝에 기초한 차량 전장용 소프트웨어 안전성 분석 방법 및 장치에 관한 것이다.
최근에는, 차량 전장용 소프트웨어의 다양화 및 고도화와 함께 자동차 전장품 시장도 급격하게 성장하고 있는 추세에 있다. 또한 차량 전장용 소프트웨어의 제조 효율 향상과 결함 방지를 위한 표준화 노력이 지속되고 있다. 예컨대, 많은 자동차 회사들이 ISO 26262 자동차 전기/전자 시스템의 안전인증 규격 및 AUTOSAR 개발 플랫폼 등에 기초하여 각각 전장용 소프트웨어 개발에 나서고 있다.
한편, 전장용 소프트웨어는 그 특성상 오류 발생시 회복할 수 없는 피해를 야기할 수 있다. 그리고 전장용 소프트웨어의 오류로 인한 각종 사고 및 사건들은 꾸준히 발생하고 있는데, 그에 따라 전장용 소프트웨어의 안전성에 대한 관심은 날로 증대되어 가고 있다. 또, 전장용 소프트웨어의 고도화 및 다양화에 따라 소프트웨어의 결함 또는 장애로 인한 피해는 점점 더 심각한 수준에 이르고 있는바, 소프트웨어 결함에 의한 사고는 고객의 안전과 자동차 회사의 이미지에 치명적 손상을 줄 수 있다. 따라서, 전장용 소프트웨어의 결함 가능성을 해당 소프트웨어의 수명 초기에 예측하고 이를 신속하게 수정할 수 있도록 하는 것이 중요하며, 표준에 기초하여 작성된 소프트웨어의 경우에도 이러한 결함 가능성의 예측 및 검증은 매우 중요한 이슈이다.
한편, 차량 전장용 소프트웨어를 비롯한 각종 소프트웨어의 결함을 분석하고 예측하는 작업은 지금까지 통상적으로 사람의 손에 의해 수동으로 행하여져 왔다. 예를 들어, 전장용 소프트웨어의 경우, 주로 소프트웨어 전문가가 수동으로 각 소프트웨어 모듈에 대해 MISRA(Motors Industry Software Reliability Association) 지정의 코딩 룰 준수 여부를 확인하는 수준에 머물러 왔다.
그러나 이러한 수동으로 이루어지는 분석 방법은, 전장용 소프트웨어의 코드 구조의 복잡성이 날로 증가하고 있는 현재 상황에서, 분석 정확도가 낮고 분석의 안정성을 기대하기 어려운 문제가 있다. 또한, 전장용 소프트웨어의 안전성 분석에 이용되는 입력 데이터의 범위를, 분석의 정확성과 효율성을 모두 충족하는 적절한 범위로 선택하는 것은 중요하지만 어려운 일이다.
따라서, 정확하고 안정성 있는, 자동화된 전장용 소프트웨어의 안전성 분석 방법이 필요로 된다. 또, 전장용 소프트웨어의 자동화된 분석에 이용되는 입력 데이터의 범위를, 분석의 정확성과 효율성을 모두 충족하는 적절한 범위로 선택할 방법이 요구된다.
본 발명의 일 특징에 의하면, 컴퓨터에 의해 수행되는, 전장용 소프트웨어의 안전성 분석 방법이 제공된다. 본 발명에 따른 전장용 소프트웨어의 안전성 분석 방법은, 전장용 소프트웨어 코드를 입력받는 단계; 전장용 소프트웨어 코드를 하나 이상의 코드 모듈로 분할하는 단계; 분석 머신 - 분석 머신은, 차량 기능 안전에 관련된, i개의 위험 메트릭 데이터 세트에 의해 미리 학습되고 훈련된 기계 학습 머신이며, i개의 위험 메트릭 데이터 세트 각각은 d개의 위험 메트릭 데이터들을 포함하고, d 및 i는 1 이상의 정수임 - 을 이용하여, 각각의 코드 모듈에 대해, 위험 메트릭 데이터 세트에 대응하는 위험 메트릭 데이터 값들을 측정하는 단계; 및 각각의 코드 모듈에 대해, 위험 메트릭 데이터 값들에 기초해서, 분석 머신을 이용하여, 위험 여부를 나타내는 값을 각각 결정하는 단계를 포함한다.
본 발명의 일 실시예에 의하면, 코드 모듈에 대하여 측정된 위험 메트릭 데이터 값들은, 코드 모듈에 대한 위험 레벨 값을 포함하며, 위험 레벨 값은 코드 모듈의 명세에 따라 정의되는 값일 수 있다.
본 발명의 일 실시예에 의하면, 코드 모듈에 대하여 측정된 위험 메트릭 데이터 값들은, 코드 모듈에 대한, 총 코드 라인 수(loc), McCabe 순환 복잡도(v(g)), McCabe 필수 복잡도(ev(g)), McCabe 설계 복잡도(iv(g)), Halstead 연산자 및 피연산자 전체 수(n), Halstead 프로그램 볼륨(v), Halstead 프로그램 길이(l), Halstead 프로그램 난이도(d), Halstead Intelligent content(i), Halstead 프로그래밍 노력(e), Halstead 에러 추정(b), Halstead 구현시간 추정(t), Halstead 라인 카운트(lOCode), Halstead 주석 줄 수(lOComment), Halstead 빈 줄 수(lOblank), 코드와 주석을 모두 갖는 라인 수(IOCodeANDComment), 고유한 연산자 수(uniq_Op), 고유한 피연산자 수(uniq_Opnd), 전체 연산자(total_Cp), 전체 피연산자(tatal_Opand), 및 그래프 흐름 수(branchCount) 중 하나 이상의 값을 포함할 수 있다.
본 발명의 일 실시예에 의하면, 코드 모듈에 대하여 위험 여부를 나타내는 값을 결정하는 단계는, 위험 메트릭 데이터 값들 중에서, 코드 모듈의 위험 여부에 대한 소정 이상의 민감도를 갖는 하나 이상의 위험 메트릭 데이터 값들을 결정하는 단계를 포함할 수 있다,
본 발명의 일 실시예에 의하면, 소정 이상의 민감도를 갖는 하나 이상의 위험 메트릭 데이터 값들을 결정하는 단계는, d개의 위험 메트릭 데이터들의 i개의 세트가 주어진 경우, i개의 세트 각각의 위험 메트릭 데이터들 중에서 각 n번째(1≤n≤d) 위치의 위험 메트릭 데이터에 대해, Sn 값이 소정 값 이상인지를 판정하는 단계를 포함하며, 여기서
Sn=
Figure 112016083556053-pat00001
DSk
DSk=O(Ik)-O(Ikkn)
Ik: k번째 위험 메트릭 데이터들의 세트
O(Ik): k번째 위험 메트릭 데이터들의 세트에 대해, 분석 머신에 의해 결정된 위험 여부를 나타내는 값
Ikkn: k번째 위험 메트릭 데이터들의 세트에서, d개의 위험 메트릭 데이터들 중 n번째 값에 소정의 상수값 Δ을 더한 위험 메트릭 데이터들의 세트
O(Ikkn): k번째 위험 메트릭 데이터들의 세트에서, d개의 위험 메트릭 데이터들 중 n번째 값에 소정의 상수값 Δ을 더한 위험 메트릭 데이터들의 세트에 대해, 분석 머신에 의해 결정된 위험 여부를 나타내는 값일 수 있다.
본 발명의 일 실시예에 의하면, 위험 레벨 값은, 코드 모듈의 심각도 레벨 값, 발생 확률 값, 및 구현 난이도 레벨 값 중 하나 이상에 기초하여 정의될 수 있다.
본 발명의 다른 특징에 의하면, 전술한 전장용 소프트웨어의 안전성 분석 방법들 중 어느 하나의 방법을 실행하도록 동작 가능한 컴퓨터 장치가 제공된다,
본 발명의 또 다른 특징에 의하면, 하나 이상의 명령어가 저장된 컴퓨터 판독 가능한 저장 매체로서, 하나 이상의 명령어는 컴퓨터에 의해 실행되는 경우, 컴퓨터로 하여금 전술한 전장용 소프트웨어의 안전성 분석 방법의 방법을 실행하게 하는, 컴퓨터 판독 가능한 저장 매체가 제공된다.
본 발명에 의하면, 머신러닝 또는 딥러닝 기술에 기초하여, 정확하고 안전성 있는 전장용 소프트웨어의 안전성 분석 방법이 제공될 수 있다. 본 발명에 의하면, 분석 머신의 분석에 이용될 각 코드 모듈의 위험 데이터 메트릭들을 해당 코드 모듈의 신뢰도 및 안전성과 관련이 깊은 중요하고 민감한 데이터 메트릭들로 제한하여 분석의 정확도와 효율성을 모두 높일 수 있다.
도 1은, 본 발명의 일 실시예에 따른, 전장용 소프트웨어의 신뢰도 및 안전성 자동 분석을 위한 분석 머신의 생성 및 활용 과정을 개략적으로 보여주는 흐름 블록도이다.
도 2는, 본 발명의 일실시예에 따른, 분석 머신의 생성 및 훈련에서 입력 값으로서 이용될 위험 데이터 메트릭들의 예시적 집합을 도시한 도면이다.
도 3은, 분석 머신의 신뢰도 또는 안전성 분석에 사용될 메트릭 데이터들을 민감한 메트릭 데이터들로 감축하는 예시적 과정에서 사용될 수 있는 Sn 데이터들의 예를 보여주는 표이다.
도 4는, 본 발명의 일 실시예에 따른, 소프트웨어 신뢰도 및 안전성 분석 머신(400)의 기능 블록도이다.
이하, 첨부 도면을 참조하여 본 발명의 실시예에 관하여 상세히 설명한다. 이하에서는, 본 발명의 요지를 불필요하게 흐릴 우려가 있다고 판단되는 경우, 이미 공지된 기능 및 구성에 관한 구체적인 설명을 생략한다. 또한, 이하에서 설명하는 내용은 어디까지나 본 발명의 일 실시예에 관한 것일 뿐 본 발명이 이로써 제한되는 것은 아님을 알아야 한다.
본 명세서에서 사용되는 용어는 단지 특정한 실시예를 설명하기 위해 사용되는 것으로 본 발명을 한정하려는 의도에서 사용된 것이 아니다, 예를 들면, 단수로 표현된 구성요소는 문맥상 명백하게 단수만을 의미하지 않는다면 복수의 구성요소를 포함하는 개념으로 이해되어야 한다. 또한, 본 발명의 명세서에서, '포함하다' 또는 '가지다' 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것일 뿐이고, 이러한 용어의 사용에 의해 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 배제하려는 것은 아니다.
본 명세서에 기재된 실시예에 있어서 '블록' 또는 '부'는 적어도 하나의 기능이나 동작을 수행하는 기능적 부분을 의미하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다, 또한, 복수의 '블록' 또는 '부'는, 특정한 하드웨어로 구현될 필요가 있는 '블록' 또는 '부'를 제외하고는, 적어도 하나의 소프트웨어 모듈로 일체화되어 적어도 하나의 프로세서로 구현될 수 있다.
덧붙여, 달리 정의되지 않는 한 기술적 또는 과학적인 용어를 포함하여, 본 명세서에서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의된 용어들은, 관련 기술의 문맥상 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 발명의 명세서에서 명백하게 달리 정의하지 않는 한 과도하게 제한 또는 확장하여 해석되지 않는다는 점을 알아야 한다.
이하, 첨부된 도면을 참조하여, 본 발명의 실시예에 대해 구체적으로 설명하기로 한다.
도 1은, 본 발명의 일 실시예에 따른, 전장용 소프트웨어의 신뢰도 및 안전성 자동 분석을 위한 분석 머신의 생성 및 활용 과정을 개략적으로 보여주는 흐름 블록도(100)이다.
도시된 바에 의하면, 블록(102)에서는, 전장용 소프트웨어 분석 머신의 생성을 위한 기초 과정으로서, 차량 기능 안전에 관련된 요소들, 예컨대 ISO 26262에서 정의된 기능 안전성 요소나 AUTOSAR에서 정의된 기능 안전성 요소들을 포함한 각종 차량 기능 안전성에 관한 요소들이 수집되고, 그에 따라 추후 분석 머신의 생성 및 훈련에서 입력으로서 이용될 기능 안전성 요소의 위험 데이터 메트릭들이 선택될 수 있다. 이러한 기능 안전성에 관한 위험 데이터 메트릭들의 선택은 다양한 방식으로 이루어질 수 있으며, 예컨대 도메인 전문가의 활용이나 인터뷰 등의 방식에 의해 이루어질 수도 있다.
본 발명의 일실시예에 따른, 분석 머신의 생성 및 훈련에서 입력 값으로서 이용될 위험 데이터 메트릭들의 예시적 집합이 도 2에 도시되어 있다. 도 2에 도시된 바에 의하면, 분석 머신의 생성 및 훈련을 위한 입력 값은 코드 모듈에 관한 22개의 위험 데이터 메트릭들을 포함한 것일 수 있다.
구체적으로, 도시된 바에 의하면, 분석 머신의 생성 및 훈련에 이용될 위험 데이터 메트릭들로는, 예컨대 총 코드 라인 수(loc), McCabe 순환 복잡도(v(g)), McCabe 필수 복잡도(ev(g)), McCabe 설계 복잡도(iv(g)), Halstead 연산자 및 피연산자 전체 수(n), Halstead 프로그램 볼륨(v), Halstead 프로그램 길이(l), Halstead 프로그램 난이도(d), Halstead Intelligent content(i), Halstead 프로그래밍 노력(e), Halstead 에러 추정(b), Halstead 구현시간 추정(t), Halstead 라인 카운트(lOCode), Halstead 주석 줄 수(lOComment), Halstead 빈 줄 수(lOblank), 코드와 주석을 모두 갖는 라인 수(IOCodeANDComment), 고유한 연산자 수(uniq_Op), 고유한 피연산자 수(uniq_Opnd), 전체 연산자(total_Cp), 전체 피연산자(tatal_Opand), 그래프 흐름 수(branchCount), 및 코드 모듈 위험 레벨(Risk Level)의 위험 데이터 메트릭이 포함될 수 있다. 본 발명의 실시예에 따르면, 위험 레벨이란, 주어진 각 코드 모듈의 명세에 따라 정의되는 위험 레벨로서, 예컨대 각 코드 모듈의 오류가 얼마나 심각한 피해를 발생시키는지를 나타내는 심각도 레벨, 그러한 코드 모듈의 오류에 의한 피해가 발생할 확률이 얼마나 되는지를 나타내는 발생 확률, 해당 코드 모듈을 구현하는데에 있어서의 난이도 레벨 등에 의해 미리 정의되어 있는 값일 수 있다. 코드 모듈의 특성상 해당 코드 모듈의 오류가 발생할 경우 발생할 수 있는 피해가 심각한 생명의 위험을 일으키는 경우라면, 오류가 발생하더라도 사소한 피해나 경상을 일으키는데 그치는 코드 모듈에 비해서는 심각도 레벨이 높은 값일 수 있다. 또, 심각도 레벨이 높은 값을 갖는 코드 모듈이라도 그러한 코드 모듈의 발생 확률이 매우 낮은 경우라면 전체 위험 레벨은 낮은 값일 수 있다. 아래 표는 위험 레벨을 구분하는 방법을 예시적으로 보여주기 위한 것일 뿐, 본 발명이 이로써 제한되는 것은 아니다. 당업자라면, 각 코드 모듈의 특성을 고려하여 다양한 형태로 위험 레벨을 분류하는 방법을 생각해낼 수 있을 것이다.
D1 D2 D3
S1


E1 0 0 0
E2 0 0 0
E3 0 0 1
E4 0 1 2
S2


E1 0 0 0
E2 0 0 1
E3 0 1 2
E4 1 2 3
S3


E1 0 0 1
E2 0 1 2
E3 1 2 3
E4 2 3 4
<심각도 레벨>
S1=경상; S2=중상; S3=심각한 생명의 위험

<발생 확률>
E1=매우 낮은 확률; E2=낮은 확률; E3=중간 확률; E4=높은 확률

<구현 난이도>
D1=쉬움; D2=중간; D3=어려움
당업자라면, 전술한 위험 레벨 이외에, 도 2에 도시된 그외 다른 위험 데이터 메트릭 각각의 의미에 대해 잘 알 것이며, 여기서는 구체적인 설명을 생략하기로 한다. 또한, 당업자라면, 도 2에 도시된 데이터 메트릭은 본 발명의 일 실시예일 뿐이며, 본 발명이 이로써 제한되는 것은 아님을 알 것이다.
다시 도 1로 돌아가서, 블록(104)에서는, 블록(102)에서 정의된 각 위험 데이터 메트릭의 정의에 기초하여, 분석 머신의 생성에 이용될 구체적인 학습 및 훈련 데이터가 준비될 수 있다. 본 발명의 일 실시예에 의하면, 예컨대 NASA 제공의 시험 데이터 집합이 이용될 수 있으나, 본 발명이 이로써 제한되는 것은 아니다.
블록(106)에서는, 전장용 소프트웨어의 신뢰도 및 안전성 자동 분석을 위한 분석 머신(딥러닝 머신)이 초기 설계되고, 블록(104)에서 준비된 학습 데이터를 이용하여 분석 머신이 초기 학습될 수 있다. 본 발명의 일 실시예에 의하면, 인공 신경망(ANN)이나 서포트 벡터 머신(SVM) 기법에 따라 분석 머신이 설계될 수 있으나, 본 발명이 이로써 제한되는 것은 아니다. 당업자라면, 그외 다양한 딥러닝 방식에 의하여 분석 머신이 구현될 수 있음을 알 것이다.
블록(108)에서는, 초기 학습 완료된 분석 머신이, 블록(104)에서 준비된 테스트 데이터를 이용하여 테스트되고 테스트 결과에 따른 분석 머신의 오차율 분석이 행하여지며, 오차율 분석 결과는 다시 블록(106)으로 피드백 입력될 수 있다. 이와 같이, 블록(108)에서의 분석 머신의 테스트 결과는 블록(106)의 머신 설계 및 학습 단계로 반복하여 피드백 입력될 수 있고 그에 따라 분석 머신이 수정될 수 있다. 이러한 블록(106) 및 블록(108)에 따른 반복적 머신 수정의 과정이 행하여짐에 따라 코드 안전성 분석 머신의 작성이 완료될 수 있다.
한편, 본 발명의 일 실시예에 따른 전장용 소프트웨어의 신뢰도 및 안전성 자동 분석을 위한 분석 머신과 관련하여, 해당 분석 머신에 의한 소프트웨어 분석에서 사용될 코드 모듈의 위험 데이터 메트릭들의 수가 지나치게 많은 경우 입력 값의 차원을 높여서 분석 결과 값으로의 정확하고 효율적인 모델링이 어려울 수 있다. 반대로, 사용될 코드 모듈의 위험 데이터 메트릭들의 수가 지나치게 적은 경우 입력과 분석 결과 간의 정확한 연관 관계를 찾는 것이 곤란할 수 있다. 따라서, 분석 머신의 분석에 이용될 각 코드 모듈의 위험 데이터 메트릭들을 해당 코드 모듈의 신뢰도 및 안전성과 관련이 깊은 중요하고 민감한 데이터 메트릭들로 제한하여 사용하는 것이 더 바람직할 수 있다. 즉, 분석 머신이 분석에 사용할 수 있는 위험 메트릭 데이터들 중에서 어느 위험 메트릭 데이터가 그 값이 약간만 변화해도 분석 결과에 크게 영향을 미치는지를 찾아내고, 그러한 민감한 데이터들을 분석 머신에 사용되도록 제한할 수 있다.
예를 들어, 분석 머신의 초기 생성에 이용된 전체 메트릭 데이터의 수가 d개이고, 각각 d개의 입력 데이터 집합을 가지는 훈련 데이터 세트가 i개인 경우, 전체 i개 세트의 샘플의 각 n번째(1≤n≤d) 위치의 입력 값(위험 메트릭 데이터 값)이 분석 결과에 미치는 민감도는 다음 방식에 따라 판정될 수 있다.
Sn=
Figure 112016083556053-pat00002
DSk
DSk=O(Ik)-O(Ikkn)
Ik: k번째 입력 샘플 집합
O(Ik): k번째 입력 샘플 집합의 훈련된 머신 출력 값
Ikkn: k번째 입력 샘플 집합에서, 그 k번째 입력 샘플 집합의 n번째 값에 작은 상수값 Δ을 더한 입력 샘플 집합
O(Ikkn): k번째 입력 샘플 집합에서, 그 k번째 입력 샘플 집합의 n번째 값에 작은 상수값 Δ을 더한 입력 샘플 집합에 대하여 훈련된 머신 출력 값
위 식에 따르면, 입력 샘플 집합에 속한 각 위험 데이터 메트릭들 중 Sn 값이 소정 값 이상인 것, 즉 주어진 값이 약간만 변하더라도 분석 머신의 출력 결과 값에 크게 영향을 미치는 민감한 위험 데이터 메트릭이 어느 것인지를 찾을 수 있다.
다시 도 1로 돌아가서, 블록(110)에서는, 분석 머신을 이용한 전장용 소프트웨어의 안전성 분석이 수행된다. 구체적으로 도시되지는 않았으나, 본 발명의 일 실시예에 의하면, 블록(108)에서의 소프트웨어의 안전성 분석 결과는 블록(106)으로 피드백 입력되어 분석 머신을 업데이트할 수 있다. 구체적인 전장용 소프트웨어의 안전성 분석 과정에 대해서는, 이하 도 4를 참조하여 좀 더 자세히 설명하기로 한다.
블록(112)에서는, 블록(110)에서 분석 머신에 의해 수행된 분석의 결과가, 사용자에게 유용하고 직관적인 방식으로 리포팅될 수 있다. 예컨대, 분석 결과의 리포팅에는, 분석 결과의 도식화, 달성 목표와 그에 대비한 현재 수준의 표시, 달성 목표에 따른 추후의 액션 플랜 등이 포함될 수 있다.
도 3은, 전술한 바에 따라, 분석 머신의 신뢰도 또는 안전성 분석에 사용될 메트릭 데이터들을 민감한 메트릭 데이터들로 감축하는 예시적 과정에서 사용될 수 있는 Sn 데이터들의 예를 보여주는 표이다. 도 3에 따른 본 발명의 실시예의 경우, 분석 머신의 생성에 이용된 입력 데이터의 각 위험 데이터 메트릭들의 수는 21개(도 2의 위험 데이터 메트릭들 중 위험 레벨을 제외한 것과 같음)이며, 상수값 Δ는 0.1 이라고 가정하고, Sn의 값이 0.1 이상인 데이터만을 민감한 데이터라고 정하기로 한다. 그러한 경우, 도시된 표에 기초하여 다시 입력 데이터 메트릭 세트에 포함되도록 선택되는 데이터들은 14개로 감축될 수 있다(즉, loc, branchCount, iv(g), v, lOCodeAndComment, lOCode, uniq_Opnd, d, lOComment, e, v(g), n, total_Opnd, uniq_Op). 이러한 감축은 분석 결과와 상관 관계가 높은 값들로 입력을 제한하여 더욱 효율적이고 정확한 분석이 가능하게 할 수 있다.
도 4는, 본 발명의 일 실시예에 따른, 소프트웨어 신뢰도 및 안전성 분석 머신(400)의 기능 블록도이다. 도시된 바에 의하면, 분석 머신(400)은 입력부(402), 위험 데이터 메트릭 측정부(404), 위험 분석부(406) 및 보고서 작성부(408)를 포함한다.
본 발명의 일 실시예에 의하면, 입력부(402)에서는, 작성된 전장용 소프트웨어의 코드 입력이 수신될 수 있다. 입력되는 소프트웨어는 작성 완료된 것이거나 개발 중에 있는 전장용 소프트웨어일 수 있다. 소프트웨어는 하나 또는 둘 이상의 코드 모듈을 포함하는 것일 수 있다. 입력부(402)에서는 또한 입력된 소프트웨어가 하나 또는 둘 이상의 코드 모듈, 예컨대 하나 또는 둘 이상의 함수 등으로 분할될 수 있다.
본 발명의 일 실시예에 의하면, 위험 데이터 메트릭 측정부(404)에서는, 입력부(402)에서 입력되고 분할된 소프트웨어의 각 코드 모듈(예컨대, 각 함수 단위)에 대하여, 도 1의 블록(102)에서 선택되어 분석 머신 작성에 이용된 기능 안전 요소의 위험 데이터 메트릭들 각각의 값(또는 분석에 사용될 위험 데이터 메트릭들이 민감한 데이터들로 제한된 경우에는 그러한 제한된 민감한 메트릭 데이터들의 값)이 측정될 수 있다. 예컨대, 위험 데이터 메트릭 측정부(404)에서는, 입력된 소프트웨어의 각 코드 모듈에 대한, 총 코드 라인 수(loc), McCabe 순환 복잡도(v(g)), McCabe 필수 복잡도(ev(g)), McCabe 설계 복잡도(iv(g)), Halstead 연산자 및 피연산자 전체 수(n), Halstead 프로그램 볼륨(v), Halstead 프로그램 길이(l), Halstead 프로그램 난이도(d), Halstead Intelligent content(i), Halstead 프로그래밍 노력(e), Halstead 에러 추정(b), Halstead 구현시간 추정(t), Halstead 라인 카운트(lOCode), Halstead 주석 줄 수(lOComment), Halstead 빈 줄 수(lOblank), 코드와 주석을 모두 갖는 라인 수(IOCodeANDComment), 고유한 연산자 수(uniq_Op), 고유한 피연산자 수(uniq_Opnd), 전체 연산자(total_Cp), 전체 피연산자(tatal_Opand), 그래프 흐름 수(branchCount), 및 위험 레벨(Rist Level) 등의 위험 데이터 메트릭 값들 중 하나 이상의 값이 자동으로 측정될 수 있다.
본 발명의 일 실시예에 의하면, 위험 분석부(406)에서는, 각 코드 모듈에 대해 측정된 위험 레벨 값을 비롯한, 위험 데이터 메트릭 측정부(404)에서 측정된 각 코드 모듈의 위험 데이터 메트릭들을 이용하여 각 코드 모듈 별로 위험 여부가 분석된다. 분석된 결과는, 각 코드 모듈별로 해당 모듈이 위험 여부를 나타내는 True 또는 False의 값으로 출력될 수 있다.
본 발명의 일 실시예에 의하면, 보고서 작성부(408)에서는, 입력된 소프트웨어의 위험 여부에 관한 보고서가 자동으로 작성될 수 있다. 본 발명의 일 실시예에 의하면, 보고서 작성부(408)에서는, 위험 여부 분석부(406)에서 얻어진 각 코드 모듈의 위험 여부 분석 결과(즉, 각 코드 모듈에 관한 True 또는 False 값)와 함께, 위험 데이터 메트릭 측정부(404)에서 측정된 입력 소프트웨어의 각 코드 모듈의 위험 레벨 값 및 그 위험 레벨 값을 측정하는데 이용된 구현 난이도 값을 이용하여 보고서를 작성할 수 있다. 본 발명의 일 실시예에 의하면, 보고서 작성부(408)에서는, 소프트웨어의 각 코드 모듈의 위험 지수(로컬 위험 지수)와 전체 소프트웨어의 위험 지수(총 위험 지수)가 각 정해진 방식에 의해 계산되고, 계산된 로컬 위험 지수 및 총 위험 지수를 포함하여 입력 소프트웨어의 위험 여부에 관한 보고서가 작성될 수 있다.
예를 들어, 각 코드 모듈의 로컬 위험 지수 및 총 위험 지수 각각은, 아래 식에 의해 계산할 수 있다.
로컬 위험 지수 = (코드 모듈 구현 난이도 값 + 코드 모듈 위험 레벨 값) / (전체 구현 난이도 레벨 수 + 전체 위험 레벨 수)
예를 들어, 표 1과 관련하여 전술한 실시예에서와 같이, 전체 구현 난이도 레벨이 3개인 경우에 어느 특정 코드 모듈이 두번째 단계, 즉 두번째로 난이도가 높은 단계(예컨대 D2)이고, 전체 위험 레벨이 5개인 경우에 해당 특정 코드 모듈이 3번째 위험 단계(예컨대, 2)인 경우, 해당 특정 코드 모듈에 대한 로컬 위험 지수는 (2+3)/(3+5)=0.625 일 수 있다.
또한, 어느 소프트웨어 코드에 속한 각 코드 모듈의 각 로컬 위험 지수를 평균하여 전체 소프트웨어 코드에 관한 총 위험 지수를 계산할 수 있다.
총 위험 지수 =
Figure 112016083556053-pat00003
로컬 위험 지수i *100
예컨대, 입력된 소프트웨어가 3개의 코드 모듈을 포함하고, 각 코드 모듈의 로컬 위험 지수가 0.73, 0, 및 1인 경우, 총 위험 지수는 1/3(0.73+0+1)*100 = 57.7%가 될 수 있다.
전술한 위험 지수를 계산하는 방법은 본 발명의 일 실시예일 뿐이며, 본 발명이 이로써 제한되는 것은 아님을 알아야 한다. 이렇게 계산된 각 코드 모듈의 로컬 위험 지수와 전체 소프트웨어에 관한 총 위험 지수는, 보고서 작성부(408)에 의해, 전술한 바와 같이 해당 소프트웨어의 위험 여부에 관한 보고서 작성에 이용될 수 있다. 본 발명의 일 실시예에 의하면, 보고서 작성에는, 전술한 정보, 예컨대 각 코드 모듈의 위험 여부 분석 결과, 각 코드 모듈의 로컬 위험 지수, 및/또는 전체 소프트웨어의 총 위험 지수와 함께, 위험 코드의 위치 표시, 보완 방안, 및 예상 투입 노력 등에 관한 정보가 더 포함될 수 있다.
당업자라면 알 수 있듯이 본 발명은 본 명세서에서 기술된 예시에 한정되는 것이 아니라 본 발명의 범주를 벗어나지 않는 범위 내에서 다양하게 변형, 재구성 및 대체될 수 있다. 예를 들어, 본원에 기술된 다양한 기술들은 하드웨어 또는 소프트웨어, 또는 하드웨어와 소프트웨어의 조합에 의해 구현될 수 있다. 따라서, 본원에 따른 소프트웨어 안전성 분석을 위한 분석 머신의 특정한 양태나 부분은 범용 또는 전용 마이크로프로세서, 마이크로-컨트롤러 등에 의해 실행 가능한 하나 이상의 컴퓨터 프로그램으로 구현될 수 있다. 본 발명의 일 실시예에 따른 컴퓨터 프로그램은, 컴퓨터 프로세서 등에 의해 판독 가능한 저장 매체, 예컨대 EPROM, EEPROM, 플래시 메모리장치와 같은 비휘발성 메모리, 내장형 하드 디스크와 착탈식 디스크 같은 자기 디스크, 광자기 디스크, 및 CDROM 디스크 등을 포함한 다양한 유형의 저장 매체에 저장된 형태로 구현될 수 있다. 또한, 프로그램 코드(들)는 어셈블리어나 기계어로 구현될 수 있고, 전기 배선이나 케이블링, 광섬유, 또는 기타 임의의 다른 형태의 전송 매체를 통해 전송되는 형태로 구현될 수도 있다.
본 명세서에서는, 소프트웨어 위험성 분석의 예시적인 실시예에 대해 다양한 도면를 참조하여 주로 기술했지만, 다른 유사한 실시예들이 이용될 수 있다. 본 발명의 진정한 사상 및 범주에 속하는 모든 변형 및 변경을 이하의 특허청구범위에 의해 모두 포괄하고자 한다.
402: 입력부
404: 위험 데이터 메트릭 측정부
406: 위험 분석부
408: 보고서 작성부

Claims (8)

  1. 컴퓨터에 의해 수행되는, 전장용 소프트웨어의 안전성 분석 방법으로서,
    전장용 소프트웨어 코드를 입력받는 단계;
    상기 전장용 소프트웨어 코드를 하나 이상의 코드 모듈로 분할하는 단계;
    분석 머신을 이용하여, 각각의 상기 코드 모듈에 대해, 위험 메트릭 데이터 세트에 대응하는 위험 메트릭 데이터 값들을 측정하는 단계; 및
    각각의 상기 코드 모듈에 대해, 상기 위험 메트릭 데이터 값들에 기초해서, 상기 분석 머신을 이용하여, 위험 여부를 나타내는 값을 각각 결정하는 단계를 포함하고,
    상기 분석 머신은, 차량 기능 안전성 요소를 수집하고 d개의 위험 메트릭 데이터를 선택하는 단계, 상기 d개의 위험 메트릭 데이터를 포함하는 i개의 위험 메트릭 데이터 세트에 대해 학습 및 훈련을 준비하는 단계, 설계 및 학습 단계로서 딥러닝 방식에 의하여 머신을 설계하고 상기 i개의 위험 메트릭 데이터 세트를 이용하여 학습하는 단계, 및 상기 머신을 테스트하고 오차율을 분석하여 상기 설계 및 학습 단계로 피드백하는 단계를 포함하여 생성된 것이며, 상기 d 및 i는 1이상의 정수인,
    전장용 소프트웨어 안전성 분석 방법.
  2. 제1항에 있어서,
    상기 코드 모듈에 대하여 측정된 상기 위험 메트릭 데이터 값들은, 상기 코드 모듈에 대한 위험 레벨 값을 포함하며, 상기 위험 레벨 값은 상기 코드 모듈의 명세에 따라 정의되는 값인, 전장용 소프트웨어 안전성 분석 방법.
  3. 제1항에 있어서,
    상기 코드 모듈에 대하여 측정된 상기 위험 메트릭 데이터 값들은, 상기 코드 모듈에 대한, 총 코드 라인 수(loc), McCabe 순환 복잡도(v(g)), McCabe 필수 복잡도(ev(g)), McCabe 설계 복잡도(iv(g)), Halstead 연산자 및 피연산자 전체 수(n), Halstead 프로그램 볼륨(v), Halstead 프로그램 길이(l), Halstead 프로그램 난이도(d), Halstead Intelligent content(i), Halstead 프로그래밍 노력(e), Halstead 에러 추정(b), Halstead 구현시간 추정(t), Halstead 라인 카운트(lOCode), Halstead 주석 줄 수(lOComment), Halstead 빈 줄 수(lOblank), 코드와 주석을 모두 갖는 라인 수(IOCodeANDComment), 고유한 연산자 수(uniq_Op), 고유한 피연산자 수(uniq_Opnd), 전체 연산자(total_Cp), 전체 피연산자(tatal_Opand), 및 그래프 흐름 수(branchCount) 중 하나 이상의 값을 포함하는, 전장용 소프트웨어 안전성 분석 방법.
  4. 제1항에 있어서,
    상기 코드 모듈에 대하여 위험 여부를 나타내는 값을 결정하는 단계는, 상기 위험 메트릭 데이터 값들 중에서, 상기 코드 모듈의 위험 여부에 대한 소정 이상의 민감도를 갖는 하나 이상의 위험 메트릭 데이터 값들을 결정하는 단계를 포함하는, 전장용 소프트웨어 안전성 분석 방법.
  5. 삭제
  6. 제2항에 있어서,
    상기 위험 레벨 값은, 상기 코드 모듈의 심각도 레벨 값, 발생 확률 값, 및 구현 난이도 레벨 값 중 하나 이상에 기초하여 정의되는, 전장용 소프트웨어 안전성 분석 방법.
  7. 컴퓨터 장치로서, 제1항 내지 제4항 및 제6항 중 어느 한 항의 방법을 실행하도록 동작 가능한 컴퓨터 장치.
  8. 하나 이상의 명령어가 저장된 컴퓨터 판독 가능한 저장 매체로서, 상기 하나 이상의 명령어는 컴퓨터에 의해 실행되는 경우, 컴퓨터로 하여금 제1항 내지 제4항 및 제6항 중 어느 한 항의 방법을 실행하게 하는, 컴퓨터 판독 가능한 저장 매체.
KR1020160109690A 2016-06-13 2016-08-28 소프트웨어 안전성 분석 방법 및 장치 KR102461180B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160109690A KR102461180B1 (ko) 2016-06-13 2016-08-28 소프트웨어 안전성 분석 방법 및 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160073243A KR101734872B1 (ko) 2016-06-13 2016-06-13 소프트웨어 안전성 분석 방법 및 장치
KR1020160109690A KR102461180B1 (ko) 2016-06-13 2016-08-28 소프트웨어 안전성 분석 방법 및 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020160073243A Division KR101734872B1 (ko) 2016-06-13 2016-06-13 소프트웨어 안전성 분석 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170140753A KR20170140753A (ko) 2017-12-21
KR102461180B1 true KR102461180B1 (ko) 2022-11-01

Family

ID=84042435

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160109690A KR102461180B1 (ko) 2016-06-13 2016-08-28 소프트웨어 안전성 분석 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102461180B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102066868B1 (ko) * 2018-03-21 2020-01-16 (주)씽크포비엘 목표 신뢰성 지수를 만족하도록 전장용 소프트웨어 안전성을 시뮬레이션하는 방법 및 장치
KR102225449B1 (ko) 2019-05-14 2021-03-09 충북대학교 산학협력단 사이버-물리 시스템의 상호 작용 명세 작성 및 협업간 안정성 검사 시스템 및 방법
KR102520837B1 (ko) * 2022-08-30 2023-04-13 한국해양대학교산학협력단 해양분야 인공지능 안전을 위한 위험성 평가 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012234401A (ja) * 2011-05-02 2012-11-29 Kddi Corp アプリケーション解析装置およびプログラム
KR101432712B1 (ko) * 2013-03-05 2014-08-25 충북대학교 산학협력단 소프트웨어 안전성 향상을 위한 코드 리팩토링 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7975257B2 (en) * 2006-06-13 2011-07-05 Microsoft Corporation Iterative static and dynamic software analysis
KR101418340B1 (ko) * 2012-06-13 2014-07-15 경북대학교 산학협력단 차량 전장용 운영체제의 정형 검증 장치 및 정형 검증 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012234401A (ja) * 2011-05-02 2012-11-29 Kddi Corp アプリケーション解析装置およびプログラム
KR101432712B1 (ko) * 2013-03-05 2014-08-25 충북대학교 산학협력단 소프트웨어 안전성 향상을 위한 코드 리팩토링 방법

Also Published As

Publication number Publication date
KR20170140753A (ko) 2017-12-21

Similar Documents

Publication Publication Date Title
US10261870B2 (en) Risk formula for erroneous software components detection
US6895350B2 (en) Fraction defective estimating method, system for carrying out the same recording medium
US8140911B2 (en) Dynamic software tracing
Antinyan et al. Mythical unit test coverage
US20150025872A1 (en) System, method, and apparatus for modeling project reliability
US20170176292A1 (en) Method for assessing whether or not a measured value of a physical parameter of an aircraft engine is normal
US9256512B1 (en) Quality analysis for embedded software code
KR102461180B1 (ko) 소프트웨어 안전성 분석 방법 및 장치
US9424379B2 (en) Simulation system and method for testing a simulation of a device against one or more violation rules
CN112199293A (zh) 软件质量评价方法、装置、终端设备及存储介质
KR101547248B1 (ko) 소프트웨어의 종합 품질 점수 추출 모듈과 방법 및 소프트웨어의 종합 품질 점수 추출 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
US9454457B1 (en) Software test apparatus, software test method and computer readable medium thereof
CN116245074A (zh) 芯片验证方法、设备及存储介质
Kanashiro et al. Predicting software flaws with low complexity models based on static analysis data
KR102066868B1 (ko) 목표 신뢰성 지수를 만족하도록 전장용 소프트웨어 안전성을 시뮬레이션하는 방법 및 장치
KR102426581B1 (ko) 전장용 소프트웨어 안전성 분석 방법 및 장치
CN113488414A (zh) 晶圆生产监控方法、系统与电子设备
CN115098292A (zh) 应用程序崩溃根原因识别方法、装置及电子设备
KR101675986B1 (ko) 전장용 소프트웨어 안전성 분석 방법 및 장치
KR20190128457A (ko) 대상 프로그램에 포함된 대상 함수를 테스트하는 방법 및 장치
KR101734872B1 (ko) 소프트웨어 안전성 분석 방법 및 장치
KR20180014978A (ko) 전장용 소프트웨어 안전성 분석 방법 및 장치
KR100987124B1 (ko) 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법
JP2014110047A (ja) 電子回路シミュレーションのための方法及び装置
KR102007719B1 (ko) 소프트웨어 통합 품질 평가 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant