Software Specification

I. Hayes, S. King
{"title":"Software Specification","authors":"I. Hayes, S. King","doi":"10.1145/3477355.3477367","DOIUrl":null,"url":null,"abstract":"designs that refined a specification. Those ideas were later formalised by Ib’s colleague Carroll Morgan in his refinement calculus [Morgan 1988].8 A further line of research was sparked as part of the specification of checkpointing within the CICS transaction processing system using Tony’s language CSP [Hoare 1985a]. Checkpoints were needed to allow the system to restart in a valid state when a system failure occurred. The version of CSP at that time did not provide a straightforward approach to specifying checkpoints, but Tony was able to extend CSP to include interrupts [Hoare 1985a, section 5.4], which provided a general mechanism that could be used for specifying checkpoints. 11.10 Conclusions From his early days of research in computing Tony has been motivated to solve real-world problems by using mathematically based theories to give a firm founda­ tion for reasoning about programs and specifications, and the refinement relation between them. ∙ Tony’s research on reasoning about programs using triples of the form p{c}q [Hoare 1969] formed the basis for specifying operations using preconditions and postconditions, ∙ Tony’s research on defining programming language data types via their alge­ bra properties [Hoare 1972b] pioneered the use of algebraic specifications of data types, and ∙ Tony’s research on the correctness of data representations pioneered the use of abstract data structures and types [Hoare 1972a]. Approaches to both formal specification of computer systems and refinement of those specifications to code owe much to Tony’s pioneering work in the field. References J.-R. Abrial. 1982. The Specification Language Z: Basic Library. Internal report, Programming Research Group, Oxford University. J.-R. Abrial, S. A. Schuman, and B. Meyer. 1980. Specification language. In R. M. McKeag and A. M. Macnaghten (Eds.), On the Construction of Programs: An Advanced Course. Cambridge University Press, UK, 343–410. R.-J. Back. 1980. Correctness Preserving Program Refinements: Proof Theory and Applications. Tract 131, Mathematisch Centrum, Amsterdam. 8. Similar ideas were previously explored by others [Schwarz 1977, Back 1980, Morris 1987]. 268 Chapter 11 Software Specification M. B. Carpenter and H. K. Hallman. 1985. Quality emphasis at IBM’s Software Engineering Institute. IBM Syst. J. 24, 2, 121–133. DOI: https://doi.org/10.1147/sj.242.0121. B. P. Collins, J. E. Nicholls, and I. H. Sørensen. December 1987. Introducing Formal Methods: The CICS Experience with Z. Technical Report TR12.260, IBM, Hursley Park. R. J. Colvin, I. J. Hayes, and L. A. Meinicke. 2016. Designing a semantic model for a widespectrum language with concurrency. Form. Asp. Comput. 29, 853–875. ISSN 0934-5043. DOI: https://doi.org/10.1007/s00165-017-0416-4. E. W. Dijkstra. 1975. Guarded commands, nondeterminacy, and a formal derivation of pro­ grams. Commun. ACM 18, 453–458. DOI: https://doi.org/10.1145/360933.360975. E. W. Dijkstra. 1976. A Discipline of Programming. Prentice-Hall. R. W. Floyd. 1967. Assigning meaning to programs. Math. Asp. Comput. Sci. 19, 19–32. P. Gardiner and C. Morgan. 1993. A single complete rule for data refinement. Form. Asp. Comput. 5, 367–382. DOI: https://doi.org/10.1007/BF01212407. D. Gries. 1981. The Science of Programming. Springer-Verlag. I. J. Hayes (Ed.). 1993. Specification Case Studies (2nd. ed.). Prentice Hall International. ISBN 0-13-832544-8. I. J. Hayes and C. B. Jones. 1999. Specifications are not (necessarily) executable. In J. P. Bowen and M. G. Hinchey (Eds.), High-Integrity System Specification and Design. Springer, 563–581. ISBN 3-540-76226-4. (Previously published in IEE/BCS Softw. Eng. J. 4, 6, 330–338, November 1989.) J. He, C. A. R. Hoare, and J. W. Sanders. March 1986. Data refinement refined. In Proc. European Symposium on Programming (ESOP’86), Lecture Notes in Computer Science, Vol. 213. Springer, 187–196. DOI: https://doi.org/10.1007/3-540-16442-1_14. C. A. R. Hoare. 1968. Record handling. In F. Genuys (Ed.), Programming Languages. Academic Press, 291–397. C. A. R. Hoare. 1969. An axiomatic approach for computer programming. Commun. ACM 12, 583. Reprinted in Hoare [1989, chapter 4, 576–580]. C. A. R. Hoare. 1971. Procedures and parameters: An axiomatic approach. In E. Engeler (Ed.), Symposium on Semantics of Algorithmic Languages, volume 188 of Lecture Notes in Mathematics, Springer-Verlag. Reprinted in Hoare [1989, chapter 6, 102–116]. DOI: https://doi.org/10.1007/BFb0059696. C. A. R. Hoare. 1972a. Proof of correctness of data representations. Acta Inform. 1, 271–281 Also in D. Gries (Ed.). Programming Methodology. Springer-Verlag (1978). C. A. R. Hoare. 1972b. Notes on data structuring. In Structured Programming. Academic Press. C. A. R. Hoare. 1972c. Towards a theory of parallel programming. In C. A. R. Hoare and R. H. Perrott (Eds.), Operating System Techniques. Academic Press, 61–71. C. A. R. Hoare. 1974. Monitors: An operating system structuring concept. Commun. ACM 17, 10, 549–557. DOI: http://doi.acm.org/10.1145/355620.361161.","PeriodicalId":194610,"journal":{"name":"Theories of Programming","volume":" 9","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2021-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Theories of Programming","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3477355.3477367","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

Abstract

designs that refined a specification. Those ideas were later formalised by Ib’s colleague Carroll Morgan in his refinement calculus [Morgan 1988].8 A further line of research was sparked as part of the specification of checkpointing within the CICS transaction processing system using Tony’s language CSP [Hoare 1985a]. Checkpoints were needed to allow the system to restart in a valid state when a system failure occurred. The version of CSP at that time did not provide a straightforward approach to specifying checkpoints, but Tony was able to extend CSP to include interrupts [Hoare 1985a, section 5.4], which provided a general mechanism that could be used for specifying checkpoints. 11.10 Conclusions From his early days of research in computing Tony has been motivated to solve real-world problems by using mathematically based theories to give a firm founda­ tion for reasoning about programs and specifications, and the refinement relation between them. ∙ Tony’s research on reasoning about programs using triples of the form p{c}q [Hoare 1969] formed the basis for specifying operations using preconditions and postconditions, ∙ Tony’s research on defining programming language data types via their alge­ bra properties [Hoare 1972b] pioneered the use of algebraic specifications of data types, and ∙ Tony’s research on the correctness of data representations pioneered the use of abstract data structures and types [Hoare 1972a]. Approaches to both formal specification of computer systems and refinement of those specifications to code owe much to Tony’s pioneering work in the field. References J.-R. Abrial. 1982. The Specification Language Z: Basic Library. Internal report, Programming Research Group, Oxford University. J.-R. Abrial, S. A. Schuman, and B. Meyer. 1980. Specification language. In R. M. McKeag and A. M. Macnaghten (Eds.), On the Construction of Programs: An Advanced Course. Cambridge University Press, UK, 343–410. R.-J. Back. 1980. Correctness Preserving Program Refinements: Proof Theory and Applications. Tract 131, Mathematisch Centrum, Amsterdam. 8. Similar ideas were previously explored by others [Schwarz 1977, Back 1980, Morris 1987]. 268 Chapter 11 Software Specification M. B. Carpenter and H. K. Hallman. 1985. Quality emphasis at IBM’s Software Engineering Institute. IBM Syst. J. 24, 2, 121–133. DOI: https://doi.org/10.1147/sj.242.0121. B. P. Collins, J. E. Nicholls, and I. H. Sørensen. December 1987. Introducing Formal Methods: The CICS Experience with Z. Technical Report TR12.260, IBM, Hursley Park. R. J. Colvin, I. J. Hayes, and L. A. Meinicke. 2016. Designing a semantic model for a widespectrum language with concurrency. Form. Asp. Comput. 29, 853–875. ISSN 0934-5043. DOI: https://doi.org/10.1007/s00165-017-0416-4. E. W. Dijkstra. 1975. Guarded commands, nondeterminacy, and a formal derivation of pro­ grams. Commun. ACM 18, 453–458. DOI: https://doi.org/10.1145/360933.360975. E. W. Dijkstra. 1976. A Discipline of Programming. Prentice-Hall. R. W. Floyd. 1967. Assigning meaning to programs. Math. Asp. Comput. Sci. 19, 19–32. P. Gardiner and C. Morgan. 1993. A single complete rule for data refinement. Form. Asp. Comput. 5, 367–382. DOI: https://doi.org/10.1007/BF01212407. D. Gries. 1981. The Science of Programming. Springer-Verlag. I. J. Hayes (Ed.). 1993. Specification Case Studies (2nd. ed.). Prentice Hall International. ISBN 0-13-832544-8. I. J. Hayes and C. B. Jones. 1999. Specifications are not (necessarily) executable. In J. P. Bowen and M. G. Hinchey (Eds.), High-Integrity System Specification and Design. Springer, 563–581. ISBN 3-540-76226-4. (Previously published in IEE/BCS Softw. Eng. J. 4, 6, 330–338, November 1989.) J. He, C. A. R. Hoare, and J. W. Sanders. March 1986. Data refinement refined. In Proc. European Symposium on Programming (ESOP’86), Lecture Notes in Computer Science, Vol. 213. Springer, 187–196. DOI: https://doi.org/10.1007/3-540-16442-1_14. C. A. R. Hoare. 1968. Record handling. In F. Genuys (Ed.), Programming Languages. Academic Press, 291–397. C. A. R. Hoare. 1969. An axiomatic approach for computer programming. Commun. ACM 12, 583. Reprinted in Hoare [1989, chapter 4, 576–580]. C. A. R. Hoare. 1971. Procedures and parameters: An axiomatic approach. In E. Engeler (Ed.), Symposium on Semantics of Algorithmic Languages, volume 188 of Lecture Notes in Mathematics, Springer-Verlag. Reprinted in Hoare [1989, chapter 6, 102–116]. DOI: https://doi.org/10.1007/BFb0059696. C. A. R. Hoare. 1972a. Proof of correctness of data representations. Acta Inform. 1, 271–281 Also in D. Gries (Ed.). Programming Methodology. Springer-Verlag (1978). C. A. R. Hoare. 1972b. Notes on data structuring. In Structured Programming. Academic Press. C. A. R. Hoare. 1972c. Towards a theory of parallel programming. In C. A. R. Hoare and R. H. Perrott (Eds.), Operating System Techniques. Academic Press, 61–71. C. A. R. Hoare. 1974. Monitors: An operating system structuring concept. Commun. ACM 17, 10, 549–557. DOI: http://doi.acm.org/10.1145/355620.361161.
软件规范
改进规范的设计。这些想法后来被Ib的同事Carroll Morgan在他的细化演算中形式化[Morgan 1988]作为使用Tony的语言CSP的CICS事务处理系统中的检查点规范的一部分,进一步的研究被激发出来[Hoare 1985a]。需要检查点来允许系统在发生系统故障时以有效状态重新启动。当时的CSP版本并没有提供一种直接的方法来指定检查点,但是Tony能够将CSP扩展为包括中断[Hoare 1985a, section 5.4],这提供了一种可用于指定检查点的通用机制。从他早期的计算研究开始,托尼就被激励着通过使用基于数学的理论来解决现实世界的问题,为程序和规范的推理以及它们之间的细化关系奠定了坚实的基础。∙Tony使用p{c}q形式的三元组对程序进行推理的研究[Hoare 1969]形成了使用前置条件和后设条件指定操作的基础,∙Tony通过其大bra属性定义编程语言数据类型的研究[Hoare 1972b]开创了使用数据类型的代数规范,∙Tony对数据表示正确性的研究开创了使用抽象数据结构和类型[Hoare 1972a]。计算机系统的正式规范和将这些规范细化为代码的方法在很大程度上归功于Tony在该领域的开创性工作。J.-R引用。阿比尔》1982。规范语言Z:基本库。牛津大学编程研究小组内部报告。J.-R。S. A.舒曼和B.迈耶,1980。规范的语言。在R. M.麦基格和A. M.麦克纳格滕(编),关于程序的建设:一个高级课程。剑桥大学出版社,英国,343-410。R.-J。1980年回来。。保持正确性的程序改进:证明理论与应用。第131卷,阿姆斯特丹数学中心。类似的想法以前也被其他人探索过[Schwarz 1977, Back 1980, Morris 1987]。268第11章软件规范M. B. Carpenter和H. K. Hallman。1985。IBM软件工程研究所的质量重点。IBM系统。J. 24, 2, 121-133。DOI: https://doi.org/10.1147/sj.242.0121。B. P. Collins, J. E. Nicholls, I. H. s . rensen。1987年12月。正式方法的介绍:CICS的经验与Z.技术报告TR12.260, IBM, Hursley Park。R. J. Colvin, I. J. Hayes, L. A. Meinicke。2016。为具有并发性的广谱语言设计语义模型。的形式。Asp。计算机学报,29,853-875。ISSN 0934 - 5043。DOI: https://doi.org/10.1007/s00165 - 017 - 0416 - 4。e·w·迪克斯特拉,1975。受保护的命令、不确定性和程序的正式派生。Commun。中国科学院学报18,453-458。DOI: https://doi.org/10.1145/360933.360975。迪克斯特拉,1976。编程的一门学科。新世纪。r·w·弗洛伊德,1967。赋予程序意义。数学。Asp。第一版。科学19,19 - 32。P.加德纳和C.摩根,1993。一个完整的数据细化规则。的形式。Asp。计算,5,367 - 382。DOI: https://doi.org/10.1007/BF01212407。D. Gries, 1981。编程的科学。斯普林格出版社。海耶斯(主编)。1993. 规范案例研究(2)ed)。普伦蒂斯霍尔国际公司。ISBN 0-13-832544-8。海耶斯和琼斯,1999。规格说明(不一定)是可执行的。在J. P. Bowen和M. G. Hinchey(编),高完整性系统规范和设计。施普林格,563 - 581。ISBN 3-540-76226-4。(以前在ieee /BCS软件中发布。Eng。J. 4,6, 330-338, 1989年11月。)何,C. A. R.霍尔,J. W.桑德斯。1986年3月。数据精细化。《计算机科学》,2007年第1期,第2卷。施普林格,187 - 196。DOI: https://doi.org/10.1007/3 - 540 - 16442 - 1 - _14。C. A. R.霍尔,1968。记录处理。在F. Genuys(编辑),程序设计语言。学术出版社,291-397。C. A. R.霍尔,1969。计算机程序设计的公理化方法。Commun。Acm 12, 583。转载于Hoare [1989, chapter 4, 576-580]。C. A. R.霍尔,1971。程序和参数:一个公理化的方法。参见E.恩格尔(编),《算法语言语义研讨会》,《数学课堂讲稿》第188卷。转载于Hoare[1989,第6章,102-116]。DOI: https://doi.org/10.1007/BFb0059696。C. A. R.霍尔,1972a。数据表示的正确性证明。《信息学报》,1,271-281。编程方法。斯普林格出版社(1978)。C. A. R.霍尔。关于数据结构的说明。在结构化编程中。学术出版社。C. A. R.霍尔。走向并行编程理论。在C. A. R. Hoare和R. H. Perrott(编辑),操作系统技术。学术出版社,61-71。C. A. R.霍尔,1974。监视器:一个操作系统结构概念。Commun。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信