形式化验证这个软件工程专业有意义吗,大学生毕业后出路的出路

欢迎你,    
2015考研:软件工程专业模拟题--第10章型形式化方法习题
18:04:31 来源:新东方在线编辑整理
最新资讯:
考研关注:
精华推荐:
课程推荐:
  2015暑期复习已经过半,新东方在线小编为大家整理了软件工程专业的考研模拟题,希望考研考生们多学多练,顺利考研。  用于开发计算机系统的形式化方法是描述系统性质的基于数学的技术。它一般用于一致性检查、类型检查、有效性验证、行为预测以及设计求精验证。软件工程这一章节的内容主要包括:形式化方法的概念、有限状态机、Petri出网、净室方等。  一、相关习题:  1. 形式化规约语言由哪几部分组成?  2.有限状态机有哪些优缺点?  3 用系统工程方法开发整个系统或产品需求,一旦功能已被分配给系统的软件元素,净室增量的流水线被初始化后将进行哪些工作?  4. 软件工程的净室方法为什么没有得到广泛的使用?  5 在客户/服务器模式的系统结构中有哪几种服务器.各实现什么样的功能?  二、参考答案:  1. 形式化规约语言通常由三个主要的成分构成:  (1)语法:定义用于表示规约的特定符号。  (2)语义:帮助定义用于描述系统的“对象的全域”。  (3)一组关系:定义确定出哪个对象真正满足规约的规则。  2. 有限状态机的优点在于简单易用,状态间的关系能够直观看到中时,其最大的缺点是:任何时刻系统只能有一个状态,无法表示并发性,不能描述异步并发的系统。另外,在系统部件较多时.状态数随之增加,导致复杂性显著增长。  3.将完成如下任务:  (1)增量计划。开发一个采用增量策略的项目计划,建立每个增量的功能、小,以及净室开发进度表。  (2)需求收集。为每个增量开发一个客户级需求的更详细的描述。  (3)盒结构规约。使用一个运用盒结构的规约方法来描述功能规约。  (4)形式化设计。使用意结构方法,净室设计是规约的自然的无缝的扩展。虽然,在两个活动间可进行清楚的区分,但规约(称为“黑盒”)是被递进地求精(在一个增量内)以成为类似于体系结构的和过程的设计(分别称为“状态盒”和“清晰盒%)  (5)正确性验证。净室小组对设计及代码进行一系列严格的正确性验证活动。正确性验证的第一层次通过应用一组“正确性问题”来进行,如果这没有证明规约是正确的,则使用更形式化的验证方法。  (6)代码生成、检查和验证。以某种专门语言表示的盒结构规约被转换为合适的程序设计语言。然后,使用标准的走查或检查技术来保证代码和盒结构的语义相符性,以及代码的语法正确性。然后,对源代码进行正确性验证。  (7)统计性测试计划。分析软件的项目级使用情况,计划和设计一组执行用途的“概率分布”的测试用例。  (8)统计性使用测试。由于对计算机软件进行彻底测试几乎是不可能的,因此,总需要设计有限数量的测试用例。统计性使用技术执行一系列由特定对象的所有用户的所有可能的程序执行的统计样本所导出的测试。  (9)认证。一旦完成验证、检查和使用测试.则开始进行增量集成前的认证工作  4 原因在于:  (1)净室方法学太理论、太数学化,以至难于在真实的软件开发中使用。  (2)不需要进行单元测试,而是进行正确性验证和统计质量控制,与当前大多数软件开发方式背离。  (3)软件开发产业的成熟度。净室过程的使用需要在整个生命周期阶段定义的过程的严格的应用,因为大多数软件企业的运作还处于特定的阶段(级别),因此,还没有准备好应用哪些技术。  5 在客户/服务器结构中,位于另一个计算机上层的计算机称为服务器,而在下层的计算机称为客户机。客户请求服务.而服务器提供服务。服务器的种类有:  (1)文件服务器。客户请求在某文件中的特定记录.服务器通过网络传输这些记录到客户。  (2)数据库服务器。客户发送结构化查询语言(sQL)请求到服务器,这些是作为消息在网络上传输。服务器处理sQL请求并找到请求的信息,仅将结果传送回客户。  〔3)事务服务器。客户发送在服务器端调用远程过程的请求,远程过程可以是一组sQL语句。当请求导致远程过程的执行并将结果传输回客户时,发生一个事务。  (4)组件服务器。当服务器提供一组应用,它们使得通信能够在客户间使用文本、图像、公告板、视频,以及其他表示进行,则存在一个组件体系结构。&&  八月伊始,部分高校2015年已经发布,请广大15年考生关注,预计到8月底9月初,会陆续发布完成,新东方在线小编第一时间跟踪发布,请大家!另有、等最新,帮助考生及时了解目标院校招生政策及信息。&
本文关键字:
考研网络课堂
考研公共课
考研专业课
考研直通车
快速响应:购课即开展择校择专业指导,且有一次更换所报专业课机会;
专属小灶:名师直播互动式教学,真正的“零”起点授课,就是让你入门;
专属辅导:班主任+科目老师,多对一全程辅导,智能讲练结合,随时检验效果;
签约重读:一科不过,全科重读,业内最低重读标准
2018考研名校定向小班专业课-重庆大学戏...
2018考研名校定向小班专业课-北京交通大...
2018考研名校定向小班专业课-上海交通大...
2018考研名校定向小班专业课-山东大学87...
2018考研名校定向小班专业课-北京交通大...
2018考研名校定向小班专业课-西南大学41...
2018考研名校定向小班专业课-河北工业大...
2018考研名校定向小班专业课-四川师范大...
2018考研名校定向小班专业课-四川师范大...
2018考研名校定向小班专业课-暨南大学82...
版权及免责声明
1,"新东方在线"上的内容,包括文章、资料、资讯等, 本网注明"稿件来源:新东方在线"的,其版权 均为"新东方在线"或北京新东方迅程网络科技有限公司所有 ,任何公司、媒体、网站或个人未经授权不得转载、链接、转贴或以其他方式使用。已经得到 "新东方在线"许可 的媒体、网站,在使用时必须注明"稿件来源:新东方",违者本网站将依法追究责任。
2, "新东方在线" 未注明"稿件来源:新东方"的 文章、资料、资讯等 均为转载稿,本网站转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如其他媒体、网站或个人从本网站下载使用,必须保留本网站注明的"稿件来源",并自负版权等法律责任。如擅自篡改为 " 稿件来源:新东方 " ,本网站将依法追究其法律责任。
3,如本网转载稿涉及版权等问题,请作者见稿后在两周内与新东方在线联系。
考研网络课堂
<a rel="nofollow" href="/alliance/clickword?userid=fffed9efcd60001&kid=ffced1759&url=/kaoyan/4/learning/317/14/1552528" title="2018考研政治全程班试听
考研热点专题
考研实用 o 工具
考研交流 o 下载
考研课程排行榜
考研公开课2014年软件工程专业硕士研究生培养方案软件工程专业
软件工程 (福建师范大学)
电气信息类
软件工程(国际班) 本专业以外资企业和软件企业需求为导向,以国际化工程教育专业认证和工程师注册标准为准则,面向国际工程实践和技术前沿,培养以计算机应用软件开发为基本技能,掌握扎实的计算机科学及软件工程基础理论和软件技术与工程管理专业知识,具有较高外语能力、软件开发能力、工程实践创新能力,具备较强国际竞争力的高层次、应用型、复合型软件工程专门人才。可进入合作办学的国外著名高校继续完成学业(含硕士、博士研究生);可在跨国软件公司、软件服务外包企业和其它各类软件公司等从事应用软件系统的需求分析、设计、测试、系统维护和项目管理等;也可在企事业单位以及行政管理、金融税务、教育、医疗卫生等部门从事相关工作。 课程结构: 高等数学、线性代数、离散数学、软件开发的形式化方法、C语言程序设计、C++ /Java面向对象程序设计、数据结构与算法、数据库系统、计算机网络、操作系统原理、算法分析与设计、人工智能、智能算法及应用、Linux程序设计、软件工程导论、需求工程、系统分析与设计、设计模式与软件体系结构、软件测试技术、基于JSP的Web应用开发、J2EE中间件技术、课程综合设计、工程实践、毕业设计等。连续7年与国外高校和国内企业联合办学,主要课程与合作办学的国外高校接轨,专任教师由本院教师、国外教师和企业高级技术人员组成。强化外语听、说、读、写能力培养,从大学一年级起就有外籍教师参与开设英语口语课,并设雅思英语课程。部分专业采用双语教学,有50%的专业课程采用英文原版教材。 专业实践:参与课程实践和企业工程实践、大学生课外科技创新计划项目、各级专业技能竞赛及教师科研课题等。 软件工程(嵌入式软件) 本专业以软件企业人才需求为导向,面向国民经济信息化及海峡西岸经济区建设发展的人才需求和技术前沿,培养德、智、体全面发展的,掌握扎实的计算机基础理论、嵌入式软件技术与工程管理的专业知识,具有较强的外语能力、创新能力、工程实践能力的高层次、应用型、复合型软件工程专门人才。嵌入式软件方向的毕业生可进入电子信息、通信和软件行业的相关企业工作,具有就业面广、需求量大的特点。课程结构:高等数学、线性代数、离散数学、计算机组成原理、C语言程序设计、C++ /Java面向对象程序设计、数据结构与算法、数据库系统、编译原理、电子技术基础、嵌入式操作系统原理、嵌入式系统程序设计、计算机网络、系统分析与设计、软件测试技术、基于JSP的Web应用开发、课程综合设计、工程实践、毕业设计等。 专业实践:参与课程和企业工程实践、大学生课外科技创新计划项目、各级专业技能竞赛、参与教师科研课题等。 软件工程 本专业以软件企业人才需求为导向,面向国民经济信息化及海峡西岸经济区建设和发展的人才需求和技术前沿,培养德、智、体全面发展的,掌握扎实的计算机基础理论工程管理专业知识,能熟练运用外语,具有创新、创业和服务意识,具有软件开发实践和项目组织的初步经验,能适应技术进步和社会需求变化的高素质、实用型软件工程专门人才。毕业后能在国内外IT企业和软件公司、国内各种企事业单位以及行政管理、金融税务、教育、医疗卫生等部门从事应用软件系统的项目管理、需求分析、设计、测试、系统维护和管理等工作;学习成绩优秀者可通过“2+2”、“3+1”国际合作办学模式出国留学深造,或继续攻读国内外计算机软件相关学科专业的硕士、博士研究生。 课程结构:高等数学、线性代数、离散数学、C语言程序设计、C++面向对象程序设计、C#.Net应用开发、数据结构与算法、数据库系统、计算机网络、操作系统原理、Windows核心编程、Linux程序设计、软件工程导论、需求工程、软件设计、系统分析与设计、设计模式与软件体系结构、软件测试技术、游戏脚本与策划、游戏开发与设计、课程综合设计、工程实践、毕业设计等。 专业实践:参与大学生课外科技创新计划、教师科研课题、专业竞赛、企业工程实践等。
按院校层次看
按院校类型看
查找指定院校
& 2015 院校大全
联系我们:16222人阅读
软件工程(222)
软件工程研究(16)
&&&&&& 友情提示:本文理论性和专业性较强,如果木有接触过该领域,读起来可能会有一点点吃力,!本文是Sunny结合多份资料综合整理而成,有点凌乱,见谅!&&&&&& &软件形式化方法(Formal Method)在软件开发中一直都受到多方面的争议。持肯定态度的拥护者认为形式化方法会引起软件开发的革命,另一些持否定态度者则怀疑甚至反对将数学引入软件开发过程中。&&&&&& 形式化开发方法的一些争议或缺陷主要体现在:&&&&&& (1) 形式化方法中所包含的数学理论,限制了大多数程序设计人员的学习和使用;&&&&&& (2) 认为采用形式化方法会延误项目开发周期、增加开发费用;&&&&&& (3) 许多流行的形式化方法对于较小规模的项目是有效的,但却很难应用于一些大型系统;&&&&&& (4) 形式化方法不能确保开发出完全正确的软件;&&&&&& (5) 缺乏对软件生命周期内各个阶段提供全面支持的形式化方法;&&&&&& 等。&&&&&& 从广义上讲,形式化方法是借助数学的方法来解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动。狭义的讲,形式化方法是运用形式化语言,进行形式化的规格描述、模型推理和验证的方法。就形式化建模而言,形式化表示必须包含一组定义其语法语义的形式化规则。这些规则可用于分析给定的表达式是否符合语法规定,或证明该表达式具有某种性质。&&&&&&& 关于形式化方法:悲观者的角度&&&&&& 形式化方法是为数学家准备的&&&&&& 形式化方法仅供从事形式化研究的人使用&&&&&& 从事形式化研究的人仅使用形式化方法&&&&&& 形式化方法的运用将延缓软件开发进度&&&&&& 形式化方法的运用将提高软件开发成本&&&&&& 形式化方法仅应用于开发安全要求极高的系统&&&&&& 形式化方法仅被用于无关紧要的系统,且缺少工具支持&&&&&&& 关于形式化方法:乐观者的角度&&&&&& &&&&&& 运用形式化方法将开发出完美的软件&&&&&& 形式化方法可以替换传统的软件工程方法&&&&&& 形式化方法的出发点是数学逻辑方法,其目的是开发可靠的软件产品。从软件开发来讲,形式化方法目前并非软件开发的主流。从软件发展看,早期的软件是用于数值计算,程序语言侧重于函数和算法的描述,后来数据库的应用和数据结构逐渐变得重要。现在的软件更为复杂,因此,对象、组件、接口、通讯、开放等成为非常重要的概念。从软件工程方法来讲,有一套描述这些概念的办法,比如说用图形、表格、逻辑、自然语言等,交叉使用以描述一个系统的各个方面。因此换一个角度来考虑,我们也可以以目前常用的软件开发方法为出发点,研究怎样将这些方法形式化,使软件系统的描述精确化,以减少可能的误解所带来的问题;或以目前常用的软件开发过程为出发点,研究怎样在软件开发过程中增加一些形式化方法的应用,以提高软件的可靠性。&&&&&&& 形式化方法可以分为形式化描述和建立在形式化描述基础之上的形式化开发。形式化的描述就是用形式化的语言(具有严格的语法语义定义的语言)做描述。形式化的软件开发,就是用形式化的语言来描述软件需求和特征,并且通过推理验证来保证最终的软件产品是否满足这些需求和具备这些特征。这样的验证当然得建立在严格的语法语义的基础之上的。在实际应用中,这是不容易做到的。形式化方法研究的目的就是希望能够提供更好的理论、方法和工具,扩大形式化方法的应用范围和使用价值。&&&&&&& 形式化方法的意义在于它能帮助发现其它方法不容易发现的系统描述的不一致、不明确或不完整,有助于增加软件开发人员对系统的理解,因此形式化方法是提高软件系统,特别是Safety-Critical系统的安全性与可靠性的重要手段。最早的形式化方法是逻辑与逻辑推理,它的目标是使推理机械化。从广义上讲,这一目标受到许多挫折,比如说逻辑系统的不完备性(incompleteness)、逻辑系统的不可判定性(undecidability)、自动推理的难处理性(intractability)。但是在一些实际应用上,逻辑方法和自动推理还是起着非常大的作用。&&&&&&& 形式化方法在软件开发中能够起到的作用是多方面的。首先是对软件需求的描述,软件需求的描述是软件开发的基础。比如说一般非形式化的描述很可能导致描述的不明确和不一致,如果描述的不明确和不一致将导致设计、编程的错误,将来的修改所要付出的代价就非常大了,如果导致的错误没有被发现,则影响程序的可靠和使用。形式化方法则要求描述的明确性,而描述的不一致性也就相对易于发现。其次是对软件设计的描述。软件设计的描述和软件需求的描述一样重要,形式化方法的优点对于软件需求的描述同样适用于软件设计的描述,另外由于有了软件需求的形式化描述,我们可以检验软件的设计是否满足软件的要求。对于编程来讲,我们可以考虑自动代码生成。对于一些简单的系统,形式化的描述有可能直接转换成可执行程序,这就简化了软件开发过程,节约了资源和减少了出错的可能性。另外,形式化方法可以用于程序的验证,以保证程序的正确性。对于测试来讲,形式化方法可用于测试用例的自动生成,这可以节约许多时间和在一定程度上保证测试用例的覆盖率。&&&&&&&& 形式化方法原则上就是用数学与逻辑的方法描述和验证软件。从描述上讲,一方面是系统或程序的描述,另一方面是性质的描述。这些可以用一种或多种语言来描述。这些语言包括命题逻辑,一阶逻辑,高阶逻辑,代数,状态机,并发状态机,自动机,计算树逻辑,线性时序逻辑,进程代数, π-演算, μ-演算,特殊的程序语言,以及程序语言的子集等。从验证来讲,主要有两类方法,一类是以逻辑推理为基础,另一类则以穷尽搜索为基础。逻辑推理有 natural deduction, sequent calculus, resolution 以及Hoare-logic 等方法,穷尽搜索方法统称为模型检测。这类方法与系统或程序以及系统性质的表示有很大的关系,比如说符号模型检测,其基本原理是用命题逻辑公式表示状态转换关系,用不动点算法计算状态的可达性以及这些状态是否满足某些性质。&&&&&&& 形式化方法的应用在电路设计和协议设计上都取得了很大的成绩,但是对于软件来讲还有很多没有解决的问题。软件的描述要比电路和协议复杂,一个软件描述所包含的状态空间通常来讲可以是无限的,因此验证的难度很大。逻辑推理的不足之处在于推理的难度,对于稍微复杂的系统,自动化的推理就难以胜任。人为的推理有很大的缺点,除了费时费力外,比如说一个定理推不出来,并不能说明这个定理不成立,很可能是推理方法和策略应用不当。模型检测的好处在于它有全自动化的检测过程,并且如果一个性质不满足,它能给出这个性质不满足的理由,我们即可据此对我们的系统描述进行改进。模型检测的困难首先是它所能检测的是有限状态模型。这样对于一般软件来讲,需要有一个从任意状态到有限状态的建模过程,并且这样的一个模型的状态空间会面临组合爆炸的问题。&&&&&&& 形式验证一般被称为形式化验证方法,是相对于传统的验证(模拟、仿真和测试)而言的。形式化验证方法的主要思路就是使用数学的公式、定理和系统来验证一个系统的正确性等。目前的形式化验证方法可以用于验证硬件系统、软件系统和其他系统,而且形式化验证的技术目前也已经发展到不但可以验证系统的功能正确性(有没有错误),而且可以验证系统的性能指标(功耗、散热、延迟等等)。形式化验证方法主要可以分为三种:定理证明、模型检测和等价性验证。定理证明的基本原理是选定一个数学逻辑体系,并用其中的公式来描述(如软、硬件)系统和系统性质刻画,然后在一定的数学逻辑(如hol逻辑)体系中依据此体系的公理、定理、推导规则和系统描述公式,看看能不能推导出系统的性质刻画公式,如果可以的话验证成功。模型检测的原理比较简单但是非常实用,它将(如软、硬件)系统建模成有限状态系统(一般成为keripke结构),系统的性质刻画用时序逻辑公式表示(CTL,LTL等),而后在此模型上来验证性质刻画的正确性,模型检测于定理证明相比是有很大优势的,他可以全自动地验证,不需要人工干预,而定理证明则在一些关键推导路径中需要数学家控制。还有一种是等价性验证,等价性验证其实是一种半形式话的技术,同前两种验证正确性的技术不同,它验证的是设计的一致性,即不同设计阶段的设计是否功能相同,这种技术中一般采用符号的方法和增量的方法,而且由于这种方法和硬件电路紧密结合,所以电路验证的一些传统方法也大量应用于此中方法中来,比如ATPG技术等。如大家使用的Synopsys的Formality本质上就是一个等价性验证器。形式化验证是非常有用的,只是国内作这一行的人太少。大家可以看看Synopsys和Cadence两家公司,它们都是从形式化验证起家的,然后转到目前流行的将设计和验证统一在一起,即“设计验证”领域。&&&& &&&&&&&&& 软件形式化方法研究内容:&&& 形式化语言(形式化描述、形式规约):怎样描述软件系统及其行为模式;更好地刻画软件系统的性质,比如说,通讯、分布、开放、移动;各种语言的应用、比较,语言与语言之间的转换;开发相应的软件工具。&&& 形式化验证(形式验证):怎样验证软件系统符合给定的行为模式;更有效地验证软件系统的性质,比如说,自动化、速度快、内存需求少;各种方法的应用、比较;开发相应的软件工具。&&&& 具体来说,软件形式化方法包括以下几个主要研究方向:&&&&(1) 基础概念:复合、抽象、重用模型、数学理论组合、数据结构及算法。需要对如何复合方法、复合规格、复合模型、复合理论、复合证明等进一步的理解;需要开发出将整体特性分解为易于验证的局部特性的有效方法;实际系统在规格和验证之前都要进行某种程度上的抽象,需要研究出评判抽象层次合理与否的方法;重用不仅可以提高开发效率,而且可以提高软件的可靠性,应当研究可重用模型和理论;许多安全关键反应式系统是数字和模拟混合的,需要连续和离散两个范畴内数学基础支撑的混杂系统理论和技术支撑;大规模、复杂软件中搜索空间是巨大的,需要研究出新的数据结构和算法。&&& (2) 形式化方法与面向对象方法的结合:这已经成为软件工程领域的一个研究热点,例如:Statecharts、Petri网、Z语言、VDM等,以及与面向对象方法结合产生的Objectcharts、面向对象Petri网、Object-Z、Z++、VDM++等。这方面的研究体现在两个方面:利用面向对象结构来提高形式符号的表达能力;使用形式化方法来分析面向对象的语义或提高这些标记符号的表达对象概念的能力。形式化方法和其他传统软件开发方法相结合以达到取长补短的目的,也是值得研究的课题。&&& (3) 工具开发:具有良好用户界面、易于学习和操作简单的形式化方法支撑工具,对于形式化方法的推广应用是大有裨益的。追求通用的完善的形式化方法及其支撑工具是不现实的,侧重于如下某一个或几个方面准则的特色方法和工具是未来研究的重点。这些准则包括:一旦开始使用之后尽早得到明显的效益;效益随着开发者的了解深入和熟练而增加;单一规格可以在软件开发生命周期的多个阶段取得效益;能和其他通用编程语言或方法交互使用;工具应当像编译器那样易于使用、输出,也易于阅读;概念和工具应当易于入门和学习掌握;软件特性分析有所侧重;支持渐进软件开发,允许部分规格和验证。此外,特定问题域的形式化方法及其工具研究也是非常重要的。】
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2208035次
积分:26306
积分:26306
排名:第181名
原创:214篇
转载:27篇
评论:1827条
刘伟(Sunny),中南大学计算机应用技术博士,国家认证系统分析师(2005年),国家认证系统架构设计师(2009年,全国第四名),高级程序员,数据库系统工程师,MCSE,MCDBA,CASI专业顾问与企业内训讲师。具有十多年软件开发、项目管理及教育培训经验,曾在NIIT(印度国家信息技术学院)担任高级讲师,主持和参与30多个软件项目的开发工作,并给国内多家公司提供软件开发、软件设计等培训服务,现主要致力于软件工程、数据挖掘等领域的教学、推广和研究工作。技术专长:软件架构、设计模式、UML、OOAD、数据挖掘等。已出版设计模式书籍四本:(清华大学出版社,2011年)、(清华大学出版社,2012年)、《设计模式的艺术——软件开发人员内功修炼之道》(清华大学出版社,2013年)、《C#设计模式》(清华大学出版社,2013年)。架构师之家站长。
E-mail:weiliu_
微博地址:
文章:12篇
阅读:87714
阅读:194749
文章:12篇
阅读:111653
(1)(3)(4)(4)(11)(5)(7)(18)(1)(1)(7)(8)(4)(25)(15)(6)(4)(14)(11)(25)(6)(15)(36)(3)(3)(1)(1)(1)(9)

我要回帖

更多关于 形式化验证工具 的文章

 

随机推荐