- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WORD格式可编辑
专业知识整理分享
自动程序设计
自动程序设计的含义
自动程序设计,是指采用自动化的手段进行程序设计的技术。后引申为采用自动化手段进行开发的技术和过程。其目的是提高生产率和产品质量,并且它在软件工程、流水线控制等领域均有广泛的运用。
自动程序设计的含义按广义和狭义,横向和纵向,可以分成几个类型。
广义含义
按照广义的理解,自动程序设计是尽可能借助计算机系统,尤指自动的程序设计系统进行工程开发的过程。这里的开发指的是,从问题的非形式描述,经形式的软件功能规格说明、设计规格说明,到可执行的程序代码、调试,及至确认、交付使用的全过程。
狭义含义
按照狭义的理解,自动程序设计指的是从形式的功能和规格的说明,到可执行的程序代码的这个过程的自动化。
纵向理解
按纵向理解,低级的自动化指从设计规格说明,到可执行的程序代码这一过程的自动化,系统只是起到了程序员的作用;中级的自动化指的是从除了设计还有功能的规格说明,到可执行的程序代码的过程的自动化,系统除了起到程序人员的作用外,还起设计员、系统分析员的作用;高级的自动化则解决了从非形式的描述到可执行的代码当中整个过程的自动化问题,系统除了起程序员、设计员、系统分析员的作用外,还起到了领域专家的部分作用。
横向理解
按横向理解,在上述各种纵向理解级别上,根据人工干预的程度,又可区分各种不同的自动化级别。
自动程序设计的任务是设计一个程序系统,它接受关于所设计的程序要求实现某个目标非常高级描述作为其输入,然后自动生成一个能完成这个目标的具体程序。在某种意义上说,编译程序实际上就是去做“自动程序设计”的工作。编译程序是接受一段有关干某件事情的源码说明(源程序),然后转换成一个目标码(目的程序)程序去完成这件事情。而这里所说的自动程序设计相当于一种“超级编译程序”,它要求能对高级描述进行处理,通过规划过程,生成的到所需的程序。因而自动程序设计所涉及的基本问题与定理证明和机器人学有关,要用到人工智能的方法来实现,它也是软件工程和人工智能相接合的课题。
自动程序设计的关键技术
从关键技术来看,自动程序设计的实现途径可归结为演绎综合、程序转换、实例推广,以及过程实现等4种。
①演绎综合。其理论基础是,数学定理的构造式证明可等价于程序推导。对要生成的程序,用户给出它的输入、输出数据必须满足的条件,条件以某种形式语言(如谓词演算)陈述。对于所有这些满足条件的输入,要求定理证明程序证明存在一个满足输出条件的输出,从该证明中析取出所欲生成的程序。这一途径的优点是理论基础坚实,但迄今只析取出一些较小的样例,较难用于较大规模的程序。
②程序转换。将一规格说明或程序转换成另一功能等价的规格说明或程序。从抽象级别的异同来看,可区分纵向转换与横向转换。前者是由抽象级别较高的规格说明或程序转换成与之功能等价的抽象级别较低的规格说明或程序;后者是在相同抽象级别上的规格说明或程序间的功能等价转换。
③实例推广。借助反映程序行为的实例来构作程序,一般有两种方法。一种是输入/输出对法:借助给出一组输入/输出对,逐步导出适用于一类问题的程序。另一种是部分程序轨迹法:通过所给实例的运行轨迹,逐步导出程序。这一途径的思想诱人,为用户称道,但欲归纳出一定规模的程序,难度颇大。
④过程实现。在对应规格说明中的各个成分,其转换目标的相应成分明确,而且相应的转换映射也明确的前提下,该映射可借助过程实现。目前一般采取设计甚高级语言(如SETL),其中含有全称量词,存在量词等,以便于书写软件设计规格说明的成分。但是,SETL本身还不能算是功能规格说明语言,不能算是功能性语言。这一途径的实现效率较高,困难点在于从非算法性成分到算法性成分的转换。因此,迄今采用这一途径的系统一般自动化程度不高,很难实现从功能规格说明到可执行的程序代码的自动转换。
此外,其关键的技术还包括了程序综合,程序验证,以及对程序调试的概念的推广。程序综合指的是自动编出的一份程序来获得某种指定结果的任务,程序验证指论证一份给定的程序将获得某种指定结果的任务两者是紧密相关的,许多自动程序设计系统将产生一份输出程序的验证作为额外的收益。
把程序调试的概念推广到作为问题求解的策略,是自动程序设计研究的一项重要内容。实践已显示出,对与程序设计或机器人的控制的问题,先产生一个代价不太高的有错误的解,然后再进行修改的作法,要比坚持要求第一次得到的解就完全没有缺陷的作法,通常效率要高的多。
自动程序设计的内容
在计算机技术发展初期,编译程序的出现被认为是自动程序设计方面的一大进展。1956年,美国国际商业机器公司(IBM)建立的第一个编译程序FORTRAN就曾被称为自动程序设计系统。
随
原创力文档


文档评论(0)