1.前言


今天开始上课学习软件需求分析与VDM++,经过一节课的学习,我又增长了见识。

软件需求工程在软件工程中处于十分核心的地位;需求分析的好坏直接决定软件工程的成败。这一点是我之前对需求工程的理解和认识,然而今天的学习又进一步扩展了我的认识。

2.需求分析的发展阶段


说起需求分析,首先想到的是用例,然后就是各种各样的用例图,功能描述;接下来我会想到产品原型,业务流程描述等等;然而这些其实都只是需求工程的某一阶段的一小部分。实际上,需求分析大致可划分为以下3个阶段:

(1)上世纪70年代兴起的结构化需求分析技术。以传统的结构化开发方法为代表,典型工具是数据流图,数据字典,业务流程图等。我在12年写毕业论文时曾用过此技术,拜读管理信息系统的教科书,仍然能看到这种技术;

(2)上世纪80年代-90年代兴起的面向对象的需求分析技术。以OOAD为核心,典型工具是UML,上面提到的用例图就属于此类。现在UML在业内仍然非常流行,是当代软件开发的主流技术。

(3)上世纪90年代至今兴起的形式化方法。为了克服自然语言和上述分析语言主观性强的弱点,真正实现需求的精确化定义,就必须依赖于数学,形式化方法遵循严格的数学和逻辑实现软件需求的精确定义,真正实现软件开发的精确化和自动化。势必将成为未来软件业界需求分析之主流。本系列所讲述的VDM正是由IBM提出的最早的一种形式化方法。

3.什么是VDM++


VDM是上世纪60-70年代由IBM开发的第一个形式化方法语言,VDM++是1993年对VDM的扩展。作为形式化方法,VDM++基于离散数学和一阶谓词逻辑,为软件需求定义、需求检查、回归测试、软件证明等提供了可能性。

由于其形式化的特点,使它本身也成为一种编程语言。描述精确,便于与C++、Java语言转化是它的显著优势。此外,VDM++不仅支持命令式风格的开发,同时也支持函数风格的开发。闲话少说,具体等到后面就看到啦。

4.系列简介


本系列基本上会与课程进度保持同步更新,大致上每周二更新一次。下次将图文并茂地展示VDM++开发环境VDMTools的安装和使用,敬请期待。

下一篇:【形式化方法:VDM++系列】2.VDMTools环境的搭建

【形式化方法:VDM++系列】1.前言的更多相关文章

  1. 【形式化方法:VDM++系列】3.基于VDM++的图书管理系统需求定义

    接前文:http://www.cnblogs.com/Kassadin/p/4091040.html 1.Before We Start: 在开始图书管理系统需求定义之前,需要先进行一些说明. 1.1 ...

  2. 【形式化方法:VDM++系列】2.VDMTools环境的搭建

    接前文:http://www.cnblogs.com/Kassadin/p/3975853.html 上次讲了软件需求分析的演化过程,本次进入正题——VDM开发环境的搭建 (自从发现能打游戏以来,居然 ...

  3. 【形式化方法:VDM++系列】4.VDM实战1——铁路费用计算

    又有将近2个月没更新博客了啊!winter holiday简直玩儿疯了的说!结果假期前学习的形式化方法已经忘了大半!面对期末作业,大脑一片空白.于是,赶快复习了一下之前学习的姿势! 这次的主要任务是完 ...

  4. “Ceph浅析”系列之一——前言

    开源技术专家章宇同学(@一棹凌烟)在C3沙龙分享过Ceph之后,最近来了劲头,一口气写了一系列<Ceph浅析>的博文,共8篇: "Ceph浅析"系列之一--前言 &qu ...

  5. [转]C#中基于GDI+(Graphics)图像处理系列之前言

    直接给出原文链接吧: C#中基于GDI+(Graphics)图像处理系列之前言 链接:https://pan.baidu.com/s/1zm5TCOHqkqEfiLZuqO0UMA 提取码:qz0h

  6. webpack4 系列教程: 前言

    1. 什么是webpack? 前端目前最主流的javascript打包工具,在它的帮助下,开发者可以轻松地实现加密代码.多平台兼容.而最重要的是,它为前端工程化提供了最好支持.vue.react等大型 ...

  7. Chapter 5 软件工程中的形式化方法

    从广义上讲,形式化方法是指将离散数学的方法用于解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动.狭义的讲,形式化方法是运用形式化语言,进行形式化的规格描述.模型推理和验证的方法. ...

  8. [转]HTTPS网络流量解密方法探索系列(一)

    前言 分析网络流量总是绕不开HTTPS,因其广泛使用甚至是强制使用逐渐被大众熟知,在保证其安全的同时也提高了对流量进行研究的难度.目前解析HTTPS协议的文章很多,有很多不错的文章可以带着入门,老实说 ...

  9. Java工程师之SpringBoot系列教程前言&目录

    前言 与时俱进是每一个程序员都应该有的意识,当一个Java程序员在当代步遍布的时候,你就行该想到我能多学点什么.可观的是后端的框架是稳定的,它们能够维持更久的时间在应用中,而不用担心技术的更新换代.但 ...

随机推荐

  1. Totime iOS购物APP

    是为时光仓公司量身定做的一款移动app,根据本公司的要求,开发一款支持移动端购买的App.该项目主要包括六个大模块:商场特卖,特卖专场,时光商盟,个人中心,收藏,购物车. 1. 商场特卖——分为热卖商 ...

  2. C++多态性与C#的比较

        多态性:统一操作作用于不同的对象可以有不同的解释,产生不同的执行结果.多态性可以分为两种:一是编译时的多态性,一是运行时的多态性.     编译时的多态性包括重载.覆盖.运算符重载.对于非虚的 ...

  3. SQL Server高级内容之表表达式和复习

    1. 表表达式 (1) 将表作为一个源或将查询的一个结果集作为一个源,对源做处理,然后得到一个新的数据源,对其进行查询.  (2)表表达式放在from子句中 (3)派生表,将表的查询得到的结果集作为一 ...

  4. Ext.Net 布局

    Ext.Net 布局 Panel布局类有10种:容器布局,自适应布局,折叠布局,卡片式布局,锚点布局,绝对位置布局,表单布局,列布局,表格布局,边框布局       1,Ext.layout.Cont ...

  5. WPF嵌入百度地图完整实现

    无论是做App还是web开发,很多都会用到地图功能,一般都会调用第三方的API实现地图功能!而正如国内的地图API提供方,基本上对Android.IOS和web开发提供了很完整的一套API,但是对于桌 ...

  6. js中对闭包的理解

    本人丝一枚,在刚刚过去的javascript学习中,对闭包这个知识真是,听课两分钟,懵逼一整天.今天闲来没事,看了下闭包.话不多说先上代码. <!DOCTYPE html> <htm ...

  7. seaJs 使用

    开始使用seajs的时候折磨了我好一阵.光是各种概念就让新手难理解.现在弄清楚了,上个实践以备忘.目录结构如图. 1.文件 sea.html   main.js  a.js  b.js  c.js 最 ...

  8. LNK1169 和 LNK2005

    错误重现: 1> vs2010创建 C++ win32 project, Application type: DLL. 2>为了在工程中使用 CString, 在 stdafx.h 中 I ...

  9. 在Mac OS X中使用VIM开发STM32(1)

       本文原创于http://www.cnblogs.com/humaoxiao,非法转载者请自重!     在我先前的博文⎣在Mac OS X中搭建STM32开发环境⎤中,我们在Mac中DIY出了最 ...

  10. jQuery(function(){})与(function(){})(jQuery)的区别

    jQuery(function(){ });/$(function(){ });全写为 $(document).ready(function(){}); 意义为在DOM加载完毕后执行了ready()方 ...