系统分析师学习笔记(九)

软件工程

IEEE对软件工程的定义是:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。

软件工程由方法、工具和过程三个部分组成。

软件生命周期

软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生命周期或生存周期。

1.软件生存周期过程

(1)基本过程。基本过程供各主要参与方在软件生存周期期间使用,主要参与方是发起或完成软件产品开发、运行或维护的组织。基本过程分为获取过程、供应过程、开发过程、运作过程和维护过程。
(2)支持过程。支持过程作为一个有机组成部分支持其他过程,以便取得软件项目的成功,并提高软件项目的质量。支持过程包括文档编制过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审核过程、问题解决过程和易用性过程,根据需要,支持过程可被其他过程应用和执行。
(3)组织过程。组织过程可被某个组织用来建立和实现由相关的生存周期过程和人员组成的基础结构并不断改进这种结构和过程。组织过程包括管理过程、基础设施过程、改进过程、人力资源过程、资产管理过程、重用大纲管理过程和领域工程过程。

2.软件生命周期各阶段的任务

(1)可行性研究和项目开发计划。通过分析用户提出的软件开发要求,确定软件项目的性质、目标和规模,得出可行性研究报告。如果可行性研究的结果是可行的,就要制订详细的项目开发计划。这两个活动通常被整合在一起进行,在实际工作中通常把它们归类到同一个阶段中。
(2)需求分析。需求分析工作是软件生命周期中重要的一步,也是决定性的一步。只有通过需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。
(3)概要设计。根据软件需求规格说明建立软件系统的总体结构和模块间的关系,定义各功能模块接口,设计全局数据库或数据结构,规定设计约束,制定组装测试计划。
(4)详细设计。将各模块要实现的功能用相应的设计工具详细描述出来。
(5)实现。写出正确的、易理解的和易维护的程序模块。程序员根据详细设计文档将详细设计转化为程序,完成单元测试。
(6)组装测试(集成测试)。将经过单元测试的模块逐步进行组装和测试。
(7)确认测试。测试系统是否达到了系统需求,按照规格说明书的规定,由用户(或在用户积极参与下)对系统进行验收。必要时,还可以再通过现场测试或并行运行等方法对系统进行进一步的测试。
(8)使用。将软件安装在用户确定的运行环境中,测试通过后移交用户使用。在软件的使用过程中,客户和维护人员必须认真收集发现的软件错误,定期或阶段性地撰写软件问题报告和软件修改报告。
(9)维护。通过各种必要的维护活动使系统持久地满足用户的需要。
(10)退役。终止对软件产品的支持,软件停止使用。

软件开发方法

形式化方法

1.形式化方法概述
形式化规格说明语言包括严格的语法定义和语义定义,以及一系列的数学推演规则。这些规则不仅说明了某些数学性质在软件规格说明中是否成立,也说明了软件实现与软件规格说明之间的满足关系。

近年来,形式化方法在以下两个方面的发展大大改善了其实用性:

(1)形式化方法与图形语言机制相结合。为图形语言机制赋予形式化的语法和语义,从而兼具了图形表示的直观、简洁,以及形式化方法的严谨、精确等优点。
(2)用CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具支持形式化软件开发。CASE工具不仅可以简化描述工作,而且还可以利用自动证明技术,帮助开发人员验证软件的数学性质。

2.净室软件工程
净室软件工程(Cleanroom Software Engineering,CSE)是软件开发的一种形式化方法,可以开发较高质量的软件。它使用盒结构归约进行分析和建模,并且将正确性验证作为发现和排除错误的主要机制,使用统计测试来获取认证软件可靠性所需要的信息。

CSE的理论基础是函数理论和抽样理论,所采用的技术手段主要有以下四个方面:

(1)统计过程控制下的增量式开发。
(2)基于函数的规范、设计。CSE按照函数理论定义了三种抽象层次,分别是行为视图、有限状态机视图和过程视图。规范从一个外部行为视图(称为黑盒)开始,然后被转化为一个状态机视图(称为状态盒),最后由一个过程视图(明盒)来实现。盒结构是基于对象的,并支持软件工程的关键原则,即信息隐藏、接口与实现分离。
(3)正确性验证。正确性验证是CSE的核心,正是由于采用了这一技术,软件质量才有了极大的提高。
(4)统计测试和软件认证。CSE在测试方面采用统计学的基本原理,即当总体太大时必须采取抽样的方法。首先,确定一个使用模型来代表系统所有可能使用的(一般是无限的)总体;然后,由使用模型产生测试用例。因为测试用例是总体的一个随机样本,所以可得到系统预期操作性能的有效的统计推导。

CSE的主要缺点体现在以下三个方面:

(1)对开发人员的要求比较高。CSE要求采用增量式开发、盒结构和统计测试方法,开发人员必须经过强化训练才能掌握。
(2)正确性验证的步骤比较困难,且比较耗时。
(3)开发小组不进行传统的模块测试,这是不现实的。程序员可能对编程语言和开发环境还不熟悉,而且编译器或操作系统的缺陷也可能导致未预期的错误。
逆向工程

软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。

1.相关概念
与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。

(1)重构(restructuring)。重构是指在同一抽象级别上转换系统描述形式。
(2)设计恢复(design recovery)。设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。
(3)再工程(re-engineering)。再工程是指在逆向工程所获得
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值