软件形式化方法意义 软件工程方法学的基本内容包括哪些

编程入门 行业动态 更新时间:2024-10-26 16:28:00

软件方法学是以方法为研究对象的软件学科。

软件工程方法为软件开发提供了 “如何做” 的技术; 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境; 过程是为了获得高质量的软件所需要完成的一系列任务框架,它规定了完成各项任务的工作步骤。

最具影响的是结构化方法、面向对象方法和形式化方法。

结构化方法

结构化方法的基本要点是:自顶向下、逐步求精、模块化设计、结构化编码。

结构化设计方法是以自顶向下,逐步求精,模块化为基点,以模块化,抽象,逐层分解求精,信息隐蔽化局部化和保持模块独立为准则的设计软件的数据架构和模块架构的方法学。

面向对象方法

面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

主要特征有:封装性、继承性、多态性。

OO方法的作用和意义决不只局限于编程技术,它是一种新的程序设计范型:面向对象程序设计范型;是信息系统开发的新方法论:面向对象方法学;是正在兴起的新技术:面向对象技术。

因此对OO也就是面向对象有关的内容进行学习应该进行更加深入和广泛的了解。

形式化方法

形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述、开发和验证。

形式化方法用于软件和硬件设计,使用适当的数学分析以提高设计的可靠性和Robust。但是,由于采用形式化方法的成本高意味着它们通常只用于开发注重安全性的高度整合的系统。

软件测试的意义和作用是什么?

软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误,提高软件的可靠性。它是软件生命周期中一项非常重要且非常复杂的工作,对软件可靠性保证具有极其重要的意义。在目前形式化方法和程序正确性证明技术还无望成为实用性方法的情况下,软件测试在将来相当一段时间内仍然是软件可靠性保证的有效方法。软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成软件开发项目。不足的测试势必使软件带着一些未揭露的隐藏错误投入运行,这将意味着更大的危险让用户承担。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。E.W.Dijkstra的一句名言说明了这一道理:“程序测试只能表明错误的存在,而不能表明错误不存在。”可见,测试是为了使软件中蕴涵的缺陷低于某一特定值,使产出、投入比达到最大。

软件的特征

    软件的特点:

  1 是一种逻辑产品,与物质产品有很大的区别。

  2 软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。

  3 软件产品不会用坏,不存在磨损,消耗。

  4 生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的。

  5 开发软件的费用不断增加,致使生产成本相当昂贵

  按软件的功能划分-

  系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效率地工作的软件。如操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。系统软件是计算机系统中必不可少的一个组成部分。

  应用软件:是在特定的领域内开发,为特定目的服务的一类软件。如,CAD-CAM 计算机辅助制造-CAI 计算机辅助教学, 专家系统,模式识别,刹车系统

  支撑软件:是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具。

  按规模划分:

  1、微型--只有一个人,甚至是半时,在几天之内完成的软件。写出的程序不到500行语句。

  2、小型--一个人半年之内完成的2千行以内的程序。例如,数值计算问题或是数据处理问题就是这种规模的课题。这种程序通常没有与其他程序的接口。

  如,有求伯君开发最初的 WPS,单独完成BASIC 的比尔.盖茨。

  3、中型--5人以内在一年多时间里完成的5千到5万行的程序。这种课题开始出现了软件人员之间,软件人员与用户之间的联系、协调和配合关系的问题。

  4、大型--5人至10人在两年多的时间里完成5万行到10万行的程序。例如编译程序、小型分时系统、应用软件包、实时控制系统等很可能都是这种软件。

  5、甚大型-100人至1000人参加

  6、极大型--2000-5000人参加,如,微软的windows 2000项目就包含了近3000名工程师,他们被分成几百个小的团队。

  按开发分---软件产品和软件项目

  软件产品---指的是不局限于特定领域的、可以被广大用户直接使用的软件系统。如微软的 Windows,Office等。这类系统的特点是技术含量高,开发时要考到各种不同的用户需求;

  软件项目--也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约如我们常说的管理信息系统(MIS)和电子商务系统。这类软件的特点是领域知识所占的比重较大,相对技术而言工程性更强。例如,军用防空指挥系统、卫星控制系统等均为这类软件。

  针对这两种不同类型的软件,应该有不同的软件开发方法去指导项目开发过程。

  软件项目的开发,目前比较成熟的软件开发方法有软件成熟度模型(CMM)。 这种软件开发模型试图将整个软件开发过程规范化和量化,直到可以对软件开发过程进行定量的控制和优化。

  软件产品的开发,像微软公司积累了许多成功的经验。

  软件生产的发展:

  1 程序设计时代:这个阶段生产方式是个体劳动,生产工具是机器语言,汇编语言。(1946-1956年)

  2 程序系统时代:这个阶段生产方式是小集团合作生产,生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。(1956-1968年)

  3 软件工程时代:这个阶段生产方式是工程化的生产,使用数据库,开发工具,开发环境,网络,分布式面向对象技术来开发软件。(1968年至今)

  软件危机: 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。

  软件危机的表现:

  1 经费预算经常突破,完成时间一再拖延。

  2 开发的软件不能满足用户要求。

  3 开发的软件可维护性差。

  4 开发的软件可靠性差。

  软件危机产生原因:

  1 软件规模越来越大,结构越来越复杂。

  2 软件开发管理困难而复杂。

  3 软件开发费用不断增加。

  4 软件开发技术落后。

  5 生产方式落后,仍采用手工方式。

  6 开发工具落后,生产率提高缓慢。

  软件工程:用科学的知识和技术原理来定义,开发,维护软件的一门学科。

  用工程科学的观点进行费用估算,制定进度,制定计划和方案。

  用管理科学的方法和原理进行生产的管理。

  用数学的方法建立软件开发中的各种模型和算法。

  那么为达到软件优质高产这个目标,从技术到管理做了大量的努力,从而逐渐已形成了"软件工程学"这一新学科。

  它包含以下主要内容:

  1、软件开发方法:软件工程的方法提供了建造软件在技术上需要"如何做"。 方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。

  是在60年代后期才逐步形成了一种软件开发方法,在不同的软件开发阶段对应有不同的方法,例如在软件的设计阶段有"结构化分析与设计"方法,在软件测试阶段有"黑盒"与"白盒"测试技术,等等。

  象目前又有一种更新的技术"面向对象的程序设计方法"。在这一方法中,数据和数据的操作是被封闭在一个个称为"对象(Object) "的统一体中,对象之间则是通过"消息"(message")进行相互联系的。

  从而使由软件所描述的系统与客观世界的系统在结构上十分相似,不仅提高了软件的可修改性与可维护性,同时也提高了软件的可重用性,那么这些都是工程多年来所追求的目标。从结构程序设计到面向对象程序设计,是程序设计方法的又一次飞跃。

  2、软件工具:所谓工具,在这里泛指是开发一切帮助开发软件的软件。为了提高软件设计的质量和生产效率,现已经发展了许多的帮助开发和维护软件的软件 。例如,我们要用某种语言来开发一个应用软件,这就要涉及到 "编辑程序、编译程序、连接程序等,另外在软件测试阶段还要用到 "测试数据产生器、排错程序、跟踪程序、静态分析工具和覆盖监视工具等。也就是说在不同的时期要用到不同的软件开发工具。目前,软件工具发展迅速,许多用于软件分析和设计的工具正在建立,其目标 就是要实现软件生产自动化。

  3、软件工程环境:软件方法和工具是软件开发的两大支柱,她们之间密切相关。软件方法提出了明确的工作步骤和标准的文档格式,这是设计软件工具的基础,而软件工具的实现又将促进软件方法的推广和发展。

  "环境"一词,对不同用户有着不同的含义。对最终用户(end user)而言,环境就是他们运行程序所使用的计算机系统。这类用户对环境的要求,主要是运行可靠,操作方便,容易学习和使用。而对于软件开发人员来说,则就不同了,可以说环境就是他们进行软件开发活动动的舞台。(例如,Algo-60,或者 资料管理系统(DbaseII DbaseIII),例如界面只能采用菜单来完成各种功能)

  象现在生产数据库管理的软件的环境有:大型数据库软件 Sybase ,还有能帮助进行程序设计的 PB 软件)

  4、软件工程管理学:大家知道,对于一个企业来说,如果只有先进的设备和技术,而没有完善的管理,是不可能获得应有的经济效益的(例如海尔的海尔文化就是企业管理的象征),(例如微软企业文化宗旨的一句话)

  软件生产也是一样的,如果管理不善,是不可能高质量、按时完成任务的。

  "软件工程管理就是对软件工程生存期内的各阶段的活动进行管理。软件工程管理的目的是为了能按预期的时间和费用,成功地完成软件的开发和维护任务。

  软件工程管理学的内容包括软件费用管理、人员组织、工程计划管理、软件配置管理等各项方面的内容。

  显然,软件工程管理也可借助计算机来实现。供经理人员估算成本、指定进度、生成报告等管理工具都已经在许多公司使用了。一个理想的软件工程环境,应该同时具备 支持开发和支持管理两个方面的工具。

  以上简介了软件工程学的主要组成成分--软件工程方法学、软件工程环境以及软件工程管理的基本内容台和作用。它们即包括计算机科学家的研究成果,也概括了广大软件工作者的时间经验。还必须指出,软件开发技术可区分为形式化方法与非形式化方法两大分支。前者以形式化的程序变化和严整为主要内容,目的在于达到程序设计的自动化,多用于计算机应用人员。本课程主要讨论的是工程化的软件开发技术。

  软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。

  软件工程内容:研究内容包括开发技术和开发管理两个方面。

  开发技术主要研究 :软件开发方法,开发过程,开发工具和环境。采集者退散

  开发管理主要研究 :软件管理学,软件经济学,软件心理学。

  软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。

什么是形式化?什么是形式模型

形式化方法一般是用一种严格的,精准的方法(一般是数学语言)描述软件,对软件建模。

你可以理解为类似UML建模。只是形式化的方法更难学,你可以理解为离散数学里的各种规约、公式。形式化模型就是你用形式化方法构建出来的模型,可类比UML模型,也可以类比数学建模,甚至可以类比编程代码(编程同样是用编程语言对软件需求的精确描述)

如何在软件工程领域开展间接形式化教育

形式化技术在软件工程中的作用

闻寅啸

【摘要】:本文主要介绍了形式化技术的一些基本的理论,重点对形式化技术在软件工程和数学理论基础领域的作用进行研究。分析了形式化技术在软件工程领域的一些优势和局限性。并且指明了形式化技术在以后的发展中可能的方向,并且对形式化技术在软件工程中的作用进行了评价。

【作者单位】: 苏州大学计算机科学与技术学院;

【关键词】: 软件工程 形式化技术 理论基础

【分类号】:TP311.5

【正文快照】:

1形式化技术形式化技术就是将使用由一定的语法规则组成的公式或者符号来代表一定的含义。在软件工程中,这种形式化技术被广泛的使用,但是它们却没有进行精确的定义,仅仅是根据人们的使用习惯,因此现存的可能有很多版本的形式化技术方法。形式化技术是利用数学的方法来解决软

采取什么方法能保证得到结构化的程序

哇这个好像是编译原理里面的知识吧. 忘了哈哈~ 你查编译原理的书吧. 整整一章

软件体系结构的应用现状

形成研究热点,仍处于非形式化水平

自20世纪90年代后期以来,软件体系结构的研究成为一个热点。广大软件工作者已经认识到软件体系结构研究的重大意义和它对软件系统设计开发的重要性,开展了很多研究和实践工作。

从软件体系结构研究的现状来看,当前的研究和对软件体系结构的描述,在很大程度上来说还停留在非形式化的基础上。软件构架师仍然缺乏必要的工具,这种工具应该是显式描述的、有独立性的形式化工具。

在目前通用的软件开发方法中,其描述通常是用非形式化的图和文本,不能描述系统期望的存在于构件之间的接口,不能描述不同的组成系统的组合关系的意义。难以被开发人员理解,更不能用来分析其一致性和完整性等特性。

当一个软件系统中的构件之间几乎以一种非形式化的方法描述时,系统的重用性也会受到影响,在设计一个系统结构过程中的努力很难移植到另一个系统中去。对系统构件和连接关系的结构化假设没有得到显式的、形式化的描述时,把这样的系统构件移植到另一个系统中去将是有风险的,甚至是不可能的。

软件体系结构的形式化方法研究

软件体系结构研究如果仅仅停留在非形式化的框图阶段,已经难以适应进一步发展的需要。为支持基于体系结构的开发,需要有形式化建模符号、体系结构说明的分析与开发工具。从软件体系结构研究的现状来看,在这一领域近来已经有不少进展,其中比较有代表性的是美国卡耐基梅隆大学(Carnegie Mellon University)的Robert J.A11en于l997年提出的Wright系统。Wright是-种结构描述语言,该语言基于一种形式化的、抽象的系统模型,为描述和分析软件体系结构和结构化方法提供了一种实用的工具。Wright主要侧重于描述系统的软件构件和连接的结构、配置和方法。它使用显式的、独立的连接模型来作为交互的方式,这使得该系统可以用逻辑谓词符号系统,而不依赖特定的系统实例来描述系统的抽象行为。该系统还可以通过一组静态检查来判断系统结构规格说明的一致性和完整性。从这些特性的分析来说,Wright系统的确适用于对大型系统的描述和分析。

软件体系结构的建模研究

研究软件体系结构的首要问题是如何表示软件体系结构,即如何对软件体系结构建模。根据建模的侧重点的不同,可以将软件体系结构的模型分为5种:结构模型、框架模型、动态模型、过程模型和功能模型。在这5个模型中,最常用的是结构模型和动态模型。

(1)结构模型

这是一个最直观、最普遍的建模方法。这种方法以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。研究结构模型的核心是体系结构描述语言。(2)框架模型

框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。

(3)动态模型

动态模型是对结构或框架模型的补充,研究系统的大颗粒的行为性质。例如,描述系统的重新配置或演化。动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统常是激励型的。

(4)过程模型

过程模型研究构造系统的步骤和过程。因而结构是遵循某些过程脚本的结果。

(5)功能模型

该模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。它可以看作是一种特殊的框架模型。

这5种模型各有所长,也许将5种模型有机地统一在一起,形成一个完整的模型来刻画软件体系结构更合适。例如,Kruchten在1995年提出了一个4+1的视角模型。4+1模型从5个不同的视角包括逻辑视角、过程视角、物理视角、开发视角和场景视角来描述软件体系结构。每一个视角只关心系统的一个侧面,5个视角结合在一起才能够反映系统的软件体系结构的全部内容。4+1模型如图1所示。

图1 4+1模型

发展基于体系结构的软件开发模型

软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。目前,常见的软件开发模型大致可分为三种类型:

(1)以软件需求完全确定为前提的瀑布模型。

(2)在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,如螺旋模型等。

(3)以形式化开发方法为基础的变换模型。

所有开发方法都是要解决需求与实现之间的差距。但是,这三种类型的软件开发模型都存在这样或那样的缺陷,不能很好地支持基于软件体系结构的开发过程。因此,研究人员在发展基于体系结构的软件开发模型方面做了一定的工作。例如,为了形象地表示体系结构的生命周期,北京邮电大学的周莹新博士建立了一个软件体系结构的生命周期模型,该模型如图2所示。图2 软件体系结构的生命周期模型

软件产品线体系结构的研究

软件体系结构的开发是大型软件系统开发的关键环节。体系结构在软件生产线的开发中具有至关重要的作用,在这种开发生产中,基于同一个软件体系结构,可以创建具有不同功能的多个系统。在软件产品族之间共享体系结构和一组可重用的构件,可以增加软件工程和降低开发和维护成本。

一个产品线代表着一组具有公共的系统需求集的软件系统,它们都是根据基本的用户需求对标准的产品线构架进行定制,将可重用构件与系统独有的部分集成而得到的。采用软件生产线式模式进行软件生产,将产生巨型编程企业。但目前生产的软件产品族大部分是处于同一领域的。

什么是形式化,非形式化,半形式化

形式化、半形式化和非形式化是三种类型的规范风格。

形式化规范就是用一套基于明确定义的数学概念的符号来书写,并且通常伴随着支持性的解释(非形式化)语句。这些数学概念被用来定义符号的句法和语义,以及支持逻辑推理的证明规则。支持形式化符号的句法和语义规则应该定义如何明确地识别其结构和确定其含义。并且必须有证据表明矛盾不可能产生,支持符号的所有规则都有定义或者引用。

半形式化规范就是用一种受限制的句法语言来书写,并且通常伴随着支持性的解释(非形式化)语句。这里的受限制句法语言可以是一种带有受限制句子结构和具有特殊意义的关键字的自然语言,也可以是图表式的(如:数据流图、状态转换图、实体关系图、数据结构图、流程或程序结构图)。不论基于图表还是自然语言必须用一套规范来定义句法限制。

非形式化规范就是像散文一样用自然语言来书写。在这里使用自然语言作为任何普通口头语言(如:荷兰语、英语、法语、德语)中意思的沟通。非形式化规范不像常规语言的传统用法(如:文法和句法)一样受一些符号或特殊的限制。虽然没有符号限制,非形式化规范也要求为上下文中的术语定义其意思,除非作为常规用法已认可。

转载请注明出处51数据库 » 软件形式化方法意义 软件工程方法学的基本内容包括哪些

  • 0
  • 0
  • 0
  • 0
  • 0

更多推荐

软件形式化方法意义 软件工程方法学的基本内容包括哪些

本文发布于:2023-06-07 21:54:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/568452.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:软件工程   内容包括   法学   意义   方法

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!