toplogo
Войти

검증된 배포 소프트웨어 시스템의 교훈(확장판)


Основные понятия
실제 사용을 위해 배포된 다양한 분야의 검증 소프트웨어 시스템들을 분석하여 산업계가 형식 검증 기술과 도구로부터 얻을 수 있는 교훈을 제시한다.
Аннотация

이 논문은 실제로 배포되어 사용되고 있는 다양한 분야의 검증 소프트웨어 시스템들을 분석한다.

  1. 서론에서는 소프트웨어 정확성의 중요성과 형식 검증 기술의 실용성에 대한 논란을 소개한다. 이 논문은 이 문제에 대한 객관적인 근거를 제공하기 위해 실제 배포된 검증 시스템들을 분석한다.

  2. 2장에서는 분석 대상 시스템 선정 기준과 분석 기준을 설명한다.

3-4장에서는 형식 검증의 기본 개념과 다양한 검증 접근법을 소개한다.

5장에서는 검증 프로세스의 전반적인 맥락을 설명한다. 검증 프로파일과 검증 체계에 대해 설명한다.

6장은 이 논문의 핵심으로, 선정된 개별 시스템들을 분석한다. 각 시스템의 범위, 구성 요소, 검증 속성, 프로젝트 맥락, 주요 결정 사항, 도구 스택, 스타일, 소프트웨어 특성, 프로젝트 특성, 교훈 등을 설명한다.

7장에서는 전반적인 교훈과 한계, 그리고 산업계로의 일반화 가능성을 논의한다.

edit_icon

Customize Summary

edit_icon

Rewrite with AI

edit_icon

Generate Citations

translate_icon

Translate Source

visual_icon

Generate MindMap

visit_icon

Visit Source

Статистика
CompCert 컴파일러는 135,000줄의 코드로 구현되었으며, 6 인년의 개발 및 검증 노력이 투입되었다. CakeML 컴파일러는 100,000줄의 코드로 구현되었다. Vericert 컴파일러는 3,630줄의 코드로 구현되었으며, 1.5 인년의 개발 및 검증 노력이 투입되었다. Vermillion 컴파일러는 8,000줄의 코드로 구현되었으며, 0.75 인년의 개발 및 검증 노력이 투입되었다. EiffelBase2 라이브러리는 9,370줄의 코드로 구현되었으며, 6 인년의 개발 및 검증 노력이 투입되었다. HACL* 라이브러리는 3,300줄의 코드로 구현되었으며, 1 인년 미만의 개발 및 검증 노력이 투입되었다. DICE* 라이브러리는 4,700줄의 코드로 구현되었다. Signal* 라이브러리는 4,000줄의 코드로 구현되었다. Amazon s2n 라이브러리는 860줄의 코드로 구현되었으며, 3 인년 이상의 개발 및 검증 노력이 투입되었다. seL4 OS 커널은 100,000줄의 코드로 구현되었으며, 31.2 인년의 개발 및 검증 노력이 투입되었다. Verve OS는 3,000줄의 코드로 구현되었으며, 0.75 인년의 개발 및 검증 노력이 투입되었다. mCertiKOS OS는 6,000줄의 코드로 구현되었으며, 1 인년의 개발 및 검증 노력이 투입되었다. mC2 OS는 17,000줄의 코드로 구현되었으며, 2 인년의 개발 및 검증 노력이 투입되었다. Hyper-V 하이퍼바이저는 5,000줄의 코드로 구현되었으며, 1.5 인년의 개발 및 검증 노력이 투입되었다. SHOLIS 항공 시스템은 3,070줄의 코드로 구현되었으며, 19 인년의 개발 및 검증 노력이 투입되었다. NATS iFACTS 항공 시스템은 300줄의 코드로 구현되었으며, 50 인년 이상의 개발 및 검증 노력이 투입되었다. Roissy Shuttle 시스템은 1,160줄의 코드로 구현되었다. Dutch Tunnel CS 시스템은 150줄의 코드로 구현되었으며, 8 인년의 개발 및 검증 노력이 투입되었다. Sizewell B 원전 시스템은 150,000줄의 코드로 구현되었으며, 250 인년의 개발 및 검증 노력이 투입되었다. Ironclad Apps는 500줄의 코드로 구현되었으며, 3 인년의 개발 및 검증 노력이 투입되었다. Quark 시스템은 200줄의 코드로 구현되었으며, 0.83 인년의 개발 및 검증 노력이 투입되었다. CoCon 시스템은 670줄의 코드로 구현되었으며, 0.25 인년의 개발 및 검증 노력이 투입되었다. CoSMed 시스템은 1,000줄의 커널 코드와 330줄의 애플리케이션 코드로 구현되었으며, 0.33 인년의 개발 및 검증 노력이 투입되었다. Ynot 시스템은 3,030줄의 코드로 구현되었으며, 8 인년의 개발 및 검증 노력이 투입되었다. Flover 검증 도구는 10,000줄의 코드로 구현되었으며, 2 인년의 개발 및 검증 노력이 투입되었다.
Цитаты
"형식 검증 기술이 눈부신 발전을 이루었지만, 실제 소프트웨어 개발에 얼마나 도움이 되는가에 대해서는 여전히 상당한 이견이 있다." "형식 검증이 단지 몇몇 비용이 많이 드는 생명 관련 프로젝트에만 국한된 것인지, 아니면 소프트웨어 산업의 광범위한 부문에 적용될 수 있는 아이디어인지에 대한 의문이 제기되고 있다." "이 조사는 실제로 배포된 형식 검증 시스템들을 검토함으로써 이 문제에 대한 객관적인 근거를 제공한다."

Ключевые выводы из

by Li Huang,Sop... в arxiv.org 04-01-2024

https://arxiv.org/pdf/2301.02206.pdf
Lessons from Formally Verified Deployed Software Systems (Extended  version)

Дополнительные вопросы

질문 1

형식 검증 기술이 소프트웨어 산업 전반에 일반화되기 위해서는 어떤 장애물을 극복해야 하는가? 형식 검증 기술이 소프트웨어 산업에 보다 널리 적용되기 위해서는 몇 가지 장애물을 극복해야 합니다. 첫째, 형식 검증은 일반적으로 추가적인 비용과 시간이 소요되는 작업이므로 이러한 비용과 시간적 제약을 극복해야 합니다. 둘째, 형식 검증은 전문적인 지식과 훈련이 필요하므로 소프트웨어 개발팀이 이러한 지식을 보유하고 있어야 합니다. 세째, 형식 검증은 일부 유형의 시스템에는 적용하기 어려울 수 있으며, 이러한 시스템에 대한 적용 가능성을 고려해야 합니다. 마지막으로, 형식 검증 기술의 복잡성과 이해도를 극복하여 소프트웨어 개발자들이 이 기술을 보다 쉽게 이해하고 적용할 수 있도록 해야 합니다.

질문 2

형식 검증이 적용되기 어려운 특정 유형의 시스템은 무엇인가? 형식 검증 기술은 일부 특정 유형의 시스템에는 적용하기 어려울 수 있습니다. 예를 들어, 매우 복잡하거나 동적인 시스템, 실시간 시스템 또는 하드웨어와 소프트웨어가 긴밀히 통합된 시스템은 형식 검증에 있어서 도전적일 수 있습니다. 또한, 사용자 상호작용이 많이 포함된 시스템이나 비즈니스 로직이 복잡한 시스템도 형식 검증에 적합하지 않을 수 있습니다. 이러한 유형의 시스템은 형식 검증의 제약사항과 요구사항을 충족하기 어려울 수 있으며, 다른 검증 방법이 더 적합할 수 있습니다.

질문 3

형식 검증 기술의 발전이 소프트웨어 개발 프로세스에 미칠 수 있는 근본적인 변화는 무엇인가? 형식 검증 기술의 발전은 소프트웨어 개발 프로세스에 근본적인 변화를 가져올 수 있습니다. 먼저, 형식 검증은 소프트웨어의 정확성을 수학적으로 증명하므로 개발된 소프트웨어의 신뢰성을 높일 수 있습니다. 이는 소프트웨어 버그와 결함을 줄이고 안정성을 향상시킬 수 있습니다. 또한, 형식 검증은 소프트웨어의 설계 및 구현 단계에서 오류를 미리 발견하고 수정할 수 있도록 도와줌으로써 개발 프로세스의 효율성을 향상시킬 수 있습니다. 마지막으로, 형식 검증은 소프트웨어의 유지보수 및 확장 단계에서도 도움을 줄 수 있으며, 소프트웨어의 장기적인 성능과 안정성을 보장할 수 있습니다. 이러한 변화는 소프트웨어 개발 방법론과 품질 보증 접근 방식에 혁명적인 변화를 가져올 수 있습니다.
0
star