디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.11 00:26:50
조회 103 추천 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 - -
2883645 음기 충전 발명도둑잡기갤로그로 이동합니다. 08.23 125 0
2883644 좋은 일본노래 듣고갑시다 프로외노자갤로그로 이동합니다. 08.23 149 0
2883642 제 조립 릴스 보심? 방금 인스타그램. 넥도리아(223.38) 08.23 114 0
2883641 아키텍쳐 설계는 기술보단 노하우임 에이도비갤로그로 이동합니다. 08.23 129 0
2883640 초보가 가장 많이 격는 노드 에러 정리 프갤러(121.133) 08.22 144 0
2883639 그냥 달리고 걸어... 재활용. [1] 넥도리아(223.38) 08.22 151 0
2883637 구름 뭐냐 그냥 연기지. 넥도리아(222.233) 08.22 119 0
2883636 요즘 술 안먹는사람들 존나 많아진듯 ㅇㅅㅇ 유전자가 약해졌나 ㅇㅇ(124.60) 08.22 108 0
2883635 ㅆㅇㅆ이랑 술마시고 싶다 [5] 아스카영원히사랑해갤로그로 이동합니다. 08.22 242 0
2883634 일이 다 일이지 그냥 돈벌이여 프갤러(61.79) 08.22 125 0
2883633 개발 어느정도 짬 먹은 애들은 [7] 루도그담당(58.239) 08.22 201 0
2883631 컴공애들 존나불쌍하네 [2] ㅇㅇ(223.38) 08.22 246 0
2883627 헬조센에선 헬조센대로 생존법이 있다 프갤러(61.79) 08.22 135 0
2883626 컴퓨터랑 섹스하시기 위해 [1] 루도그담당(58.239) 08.22 121 0
2883625 여자랑 이야기 해본지 약 9년전 [4] ㅆㅇㅆ(124.216) 08.22 175 0
2883624 근데 확실히 LLM 쓰기 시작하면서 아키테쳐적으로 시각이 바뀜 [4] ㅆㅇㅆ(124.216) 08.22 186 0
2883623 유튜브댓글에 수학으로 선민사상 느끼는 놈들 많네 [2] ㅇㅇ(106.102) 08.22 152 0
2883622 아키텍쳐에 정답은 없고 그순간의 답이 있을뿐 [3] ㅆㅇㅆ(124.216) 08.22 182 0
2883621 firebase studio 덕분에 갤럭시10울트라로 개발 쉬워짐... 프갤러(121.128) 08.22 135 0
2883620 밑에 아키텍쳐 논쟁 딱 알려준다 [3] ㅆㅇㅆ(124.216) 08.22 160 0
2883619 넥슨 이 새끼들 소름이구나 루도그담당(58.239) 08.22 170 0
2883617 회사에서 아키텍쳐 설계 논쟁 있었는데 [16] 프갤러(39.117) 08.22 266 0
2883616 요 최근에 부업으로 바이브 코더들 구현 막힌거 고쳐주면서 사는데 [2] ㅆㅇㅆ(124.216) 08.22 193 0
2883615 중국인에게 전하는 말 프갤러(211.234) 08.22 132 0
2883614 날 더워가 뛰뛰를 제대로 못하니 살 찐당 ♥냥덩Art♥갤로그로 이동합니다. 08.22 140 0
2883613 내가 개발자를 그만두고, 안하는 이유 그럼으로써, 기프티콘 받아가는 인생 넥도리아(220.74) 08.22 131 0
2883612 세상 한 2~3년간 대학생 학부 과제대행으로 먹고 살아보면서 느낀건데 [4] ㅆㅇㅆ(124.216) 08.22 207 0
2883611 실력은 상대적이다. 간판이 중요함. 내가 외주 뛰면서 느낀게 [5] ㅆㅇㅆ(124.216) 08.22 234 0
2883610 살렸습니다. 넥도리아(220.74) 08.22 164 0
2883609 대기업 인턴 6개월 vs 스타트업 6개월 [6] 프갤러(118.33) 08.22 222 0
2883608 .. ♥냥덩Art♥갤로그로 이동합니다. 08.22 145 0
2883607 한국 좋아하는 일녀는 일녀 아니다 ♥냥덩Art♥갤로그로 이동합니다. 08.22 114 0
2883606 님들 저 코딩으로 밥먹고 살아갈 수 있을까요 공기역학갤로그로 이동합니다. 08.22 125 0
2883605 어머니가 되지 못한 비처녀는 창녀다라는 논리에 대해서 논박이 어렵구나 ㅆㅇㅆ(124.216) 08.22 99 0
2883604 ai 창작러 코딩커리인데 ㅇㅇ(106.102) 08.22 127 0
2883603 아 ㅅㅂ 자야하는데 배에 신호올랑말랑냥덩말랑 ♥냥덩Art♥갤로그로 이동합니다. 08.22 134 0
2883600 도미노 이새끼들 띠발이네 야옹아저씨갤로그로 이동합니다. 08.22 142 0
2883599 사이트나 확장의 행동이 브라우저마다 조금씩 다른 이유가 머임? [3] ㅇㅇ갤로그로 이동합니다. 08.22 131 0
2883598 아 근데 김건희가 btfs 알아서, 그 포맷으로 저장하면 검찰이 못여는거 넥도리아(220.74) 08.22 139 0
2883597 주식 공부는 필수다 아스카영원히사랑해갤로그로 이동합니다. 08.22 139 0
2883596 요즘 mz세대들 졸업작품 뭐함 [10] 공기역학갤로그로 이동합니다. 08.22 175 0
2883595 btrfs 애 대해 공부해보았다. 이제야 프로그래머 답다. 넥도리아(220.74) 08.22 97 0
2883593 26살 진로 고민 + 학원 선택 어떻게 해야 함? [2] 프갤러(119.192) 08.22 231 1
2883591 뀨? ♥냥덩Art♥갤로그로 이동합니다. 08.22 107 0
2883590 오늘 외주 수정 요청 너무 와서 힘들다 ㅆㅇㅆ(124.216) 08.22 126 0
2883589 오픽AL행동 ㅇㅇ(58.229) 08.22 94 0
2883588 쏘카 코테 어렵냐? 프갤러(223.38) 08.22 215 0
2883586 나라면 대만에도 셰셰 중국에서 셰셰 감사합니다. 하고 넥도리아(220.74) 08.22 132 0
2883585 AI 때문에 코딩 1도 배울 필요 없음 [4] ㅇㅇ(106.241) 08.22 194 0
2883584 1인분 더더 넥도리아(220.74) 08.22 126 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2