《软件开发的形式化方法-古天龙》笔记(1)

第一章 软件及其开发概述

1.1 软件开发的历史

三个阶段:

(1)程序设计阶段[1946-1956];(2)程序系统阶段[1956-1968];(3)软件工程阶段[1968-至今]


1.2 软件危机

软件危机☞计算机软件的开发和维护过程中遇到的一系列严重问题。

1968年,北大西洋公约组织,联邦德国,“软件危机”概念的题出

软件危机的表现

  • 软件成本日益增长
  • 开发进度难以控制
  • 软件质量差
  • 软件维护困难

软件危机的原因是多方面的,根本原因在于软件本身所具有的复杂性,主要体现在:

  • 软件规模的复杂性
  • 结构的复杂性
  • 环境的复杂性
  • 应用领域的复杂性
  • 交流的复杂性

    1.3 软件工程

软件工程基本思想:用现代工程的概念、原理、技术和方法来进行软件的开发、管理和维护。

IEEE对于软件工程的定义:

软件工程是
(1)运用系统的、规范的和可定量的方法来开发、运行和维护软件,即将工程化应用于软件;

(2)对(1)中涉及方法的研究

软件工程三要素:方法、工具和过程。

  • 方法:提供了如何构造软件的技术,是完成软件工程项目的技术手段
  • 工具:为软件工程方法提供了自动化或半自动化的支持
  • 过程:将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的

软件工程的目标是成功地生产具有正确性、可用性以及开销合宜的产品。

  • 正确性:软件产品达到预期功能的程度;
  • 可用性:软件基本结构、实现及文档为用户可用的程度;
  • 开销合宜:软件开发、运行和维护的整个开销满足用户要求的程度。

软件工程研究的内容:软件工程过程、软件生存周期、软件开发模型、软件开发方法、软件工具、软件开发环境、计算机辅助软件工程、软件工程经济学等。


1.4 形式化方法

形式化方法的基本含义:借助数学的方法来研究计算机科学中的有关问题。

从广义角度,形式化方法是软件开发过程中分析、设计及实现的系统工程方法。狭义地,形式化方法是软件规格和验证的方法。因此形式化方法氛围形式化规格和验证。

  • 形式化规格是通过具有明确数学定义的文法和语义的方法或语言对软件的期望特性或者行为进行的精确、简洁描述。
  • 形式化验证是基于已建立的形式化规格,对软件的相关特性进行评价的数学分析和证明。

将形式化方法用于软件开发的主要目的是保证软件的正确性。采用了软件生命周期的变换模型。

形式化方法软件开发实际上就是把现实世界的需求反映成软件的模型化过程,涉及到三方面的系统模型:现实世界、模型表示和计算机系统。开发过程中的任务依次分为模型获取、模型验证、模型变换。

  • 模型获取:从现实世界向模型表示转换的过程,包括如何提取处模型以及如何表示模型,它对应于软件生命周期中的需求分析、规格,以及设计等活动;
  • 模型验证:对所得到的模型进行检验,判断其是否捕获了所有的用户需求,以及该模型是否具有所期望的特性;
  • 模型变换:从模型表示向计算机系统变换的过程,一个抽象的模型可以表示可以变化到各种计算机系统环境上,在模型变换时的一个关键任务是进行一致性测试,即判断在变换后所得到的计算机系统是否与模型表示相一致。它对应于软件生命周期中的实现和测试等活动。

以上三个活动分别对应如下三方面的活动:形式化规格、形式化验证、程序求精(Refinement) 

  • 形式化规格
  • 形式化验证
  • 程序求精

形式化方法的研究方向

  • 基础概念
  • 形式化方法与面向对象的结合
  • 工具开发

形式化方法缺陷

  • 包含的数学理论,限制了大多数程序设计人员的学习和使用
  • 采用形式化方法会延误项目开发周期、增加开发费用
  • 许多流行的形式化方法对于较小规模项目是有效的,但却很难应用于一些大型项目
  • 形式化方法不能确保开发出完全正确的软件
  • 缺乏软件生命周期内各个阶段提供全面支持的形式化方法等

形式化方法应用到具体的软件项目时候,需要考虑的因素:应用的类型,规模和结构,类型的选择,形式化级别,使用范围,工具。

你可能感兴趣的:(形式化方法,读书笔记,形式化方法)