【形式化方法:VDM++系列】1.前言
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.前言的更多相关文章
- 【形式化方法:VDM++系列】3.基于VDM++的图书管理系统需求定义
接前文:http://www.cnblogs.com/Kassadin/p/4091040.html 1.Before We Start: 在开始图书管理系统需求定义之前,需要先进行一些说明. 1.1 ...
- 【形式化方法:VDM++系列】2.VDMTools环境的搭建
接前文:http://www.cnblogs.com/Kassadin/p/3975853.html 上次讲了软件需求分析的演化过程,本次进入正题——VDM开发环境的搭建 (自从发现能打游戏以来,居然 ...
- 【形式化方法:VDM++系列】4.VDM实战1——铁路费用计算
又有将近2个月没更新博客了啊!winter holiday简直玩儿疯了的说!结果假期前学习的形式化方法已经忘了大半!面对期末作业,大脑一片空白.于是,赶快复习了一下之前学习的姿势! 这次的主要任务是完 ...
- “Ceph浅析”系列之一——前言
开源技术专家章宇同学(@一棹凌烟)在C3沙龙分享过Ceph之后,最近来了劲头,一口气写了一系列<Ceph浅析>的博文,共8篇: "Ceph浅析"系列之一--前言 &qu ...
- [转]C#中基于GDI+(Graphics)图像处理系列之前言
直接给出原文链接吧: C#中基于GDI+(Graphics)图像处理系列之前言 链接:https://pan.baidu.com/s/1zm5TCOHqkqEfiLZuqO0UMA 提取码:qz0h
- webpack4 系列教程: 前言
1. 什么是webpack? 前端目前最主流的javascript打包工具,在它的帮助下,开发者可以轻松地实现加密代码.多平台兼容.而最重要的是,它为前端工程化提供了最好支持.vue.react等大型 ...
- Chapter 5 软件工程中的形式化方法
从广义上讲,形式化方法是指将离散数学的方法用于解决软件工程领域的问题,主要包括建立精确的数学模型以及对模型的分析活动.狭义的讲,形式化方法是运用形式化语言,进行形式化的规格描述.模型推理和验证的方法. ...
- [转]HTTPS网络流量解密方法探索系列(一)
前言 分析网络流量总是绕不开HTTPS,因其广泛使用甚至是强制使用逐渐被大众熟知,在保证其安全的同时也提高了对流量进行研究的难度.目前解析HTTPS协议的文章很多,有很多不错的文章可以带着入门,老实说 ...
- Java工程师之SpringBoot系列教程前言&目录
前言 与时俱进是每一个程序员都应该有的意识,当一个Java程序员在当代步遍布的时候,你就行该想到我能多学点什么.可观的是后端的框架是稳定的,它们能够维持更久的时间在应用中,而不用担心技术的更新换代.但 ...
随机推荐
- ruby sass Encoding::CompatibilityError for changes
在'compass create projectName','cd projectName'之后,show "Encoding::CompatibilityError on line [&q ...
- dedecms安装步骤
GD支持:PHP设置-PHP扩展-php_gd2 初始化数据体验包:点击下载:或者点击取消 如果是本地安装在数据库的在数据库用户名选择默认的(root),密码为空 主要是如果是基于远程服务器的 ...
- HTML5吧!少年
一.为了能使IE9以下的IE浏览器也能支持html5的标签,所以首先得在文档头部用条件注释的方法引入那段著名的代码. 1 2 3 <!--[if lt IE 9]> <script ...
- JavaScript学习笔记(9)——JavaScript语法之流程控制
javascript的流程控制语句与大部分类c语言一致.大致如下: 一.if if...else if...else if....else if....else..... 二.switch(变量){ ...
- Kafka-0.10.0.0入门
搭建环境略(伪集群即可以),但要注意Kafka的配置必须配置的,少配了也一样可以用,但是只能单机使用,外部机器无法连接,网上也有说. host.name=192.168.1.30 advertised ...
- Ant 入门
参考: Ant官网 http://ant.apache.org/ 轻量级java ee企业应用实战(李刚) Ant当前版本1.9.6 Ant基于Java 配置环境变 ...
- C语言经典案例
题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%:20万到40万 ...
- 霍纳法则(Horner's rule)
卡在hdu 1402 的高精度乘法了,要用FFT(快速傅里叶变换),然后看到了这个霍纳法则,顺便就写下来了. 霍纳法则:求多项式值的一个快速算法. 简单介绍: 假设有n+2个数 , a0,a1,a2, ...
- Linux下UDP收/发广播消息简单实现
发送广播消息 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/typ ...
- linux 定时执行 cron指令
linux 中的 cron 定时执行命令,先上例子:每间隙两分钟把 "Hello world"写到 /tmp/hello.txt crontab -e */2 * * * * ec ...