(목표)
민수 및 군수 산업에서 개발되는 내장형 소프트웨어를 위한,
소프트웨어 설계 단계에서 활용 가능한 모델링 기법 및 검증도구 개발
소프트웨어 구현하여 산출되는 C/C++/Java 소스 코드의 의미 분석을 통한 오류 검증 도구,
소스코드의 정적 분석을 통한 국제 표준 기반 오류 검증 도구,
소프트웨서 동적 시험 중 메모리 오류를 검출하며 Coverage 측정을 하는 도구,
소프트웨어 단위 시험을 위한 Test Case 생성 및 시험 수행 도구 개발
(필요성)
기능 및 복잡도 급격하게 증가, 오류 발생 시 그로 인한 위험 비용 증가,
무기페계 오류로 인한 위험 비용은 전장에서의 임수 실패로 직결 및 전쟁 실패 가능성
(연구개발 내용)
1 내장형 S/W 모델링 기술 개발
내장형 시스템의 제어 기능을 담당하는 소프트웨어를 설계에 적합한 모델로 정의하고, 오류 가능성 등을 효과적으로 분석하여, 고 신뢰성 내장형 소프트웨어를 제작하기 위한 기술
이산적 동작 특성(소프트웨어) + 연속적 동작 특성(내장형 시스템) → 하이브리드 내장형 소프트웨어 모델링 언어 제공
아키텍처 기술 언어(정적 구조) - 하이브리드 모델링 언어(동적 행위) //상호 연계
2 내장형 S/W 모델 검증 기술 개발
내장형 S/W 모델검증은 시스템 모델의 도달 가능한 모든 동작/상태를 면밀히 검사함으로써 대상 시스템의 정확도를 검사하는 기법
이산 모델을 대상으로하는 모델 검증 기술은 하이브리드 모델에 특화된 심볼릭 모델 검증 기술의 연구 개발 필요
아키텍처 기술에 대하여 구조적인 완전성 및 상호 운용을 위한 연계의 정확성을 검증하기 위하여 정적인 모델 분석 기법을 개발
하이브리드 내장형 소프트웨어 모델을 검증하기 위하여, 엄밀한 요구사항 명세를 위한 명세 언어 개발
하이브리드 모델의 동작 정확성을 검증하기 위하여, 하이브리드 모델 검증 도구 개발
런타임 검증 기반 모델 분석 도구를 개발함으로써 검증 대상 모델의 특성과 규모에 적합한 정확도 분석을 지원하도록 함
3 시뮬레이션 기반 검증 도구 개발
소프트웨어의 입력에 따른 동작을 설계 모델에서 동적으로 시뮬레이션 하여 오동작 항목을 검출하는 기술
소프트웨어 모델링 언어에 따른 설계 모델 작성 및 시뮬레이션 수행 기술 필요
추가적인 검증을 위하여 다른 검증 도구를 사용하기 위한 설계 모듈의 다종 변환 기술 필요
내장형 S/W 모델링 언어의 의미에 따라서 설계 모듈을 시뮬레이션 하는 기능 지원
신규 개발하는 내장형 S/W 모델 검증 기술을 적용할 수 있도록, 시뮬레이션 기반 검증 도구로 작성한 설계 모듈을 내장형 S/W 모델 검증 기술에 적합한 설계 모델로 자동 변환하는 기능 추가 지원
4 프로그램 의미 분석 기술 개발
소스 코드를 분석하여 프로그램을 실행하지 않고, 프로그램의 실행 중 의미를 알아내는 기술
프로그램에 존재하는 오류를 프로그램을 실행하지 않고 검출하거나, 프로그램이 특정 성질을 항상 만족하여 안전하다는 사실을 검증에 활용
ex. airbus 비행기에서 사용하는 소스코드에 실행 오류가 없다는 것을 요약 해석 기술을 사용하여 ㅈㅇ명한 Astree 프로젝트,
일반적인 프로그램의 소스코드를 분석하여 미리 실행 오류들을 찾아주는 Prevent,
KlocWorks 같은 오류검출기
프로그램 상에 존재하는 실행 오류들을 찾아 주는 도구(검출기)와 특정 군용 프로그램에서 사용되는 프로그램에 오류가 없음을 증명해 주는 검증 도구(검증기)를 제공하여 개발 초기부터 잠재적인 오류를 찾아서 수정 가능
개발자가 검출된 오류들을 쉽게 확인할 수 있도록 소스코드상에서 오류의 발생경로와 원인을 설명해 주고, 체계적인 관리를 위해 오류에 대한 분류 할 수 있는 기능 제공
5 정적 분석 기술 개발
산업계에서 활용하고 있는 각종 소프트웨어 Coding 규칙들을 기반으로 소프트웨어 소스 코드 상 위배 항목 검출하는 기술
소스코드를 분석하여 소스 코드 상 Coding 규칙 적용 가능 항목을 식별, 위배 여부 확인 기술
산업계에서 널리 활용중인 MISRA, IEC 61508, IEC 62279, IEC 60880, JSF++, CERT, CWE 등의 Coding 규칙 지원하고 기능 안전성 관련 표준들을 추가 분석하여 필요로 한 Coding 규칙들 추가적으로 지원
대표적인 통합개발환경이 Visual Studio, Eclipse 등 플러그인 되어 개발과 동시에 소스 코드 정적 분석 가능
도구와 함께 제공되는 각종 Coding 규칙들을 기반으로 각 활용 목적에 맞게 Coding 규칙 편집 및 규격 추가 가능하게 하는 기능 지원
6 동적 분석 기술 개발
소프트웨어 직접 수행을 통해 소프트웨어 구조적, 논리적 오류를 찾아내는 기술
소프트웨어 수행 중 오류를 검출하는데 활용 가능한 테스트케이스 필요
검증 대상 소프트웨어의 테스트가 충실하게 수행되었는지 확인하기 위한 정량적 수치인 Coverage를 특정할 수 있어야 함
국제 표준에서는 일반적으로 Statement Coverage, Decision Coverage, Function Coverage, Modified Condition/Decision Coverage (MC/DC) 등을 권고
소프트웨어의 Memory 오류(ex. Memory 충돌, Memory Leak, 번위를 넘어선 배열의 접근, Invalid Pointer 사용 등) 검출 가능
테스트 커버리지 측정 및 메모리 류 검출을 포함한 동적 분석 기술을 개발함으로써 소프트웨어 수행을 통한 오류 검출 방법 제공
7 단위 시험 지원 기술 개발
소프트웨어 단위 시험 시 필요한 Test Data 및 Test Case를 자동 생성 및 생성한 Test Case를 바탕으로 Test script를 생성하여 수행하는 기술
테스트 데이터 및 테스트 케이스 자동 생성 기법은 소스 코드 분석을 통한 방법과 모델 검증 및 시뮬레이션 단계에서 사용된 테스트 정보를 활용하는 방법
일반적으로 내장형 시스템의 소프트웨어들은 자동화된 시험 도구를 활용하기 이전부터 각 소프트웨어의 단위별 검증을 위한 테스트 데이터를 개발하여 검증
단위 시험 지원 도구는 이러한 사용자 테스트 데이터들을 입력받아 테스트 케이스 생성에 활용할 수 있어야 함
소프트웨어 단위.통합 시험 단계에서 활용이 가능한 도구로써, 소스 코드 분석, 모델링 도구 연계, 사용자 데이터 입력을 통해 테스크 데이터, 테스크 케이스, 테스트 스텁, 테스트 스크립트를 자동으로 생성하고 이에 한 자동 테스트 수행 지원
참고문헌: 방위사업청 지침 2011-26호
무기체계 소프트웨어 개발 및 관리지침 (방위사업청)
소프트웨어 공학 백서 2010 (정보통신산업진흥원)