【系统架构设计师】九、软件工程(软件开发生命周期|McCabe度量法|系统转换|系统维护|净室软件工程|基于构件的软件工程)

news2024/10/8 11:43:29

目录

九、软件开发生命周期和工具

十、McCabe度量法

十一、系统转换

11.1 遗留系统

11.2 系统转换

11.3 系统维护

十二、净室软件工程

十三、基于构件的软件工程

13.1 构件特征

13.2 构件模型要素

13.3 CBSE过程

13.4 构件组装

相关推荐

历年真题练习


九、软件开发生命周期和工具

软件开发生命周期

        软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标具体可分成问题定义、可行性研究、需求分析等。

        软件开发时期:就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。

        软件运行和维护:就是把软件产品移交给用户使用

软件系统工具

        软件系统工具通常可以按软件过程活动将软件工具分为软件开发工具、软件维护工具、软件管理和软件支持工具

        软件开发工具:需求分析工具、设计工具、编码与排错工具、测试工具等。

        软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。

        软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。

        按描述需求定义的方法可以将需求分析工具分为基于自然语言或图像描述的工具基于形式化需求定义语言的工具。

十、McCabe度量法

        软件的两种属性
                外部属性面向管理者和用户的属性,可直接测量,一般为性能指标
                内部属性软件产品本身的的属性,如可靠性等,只能间接测量。

        McCabe度量法:又称为环路复杂度,假设有向图中有向边数为m,节点数为n则此有向图的环路复杂度为m-n+2。

        注意:m和n代表的含义不能混淆,可以用一个最简单的环路来做特殊值记忆此公式,另外,针对一个程序流程图,每一个分支边(连线)就是一条有向边,每一条语句(语句框)就是一个顶点。

        环路复杂度计算公式有三种:
                1. m-n+2,10条边,8个节点 10-8+2 = 4 ;

                2. 判定节点+1,1,3,6=3个节点,3+1 = 4 ;

                3.封闭区域+1,也是三个封闭区域,3+1= 4 ;

十一、系统转换

11.1 遗留系统

        遗留系统是指任何基本上不能进行修改和演化以满足新的变化了的业务需求的信息系统,它通常具有以下特点:

        (1)系统虽然完成企业中许多重要的业务管理工作,但仍然不能完全满足要求。一般实现业务处理电子化及部分企业管理功能,很少涉及经营决策。
        (2)系统在性能上已经落后,采用的技术已经过时。例如多采用主机/终端形式或小型机系统,软件使用汇编语言或第三代程序设计语言的早期版本开发,使用文件系统而不是数据库。
        (3)通常是大型的软件系统,已经融入企业的业务运作和决策管理机制之中,维护工作十分困难。
        (4)没有使用现代信息系统建设方法进行管理和开发,现在基本上已经没有文档,很难理解。

        所以针对遗留系统一般采用的策略,如下:

11.2 系统转换

        系统转换是指新系统开发完毕,投入运行,取代现有系统的过程,需要考虑多方面的问题,以实现与老系统的交接,有以下三种转换计划:

        直接转换:现有系统被新系统直接取代了,风险很大,适用于新系统不复杂或者现有系统已经不能使用的情况。优点是节省成本。

        并行转换:新系统和老系统并行工作一段时间,新系统经过试运行后再取代若新系统在试运行过程中有问题,也不影响现有系统的运行,风险极小,在试运行过程中还可以比较新老系统的性能,适用于大型系统。缺点是耗费人力和时间资源,难以控制两个系统间的数据转换。

        分段转换:分期分批逐步转换,是直接和并行转换的集合,将大型系统分为多个子系统,依次试运行每个子系统,成熟一个子系统,就转换一个子系统。同样适用于大型项目,只是更耗时,而且现有系统和新系统间混合使用,需要协调好接口等问题。

        数据转换与迁移:将数据从旧数据库迁移到新数据库中。有三种方法:

                系统切换前通过工具迁移
                系统切换前采用手工录入
                系统切换后通过新系统生成

11.3 系统维护

        系统的可维护性可以定义为维护人员理解、改正、改动和改进这个软件的难易程度,其评价指标如下:

        (1)易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。
        (2)易改变性。软件产品使指定的修改可以被实现的能力,实现包括编码、设计和文档的更改。
        (3)稳定性。软件产品避免由于软件修改而造成意外结果的能力。
        (4)易测试性。软件产品使已修改软件能被确认的能力。
        (5)维护性的依从性。软件产品遵循与维护性相关的标准或约定的能力。

        系统维护包括硬件维护、软件维护和数据维护,其中软件维护类型如下:

        正确性维护:发现了bug而进行的修改。
        适应性维护:由于外部环境发生了改变,被动进行的对软件的修改和升级。
        完善性维护:基于用户主动对软件提出更多的需求,修改软件,增加更多的功能,使其比之前的软件功能、性能更高,更加完善。
        预防性维护:对未来可能发生的bug进行预防性的修改。

十二、净室软件工程

        净室软件工程是一种应用数学与统计学理论以经济的方式生产高质量软件的工程技术,力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷。净室方法不是先制作一个产品,再去消除缺陷,而是要求在规约和设计中消除错误,然后以“净”的方式制作,可以降低软件开发中的风险,以合理的成本开发出高质量的软件。

        在净室软件工程背后的哲学是:通过在第1次正确地书写代码增量,并在测试前验证它们的正确性,来避免对成本很高的错误消除过程的依赖。它的过程模型是在代码增量积聚到系统的过程的同时,进行代码增量的统计质量验证。它甚至提倡开发者不需要进行单元测试,而是进行正确性验证和统计质量控制

        净室软件工程(CSE)的理论基础主要是函数理论和抽样理论

        净室软件工程应用技术手段:

                1.统计过程控制下的增量式开发。
                2.基于函数的规范与设计。
                3.正确性验证(CSE的核心)。
                4.统计测试和软件认证。

        净室软件工程在使用过程的一些缺点:

                (1)CSE太理论化,需要更多的数学知识,其正确性验证的步骤比较困难目比较耗时。                      (2)CSE开发小组不进行传统的模块测试,这是不现实的。
                (3)CSE也会带有传统软件工程的一些弊端。

十三、基于构件的软件工程

        基于构件的软件工程(CBSE)是一种基于分布对象技术、强调通过可复用构件设计与构造软件系统的软件复用途径。CBSE体现了“购买而不是重新构造”的哲学,将软件开发的重点从程序编写转移到了基于己有构件的组装。

13.1 构件特征

        用于CBSE 的构件应该具备以下特征:

        (1)可组装型:对于可组装的构件,所有外部交互必须通过公开定义的接口进行。同时它还必须对自身信息的外部访问。
        (2)可部署性:软件必须是自包含的,必须能作为一个独立实体在提供其构件模型实现的构件平台上运行。构件总是二进制形式,无须在部署前编译。
        (3)文档化:构件必须是完全文档化的,用户根据文档来判断构件是否满足需求。
        (4)独立性:构件应该是独立的,应该可以在无其他特殊构件的情况下进行组装和部署,如确实需要其他构件提供服务,则应显示声明。
        (5)标准化:构件标准化意味着在CBSE过程中使用的构件必须符合某种标准化的构件模型。

13.2 构件模型要素

        构件模型定义了构件实现、文档化以及开发的标准,其包含的模型要素为:

        接口。构件通过构件接口来定义,构件模型规定应如何定义构件接口以及在接口定义中应该包含的要素,如操作名、参数以及异常等。
        使用信息。为使构件远程分布和访问,必须给构件一个特定的、全局唯一的名字或句柄。构件元数据是构件本身相关的数据,比如构件的接口和属性信息。
        部署。构件模型包括一个规格说明,指出应该如何打包构件使其部署成为一个独立的可执行实体部署信息中包含有关包中内容的信息和它的二进制构成的信息。

        构件模型提供了一组被构件使用的通用服务,这种服务包括以下两种:

        平台服务:允许构件在分布式环境下通信和互操作。
        支持服务:这是很多构件需要的共性服务。例如,构件都需要的身份认证服务。
        中间件实现共性的构件服务,并提供这些服务的接口。

13.3 CBSE过程

        CBSE过程是支持基于构件组装的软件开发过程,过程中的6个主要活动:系统需求概览、识别候选构件、根据发现的构件修改需求、体系结构设计、构件定制与适配、组装构件创建系统

CBSE过程与传统软件开发过程不同点:

        (1)CBSE早期需要完整的需求,以便尽可能多地识别出可复用的构件。
        (2)在过程早期阶段根据可利用的构件来细化和修改需求。如果可利用的构件不能满足用户需求,就应该考虑由复用构件支持的相关需求,
        (3)在系统体系结构设计完成后,会有一个进一步的对构件搜索及设计精化的活动。可能需要为某些构件寻找备用构件,或者修改构件以适合功能和架构的要求。
        (4)开发就是将已经找到的构件集成在一起的组装过程。

13.4 构件组装

        构件组装是指构件相互直接集成或是用专门编写的“胶水代码”将它们整合在一起来创造一个系统或另一个构件的过程。常见的组装构件有以下3种组装方式:

        (1)顺序组装。通过按顺序调用己经存在的构件,可以用两个已经存在的构件来创造一个新的构件如上一个构件输出作为下一个构件的输入。

        (2)层次组装。这种情况发生在一个构件直接调用自另一个构件所提供的服务时。被调用的构件为调用的构件提供所需的服务。二者之间接口匹配兼容。

        (3)叠加组装。这种情况发生在两个或两个以上构件放在一起来创建一个新构件的时候。这个新构件合并了原构件的功能,从而对外提供了新的接口。外部应用可以通过新接口来调用原有构件的接口,而原有构件不互相依赖,也不互相调用。这种组装类型适合于构件是程序单元或者构件是服务的情况。

        构件组装的三种不兼容问题(通过编写适配器解决) :

        (1)参数不兼容接口每一侧的操作有相同的名字,但参数类型或参数个数不相同。

        (2)操作不兼容,提供接口和请求接口的操作名不同

        (3)操作不完备,一个构件的提供接口是另一个构件请求接口的一个子集,或者相反。

相关推荐

【系统架构设计师】九、软件工程(软件工程定义|软件过程模型|能力成熟度模型)-CSDN博客文章浏览阅读833次,点赞19次,收藏19次。历年真题考情:本章节每年单项选择考13分左右,下午案例、论文也会有涉及,在系统架构设计师中本章节绝对是重点中的重点。主要学习软件工程、需求工程、系统分析与设计、净室软件工程、基于构件的软件工程、软件项目管理等内容。很少涉及超纲题。https://shuaici.blog.csdn.net/article/details/140095679【系统架构设计师】九、软件工程(需求工程|系统分析与设计|DFD|DD|高内聚低耦合)-CSDN博客文章浏览阅读520次,点赞14次,收藏12次。系统设计方法:结构化设计方法,面向对象设计方法。系统设计的主要内容:概要设计、详细设计。概要设计基本任务:又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。详细设计的基本任务:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审。https://shuaici.blog.csdn.net/article/details/140259207【系统架构设计师】九、软件工程(面向对象方法|逆向工程)-CSDN博客文章浏览阅读613次,点赞10次,收藏8次。面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。https://shuaici.blog.csdn.net/article/details/140287834

历年真题练习

        1.在对遗留系统进行评估时,对于技术含量较高、业务价值较低且仅能完成某个部门的业务管理的遗留系统一般采用的遗留系统演化策略是()策略。

                A.淘汰
                B.继承
                C.集成
                D.改造

        2.在软件系统工具中,版本控制工具属于()

                A.软件开发工具
                B.软件维护工具
                C.编码与排错工具
                D.软件管理和软件支持工具

        3.在软件系统工具中,软件评价工具属于()。

                A.逆向工程工具
                B.开发信息库工具
                C.编码与排错工具
                D.软件管理和软件支持工具

人工分割线-答案

        1. C

        2. B

        3. D

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1916959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django项目创建的基本准备工作【4】

【 一 】软件开发模式 官话下面 人话 瀑布开发就是将什东西都定义好了在进行开发对吧 敏捷就是进行模块化一样 分批进行 规定一个时间段完成什么样的功能。 总结来说,瀑布开发强调在项目开始之前进行详细的计划和准备,并按照预定的顺序逐步进行&#x…

Elasticseach学习

概念 是一个开源的分布式搜索引擎,可以应用于搜索、日志监控等 倒排索引 正向索引:基于文档id创建索引。查询词条时必须先找到文档,而后判断是否包含词条 倒排索引:对文档内容分词,对词条创建索引,并记录…

前端面试题44(JavaScript几种排序的变种或高级应用)

1. 快速排序的变种 三轴快排 (Three-Way QuickSort):处理大量重复元素时更为高效,通过维护三个区域来避免重复元素的重复比较和交换。平衡快排 (Balanced QuickSort):通过随机选取或使用中位数作为枢轴,以减少最坏情况下的性能退…

重命名文件的方法有哪些?重命名文件的工具有哪些?

在日常的计算机使用过程中,重命名文件是一项常见但至关重要的任务。无论是为了更好地组织文件、修复命名错误,还是简化文件管理流程,掌握正确的重命名方法和工具都能显著提升效率。 本文将探讨多种重命名文件的方法,同时介绍几款高…

传言称 iPhone 16 Pro 将支持 40W 快速充电和 20W MagSafe

目前,iPhone 15 和 iPhone 15 Pro 机型使用合适的 USB-C 电源适配器可实现高达 27W 的峰值充电速度,而 Apple 和授权第三方的官方 MagSafe 充电器可以高达 15W 的功率为 iPhone 15 机型进行无线充电。所有四款 iPhone 15 机型均可使用 20W 或更高功率的电…

ArduPilot开源飞控之AP_Mount_Siyi

ArduPilot开源飞控之AP_Mount_Siyi 1. 源由2. 框架设计2.1 类和继承2.2 公共方法2.3 保护方法2.4 私有成员和方法2.5 解析状态2.6 重要成员变量 3. 重要方法3.1 AP_Mount_Siyi::init3.2 AP_Mount_Siyi::update3.3 AP_Mount_Siyi::read_incoming_packets3.4 AP_Mount_Siyi::proc…

linux登入提示信息

目录 1.Linux 登录提示信息在操作系统中扮演着重要的角色 安全性提醒 欢迎信息 系统状态通知 政策和使用条款 技术支持信息 更新和变更通知 2.配置文件介绍 3.编辑配置文件 4.效果展示 修改前 修改后 目录 1.Linux 登录提示信息在操作系统中扮演着重要的角色 安…

vue 数据类型

文章目录 ref 创建:基本类型的响应式数据reactive 创建:对象类型的响应式数据ref 创建:对象类型的响应式数据ref 对比 reactive将一个响应式对象中的每一个属性,转换为ref对象(toRefs 与 toRef)computed (根据计算进行修改) ref 创…

Go语言---并发编程以及资源竞争(goroutine、runtime)

并发和并行 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。 并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的&a…

华为HCIP Datacom H12-821 卷34

1.单选题 防火墙默认已经创建了一些安全区域,以下哪一个安全区域不是防火墙上默认存在的? A、Trust B、DMZ C、Internet D、Local 正确答案: C 解析: 防火墙默认情况下为我们提供了三个安全区域,分别是 Trust、DMZ和Untrust 2.判断题 …

8. Python3 pandas数据分析处理库

11.1 pandas的数据结构 pandas的数据结构如下图所示: pandas的几种数据结构有内在联系,可以吧DataFrame看作Series的容器,把Panel看作DataFrame的容器。可以像操作字典那样在这些数据结构中插入或者移除数据对象。在介绍这些数据结构之前&am…

力扣-dfs

何为深度优先搜索算法? 深度优先搜索算法,即DFS。就是找一个点,往下搜索,搜索到尽头再折回,走下一个路口。 695.岛屿的最大面积 695. 岛屿的最大面积 题目 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相…

【Git基本操作】添加文件 | 修改文件 | 及其各场景下.git目录树的变化

目录 1. 添加文件&add操作和commit操作 2. .git树状目录的变化 3. git其他操作 4. 修改文件 4.1 git status 4.2 git diff 1. 添加文件&add操作和commit操作 add操作:将工作区中所有文件的修改内容 添加进版本库的暂存区中。commit操作:…

TortoiseSVN-VisualSVNServer-软件代码文本资源版本控制管理-版本比较及差异文件

文章目录 1.VisualSVNServer安装2.TortoiseSVN安装2.1.检出2.2.提交资源2.3.更新资源2.4.返回版本2.5.比较软件可更改2.6.在此创建版本库3.TortoiseSVN版本差异文件1.VisualSVNServer安装 从官网下载,或者csdn下载链接: https://download.csdn.net/download/m0_67316550/8952…

Python酷库之旅-第三方库Pandas(015)

目录 一、用法精讲 37、pandas.read_sql函数 37-1、语法 37-2、参数 37-3、功能 37-4、返回值 37-5、说明 37-6、用法 37-6-1、数据准备 37-6-2、代码示例 37-6-3、结果输出 38、pandas.DataFrame.to_sql函数 38-1、语法 38-2、参数 38-3、功能 38-4、返回值 …

Python酷库之旅-第三方库Pandas(016)

目录 一、用法精讲 39、pandas.DataFrame.to_stata函数 39-1、语法 39-2、参数 39-3、功能 39-4、返回值 39-5、说明 39-6、用法 39-6-1、数据准备 39-6-2、代码示例 39-6-3、结果输出 40、pandas.read_stata函数 40-1、语法 40-2、参数 40-3、功能 40-4、返回…

Gmail邮件提醒通知如何设置?有哪些方法?

Gmail邮件提醒通知功能怎么样?通知邮件怎么有效发送? Gmail作为全球广泛使用的电子邮件服务,提供了多种邮件提醒通知功能,帮助用户不错过重要信息。AokSend将详细介绍如何设置Gmail邮件提醒通知,确保您不会错过任何重…

Mysql查询近半年每个月有多少天

Mysql 查询近6个月每个月有多少天: SELECT DATE_FORMAT(DATE_ADD(NOW(),INTERVAL-(CAST( help_topic_id AS SIGNED INTEGER )) MONTH ), %Y-%m) as months,DAY(LAST_DAY(CONCAT(DATE_FORMAT(DATE_ADD(NOW(),INTERVAL-(CAST( help_topic_id AS SIGNED INTEGER )) MO…

JavaScript中的Symbol类型是什么以及它的作用

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介JavaScript中的Symbol类型是什么以及它的作用1. 符号(Symbol)的创建2. 符号的特性3. 符号的作用3.1 属性名的唯一性3.2 防止属性被意外访问或修改3.3 使用内置的符号3.4 符号与属性遍历 4. 总结 ⭐ 写在最后…

光学传感器图像处理流程(二)

光学传感器图像处理流程(二) 2.4. 图像增强2.4.1. 彩色合成2.4.2 直方图变换2.4.3. 密度分割2.4.4. 图像间运算2.4.5. 邻域增强2.4.6. 主成分分析2.4.7. 图像融合 2.5. 裁剪与镶嵌2.5.1. 图像裁剪2.5.2. 图像镶嵌 2.6. 遥感信息提取2.6.1. 目视解译2.6.2…