[架构之路-152]-《软考-系统分析师》- 8-软件工程-2-软件工程的N维矩阵模型与软件开发方法(形式化方法、逆 向 工 程)

这篇具有很好参考价值的文章主要介绍了[架构之路-152]-《软考-系统分析师》- 8-软件工程-2-软件工程的N维矩阵模型与软件开发方法(形式化方法、逆 向 工 程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第8章 软件工程

8.1 软件工程的矩阵模型

  • 横轴X(时间):是软件的生命周期:需求分析=》架构设计=》编程实现=》测试=》版本发布=》部署运行
  • 纵轴Y1维度/视角:软件开发活动,不同什么周期阶段,有不同的开发活动,包括需求规格、设计文档、编码、测试规范、测试用例等活动。
  • 纵轴Y2维度/视角:业务业务领域技能活动,不同的业务领域,所需要的技能不同,但在不同的开发阶段,对业务领域知识的要求不同,越是靠近前端,如需求分析阶段,对业务领域的技能要求越多,越是后端,如编程实现,对业务领域的技能要求越少,对计算机的技能要求越高。
  • 纵轴Y3维度/视角:项目管理活动,质量、进度、成本进行评估、管理和控制,包括人员组织、计划跟踪与控制、成本估算、质量保证和配置管理。
  • 纵轴Z1维度/视角:辅助开发工具,不同的活动,辅助不同的软件工具,以提升效率,如Gitee, Python等。
  • 纵轴Z1维度/视角:辅助业务工具,不同的活动,辅助不同的软件工具,以提升效率。如L1的仿真工具。
  • 纵轴Z3维度/视角:辅助管理工具,不同的活动,辅助不同的软件工具,以提升效率。
  • 纵轴T维度/视角:方法和步骤,不同的活动,需要不同的方法与步骤。

8 . 2 软件开发方法

        软件幵发方法是指软件开发过程所遵循的办法步骤,从不同的角度可以对软件开发方法进行不同的分类。

  • 开发风范上看,可分为自顶向下的开发方法与自底向上的开发方法, 在实际软件开发中,大都是两种方法的结合,只不过是应用于开发的不同阶段和以何者为主而已。
  • 性质上看,可分为形式化方法非形式化方法。形式化方法是一种具有坚实数学基础的方法,从而允许对系统和开发过程作严格处理和论证,适用于那些系统安全级别要求极高的软件的开发;非形式化方法则不把严格性作为其主要着眼点,通常以各种开发模型的形式得以体现。
  • 适应范围来看,可分为整体性方法局部性方法。适用于软件开发全过程的方法称为整体性方法,例如,自顶向下方法、自底向上方法和各种软件自动化方法等均为整体性方法;适用于开发过程某个具体阶段的软件方法称为局部性方法,例如,需求分析阶段的各种需求分析方法、设计阶段的各种设计方法等。

8.2.1 形式化方法、数学公式法、定量法

提高软件可靠性的一种重要技术是使用形式化方法。形式化方法是建立在严格数学基础上、具有精确数学语义的开发方法。广义的形式化方法是指软件开发过程中分析、设计和实现的系统工程方法,狭义的形式化方法是指软件规格和验证的方法。

1. 形式化方法概述

近年来,形式化方法己不再只是一种研究所里的学术研究工作,而是己经开始被工业界接受并应用于开发实际的系统。例如,在需求分析中,形式化方法的思想是利用形式化规格语言,严格定义用户需求,并采用数学推演的方法证明需求定义的性质,对于复杂的应用问题,尽管无法验证整个需求定义的完整性,仴仍有可能为避免某些要点的疏漏而建立数学断言,然后予以形式证明或反驳。形式化规格说明语言包括严格的语法定义和语义定义,以及一系列的数学推演规则。这些规则不仅说明了某些数学性质在软件规格说明中是否成立,也说明了软件实现与软件规格说明之间的满足关系。

形式化方法的主要优越性在于它能够数学地表述和研究应用问题及其软件实现。但是,它要求开发人员具备良好的数学基础。用形式化语言书写的大型应用问题的软件规格说明往往过于细节化,并且难于为用户和软件设计人员所理解。由于这些缺陷,形式化方法在目前的软件开发实践中并未得到普遍应用。但是,近年来,形式化方法在以下两个方面的发展大大改善了其实用性:

(1) 形式化方法图形语言机制相结合。为图形语言机制赋予形式化的语法和语义,从而兼具了图形表示的直观、简洁,以及形式化方法的严谨、精确等优点。

(2) 用 C A S E (Computer Aided Software Engineering ,计算机辅助软件工程)工具支持形式化软件开发。 C A S E 工具不仅可以简化描述工作,时且还可以利用自动证明技术,帮助开发人员验证软件的数学性质。实践证明,上述技术途径对于克服形式化方法的主要缺陷是行之有效的,因此,它们将在形式化方法的未来发展中发挥電要作用。

2.净室软件工程

净室软件工程 (Cleanroom Software Engineering , C S E ) 是软件幵发的一种形式化方法,可以开发较高质量的软件。它使用盒结构归约进行分析和建模,并且将正确性验证作为发现和排除错误的主要机制,使用统计测试来获取认证软件可靠性所需要的信息。
C S E 强调在规约和设计上的严格性,以及使用基于数学的正确性证明来对设计模型的每个元素进行形式化验证。作为对形式化方法中的扩展, C S E 还强调统计质量控制技术,包括基于客户对软件的预期使用的测试。

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

(1) 统计过程控制下的增量式幵发。

(2) 基于函数的规范、设计。 C S E 按照函数理论定义了三种抽象层次,分别是行为
视图、有限状态机视图和过程视图。规范从一个外部行为视阁(称为黑盒)幵始,然后
被转化为一个状态机视图(称为状态盒),最后由一个过程视图(明盒)来实现。盒结构
是基于对象的,并支持软件工程的关键原则,即信息隐藏、接 U 与实现分离。

(3) 正确性验证。正确性验证是 C S E 的核心,正是由于采用了这一技术,软件质蜇
才冇了极大的提高。

(4) 统计测试和软件认证。 C S E 在测试方面采用统计学的基本原理,即当总体太大
时必须采取抽样的方法。首先,确定•个使用模型来代表系统所有可能使用的(一般是
无限的)总体;然后,由使用模型产生测试用例。因为测试用例是总体的一个随机样本,

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

8 . 2 . 2 逆 向 工 程

逆向工程( ReverseEngineering ) 术语源于硬件制造业,相互争的公司为了了解对方设计和制造工艺的机密,在得不到设计制造说明书的情况下,通过拆卸实物获得信息。

软件的逆向工程也基本类似,不过,通 常 “解剖”的不仅是竞争对手的程序,而且还包括本公司多年前的产品。软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程

1 . 相 关 概 念

与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。
(1) 重 构 ( restructuring )。重构是指在同一抽象级别上转换系统描述形式。
(2) 设计恢复 (design recovery )。设计恢复是指借助工具从已有程序中抽象出有关
数据设计、总体结构设计和过程设计等方面的信息。
(3) 再工程( re - engineering )。再工程是指在逆向工程所获得信息的基础上,修改或
重构已有的系统,产生系统的一个新版本。再工程是对现有系统的重新开发过程,包括
逆向工程新需求的考虑过程和正向工程三个步骤。它不仅能从已存在的程序中重新获
得设计信息,而且还能使用这些信息来重构现有系统,•以改进它的综合质量。在利用再
工程重构现有系统的同时,一般会增加新的需求,包括增加新的功能和改善系统的性能。
(4) 正向工程 (Forward Engineering )。正向工程是指不仅从现有系统中恢复设计信
息,而且使用该信息去改变或重构现有系统,以改善其整体质量。

2 . 完 备 性

        一般认为,凡是在软件生命周期内将软件某种形式的描述转换成更为抽象形式的活动都可称为逆向 工程。

        逆向工程的完备性可以用在某一个抽象层次上提供信息的详细程度来描述。逆向工程过程应该能够导出过程的设计模型(实现级,一种底层的抽象)、程序数据结构信息(结构级,稍高层次的抽象)、对象模型数据和控制流模型(功能级,相对高层的抽象)和 U M L 状态图部署图(领域级,高层抽象)。

        随着抽象层次增离,完备性就会降低。抽象层次越高,它与代码的距离就越远,通过逆向工程恢复的难度就越大,而自动工具支持的可能性相对变小,要求人参与判断和推理的工作增多。

        逆向工程不仅应用于软件开发,也应用于软件维护。对于一项具体的维护任务,一般不必导出所有抽象级别上的信息,例如,如果只是希望完成代码重构任务,则只需获得实现级信息即可。当然,若能进行深入分析,产生的代码质量会更好些。文章来源地址https://www.toymoban.com/news/detail-446316.html

到了这里,关于[架构之路-152]-《软考-系统分析师》- 8-软件工程-2-软件工程的N维矩阵模型与软件开发方法(形式化方法、逆 向 工 程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [架构之路-172]-《软考-系统分析师》-5-数据库系统-5- 数据库设计与建模(逻辑设计-实体关系图ER图-关系图、物理设计)

    目录 5 . 5 数据库设计与建模 5.5.1数据库设计阶段 1 . 规划:为什么做?能不能做? 2 . 需求分析:做成什么样子? 3 . 概念设计:怎么做 - 概念 (用户) 4 . 逻辑设计:怎么做?-- 逻辑 5 . 物理设计:怎么做?-- 物理 5.5.2 实体联系模型到关系图 0. 三要素 1 . 联系的类型 2. E- -

    2023年04月22日
    浏览(101)
  • 系统分析师:七、软件工程(含系统规划)

            软件生命周期分为5个:获取过程、供应过程、开发过程、运行过程、维护过程,具体如下:         该方法的思想是利用形式化语言,严格定义需求,并用数据推演的方法证明需求的性质。形式化规格包含了严格的语法定义以及一系列数据推演规则。         2.1

    2024年02月07日
    浏览(52)
  • 【系统分析师之路】2022上论文写作历年真题

    2022上论文写作历年真题第一题(75分) 试题一 论原型法及其在信息系统开发中的应用 作为一种信息系统开发方法,原型法( Prototyping )被普遍使用,原型法是指在获取一组基本的需求定义后,利用可视化的开发工具,快速建立一个目标系统的初始版本,并交由用户试用,并

    2024年02月08日
    浏览(50)
  • 系统分析师:全程指导例题

    题解:这里假设能并行处理,画流水线时空图如下: 这里可以看到,处理4个数据需要15At,因此实际速率是4/15At,流水线效率为忙碌时间与总时间对比,也可以看成忙碌时空区/总时空区,即6*4/15*4=2/5。选择D和B。另外:加速比则是不启用流水线和启用流水线的时间比。 题解:

    2024年02月07日
    浏览(55)
  • 系统分析师知识点汇总

    目录 1.计算机组成 1.1计算机组成与分类 1.1.1计算机的组成 1.2.1主存储器(内存) 1.2.2辅助存储器(外存磁盘如硬盘) 1.2.3Cache缓存 1.3输入输出接口 1.3.1输入输出方式 1.3.2总线和接口 1.4各种体系结构 1.4.2流水线技术 1.4.3并行处理 1.4.4互联网络 2.操作系统 2.1操作系统的类型与结

    2023年04月08日
    浏览(90)
  • 2022系统分析师案例分析真题背记内容

    以下内容仅为个人根据当年系分案例真题问题整理的偏需要记背的考点答案,方便个人背诵和记忆使用。方便文字转语音,所以内容全为纯文字内容,以下内容仅供参考。 1.数据流图: 数据流图的特点:通过系统内数据的流动来描述系统功能的-一种方法。强调系统中的数据流动

    2024年02月06日
    浏览(49)
  • 系统分析师每日练习错题知识点

    计算机网络: RIP协议存在的一个问题就是当网络出现故障的时候,要经过比较长的时间才能把信息传送到所有的路由器。在这个中间过程中,实际就是路由环路的问题;当发生路由环路的时候,路由表会频繁的进行变化,从而导致路由表中的一条或者几条,都无法收敛,结果

    2024年02月09日
    浏览(59)
  • 系统分析师之信息化技术(十一)

    目录 一、企业信息化概述 1.1 信息系统的基本概念 1.1.1 什么是信息 1.1.2 什么是信息化 1.1.3 信息系统分类 二、企业信息化规划 2.1 信息化战略体系 2.2 企业战略与信息化战略集成方法 三、信息系统开发方法 3.1 信息系统开发方法 3.2 系统建模 四、信息系统战略规划方法 五、电

    2023年04月26日
    浏览(55)
  • 系统分析师---论软件开发模型及应用

    论题:论软件开发模型及应用 软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发过程包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要任务

    2024年02月04日
    浏览(52)
  • 2023系统分析师---论软件项目管理技术及应用(内部信息)

    试题:“论软件项目管理”技术及其应用。 软件项目管理是为了使软件项目能够按照预定的成本、进度和质量顺利完成,对人员、产品、过程和项目进行分析和管理的活动。软件项目管理的根本目的是为了让软件项目,尤其是大型软件项目的整个生命周期都能在管理者的控制

    2024年02月06日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包