KR101734418B1 - 소프트웨어 위험분석 방법 및 장치 - Google Patents

소프트웨어 위험분석 방법 및 장치 Download PDF

Info

Publication number
KR101734418B1
KR101734418B1 KR1020150151599A KR20150151599A KR101734418B1 KR 101734418 B1 KR101734418 B1 KR 101734418B1 KR 1020150151599 A KR1020150151599 A KR 1020150151599A KR 20150151599 A KR20150151599 A KR 20150151599A KR 101734418 B1 KR101734418 B1 KR 101734418B1
Authority
KR
South Korea
Prior art keywords
risk
risk analysis
function
analysis type
record
Prior art date
Application number
KR1020150151599A
Other languages
English (en)
Other versions
KR20170051660A (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
Application filed by (주)씽크포비엘 filed Critical (주)씽크포비엘
Priority to KR1020150151599A priority Critical patent/KR101734418B1/ko
Priority to PCT/KR2016/010738 priority patent/WO2017052318A1/ko
Publication of KR20170051660A publication Critical patent/KR20170051660A/ko
Application granted granted Critical
Publication of KR101734418B1 publication Critical patent/KR101734418B1/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/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

소프트웨어 위험분석 방법 및 장치가 개시된다. 본 방법은, 복수의 레코드(records)를 포함하는 위험분석 타입 분류 테이블을 구축하는 단계 및 소프트웨어의 도메인 정보를 획득하는 단계를 포함할 수 있다. 여기서, 상기 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ID, 도메인 ID, 위험분석 타입(Hazard Analysis Type), 관련 부분 및 문서를 포함하고, 상기 소프트웨어는 소스 코드로 구성되며, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함한다. 본 방법은, 상기 소프트웨어의 기능목록함수 구조화 트리를 획득하는 단계, 상기 기능목록함수 구조화 트리의 상기 복수의 기능 항목의 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계, 및 상기 소프트웨어의 도메인 정보 및 상기 분류된 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하는 단계를 더 포함할 수 있다. 여기서, 상기 기능목록함수 구조화 트리는 복수의 기능 항목으로 구성되고, 상기 복수의 기능 항목의 각각은 상기 복수의 서브 함수 중 적어도 하나의 서브 함수를 포함한다.

Description

소프트웨어 위험분석 방법 및 장치 {Method and Apparatus For Software Hazard Analysis}
본 발명은 소프트웨어 분석 방법 및 장치에 관한 것으로, 보다 구체적으로는 소프트웨어 위험분석 방법 및 장치에 관한 것이다
소프트웨어는 현장 모니터링, 위험 감지 및 분석, 위험 경보 및 전파, 현장 대응, 안전 교육 등에 활용됨으로써 재난을 예방하고, 재난으로 발생한 피해를 최소화하며, 재난으로부터의 신속한 복구를 위해 광범위하게 사용되고 있다. 미국, 유럽, 일본 등 주요 선진국에서는 각 국에 심각한 피해를 주는 재해나 재난사고 예방과 대응을 위한 지능형 재난방재 시스템 개발을 적극적으로 전개하고 있으며, 최근에는 드론과 로봇을 이용하여 재난을 방지하거나 재난 현장에 투입하기 위한 연구개발이 활발하게 이루어 지고 있다.
한편, 소프트웨어 자체가 재난 안전사고의 원인이 될 수도 있다. 에너지 관리시스템의 소프트웨어 오류로 인해 세계 최고 수준의 전력망과 기술을 가진 미국에서 역사상 최대 규모의 정전 사고가 발생한 바 있고, 자동차 전자제어장치(Electronic control unit)에 내장된 소프트웨어 결함에 의해 급발진 사고가 발생한 적도 있다. 이렇듯 자동차, 철도, 항공, 전력, 국방, 의료, 금융, 통신 등의 부분에서 소프트웨어의 의존도가 높아짐에 따라 소프트웨어 오류로 인한 인명, 재난의 피해 범위와 규모가 확대되고 있어, 소프트웨어의 안전(Software safety)을 체계적으로 관리해야 하는 필요성이 대두되고 있다.
IoT 및 산업 전반에 소프트웨어가 확산되면서 소프트웨어 결함 및 장애로 인한 인명살상이나 재난 손실의 위험이 증가됨에 따라 소프트웨어 안전진단의 중요성이 날로 부각되고 있으나, 소프트웨어 안전진단은 현재 소수의 도메인 소프트웨어 안전진단 전문가들의 경험을 기반으로 수행되어 있어 소프트웨어 산업 확산 속도에 크게 못 미치고 있는 상황이다.
소프트웨어의 안전 확보 및 검증 체계는 도메인 전문가의 경험이 중요시 되는 분야로 소프트웨어 산업 확산 속도에 부흥하는 안전공학 전문가 확보가 쉽지 않은 상황이다. 따라서, 안전분석 지식 습득 및 도메인 경험 축적을 위해 적은 훈련 비용으로 소프트웨어 안전 진단을 수행할 수 있는 보조 기술이 필요하다. 더하여, 도메인 전문가들이 소프트웨어 안전 진단을 수행하는 경우 위험분석에서 가장 중요한 위험요소 도출 누락과 같은 휴먼 에러(human error)가 발생할 수 있는 문제점이 존재한다.
KR 10-2015-0136251 A
본 발명의 과제는 소프트웨어 위험성을 확인할 수 있는 효율적인 소프트웨어 안전진단을 제공해주는 소프트웨어 위험분석 방법 및 장치를 제공하는 것이다.
본 발명의 다른 과제는 소프트웨어를 구성하는 위험요소를 분석하여 가장 중요한 위험요소 도출 누락과 같은 휴먼 에러 없이 소프트웨어 안전진단을 제공해주는 소프트웨어 위험분석 방법 및 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급한 과제들에 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예의 일 특징에 따르면, 소프트웨어 위험분석 방법이 제공된다. 본 방법은, 복수의 레코드(records)를 포함하는 위험분석 타입 분류 테이블을 구축하는 단계, 및 소프트웨어의 도메인 정보를 획득하는 단계를 포함할 수 있다. 여기서, 상기 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ID, 도메인 ID, 위험분석 타입(Hazard Analysis Type), 관련 시스템 및 문서를 포함하고, 상기 소프트웨어는 소스 코드로 구성되며, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함한다. 본 방법은, 상기 소프트웨어의 기능목록함수 구조화 트리를 획득하는 단계, 상기 기능목록함수 구조화 트리의 상기 복수의 기능 항목의 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계, 및 상기 소프트웨어의 도메인 정보 및 상기 분류된 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하는 단계를 더 포함할 수 있다. 여기서, 상기 기능목록함수 구조화 트리는 복수의 기능 항목으로 구성되고, 상기 복수의 기능 항목의 각각은 상기 복수의 서브 함수 중 적어도 하나의 서브 함수를 포함한다.
일 실시예에서, 상기 위험분석 타입은 컨셉 설계 위험분석 타입(CD-HAT), 사전 설계 위험분석 타입(PD-HAT), 상세 설계 위험분석 타입(DD-HAT), 시스템 설계 위험분석 타입(SD-HAT), 운영 설계 위험분석 타입(OD-HAT), 사용자 설계 위험분석 타입(HD-HAT), 요구사항 설계 위험분석 타입(RD-HAT) 중 적어도 하나로 분류될 수 있다.
일 실시예에서, 상기 기능목록 함수 구조화 트리의 상기 복수의 기능 항목 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계는 상기 복수의 기능 항목 각각이 시스템 설계에 대한 것일 경우 상기 해당 기능 항목을 시스템 설계 위험분석 타입으로 분류하고, 상기 해당 기능 항목이 사용자가 운영 중에 발생할 수 있는 위험에 대한 것일 경우 상기 해당 기능 항목을 운영 설계 위험분석 타입으로 분류하고, 상기 해당 기능 항목이 사용자가 사용 중에 발생할 수 있는 위험에 대한 것인 경우 상기 해당 기능 항목을 사용자 설계 타입으로 분류할 수 있다.
일 실시예에서, 상기 복수의 서브 함수의 각각은 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보에 의해 정의되며, 상기 기능목록 함수 구조화 트리의 상기 복수의 기능 항목 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계는, 상기 해당 기능 항목이 포함하는 적어도 하나의 서브 함수의 함수 정보와 상기 위험분석 타입 분류 테이블의 복수의 레코드의 문서들 간에 텍스트 기반으로 유사도를 계산하여 가장 유사도가 높은 레코드를 선택하여, 상기 가장 유사도가 높은 레코드의 위험분석 타입의 값으로 상기 해당 기능 항목을 분류하는 단계를 포함할 수 있다.
일 실시예에서, 상기 텍스트 기반으로 유사도를 계산하여 위험분석 타입을 분류하는 단계는 상기 해당 기능 항목이 포함하는 적어도 하나의 서브 함수의 함수 정보와 상기 위험분석 타입 분류 테이블의 복수의 레코드의 문서들 간에 텍스트 기반으로 유사도를 계산하여 가장 유사도가 높은 레코드를 선택하여, 상기 가장 유사도가 높은 레코드의 위험분석 타입의 값 및 관련 시스템의 값으로 상기 해당 기능 항목을 분류하는 단계를 포함할 수 있다.
일 실시예에서, 코사인 기반 유사도 알고리즘 및 유클리디안 거리기반 유사도 알고리즘 중 적어도 하나를 사용하여 텍스트 기반의 유사도를 계산하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 위험분석 타입 분류 테이블과 연관된 복수의 레코드를 포함하는 위험분석 타입 별 위험요소 체크리스트 테이블을 구축하는 단계를 더 포함할 수 있으며, 여기서 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드의 각각은 ID, 위험분석 타입 ID, 위험요소 체크리스트를 포함한다. 일 실시예에서, 상기 소프트웨어의 도메인 정보 및 상기 분류된 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하는 단계는, 상기 가장 유사도가 높은 레코드의 ID를 획득하는 단계, 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드 중 위험분석 타입 ID가 상기 가장 유사도가 높은 레코드의 ID와 일치하는 적어도 하나의 레코드를 선택하는 단계, 및 상기 선택된 적어도 하나의 레코드의 위험요소 체크리스트 값을 도출하는 단계를 포함할 수 있다.
일 실시예에서, 상기 위험분석 타입 별 위험요소 체크리스트 테이블과 연관된 복수의 레코드를 포함하는 위험요소 인과관계 테이블을 구축하는 단계를 포함할 수 있는데, 여기서 상기 위험요소 인과관계 테이블의 복수의 레코드의 각각은 ID, 체크리스트 ID, 부모 ID 및 위험요소 내용을 포함한다. 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드 중 ID의 값이 상기 위험요소의 인과관계 테이블의 복수의 레코드 중 체크리스트 ID의 값과 일치하는 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드를 선택는 단계, 상기 선택된 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드의 위험요소 체크리스트의 값을 위험요소의 루트노드로 정의하는 단계, 위험요소 인과관계 테이블의 복수의 레코드들 중 체크리스트 ID의 값이 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드의 ID 값인 적어도 하나의 레코드를 선택하여, 상기 선택된 적어도 하나의 레코드의 위험요소 내용의 값을 상기 루트노드의 적어도 하나의 제1 하위노드로 구성하는 단계를 포함할 수 있다. 여기서, 상기 적어도 하나의 제1 하위노드들 간의 관계는 논리 연산자 조합으로 표현될 수 있다. 상기 적어도 하나의 제1 하위노드들의 각각과 연관된 레코드의 ID의 값이 상기 위험요소 인과관계 테이블의 다른 레코드의 부모 ID의 값과 일치하는 경우, 상기 일치하는 다른 레코드의 위험요소 내용의 값을 상기 해당 제1 하위노드의 적어도 하나의 제2 자식노드로 구성하는 단계를 더포함할 수 있고, 여기서 상기 적어도 하나의 제2 하위노드들 간의 관계는 논리 연산자 조합으로 표현된다.
본 발명의 실시예의 다른 특징에 따르면, 소프트웨어 위험분석 장치가 제공된다. 본 장치는, 위험분석 타입 분류 테이블을 포함할 수 있다. 여기서, 상기 위험분석 타입 분류 테이블은 복수의 레코드를 포함하고, 상기 복수의 레코드의 각각은 ID, 도메인 ID, 위험분석 타입, 관련 시스템 및 문서를 포함한다. 본 장치는, 소프트웨어의 기능목록함수 구조화 트리의 복수의 기능 항목 각각에 대해서, 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하도록 구성된 위험분석 타입 분류 모듈 및 소프트웨어의 도메인 정보 및 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하도록 구성된 위험요소 도출 모듈을 더 포함할 수 있다. 여기서, 상기 복수의 기능 항목의 각각은 적어도 하나의 서브 함수를 포함하고, 상기 소프트웨어는 소스 코드로 구성되며, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함한다.
본 발명의 실시예들에 따른 소프트웨어 위험분석 방법 및 장치에 따르면, 소프트웨어 안전진단을 효율적으로 제공해주는 효과가 제공된다.
본 발명의 실시예들에 따른 소프트웨어 위험분석 방법 및 장치에 따르면, 가장 중요한 위험요소 도출 누락과 같은 휴먼 에러(human error) 없이 소프트웨어 안전진단을 제공해주는 효과가 제공된다.
도 1은 소프트웨어의 위험을 분석하기 위한 예시적인 소프트웨어 위험분석 장치를 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 도메인 테이블을 도시하는 도면이다.
도 3은 본 발명의 일 실시예에 따른 위험분석 타입 분류 테이블을 도시하는 도면이다.
도 4는 본 발명의 일 실시예에 따른 위험분석 타입 별 위험요소 체크리스트 테이블을 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 위험요소의 인과관계 테이블을 도시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 테이블들 간의 논리적 연관관계를 도시한 도면이다.
도 7은 본 발명의 일 실시예에 따라 소프트웨어의 위험분석을 제공하기 위한 예시적인 프로세스의 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 기능목록 함수 구조화 트리를 도시하는 도면이다.
도 9는 본 발명의 일 실시예에 따라 위험요소들을 인과관계에 따라 시각화시킨 도면이다.
본 발명의 이점들과 특징들 그리고 이들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해 질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 본 실시예들은 단지 본 발명의 개시가 완전하도록 하며 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려 주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용되는 용어는 단지 특정한 실시예를 설명하기 위해 사용되는 것으로 본 발명을 한정하려는 의도에서 사용된 것이 아니다. 예를 들어, 단수로 표현된 구성 요소는 문맥상 명백하게 단수만을 의미하지 않는다면 복수의 구성 요소를 포함하는 개념으로 이해되어야 한다. 또한, 본 발명의 명세서에서, '포함하다' 또는 '가지다' 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것일 뿐이고, 이러한 용어의 사용에 의해 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성이 배제되는 것은 아니다.
본 명세서에 기재된 실시예에 있어서 '모듈' 혹은 '부'는 적어도 하나의 기능이나 동작을 수행하는 기능적 부분을 의미하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 '모듈' 혹은 복수의 '부'는 특정한 하드웨어로 구현될 필요가 있는 '모듈' 혹은 '부'를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서로 구현될 수 있다.
덧붙여, 다르게 정의되지 않는 한 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미가 있는 것으로 해석되어야 하며, 본 발명의 명세서에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세히 설명한다. 다만, 이하의 설명에서는 본 발명의 요지를 불필요하게 흐릴 우려가 있는 경우, 널리 알려진 기능이나 구성에 관한 구체적 설명은 생략하기로 한다.
도 1은 소프트웨어의 위험을 분석하기 위한 예시적인 소프트웨어 위험분석 장치를 도시한 도면이다. 상술된 바와 같이, 예시적인 실시예에서, 소프트웨어 위험분석 장치(100)는 프로세싱부(110), 저장부(120) 및 입출력부(130)를 포함할 수 있다. 프로세싱부(110), 저장부(120), 및 입/출력부(130)는 서로 연결되어(연결은 도 1에 도시되지 않음), 서로 간에 통신하도록 한다. 위험분석 장치(100)는 분산 프로세서를 포함할 수 있고, 위험분석 장치(100)의 각 부분(예를 들면, 프로세싱부(110), 저장부(120), 및 입/출력부(130))은 분산 프로세서를 포함할 수 있다. 소프트웨어 위험분석 장치(100)는 소프트웨어의 위험을 분석하는 것에 연관된 동작을 수행할 수 있다. 예를 들면, 프로세싱부(110)는 소프트웨어 위험분석을 실행하고, 저장부(120)로부터 소프트웨어 위험분석 메트릭들을 검색하고, 소프트웨어 위험분석 메트릭들을 저장할 수 있다. 저장부(120)는 소프트웨어를 위험분석하는 것에 연관된 모든 파라미터들을 저장할 수 있다.
소프트웨어 위험분석 장치(100)는 프로세싱부(110)를 포함할 수 있다. 프로세싱부(110)는 소프트웨어의 기능목록함수 구조화 트리의 복수의 기능 항목 각각에 대해서, 위험분석 타입을 분류하도록 구성된 위험분석 타입 분류 모듈(112)을 포함할 수 있다. 여기서 복수의 기능 항목 각각은 적어도 하나의 서브 함수를 포함한다.
프로세싱부(110)는 복수의 기능 항목의 각각의 위험분석 타입을 기초로 위험요소들과 위험요소들 간의 인과관계를 도출하도록 구성된 위험요소 도출 모듈(114)을 더 포함할 수 있다.
이상으로 설명한 프로세싱부(110)는, 응용 주문형 집적 회로(Application Specific Integrated Circuits: ASICs), 디지털 신호 처리기(Digital Signal Processors: DSPs), 디지털 신호 처리 소자(Digital Signal Processing Devices: DSPDs), 프로그램 가능 논리 소자(Programmable Logic Devices: PLDs), 현장 프로그램 가능 게이트 어레이(Field-Programmable Gate Arrays: FPGAs), 프로세서(processors), 제어기(controllers), 마이크로 컨트롤러(micro-controllers) 및 마이크로 프로세서(microprocessors) 중 적어도 하나에 기반한 하드웨어 플랫폼(hardware platform)으로서 구현될 수 있다. 프로세싱부(110)는 또한 전술한 하드웨어 플랫폼 상에서 실행 가능한 펌웨어(firmware)/소프트웨어 모듈로 구현될 수 있다. 이 경우, 소프트웨어 모듈은 적절한 프로그램(program) 언어로 쓰여진 소프트웨어 애플리케이션(application)에 의해 구현될 수 있다.
소프트웨어 위험분석 장치(100)는 저장부(120)를 더 포함할 수 있다. 예시적인 실시예에서, 저장부(120)는 복수의 테이블을 포함하는 데이터베이스를 포함할 수 있다. 일 실시예에서, 소프트웨어 위험분석에 사용되는 복수의 테이블은 도메인 테이블, 위험분석 타입 분류 테이블, 위험분석 타입 별 위험요소 체크리스트 테이블 및 위험요소의 인과관계 테이블을 포함할 수 있다. 일 실시예에 있어서, 복수의 테이블의 각각은 복수의 레코드(record)를 포함할 수 있다.
일 실시예에서, 도메인 테이블의 복수의 레코드의 각각은 ‘ID’ 및 ‘도메인’를 필드로 포함할 수 있다. 일 실시예에서, 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ‘ID’, ‘도메인 ID’, ‘위험분석 타입’, ‘관련 시스템’ 및 ‘문서’를 필드로 포함할 수 있다. 일 실시예에서, 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드의 각각은 ‘ID’, ‘위험분석 타입 ID’, ‘위험요소 체크리스트’를 필드로 포함할 수 있다. 일 실시예에서, 위험요소의 인과관계 테이블의 복수의 레코드의 각각은 ‘ID’, ‘체크리스트 ID’, ‘부모 ID’ 및 ‘위험요소 내용’을 필드로 포함할 수 있다.
소프트웨어 위험분석 장치(100)는 추가적인 특징/기능을 가질 수 있다. 예를 들면, 소프트웨어 위험분석 장치(100)는 자기 또는 광 디스크, 테이프, 플래시, 스마트 카드 또는 그들의 조합을 포함하지만 이에 제한되지는 않는 추가적인 저장장치(이동식 저장장치 및/또는 비이동식 저장장치)를 포함할 수 있다. 메모리와 같은 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법이나 기술로 구현된 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD, 또는 다른 광학 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스, USB 호환 메모리, 스마트 카드, 또는 원하는 정보를 저장하도록 사용되고 위험분석 장치(100)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이에 한정되지는 않는다. 이러한 임의의 컴퓨터 저장 매체는 위험분석 장치(100)의 일부일 수 있다.
소프트웨어 위험분석 장치(100)는 입/출력부(130)를 더 포함할 수 있다. 입/출력부(130)는 소프트웨어를 분석하는 데에 이용되는, 상술된 바와 같은 컴포넌트들을 제공 및/또는 수신할 수 있다. 입/출력부(130)는 또 다른 시스템, 저장 장치 및/또는 데이터 스트림과 서로 데이터를 주고받을 수 있다. 입/출력부(130)는 여러 종류의 소프트웨어 분석에 대한 입력들을 수신하고, 여러 종류의 소프트웨어 분석에 분석 결과들을 제공할 수 있다. 일 실시예에서, 입/출력부(130)는 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스 등과 같은 입력 디바이스(132)를 가질 수 있다. 디스플레이, 스피커, 프린터 등과 같은 출력 디바이스(134) 역시 포함될 수 있다.
입/출력부(130)는 자신이 다른 디바이스들과 통신하도록 하는 통신 연결(들)(136)을 더 포함할 수 있다. 통신 연결(들)(136)은 통신 매체의 일례이다. 제한되지 않는 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 네트워크와 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 본원에서 사용될 때 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 모두를 포함한다.
소프트웨어의 위험 분석에 관한 여러 실시예들이 컴퓨터화된 시스템에 특히 적합할 것으로 예상되지만, 본 명세서 내의 범주를 제한하도록 의도되지 않는다. 반대로, 본원에서 사용될 때, "컴퓨터 시스템"이라는 용어는 디바이스가 실제로 전자, 기계, 논리, 또는, 가상인지의 여부와는 관계없이, 디바이스 자체의 동작 및 실행을 제어하기 위해 정보를 저장 및 처리하고 및/또는 저장된 정보를 이용할 수 있는 임의의 모든 디바이스들을 포함하도록 의도된다.
도 2는 본 발명의 일 실시예에 따른 도메인 테이블을 도시하는 도면이다. 도메인 테이블은 ‘ID’ 및 ‘도메인’을 필드로 포함할 수 있고, 하나 이상의 레코드가 존재할 수 있다. ‘ID’는 도메인 테이블의 key값으로 도메인 테이블 내의 복수의 레코드의 각각을 특정할 수 있으며, ‘도메인’은 전문영역을 의미하는데, 가령 자동차, 항만, 철도, 항공, 원자력 또는 무기가 될 수 있다. 일 실시예에서, 분석 대상 소프트웨어의 도메인이 자동차인 경우, 자동차와 연관된 레코드(210)의 도메인 테이블의 ‘ID’값은 1이다.
선택적으로 도메인 테이블을 별도로 구축하지 않고 위험분석의 대상이 되는 소프트웨어의 특정 도메인에 대한 위험분석 타입 분류 테이블, 위험분석 타입 별 위험요소 체크리스트 테이블 및 위험요소의 인과관계 테이블을 구축할 수 있다.
도 3은 본 발명의 일 실시예에 따른 위험분석 타입 분류 테이블을 도시하는 도면이다. 도 3에 도시된 바와 같이, 위험분석 타입 분류 테이블은 ‘ID’, ‘도메인 ID’, ‘위험분석 타입’, ‘관련 시스템’ 및 ‘문서’를 필드로 포함할 수 있고, 위험분석 타입 분류 테이블에는 복수의 레코드들(records)이 존재할 수 있다.
위험분석 타입 분류 테이블의 ‘ID’는 위험분석 타입 분류 테이블의 key값으로 각 레코드를 특정할 수 있는 값이다.
위험분석 타입 분류 테이블의 ‘도메인 ID’는 연관된 도메인 테이블의 ‘ID’값을 의미한다. 예컨대, 분석 대상 소프트웨어의 도메인이 자동차인 경우, 위험분석 타입 분류 테이블의 ‘도메인 ID’값은 도메인 테이블의 ‘ID’값인 1이 된다. 선택적으로, 분석 대상 소프트웨어의 도메인이 자동차인 경우, 도메인 테이블을 별도로 구축하지 않고, 위험분석의 대상이 되는 소프트웨어의 특정 도메인에 대한 위험분석 타입 분류 테이블을 구축하여, 위험분석 타입 분류 테이블의 ‘도메인 ID’ 필드를 생략할 수 있다.
위험분석 타입 분류 테이블의 ‘위험분석 타입’은 위험분석의 대상이 되는 소프트웨어로 인해 야기될 수 있는 위험을 위험분석 타입에 따라 분류한 것을 의미한다. 일 실시예에 있어서, 위험은 개발 단계에 따라 7가지로 분류될 수 있는데, 컨셉 설계 위험분석 타입(Conceptual Design Hazard Analysis Type: CD-HAT), 사전 설계 위험분석 타입(Preliminary Design Hazard Analysis Type: PD-HAT), 상세 설계 위험분석 타입(Detailed Design Hazard Analysis Type: DD-HAT), 시스템 설계 위험분석 타입(System Design Hazard Analysis Type: SD-HAT), 운영 설계 위험분석 타입(Operations Design Hazard Analysis Type: OD-HAT), 사용자 설계 위험분석 타입(Human Design Hazard Analysis Type: HD-HAT), 및 요구사항 설계 위험분석 타입(Requirements Design Hazard Analysis Type: RD-HAT)이다.
일 실시예에서, 위험이 시스템 설계에 대한 것일 경우 위험을 시스템 설계 위험분석 타입으로 분류하고, 위험이 사용자가 운영 중에 발생할 수 있는 위험에 대한 것일 경우 위험을 운영 설계 위험분석 타입으로 분류하고, 위험이 사용자가 사용 중에 발생할 수 있는 위험에 대한 것인 경우 위험을 사용자 설계 타입으로 분류할 수 있다.
위험분석 타입 분류 테이블의 ‘관련 시스템’은 해당 위험이 발생할 수 있는 부분을 의미한다. 일 실시예에서, ‘도메인’이 ‘자동차’일 때, ‘위험분석 타입’의 값이 ‘시스템 설계 타입’인 경우 ‘관련 시스템’은 ‘엔진’, ‘브레이크’, ‘트랜스미션’ 등이 될 수 있고, ‘위험분석 타입’의 값이 ‘운영 설계 타입’인 경우 ‘관련 시스템’은 ‘엔진’, ‘브레이크’, 트랜스미션’ 등이 될 수 있으며, ‘위험분석 타입’의 값이 ‘사용자 설계 타입’인 경우 ‘브레이크’, ‘트랜스미션’ 등이 될 수 있다.
위험분석 타입 분류 테이블의 ‘문서’는 위험분석 타입 및 관련 시스템에 따라 발생할 수 있는 위험을 기술한 것을 의미한다. 일 실시예에서, ‘위험분석 타입’의 값이 ‘시스템 설계 타입’이고 ‘관련 시스템’이 ‘엔진’인 경우, 위험분석 타입 분류 테이블의 레코드(310)가 특정되고 해당 레코드(310)의 ‘문서’ 값은 ‘위험분석 타입’의 값이 ‘운영 설계 타입’이고 ‘관련 시스템’이 ‘엔진’인 경우 특정되는 위험분석 타입 분류 테이블의 레코드(350)의 ‘문서’ 값과 다르다.
도 4는 본 발명의 일 실시예에 따른 위험분석 타입 별 위험요소 체크리스트 테이블을 도시한 도면이다. 도 4에 도시된 바와 같이, 위험분석 타입 별 위험요소 체크리스트 테이블은 ‘ID’, ‘위험분석타입 ID’, 및 ‘위험요소 체크리스트’를 필드로 포함할 수 있고, 복수의 레코드들이 존재할 수 있다.
위험분석 타입 별 위험요소 체크리스트 테이블의 ‘ID’는 key값으로 각 레코드를 특정할 수 있다.
‘위험분석타입 ID’는 연관된 위험분석 타입 분류 테이블의 ‘ID’값을 의미한다. 일 실시예에서, 분석 대상 소프트웨어의 도메인이 자동차이고, 위험분석 타입이 ‘운영 설계 타입’이며, 관련 시스템이 ‘엔진’인 레코드(350)의 ‘ID’값은 5이며, 따라서 위험분석 타입 별 위험요소 체크리스트(400)의 ‘위험분석 ID’값이 5인 레코드들(410, 420)과 연관된다. 연관된 레코드(410)의 ‘ID’는 7이고, ‘위험요소 체크리스트’는 “엔진 급발진의 위험이 있는가?”이다. 연관된 레코드(420)의 ‘ID’는 8이고, ‘위험요소 체크리스트’는 “엔진 ECU SW 주소 입력 오류의 위험이 있는가?”이다.
도 5는 본 발명의 일 실시예에 따른 위험요소의 인과관계 테이블을 도시한 도면이다. 도 5에 도시된 바와 같이, 위험요소의 인과관계 테이블은 ‘ID’, ‘체크리스트 ID’, ‘부모 ID’ 및 ‘위험요소 내용’을 필드로 포함할 수 있고, 복수의 레코드들이 존재할 수 있다.
위험요소의 인과관계 테이블의 ‘ID’는 key값으로 각 레코드를 특정할 수 있으며, ‘체크리스트 ID’는 연관된 위험요소 체크리스트 테이블의 ‘ID’값을 의미한다. 예컨대, 위험요소의 인과관계 테이블의 ‘체크리스트 ID’가 7인 레코드들(501, 503, 505)은 위험요소 체크리스트 테이블의 ‘ID’가 7인 레코드(410)와 연관될 수 있다.
위험요소의 인과관계 테이블의 ‘부모 ID’는 특정 레코드와 다른 레코드들 간의 인과관계를 나타낸다. 즉, 특정 레코드의 ‘부모 ID’와 타 레코드의 ‘ID’가 일치하는 경우, 특정 레코드의 ‘위험요소 내용’은 해당 레코드(즉, 특정 레코드의 ‘부모 ID’ 값과 일치하는 ‘ID’ 값을 가지는 레코드)의 ‘위험요소 내용’의 원인일 수 있다. 예컨대, 일 실시예에서, ‘부모 ID’가 20인 레코드들(507, 509, 511)의 ‘위험요소 내용’(즉, 엑셀포지션 센서 통신 오류 등)은 ‘ID’가 20인 레코드(501)의 ‘위험요소 내용’(즉,센서 통신 불량)의 원인일 수 있고, ‘부모 ID’가 21인 레코드들(513, 515. 517)의 ‘위험요소 내용’(즉, 스로틀 밸브 제어 오류, 브레이크 제어 오류, 제어 메모리 공유 오류’)은 ‘ID’가 21인 레코드(503)의 ‘위험요소 내용’(즉, ECU의 시스템 제어 불량)의 원인일 수 있으며, ‘부모 ID’가 28인 레코드들(519, 521, 523)은 ‘ID’가 28인 레코드(517)의 ‘위험요소 내용’(즉, 스로틀밸브 사용 메모리 공유 오류, 엑셀 포지션 사용 메모리 오류 등)은 ‘ID’가 22인 레코드(505)의 ‘위험요소 내용’(즉, …)의 원인일 수 있다.
위험요소의 인과관계 테이블의 ‘위험요소 내용’은 특정 서브함수의 오류로 인해 발생할 수 있는 위험을 기술하고 있다. 예컨대, ‘위험요소 내용’으로는 센서 통신 불량, ECU의 시스템 제어 불량 또는 엑셀포지션 센서 통신 오류 등이 있을 수 있다.
도 6은 본 발명의 일 실시예에 따른 테이블들 간의 논리적 연관관계를 도시한 도면이다. 도 6에 도시된 바와 같이, 도메인 테이블은 위험분석 타입 분류 테이블과 연관될 수 있고, 위험분석 타입 분류 테이블은 위험분석 타입 별 위험요소 체크리스트 테이블과 연관될 수 있으며, 위험분석 타입 별 위험요소 체크리스트 테이블은 위험요소의 인과관계 테이블과 연관될 수 있다.
도 2 내지 도 6에 도시된 복수의 테이블들은 본 발명에 따른 소프트웨어 위험분석 방법을 구현하기 위한 데이터베이스의 모든 테이블을 반영한 것이 아니고 필수적인 것도 아니다. 따라서, 본 발명에 따른 소프트웨어 위험분석 방법을 구현하기 위한 데이터베이스는 도시된 테이블들 보다 많은 테이블을 포함하거나 그 보다 적은 테이블을 포함할 수 있음을 인식하여야 한다. 더하여, 각각의 테이블의 필드들도 도시된 필드들 보다 많은 필드를 포함하거나 그 보다 적은 필드를 포함할 수 있음을 인식하여야 한다.
도 7은 본 발명의 일 실시예에 따라 소프트웨어의 위험분석을 제공하기 위한 예시적인 프로세스의 흐름도이다. 도 7에 도시된 바와 같이, 예시적인 실시예에서, 소프트웨어 위험분석은 복수의 테이블을 포함하는 데이터베이스를 구축하는 단계(S710)로부터 시작된다. 소프트웨어 위험분석에 사용되는 복수의 테이블은 도메인 테이블, 위험분석 타입 분류 테이블, 위험분석 타입 별 위험요소 체크리스트 테이블 및 위험요소의 인과관계 테이블을 포함할 수 있다. 일 실시예에 있어서, 복수의 테이블의 각각은 복수의 레코드를 포함할 수 있다.
일 실시예에서, 도메인 테이블의 복수의 레코드의 각각은 ‘ID’ 및 ‘도메인’을 필드로 포함할 수 있다.
일 실시예에서, 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ‘ID’, ‘도메인 ID’, ‘위험분석 타입’, ‘관련 시스템’ 및 ‘문서’를 필드로 포함할 수 있다.
일 실시예에서, 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드의 각각은 ‘ID’, ‘위험분석 타입 ID’, ‘위험요소 체크리스트’를 필드로 포함할 수 있다.
일 실시예에서, 위험요소의 인과관계 테이블의 복수의 레코드의 각각은 ‘ID’, ‘체크리스트 ID’, ‘부모 ID’ 및 ‘위험요소 내용’을 필드로 포함할 수 있다.
단계(S720)에서는, 위험을 분석해야 할 대상인 소프트웨어의 도메인 정보를 획득할 수 있다. 일 실시예에서, 소프트웨어의 도메인은 도메인 테이블의 ‘도메인’ 필드의 값 중 하나일 수 있다. 예컨대, 소프트웨어의 도메인이 ‘자동차’이고, 도메인 테이블의 ‘도메인’ 값으로 ‘자동차’를 가지는 레코드(210)를 특정할 수 있고, 레코드(210)의 ‘ID’는 1이다.
일 실시예에 있어서, 선택적으로 도메인 테이블을 별도로 구축하지 않고 위험분석의 대상이 되는 소프트웨어의 도메인에 대한 위험분석 타입 분류 테이블 위험분석 타입 별 위험요소 체크리스트 테이블 및 위험요소의 인과관계 테이블을 생성할 수 있다. 이 경우, 단계(S720)는 생략될 수 있다.
단계(S730)에서는 위험을 분석해야 할 대상인 소프트웨어의 기능목록 함수 구조화 트리를 획득할 수 있다. 여기서, 소프트웨어는 소스 코드로 구성되며, 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함할 수 있다. 기능목록함수 구조화 트리는 서브 함수를 기능에 따라 트리 구조로 도식화한 트리이다.
도 8은 본 발명의 일 실시예에 따른 기능목록 함수 구조화 트리를 도시하는 도면이다. 일 실시예에서, 기능목록함수 구조화 트리는 복수의 기능 항목으로 구성되고, 복수의 기능 항목의 각각은 상기 복수의 서브 함수 중 적어도 하나의 서브 함수를 포함할 수 있다. 여기서, 복수의 서브 함수의 각각은 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보에 의해 정의될 수 있다.
일 실시예에서, 최상위 부모 노드들은 주제(“File”, “Edit”, “Options”, “Analyze”, “Allocate”, “Help”)를 나타내며, 각 주제와 서브 함수의 기능에 매핑된 경우, 해당 서브 함수를 부모 노드의 자식 노드로 정의할 수 있다. 예컨데, 주제(“Edit”)과 매핑된 함수 명(‘Tolerances’, ‘NodeDOF’, ‘Allocation Data’, 및 ‘Process Data’)의 서브 함수들의 기능은 “Edit”으로 동일하다.
일 실시예에 있어서, 소프트웨어의 기능목록함수 구조화 트리를 획득하는 것은 소프트웨어의 기능목록함수 구조화 트리를 입력받는 것일 수 있다. 선택적으로, 일 실시예에서, 소프트웨어의 기능목록함수 구조화 트리를 획득하는 것은 해당 소프트웨어의 소스 코드를 획득하고, 소스 코드를 연산하여 복수의 서브 함수로 구성되는 함수구문 트리를 생성하고, 함수구문 트리를 구성하는 상기 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하며, 함수구문 트리를 구성하는 복수의 서브 함수 각각의 기능을 추론하고, 복수의 서브 함수 중 상기 추론된 기능이 동일한 서브 함수들을 구조화하여 기능목록함수 구조화 트리를 생성하는 것일 수 있다. 일 실시예에서, 복수의 서브 함수 각각을 추상 레벨 또는 구체 레벨로 분류하는 것은 복수의 서브 함수 각각에 대해서 상호호출 관계를 기초로 분류할 수 있다. 일 실시예에서, 소프트웨어의 기능목록함수 구조화 트리를 획득하는 것은 한국특허출원번호 제10-2015-0136251호에 따라 생성할 수 있다.
단계(S740)에서 기능목록함수 구조화 트리의 복수의 기능 항목의 각각에 대해서 위험분석 타입 분류 테이블을 이용하여 복수의 기능 항목 각각을 위험분석 타입으로 분류할 수 있다.
일 실시예에서, 기능목록 함수 구조화 트리의 복수의 기능 항목 각각에 대해서 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 것은 해당 기능 항목이 포함하는 적어도 하나의 서브 함수의 함수 정보와 위험분석 타입 분류 테이블의 문서들 간에 텍스트 기반으로 유사도를 계산하여 가장 유사도가 높은 문서의 위험분석 타입으로 위험분석 타입을 분류하는 것일 수 있다.
일 실시예에서, 텍스트 기반으로 유사도를 계산하여 위험분석 타입을 분류하는 것은 해당 기능 항목이 포함하는 적어도 하나의 서브 함수의 함수 정보와 상기 위험분석 타입 분류 테이블의 ‘문서’ 필드 값들 간에 텍스트 기반으로 유사도를 계산하여 가장 유사도가 높은 필드 값을 가지는 ‘문서’와 연관된 레코드를 검색하고, 해당 기능 항목을 해당 레코드와 연관시키는 것일 수 있다. 예컨대, 복수의 기능 항목 중 어느 하나의 기능 항목에 대해서 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하여 보니, 가장 유사도가 높은 필드 값을 가지는 ‘문서’와 연관된 레코드가 레코드(310)일 때, 레코드(310)의 ‘ID’는 5이고, 해당 기능 항목의 ‘위험분석 타입’은 운영설계 타입이고, ‘관련 시스템’은 엔진일 수 있다.
일 실시예에서, 코사인 기반 유사도 알고리즘 및 유클리디안 거리기반 유사도 알고리즘 중 적어도 하나를 사용하여 텍스트 기반의 유사도를 계산할 수 있다.
일 실시예에서, 위험분석 타입은 컨셉 설계 위험분석 타입(CD-HAT), 사전 설계 위험분석 타입(PD-HAT), 상세 설계 위험분석 타입(DD-HAT), 시스템 설계 위험분석 타입(SD-HAT), 운영 설계 위험분석 타입(OD-HAT), 사용자 설계 위험분석 타입(HD-HAT), 요구사항 설계 위험분석 타입(RD-HAT) 중 어느 하나일 수 있다.
일 실시예에서, 기능목록 함수 구조화 트리의 복수의 기능 항목 각각에 대해서 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 것은 복수의 기능 항목 각각이 시스템 설계에 대한 것일 경우 해당 기능 항목을 시스템 설계 위험분석 타입으로 분류하고, 해당 기능 항목이 사용자가 운영 중에 발생할 수 있는 위험에 대한 것일 경우 해당 기능 항목을 운영 설계 위험분석 타입으로 분류하고, 해당 기능 항목이 사용자가 사용 중에 발생할 수 있는 위험에 대한 것인 경우 해당 기능 항목을 사용자 설계 타입으로 분류할 수 있다.
단계 (S750)에서는 위험분석 타입 별 위험요소 체크리스트를 도출할 수 있다. 단계 (S740)에서 가장 유사도가 높은 문서의 위험분석 타입 및 관련시스템과 연관된 위험분석 타입 분류 테이블의 레코드의 ‘ID’를 구하고, 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드들 중 ‘위험분석 타입 ID’가 단계(S740)에서 구한 위험분석 타입 분류 테이블의 레코드의 ID와 일치하는 위험분석 타입 별 위험요소 체크리스트 테이블의 적어도 하나의 레코드를 검색할 수 있다. 검색된 적어도 하나의 레코드의 ‘ID’ 및 해당 레코드의 ‘위험요소 체크리스트’를 도출할 수 있다.
일 실시예에서 위험분석 타입 분류 테이블의 레코드(310)의 ‘ID’가 5인 경우, 연관된 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드들 중 ‘위험분석 타입 ID’가 5인 레코드들(410, 420)을 검색한다. 레코드(410)의 ‘ID’는 7이고, 레코드(420)의 ‘ID’는 8이다. 해당 레코드들(410, 420)의 ‘위험요소 체크리스트’는 “엔진 급발진의 위험이 있는가?”(레코드 410) 이거나, “엔진 ECU SW 주소 입력 오류의 위험이 있는가”(레코드 420)이다.
단계 (S760)에서는 위험요소들 간의 인과관계를 도출할 수 있다.
위험분석 타입 별 위험요소 체크리스트 테이블의 특정 레코드의 ‘ID’가 위험요소의 인과관계 테이블의 ‘체크리스트 ID’와 일치하는 위험요소의 인과관계 테이블의 적어도 하나의 레코드를 검색할 수 있다. 검색된 적어도 하나의 레코드의 ‘ID’ 및 ‘위험요소 내용’ 필드 값을 도출 할 수 있다.
일 실시예에서 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드(410)의 ‘ID’가 7인 경우, 연관된 위험요소의 인과관계 테이블의 레코드들 중 ‘체크리스트 ID’가 7인 레코드들(501, 503, 505)을 검색한다. 레코드(501)의 ‘ID’는 20, 레코드(503)의 ‘ID’는 21, 레코드(505)의 ‘ID’는 22이다. 레코드들(501)의 ‘위험요소 내용’은 “센서 통신 분량”이고, 레코드들(503)의 ‘위험요소 내용’은 “ECU의 시스템 제어 불량”이며, 레코드들(505)의 ‘위험요소 내용’은 “…”이다.
일 실시예에서, 위험요소의 인과관계 테이블의 복수의 레코드들 중 ‘부모 ID’와 다른 레코드들의 ‘ID’가 일치하는 적어도 하나의 레코드를 검색할 수 있다. 검색된 적어도 하나의 레코드의 ‘위험요소 내용’ 필드 값을 도출 할 수 있다.
일 실시예에서 위험요소의 인과관계 테이블의 레코드들(507, 509, 511)의 ‘부모 ID’는 20이다. 레코드들(507, 509, 511)은 ‘ID’가 20인 레코드(501)와 연관된다. 이는 레코드들(507, 509, 511)의 ‘위험요소 내용’은 레코드(501)의 ‘위험요소 내용’의 원인이 될 수 있음을 의미한다.
유사하게, 위험요소의 인과관계 테이블의 레코드들(513, 515, 517)의 ‘부모 ID’는 21이다. 레코드들(513, 515, 517)은 ‘ID’가 21인 레코드(503)와 연관된다. 레코드들(513, 515, 517)의 ‘위험요소 내용’은 레코드(503)의 ‘위험요소 내용’의 원인이 될 수 있다.
유사하게, 위험요소의 인과관계 테이블의 레코드들(519, 521, 523)의 ‘부모 ID’는 28이다. 레코드들(519, 521, 523)은 ‘ID’가 28인 레코드(517)와 연관된다. 레코드들(519, 521, 523)의 ‘위험요소 내용’은 레코드(517)의 ‘위험요소 내용’의 원인이 될 수 있다.
단계 (S770)에서는 위험요소들을 인과관계에 따라 시각화시킬 수 있다.
도 9는 본 발명의 일 실시예에 따라 위험요소의 인과관계 테이블을 이용하여 위험요소들을 인과관계에 따라 시각화시킨 도면이다. 도 9에 도시된 바와 같이, 위험요소를 시각화된 그래픽 유저 인터페이스로 제공함으로써, 사용자가 위험요소를 보다 직관적으로 인식할 수 있도록 해 줄 수 있다.
일 실시예에서, 위험분석 타입 분류 테이블의 레코드(410)의 ‘위험요소 체크리스트’ 값인 “엔진 급발진의 위험이 있는가”에 대한 인과관계를 시각화할 수 있다. 레코드(410)의 ‘ID’는 7이다. 인과관계 테이블에서 복수의 레코드들 중 ‘체크리스트 ID’가 7인 레코드들(501, 503, 505)을 검색할 수 있다. 레코드들(501, 503, 505)의 ‘위험요소 내용’은 레코드(410)의 ‘위험요소 체크리스트’의 원인일 수 있다. 따라서, 레코드들(501, 503, 505)의 ‘위험요소 내용’을 논리연산자 OR로 묶여, 레코드(410)의 ‘위험요소 체크리스트’의 하위 노드로 구성할 수 있다.
유사하게, 레코드들(507, 509, 511)의 ‘부모 ID’는 20이다. 레코드들(507, 509, 511)은 ‘ID’가 20인 레코드(501)와 연관된다. 이는 레코드들(507, 509, 511)의 ‘위험요소 내용’은 레코드(501)의 ‘위험요소 내용’의 원인이 될 수 있음을 의미하므로 레코드들(507, 509, 511)의 ‘위험요소 내용’을 논리연산자 OR로 묶여, 레코드(501)의 ‘위험요소 내용’의 하위 노드로 구성할 수 있다.
유사하게, 레코드들(513, 515, 517)의 ‘부모 ID’는 21이다. 레코드들(513, 515, 517)은 ‘ID’가 21인 레코드(503)와 연관된다. 레코드들(513, 515, 517)의 ‘위험요소 내용’은 레코드(503)의 ‘위험요소 내용’의 원인이 될 수 있다. 따라서, 레코드들(513, 515, 517)의 ‘위험요소 내용’을 논리연산자 OR로 묶여, 레코드(503)의 ‘위험요소 내용’의 하위 노드로 구성할 수 있다.
유사하게, 레코드들(519, 521, 523)의 ‘부모 ID’는 28이다. 레코드들(519, 521, 523)은 ‘ID’가 28인 레코드(517)와 연관된다. 레코드들(519, 521, 523)의 ‘위험요소 내용’은 레코드(517)의 ‘위험요소 내용’의 원인이 될 수 있다. 따라서, 레코드들(519, 521, 523)의 ‘위험요소 내용’을 논리연산자 OR로 묶여, 레코드(517)의 ‘위험요소 내용’의 하위 노드로 구성할 수 있다.
이상에서 설명한 바와 같이 본 발명은 데이터베이스를 구축하여 위험요소를 도출하므로 위험요소를 판단할 때 누락의 실수 및 위험을 예방할 수 있고, 위험요소의 원인, 결과 관계를 분석하여 논리 연산자 조합으로 표현함으로써 사용자에게 빠른 식별이 가능하게 되어 집중해서 위험을 분석해야 할 함수 또는 모듈이 무엇인지 빠르게 확인이 가능하다.
본원에 기술된 다양한 기술들은 하드웨어 또는 소프트웨어 또는, 가능할 경우, 두 가지 모두의 조합에 연계하여 구현될 수 있다. 따라서, 반복적인 동적 및 정적 소프트웨어 분석에 대한 방법 및 장치, 또는 이것의 특정한 양태나 부분은 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 기계 판독가능 저장 매체와 같은 유형의 매체(tangible media) 내에 포함된 프로그램 코드(즉, 명령어)의 형태를 취할 수 있으며, 프로그램 코드가 컴퓨터와 같은 기계에 로드되고 기계에 의해 실행될 때, 그 기계는 반복적으로, 동적 및 정적으로 소프트웨어를 분석하기 위한 장치가 된다.
더하여, 프로그램(들)은 어셈블리나 기계 언어로 구현될 수 있다. 어느 경우에서도, 언어는 컴파일되거나 해석된 언어일 수 있고, 결합된 반복적인 동적 및 정적 소프트웨어 분석은, 전기적 배선이나 케이블링을 통하는 것, 광섬유를 통하는 것, 또는 임의의 다른 형태의 전송을 통하는 것과 같이, 소정의 전송 매체를 통해 전송되는 프로그램 코드 형태로 구현된 통신을 통해 실시될 수 있으며, 프로그램 코드가 EPROM, 게이트웨이, PLD(programmable logic device), 클라이언트 컴퓨터, 또는 이와 비슷한 것과 같은 기계로 수신되고 로드되어, 기계에 의해 실행될 때, 그 기계는 반복적인 동적 및 정적 소프트웨어 분석을 위한 장치가 된다. 범용 프로세서 상에서 구현된다면, 프로그램 코드는 프로세서와 결합되어 반복적인 동적 및 정적 소프트웨어 분석의 기능을 호출하도록 동작하는 독특한 장치를 제공할 것이다. 추가로, 반복적인 동적 및 정적 소프트웨어 분석에 관련하여 이용되는 임의의 저장 기술은 언제나 하드웨어와 소프트웨어의 조합일 수 있다.
소프트웨어 분석이 다양한 도면의 예시적인 실시예와 관련하여 기술되어져 왔지만, 다른 유사한 실시예들이 이용될 수 있고, 또는 본 발명을 벗어나지 않고서 반복적인 동적 및 정적 소프트웨어 분석의 동일한 기능을 수행하기 위한 수정 및 추가가, 설명된 실시예들에 대해 만들어질 수 있다는 것이 이해되어야 한다. 그러므로, 본원에 기술된 소프트웨어 분석은 어떤 단일 실시예로 한정되어서는 아니되며, 첨부 청구항에 따른 범위 및 범주안에서 이해되어야 한다.
110: 프로세싱 부
112: 위험분석 타입 분류 모듈
114: 위험요소 도출 모듈
120: 저장부
130: 입출력부
132: 출력 디바이스
134: 입력 디바이스
136: 통신 연결

Claims (14)

  1. 소프트웨어 위험분석 방법으로서,
    복수의 레코드(records)를 포함하는 위험분석 타입 분류 테이블을 구축하는 단계 - 상기 위험분석 타입 분류 테이블의 복수의 레코드의 각각은 ID, 도메인 ID, 위험분석 타입(Hazard Analysis Type), 관련 시스템 및 문서를 포함함 -,
    소프트웨어의 도메인 정보를 획득하는 단계 - 상기 소프트웨어는 소스 코드로 구성되며, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함함 -,
    상기 소프트웨어의 기능목록함수 구조화 트리를 획득하는 단계 - 상기 기능목록함수 구조화 트리는 복수의 기능 항목으로 구성되고, 상기 복수의 기능 항목의 각각은 상기 복수의 서브 함수 중 적어도 하나의 서브 함수를 포함함 -,
    상기 기능목록함수 구조화 트리의 상기 복수의 기능 항목의 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계,
    상기 위험분석 타입 분류 테이블과 연관된 복수의 레코드를 포함하는 위험분석 타입 별 위험요소 체크리스트 테이블을 구축하는 단계 - 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드의 각각은 ID, 위험분석 타입 ID, 위험요소 체크리스트를 포함함 -, 및
    상기 소프트웨어의 도메인 정보 및 상기 분류된 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하는 단계를 포함하는 소프트웨어 위험분석 방법.
  2. 제1항에 있어서,
    상기 위험분석 타입은 컨셉 설계 위험분석 타입(CD-HAT), 사전 설계 위험분석 타입(PD-HAT), 상세 설계 위험분석 타입(DD-HAT), 시스템 설계 위험분석 타입(SD-HAT), 운영 설계 위험분석 타입(OD-HAT), 사용자 설계 위험분석 타입(HD-HAT), 요구사항 설계 위험분석 타입(RD-HAT) 중 적어도 하나로 분류되는, 소프트웨어 위험분석 방법.
  3. 제2항에 있어서,
    상기 기능목록 함수 구조화 트리의 상기 복수의 기능 항목 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계는
    상기 복수의 기능 항목 각각이 시스템 설계에 대한 것일 경우 해당 기능 항목을 시스템 설계 위험분석 타입으로 분류하고,
    상기 해당 기능 항목이 사용자가 운영 중에 발생할 수 있는 위험에 대한 것일 경우 상기 해당 기능 항목을 운영 설계 위험분석 타입으로 분류하고,
    상기 해당 기능 항목이 사용자가 사용 중에 발생할 수 있는 위험에 대한 것인 경우 상기 해당 기능 항목을 사용자 설계 타입으로 분류하는, 소프트웨어 위험분석 방법.
  4. 제1항에 있어서,
    상기 복수의 서브 함수의 각각은 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보에 의해 정의되며,
    상기 기능목록 함수 구조화 트리의 상기 복수의 기능 항목 각각에 대해서 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하는 단계는, 해당 기능 항목이 포함하는 적어도 하나의 서브 함수의 함수 정보와 상기 위험분석 타입 분류 테이블의 복수의 레코드의 문서들 간에 텍스트 기반으로 유사도를 계산하여 가장 유사도가 높은 레코드를 선택하여, 상기 가장 유사도가 높은 레코드의 위험분석 타입의 값으로 상기 해당 기능 항목을 분류하는 단계를 포함하는, 소프트웨어 위험분석 방법.
  5. 제4항에 있어서,
    상기 텍스트 기반으로 유사도를 계산하여 위험분석 타입을 분류하는 단계는
    상기 해당 기능 항목이 포함하는 적어도 하나의 서브 함수의 함수 정보와 상기 위험분석 타입 분류 테이블의 복수의 레코드의 문서들 간에 텍스트 기반으로 유사도를 계산하여 가장 유사도가 높은 레코드를 선택하여, 상기 가장 유사도가 높은 레코드의 위험분석 타입의 값 및 관련 시스템의 값으로 상기 해당 기능 항목을 분류하는 단계를 포함하는, 소프트웨어 위험분석 방법.
  6. 제5항에 있어서,
    코사인 기반 유사도 알고리즘 및 유클리디안 거리기반 유사도 알고리즘 중 적어도 하나를 사용하여 텍스트 기반의 유사도를 계산하는 단계를 더 포함하는, 소프트웨어 위험분석 방법.
  7. 제4항에 있어서,
    상기 소프트웨어의 도메인 정보 및 상기 분류된 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하는 단계는,
    상기 가장 유사도가 높은 레코드의 ID를 획득하는 단계,
    상기 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드 중 위험분석 타입 ID가 상기 가장 유사도가 높은 레코드의 ID와 일치하는 적어도 하나의 레코드를 선택하는 단계,
    상기 선택된 적어도 하나의 레코드의 위험요소 체크리스트 값을 도출하는 단계를 포함하는 소프트웨어 위험분석 방법.
  8. 제1항에 있어서,
    상기 위험분석 타입 별 위험요소 체크리스트 테이블과 연관된 복수의 레코드를 포함하는 위험요소 인과관계 테이블을 구축하는 단계 - 상기 위험요소 인과관계 테이블의 복수의 레코드의 각각은 ID, 체크리스트 ID, 부모 ID 및 위험요소 내용을 포함함 -, 및
    상기 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드 중 ID의 값이 상기 위험요소의 인과관계 테이블의 복수의 레코드 중 체크리스트 ID의 값과 일치하는 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드를 선택는 단계,
    상기 선택된 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드의 위험요소 체크리스트의 값을 위험요소의 루트노드로 정의하는 단계,
    위험요소 인과관계 테이블의 복수의 레코드들 중 체크리스트 ID의 값이 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 레코드의 ID 값인 적어도 하나의 레코드를 선택하여, 상기 선택된 적어도 하나의 레코드의 위험요소 내용의 값을 상기 루트노드의 적어도 하나의 제1 하위노드로 구성하는 단계 - 상기 적어도 하나의 제1 하위노드들 간의 관계는 논리 연산자 조합으로 표현됨 -, 및
    상기 적어도 하나의 제1 하위노드들의 각각과 연관된 레코드의 ID의 값이 상기 위험요소 인과관계 테이블의 다른 레코드의 부모 ID의 값과 일치하는 경우, 상기 일치하는 다른 레코드의 위험요소 내용의 값을 해당 제1 하위노드의 적어도 하나의 제2 자식노드로 구성하는 단계 - 상기 적어도 하나의 제2 자식노드들 간의 관계는 논리 연산자 조합으로 표현됨 -,
    를 포함하는 소프트웨어 위험분석 방법.
  9. 프로그램을 기록한 컴퓨터 판독가능 저장매체로서, 상기 프로그램은 명령어들을 포함하고, 상기 명령어들은 컴퓨터에 의해 실행될 때 제1항 내지 제8항 중 어느 한 항에 따른 방법을 수행하는, 컴퓨터 판독가능 저장매체.
  10. 소프트웨어 위험분석 장치로서,
    위험분석 타입 분류 테이블 - 상기 위험분석 타입 분류 테이블은 복수의 레코드를 포함하고, 상기 복수의 레코드의 각각은 ID, 도메인 ID, 위험분석 타입, 관련 시스템 및 문서를 포함함 -,
    소프트웨어의 기능목록함수 구조화 트리의 복수의 기능 항목 각각에 대해서, 상기 위험분석 타입 분류 테이블을 이용하여 위험분석 타입을 분류하도록 구성된 위험분석 타입 분류 모듈 - 상기 복수의 기능 항목의 각각은 적어도 하나의 서브 함수를 포함함 -, 및
    소프트웨어의 도메인 정보 및 위험분석 타입을 기초로 위험요소들의 인과관계를 시각화하도록 구성된 위험요소 도출 모듈 - 상기 소프트웨어는 소스 코드로 구성되며, 상기 소스 코드는 하나의 메인 함수와 상기 메인 함수가 호출하는 복수의 서브 함수를 포함함 -
    상기 위험분석 타입 분류 테이블과 연관된 복수의 레코드를 포함하는 위험분석 타입 별 위험요소 체크리스트 테이블 - 상기 위험요소 체크리스트 테이블의 복수의 레코드의 각각은 ID, 위험분석 타입 ID, 위험요소 체크리스트를 포함함 -
    을 포함하는 소프트웨어 위험분석 장치.
  11. 제10항에 있어서,
    상기 위험분석 타입 분류 모듈은
    상기 복수의 기능 항목 각각이 시스템 설계에 대한 것일 경우 해당 기능 항목을 시스템 설계 위험분석 타입으로 분류하고,
    상기 해당 기능 항목이 사용자가 운영 중에 발생할 수 있는 위험에 대한 것일 경우 상기 해당 기능 항목을 운영 설계 위험분석 타입으로 분류하고,
    상기 해당 기능 항목이 사용자가 사용 중에 발생할 수 있는 위험에 대한 것인 경우 상기 해당 기능 항목을 사용자 설계 타입으로 분류하도록 더 구성되는 소프트웨어 위험분석 장치.
  12. 제11항에 있어서,
    상기 복수의 서브 함수의 각각은 주석, 함수 명, 입력 파라미터 명 및 내부 구현 텍스트를 포함하는 함수 정보에 의해 정의되며,
    상기 위험분석 타입 분류 모듈은, 상기 해당 기능 항목이 포함하는 적어도 하나의 서브 함수의 함수 정보와 상기 위험분석 타입 분류 테이블의 복수의 레코드의 문서들 간에 텍스트 기반으로 유사도를 계산하여 가장 유사도가 높은 레코드를 선택하여, 상기 가장 유사도가 높은 레코드의 위험분석 타입의 값으로 상기 해당 기능 항목을 분류하도록 더 구성되는 소프트웨어 위험분석 장치.
  13. 제12항에 있어서,
    상기 위험분석 타입 분류 모듈은, 코사인 기반 유사도 알고리즘 및 유클리디안 거리기반 유사도 알고리즘 중 적어도 하나를 사용하여 텍스트 기반의 유사도를 계산하도록 더 구성되는, 소프트웨어 위험분석 장치.
  14. 제12항에 있어서,
    상기 위험요소 도출 모듈은, 상기 가장 유사도가 높은 레코드의 ID를 획득하고, 상기 위험분석 타입 별 위험요소 체크리스트 테이블의 복수의 레코드 중 위험분석 타입 ID가 상기 가장 유사도가 높은 레코드의 ID와 일치하는 적어도 하나의 레코드를 선택하여, 상기 선택된 적어도 하나의 레코드의 위험요소 체크리스트 값을 도출하도록 더 구성되는 소프트웨어 위험분석 장치.
KR1020150151599A 2015-09-25 2015-10-30 소프트웨어 위험분석 방법 및 장치 KR101734418B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150151599A KR101734418B1 (ko) 2015-10-30 2015-10-30 소프트웨어 위험분석 방법 및 장치
PCT/KR2016/010738 WO2017052318A1 (ko) 2015-09-25 2016-09-26 소프트웨어 분석 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150151599A KR101734418B1 (ko) 2015-10-30 2015-10-30 소프트웨어 위험분석 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170051660A KR20170051660A (ko) 2017-05-12
KR101734418B1 true KR101734418B1 (ko) 2017-05-25

Family

ID=58740240

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150151599A KR101734418B1 (ko) 2015-09-25 2015-10-30 소프트웨어 위험분석 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101734418B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102563900B1 (ko) * 2023-03-31 2023-08-09 (주) 바우디움 구조화 문서를 취급하는 방법 및 이를 이용한 장치
KR102647446B1 (ko) * 2023-06-19 2024-03-13 국방기술품질원 개발 단계 무기 체계의 sw 품질 검증 시스템 및 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020054890A1 (ko) * 2018-09-13 2020-03-19 상명대학교산학협력단 제어 시스템의 해저드 분석 방법 및 그 장치
KR102287014B1 (ko) * 2018-12-26 2021-08-09 (주)씽크포비엘 크라우드소싱 기반 소프트웨어 위험 분석 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262348A (ja) * 2007-04-11 2008-10-30 Fuji Xerox Co Ltd リスク識別計画支援システムおよびリスク識別計画支援装置およびリスク識別計画支援プログラム
JP2011170697A (ja) * 2010-02-19 2011-09-01 Panasonic Corp ソフトウェア構造分析装置
KR101520671B1 (ko) * 2014-04-25 2015-05-20 충남대학교산학협력단 실행코드 유사도 분석 시스템 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262348A (ja) * 2007-04-11 2008-10-30 Fuji Xerox Co Ltd リスク識別計画支援システムおよびリスク識別計画支援装置およびリスク識別計画支援プログラム
JP2011170697A (ja) * 2010-02-19 2011-09-01 Panasonic Corp ソフトウェア構造分析装置
KR101520671B1 (ko) * 2014-04-25 2015-05-20 충남대학교산학협력단 실행코드 유사도 분석 시스템 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102563900B1 (ko) * 2023-03-31 2023-08-09 (주) 바우디움 구조화 문서를 취급하는 방법 및 이를 이용한 장치
KR102647446B1 (ko) * 2023-06-19 2024-03-13 국방기술품질원 개발 단계 무기 체계의 sw 품질 검증 시스템 및 방법

Also Published As

Publication number Publication date
KR20170051660A (ko) 2017-05-12

Similar Documents

Publication Publication Date Title
US9547638B2 (en) Data logging for rule specifications
AU2014208308B2 (en) Safety analysis of a complex system using component-oriented fault trees
KR101734418B1 (ko) 소프트웨어 위험분석 방법 및 장치
JP6066081B2 (ja) フォールトツリーを生成する装置及び方法
Campos et al. Model checking interactor specifications
CN108132957A (zh) 一种数据库处理方法及装置
KR20130055683A (ko) 비지니스 룰의 편집 및 컴파일
KR102088509B1 (ko) 컴퓨터 시스템의 이상 행위 탐지 방법 및 장치
Dimyadi et al. Integrating the BIM rule language into compliant design audit processes
US20190155904A1 (en) Generating ground truth for questions based on data found in structured resources
KR101331452B1 (ko) 데이터베이스 관리 방법 및 그를 위한 데이터베이스 관리 서버
JP4383484B2 (ja) メッセージ解析装置、制御方法および制御プログラム
CN110232281B (zh) 充分利用自然语言处理改进集合内的访问控制
Kang et al. Predicting just‐in‐time software defects to reduce post‐release quality costs in the maritime industry
US20200372367A1 (en) Cognitive methods and systems for responding to computing system incidents
CN107193249A (zh) 程序开发辅助装置以及程序开发辅助方法
Ripon et al. Modeling and analysis of product-line variants
WO2017052318A1 (ko) 소프트웨어 분석 방법 및 장치
JP2009099111A (ja) 規則検査プログラム、規則検査方法および規則検査装置
Habli et al. Balancing the formal and informal in safety case arguments
Delmas et al. Smt-based synthesis of fault-tolerant architectures
US10621172B2 (en) System and method for efficiently generating responses to queries
JP2015056140A (ja) クローン検出方法及びクローン共通関数化方法
KR101706098B1 (ko) 소프트웨어 분석 방법 및 장치
KR102213959B1 (ko) 크라우드소싱 기반 소스코드 안정성 확보 방법

Legal Events

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