디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

Ada 프로그래밍: 9. 계약에 의한 설계(DbC)

나르시갤로그로 이동합니다. 2025.08.11 00:26:50
조회 104 추천 0 댓글 0

9. 계약에 의한 설계(DbC)

Ada 2012에서 표준화된 계약에 의한 설계(Design by Contract, DbC)는 프로그래머가 형식적이고 검증 가능한 명세를 소스 코드에 직접 내장할 수 있게 하여 Ada의 신뢰성 기능을 향상시킵니다. 이러한 계약은 실행 가능한 문서 역할을 하며, 고수준 요구사항을 구현에 연결합니다. 컴파일러 스위치(-gnata)로 활성화하면, 이러한 계약은 실행 시간에 검사되어 위반 시 Assert_Failure 예외를 발생시킵니다.

Ada에서 DbC의 핵심 구성 요소는 다음과 같습니다:

  • 전제조건(Preconditions): 서브프로그램이 호출되기 전에 참이어야 하는 조건입니다. 이는 호출자 측의 의무입니다. with pre =>...로 지정됩니다.

    function square_root (x : Float) return Float with pre => x >= 0.0;
    
  • 후조건(Postconditions): 서브프로그램이 성공적으로 완료되었을 때 참이 될 것을 보장하는 조건입니다. 이는 서브프로그램 구현 측의 의무입니다. with post =>...로 지정됩니다. 후조건은 'old 속성으로 매개변수의 초기 값을, 'result 속성으로 함수의 결과를 참조할 수 있습니다.

    procedure increment (value : in out Integer) with post => value = value'old + 1;
    
  • 형식 불변식 및 술어(Type Invariants and Predicates): 주어진 형식의 모든 객체에 대해 항상 참이어야 하는 조건입니다. 술어(with static_predicate => ...)는 해당 형식의 값이 생성되거나 수정될 때마다 검사되는 속성입니다. 불변식(with type_invariant => ...)은 개인 형식의 속성으로, 공개 연산의 경계에서 검사됩니다.

계약은 유용한 도구입니다. 컴파일된 코드와 일치하는 문서를 제공합니다. 테스트와 디버깅을 위한 정확한 기반 역할을 하며, 형식적 검증 도구에 대한 중요한 입력이 됩니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 해외에서 겪는 불합리한 대우에 대응 잘 할 것 같은 스타는? 운영자 25/11/03 - -
AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
2882477 아스카 DBA와의 찐한 술한잔 하다 [5] 아스카영원히사랑해갤로그로 이동합니다. 08.18 160 0
2882475 게임 계속 만들어야하는데 ㅆㅇㅆ찡갤로그로 이동합니다. 08.18 100 0
2882474 고작 기능하나 만들겠다고 컨트롤러 서비스 dto dao 다새로만들것이냐 [2] 밀우갤로그로 이동합니다. 08.18 145 0
2882471 지금 하고 있는게 뭐냐면 [2] 루도그담당(58.239) 08.18 153 0
2882469 코드쓰는법은 그냥 글 쓰기랑 같다 생각해라 [2] ㅆㅇㅆ(124.216) 08.18 152 0
2882467 하지만 막상 외주에 쫓기다보면 개좆같이 하나의 스크립트에 코드 몰아넣음 [2] ㅆㅇㅆ(124.216) 08.18 151 0
2882466 욕 잘 하는 법 발명도둑잡기갤로그로 이동합니다. 08.18 111 0
2882465 한국에는 아무래도 영어권 자료를 직접 읽기 어렵기때문에 특정 강사의 [2] ㅆㅇㅆ(124.216) 08.18 154 0
2882462 나도 예전에 저럴 때 가 있었지 루도그담당(58.239) 08.18 124 0
2882461 파이써닉 하다=파이썬은 동적언어라 좆되로 짜면 수정 안되니까 원리따라라 [5] ㅆㅇㅆ(124.216) 08.18 199 0
2882459 세상에서 제일 병신같은 용어가 파이써닉 아닐까? [4] 밀우갤로그로 이동합니다. 08.18 147 0
2882457 파이썬 기초 공부중인데 공부법 ㄱㅊ은지 봐줄사람 [12] ㅇㅇ갤로그로 이동합니다. 08.18 258 0
2882454 JWT <- 이거 발음 '좆'으로 부르는거 맞음? [6] 프갤러(125.131) 08.18 140 0
2882452 하다보면 느끼는게 프론트보다 백엔드가 더 공부할게 적다. [2] ㅆㅇㅆ(124.216) 08.18 254 0
2882451 킹리적 갓심. [2] 넥도리아(119.195) 08.18 166 0
2882450 강선우 보고 딸쳤다 [3] 대림3우성아파트주광(211.209) 08.18 162 0
2882448 ba직무가뭐냐 [2] 프갤러(106.102) 08.18 168 0
2882447 재형 X 민수 Sea of Love 2025 [Remastered] 발명도둑잡기갤로그로 이동합니다. 08.18 116 0
2882446 윤인성 작가 파이선 봤다 프갤러(211.209) 08.18 106 0
2882443 뻑킹USA 2025 [1] 발명도둑잡기갤로그로 이동합니다. 08.18 127 0
2882436 5년차 백엔드 프붕이 연봉 2천이상 올려서 이직 성공했다... [1] 프갤러(14.12) 08.18 254 0
2882432 언론 징벌적 손해 우려점 발명도둑잡기갤로그로 이동합니다. 08.18 134 0
2882430 시작이야 나도 C로 했지 ㅆㅇㅆ(124.216) 08.18 133 0
2882425 진지빨고 너네 C 쓴 적있냐 나는 CPP는 언리얼한다고 썼지만 [5] ㅆㅇㅆ(124.216) 08.18 229 0
2882423 av1은 보면 볼수록 개씨발이네 프갤러(49.165) 08.18 132 0
2882415 양궁협회 '극우 SNS 게시물' 국가대표 장채환 징계 수순 발명도둑잡기갤로그로 이동합니다. 08.18 156 0
2882408 다들 c언어 배워서 어디에 활용함? [5] ㅇㅇ갤로그로 이동합니다. 08.18 193 0
2882407 이은주, 어느덧 20주기…여전히 그립네 [1] 발명도둑잡기갤로그로 이동합니다. 08.18 172 0
2882405 이동건 동생 호주서 피살, '단지 째려봤다고 사람을 죽이나?' 발명도둑잡기갤로그로 이동합니다. 08.18 163 0
2882402 C++ 와 자바의 문법 차이. [1] 프갤러(59.16) 08.18 173 0
2882401 차단 [1] 발명도둑잡기갤로그로 이동합니다. 08.18 157 0
2882399 방금 전 010-6585-571? 한테 전화가 와 받아보니 발명도둑잡기(118.235) 08.18 167 0
2882396 스마트포인터 잘 안 쓰게 됌 [1] 루도그담당(118.235) 08.18 130 0
2882393 애초에 사람 대가리에 들어갈 수 있는 구현이란게 한계가 있음. [3] ㅆㅇㅆ(124.216) 08.18 134 0
2882392 C++ 어느정도 해야고수냐고 [6] 루도그담당(118.235) 08.18 211 0
2882391 나도 예전에는 구현 하나하나 외울랬거든? 근데 그거 의미없더라 [2] ㅆㅇㅆ(124.216) 08.18 179 0
2882389 이런말하면 그런데 동아시안 전반적으로 미개하다. 인터넷 문화가 ㅆㅇㅆ(124.216) 08.18 150 0
2882388 쳇지피티에 요즘 질문하면 코드 다 짜주지않음? [6] ㅇㅇ(121.128) 08.18 144 0
2882387 좆본뉴스보는데 좆본은 성상납이 기본이고 ㅋㅋㅋ [4] ㅆㅇㅆ(124.216) 08.18 175 0
2882386 한국 법 조까 [4] 주아갤로그로 이동합니다. 08.18 179 0
2882384 C++ 어느정도는 해야 고수냐 루도그담당(118.235) 08.18 150 0
2882383 최약 여주가 희롱당하는 야겜으만들고 십구나 [2] 주아갤로그로 이동합니다. 08.18 153 0
2882382 엑셀 갑자기 안뜨는 경우는 왜그럼? 프갤러(221.145) 08.18 137 0
2882381 윽액윽윽액 야겜 만들 시간을 달라 [4] 주아갤로그로 이동합니다. 08.18 125 0
2882380 Api 만든 애들 자체는 고맙지만 [4] 루도그담당(118.235) 08.18 195 1
2882379 야겜을 만들고 싶구나 [4] 주아갤로그로 이동합니다. 08.18 149 0
2882378 자동매매 설계해보면 해보면 API 설계 진짜 개좆같구나 느낌 [4] ㅆㅇㅆ(124.216) 08.18 218 0
2882376 좇센 커뮤 눈팅하면 인간의 특성 특히 좇센징에 대해서 연구할수있음 뒷통수한방(1.213) 08.18 147 0
2882375 단순 SQL이 아니라 API면 권한,토큰 인증이랑 제한 수치도 [3] ㅆㅇㅆ(124.216) 08.18 148 0
2882374 숨고에서 외주는 외주 등록말고도 코딩/레슨 서비스에도 등록해야함 [8] ㅆㅇㅆ(124.216) 08.18 177 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2