徽标
联盟百科
通讯
下载应用,请到 Google Play
新! 在您的Android™设备上下载联盟百科!
自由
比浏览器更快的访问!
 

契约式设计

指数 契约式设计

契约式设计(Design by Contract,縮寫為 DbC),一种设计计算机软件的方法。这种方法要求软件设计者为软件组件定义正式的,精确的并且可验证的接口,这样,为传统的抽象数据类型又增加了先验条件、后验条件和不变式。这种方法的名字里用到的“契约”或者说“契约”是一种比喻,因为它和商业契约的情况有点类似。 因为Design by Contract是属于Eiffel Software的注册商标,很多开发人员用契約式編程(Programming by Contract),契約編程(Contract Programming),或者契約優先式開發(Contract-First development)来指代这种方法。微軟也採用這種設計方法,稱為程式碼合約(Code Contracts)。.

25 关系: Ada基于组件的软件工程不变条件伯特蘭·邁耶形式化方法形式验证先验条件副作用Clojure类 (计算机科学)继承 (计算机科学)编程语言D語言Eiffel面向对象程序设计软件软件文档霍尔逻辑Liskov代換原則Perl 6RacketSPARKStatic code analysisVala斷言 (程式)

Ada

Ada,是一种程序设计语言。它源于美国军方的一个计划,旨在整合美军系统中运行着上百种不同的程序设计语言编写的程序,並提高除錯能力與效率,由Pascal及其他語言擴展而成,比較接近自然語言和數學表達式,並用「Ada」命名以紀念-zh-cn:埃达·洛夫莱斯;zh-tw:愛達·勒芙蕾絲;zh-hk:愛達·勒芙蕾絲;zh-sg:埃达·洛夫莱斯;-(Ada Lovelace)。.

新!!: 契约式设计和Ada · 查看更多 »

基于组件的软件工程

基于组件的软件工程(Component-based software engineering,简称CBSE)或基于组件的开发(Component-Based Development,简称CBD)是一种软件开发范型。它是现今软件复用理论实用化的研究热点,在组件对象模型的支持下,通过复用已有的构件,软件开发者可以“即插即用”地快速构造应用软件。这样不仅可以节省时间和经费,提高工作效率,而且可以产生更加规范、更加可靠的应用软件。 Category:面向对象的程序设计 Category:软件架构 Category:基于组件的软件工程 es:Programación orientada a componentes.

新!!: 契约式设计和基于组件的软件工程 · 查看更多 »

不变条件

在计算机科学中,不变条件是指,在程序执行过程或部分过程中,可始终被假定成立的条件。比如,循环不变条件是指在循环开始和结束后始终成立的条件。.

新!!: 契约式设计和不变条件 · 查看更多 »

伯特蘭·邁耶

伯特蘭·邁耶(Bertrand Meyer,),生於法國,程式語言專家,Eiffel程式語言的創造者,曾提出契约式设计觀念。.

新!!: 契约式设计和伯特蘭·邁耶 · 查看更多 »

形式化方法

形式化方法,中文也稱形式方法、正規方法。在计算机科学和软件工程领域,形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述、开发和验证。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计的可靠性和強健性。但是,由于采用形式化方法的成本高意味着它们通常只用于开发注重安全性的高度整合的系统。.

新!!: 契约式设计和形式化方法 · 查看更多 »

形式验证

在计算机硬件(特别是集成电路)和软件系统的设计过程中,形式验证的含义是根据某个或某些形式规范或属性,使用数学的方法证明其正确性或非正确性。.

新!!: 契约式设计和形式验证 · 查看更多 »

先验条件

#重定向 先决条件.

新!!: 契约式设计和先验条件 · 查看更多 »

副作用

在醫學中,副作用(英語:side effect)是指藥品往往有多種作用,作用於不同身體部位受體,治療時利用其一種或一部分受體作用,其他作用或是受體產生作用即變成為副作用。雖然副作用一詞常被用來形容 不良反应 (医学),但事實上副作用也可以指那些「有益處、意料之外」的效果。 有時候,一些藥物的副作用反而成為醫生處方那些藥物的目的;在這種情況下,那些藥物的副作用不再是副作用,反而是藥物的主作用了。 例如:X輻射線/X光一直被用做醫學影像用途,人們原本把它的輻射線對人體產生的效果當成是副作用。但自從人們發現X輻射線/X光能夠用來治療腫瘤後,輻射線被應用為放射線療法。在醫學影像領域中被當成副作用的輻射線效果,在癌症治療上反而成了消滅贅生物的正作用了。.

新!!: 契约式设计和副作用 · 查看更多 »

Clojure

Clojure(發音類似"closure")是一套現代的Lisp語言的動態語言版。它是一个函数式多用途的语言。 Clojure可以執行於Java虛擬機,通用語言運行時以及JavaScript引擎之上。與其他Lisp一樣,Clojure認為同像性,同時擁有複雜的巨集。 Clojure最新的稳定版本是1.8,发布于2016年1月19日。第一个稳定版本1.0于2009年5月4日发布。 Clojure是一个在Eclipse公共许可证下发行的自由软件。目前其开发进程是社区主导的,在作者Rich Hickey以一个“终身的仁慈独裁者”的身份监督下进行。.

新!!: 契约式设计和Clojure · 查看更多 »

类 (计算机科学)

在物件導向程式設計,类(class)是一种面向对象计算机编程语言的构造,是创建对象的蓝图,描述了所创建的对象共同的和方法。 类的更严格的定义是由某种特定的元数据所组成的内聚的包。它描述了一些对象的行为规则,而这些对象就被称为该类的实例。类有接口和结构。接口描述了如何通过方法与类及其实例互操作,而结构描述了一个实例中数据如何划分为多个属性。类是与某个层的对象的最具体的类型。类还可以有运行时表示形式(元对象),它为操作与类相关的元数据提供了运行时支持。 支持类的编程语言在支持与类相关的各种特性方面都多多少少有一些微妙的差异。大多数都支持不同形式的类继承。许多语言还支持提供封装性的特性,比如访问修饰符。类的出现,为面向对象编程的三个最重要的特性(封装性、继承性、多态性),提供了实现的手段。.

新!!: 契约式设计和类 (计算机科学) · 查看更多 »

继承 (计算机科学)

继承(inheritance)是面向对象软件技术当中的一个概念。如果一个类別B「继承自」另一个类別A,就把这个B称为「A的子类」,而把A称为「B的父类別」也可以称「A是B的超类」。继承可以使得子类具有父类別的各种属性和方法,而不需要再次编写相同的代码。在令子类別继承父类別的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类別的原有属性和方法,使其获得与父类別不同的功能。另外,为子类追加新的属性和方法也是常见的做法。 一般靜態的物件導向程式語言,繼承屬於靜態的,意即在子類別的行為在編譯期就已經決定,無法在執行期擴充。 有些编程语言支持多重继承,即一个子类可以同时有多个父类別,比如C++编程语言;而在有些编程语言中,一个子类只能继承自一个父类別,比如Java编程语言,这时可以利用接口来实现与多重继承相似的效果。 現今物件導向程式設計技巧中,繼承並非以繼承類別的「行為」為主,而是繼承類別的「型態」,使得元件的型態一致。另外在設計模式中提到一個守則,「多用合成,少用繼承」,此守則也是用來處理繼承無法在執行期動態擴充行為的遺憾。.

新!!: 契约式设计和继承 (计算机科学) · 查看更多 »

编程语言

编程语言(programming language),是用来定义计算机程序的形式語言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。 最早的编程语言是在電腦發明之前產生的,當時是用來控制及自動演奏鋼琴的動作。在電腦領域已發明了上千不同的编程語言,而且每年仍有新的编程語言誕生。很多编程語言需要用指令方式說明計算的程序,而有些编程語言則屬於宣告式編程,說明需要的結果,而不說明如何計算。 编程语言的描述一般可以分為及語義。語法是說明編程語言中,哪些符號或文字的組合方式是正確的,語義則是對於編程的解釋。有些語言是用規格文件定義,例如C語言的規格文件也是ISO標準中一部份,2011年後的版本為ISO/IEC 9899:2011,而其他55語言(像Perl)有一份主要的文件,視為是。.

新!!: 契约式设计和编程语言 · 查看更多 »

D語言

D語言是一种程式語言,具备多範型,例如物件導向、指令式。由沃尔特·布莱特和安德烈·亞歷山德雷斯庫所開發,起源自C++,深受C++的影響,然而其不是C++的变种,而是重新设计来自C++的部分特性,并受到其它程式語言觀念的影響,如Java、C#以及Eiffel。2007年1月2日釋出1.0穩定版本。版本2.0釋出於2007年1月17日。 Walter Bright本身是Symantec C++ 編譯器的作者;另一名作者Andrei Alexandrescu是Facebook的研究科学家,他与一个团队用D语言重写一些Facebook的重要操作。.

新!!: 契约式设计和D語言 · 查看更多 »

Eiffel

Eiffel是一套物件導向程式語言,1985年由伯特蘭·邁耶所發明。文法類似Pascal ,並且將語言本身與軟體工程、和工具結合為一。Eiffel实现契约式设计(Design by Contract)的風格。.

新!!: 契约式设计和Eiffel · 查看更多 »

面向对象程序设计

面向对象程序设计(Object-oriented programming,缩写:OOP)是種具有物件概念的程式編程典範,同时也是一种程序开发的抽象方针。它可能包含資料、、程式碼與方法。对象則指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,物件裡的程序可以訪問及經常修改物件相關連的資料。在物件導向程式編程裡,電腦程式會被設計成彼此相關的物件。 面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。目前已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。反对者在某些领域对此予以否认。 当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必须了解更多关于面向对象系统分析和面向对象设计(Object Oriented Design,简称OOD)方面的知识。許多流行的程式語言是物件導向的,它們的風格就是會透由物件來創出實例。 重要的物件導向程式語言包含Common Lisp、Python、C++、Objective-C、Smalltalk、Delphi、Java、Swift、C#、Perl、Ruby 與 PHP等。.

新!!: 契约式设计和面向对象程序设计 · 查看更多 »

软件

軟體(software)是一系列按照特定顺序组织的電腦数据和指示,是電腦中的非有形部分。電腦中的有形部分稱為硬體,由電腦的外殼及各零件及電路所組成。電腦軟體需有硬體才能運作,反之亦然,軟體和硬體都無法在不互相配合的情形下進行實際的運作。 一般来說,计算机软件划分为程式語言、系统软件、应用软件和介于这两者之间的中介軟體。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。 软件包括所有在電腦執行的程式,和其架構無關,例如執行檔、函式庫及腳本語言都屬於软件。軟體不分架構,有其共通的特性,在執行後可以讓硬體執行依設計時要求的機能。軟體儲存在記憶體中,軟體不是可以碰觸到的實體,可以碰觸到的都只是儲存軟體的零件(記憶體)或是媒介(光碟或磁片等)。 软件并不一定只包括可以在计算机上运行的電腦程式,有些定義中,与電腦程式相关的文档,一般也被认为是软件的一部分。简单的说软件就是程式加文档的集合体。软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。.

新!!: 契约式设计和软件 · 查看更多 »

软件文档

软件文档或者源代码文档是指与软件系统及其软件工程过程有关联的文本实体。文档的类型包括软件需求文档,设计文档,测试文档,用户手册等。其中的需求文档,设计文档和测试文档一般是在软件开发过程中由开发者写就的,而用户手册等非过程类文档是由专门的非技术类写作人员写就的。 早期的软件文档主要指的是用户手册,根据BarkerT.

新!!: 契约式设计和软件文档 · 查看更多 »

霍尔逻辑

霍爾邏輯(Hoare Logic),又稱弗洛伊德-霍爾邏輯(Floyd–Hoare logic),是英国计算机科学家東尼·霍爾开发的形式系统,这个系统的用途是为了使用严格的数理逻辑推理來替计算机程序的正确性提供一组逻辑规则。 這個想法起源於罗伯特·弗洛伊德於較早的研究,他为流程图提供了类似的系统。東尼·霍爾於1969年首次發表,随后为其他研究者所精制。.

新!!: 契约式设计和霍尔逻辑 · 查看更多 »

Liskov代換原則

#重定向 里氏替换原则.

新!!: 契约式设计和Liskov代換原則 · 查看更多 »

Perl 6

Perl 6是程式語言Perl语言的后续。由于Perl 6语言语法與Perl 5不同,因此,可以把它看作一种新的程式語言,尽管其计划提供Perl 5的兼容模式。 Perl 6拥有丰富的现代语言特征,拉里·沃尔计划用重新定义正規表達式和增加函數式程式語言的特征,使之成为可演化的语言。为保证Perl 6和Perl社区的持续稳定发展,Perl 6编译器需要使用Perl 6来重写。为保证Perl语言原有函式庫的重用,编译器还计划提供同Perl 5语言的兼容模式。 由于Perl 6语言的语法特征和要求,Perl 6编译器实现非常复杂,同时,自由軟體社群的资源相对贫乏。因此,Perl 6编译器的开发显得相当缓慢。 2010年7月,Rakudo的Rakudo Star,作为主要版本的试验品发布。这一发布的目的是为了让人们有一个可基本用于实际的编译器,以方便编写程序,以及反映需求(Perl6的规范尚未冻结,以期根据人们的使用体验以及编译器的实现等来增补某些特性)。.

新!!: 契约式设计和Perl 6 · 查看更多 »

Racket

Racket (原名 PLT Scheme) 是個通用、多範型,屬於Lisp家族的函數式程序设计語言,它的設計目之一是為了提供一種語言創造、設計與實作的平台,Racket被廣泛應用在腳本程式設計、通用程式設計、電腦科學教育和學術研究等不同領域。 Racket有一個實作平台,包含了執行環境、函数庫、即時編譯器(JIT compiler)等等,還有提供一個以Racket本身寫成的開發環境 DrRacket (原名 DrScheme)。 Racket平台的發行版本是免費且開放原始碼的,以授權發行,所有由社群所編寫的擴充功能和套件都會被上傳到 PLaneT(一個網頁套件發佈系統)。.

新!!: 契约式设计和Racket · 查看更多 »

SPARK

SPARK是一种安全的、经正式定义的编程语言。它被设计用来支持一些安全或商业集成为关键因素的应用软件的设计。SPARK有基于Ada 83和Ada 95的版本。最新版本RavenSPARK包含了Ravenscar Tasking Profile来支持高度集成应用中的同步。SPARK的正式和明确的定义使得多种静态分析技术在SPARK源代码的应用中成为可能。.

新!!: 契约式设计和SPARK · 查看更多 »

Static code analysis

#重定向 靜態程序分析.

新!!: 契约式设计和Static code analysis · 查看更多 »

Vala

Vala是一門物件導向的程式語言,由編譯器產生C語言代碼和使用GObject系統,允许在Gnome运行时库的基础上使用一些现代的编程技巧。通过使用GLib和GObject,Vala提供了动态类型系统和补助内存管理的功能。 Vala借鉴了大量的C#语法,因此看起来非常相似。.

新!!: 契约式设计和Vala · 查看更多 »

斷言 (程式)

在程式設計中,斷言(assertion)是一種放在程式中的一階邏輯(如一個結果為真或是假的邏輯判斷式),目的是為了標示與驗證程式開發者預期的結果-當程式執行到斷言的位置時,對應的斷言應該為真。若斷言不為真時,程式會中止執行,並給出錯誤訊息。 例如,以下的程式包括二個斷言: x.

新!!: 契约式设计和斷言 (程式) · 查看更多 »

传出传入
嘿!我们在Facebook上吧! »