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

目录

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

十、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.mzph.cn/diannao/44694.shtml

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

相关文章

DOM 基本操作 - 事件基础

theme: smartblue 一、事件概述 JavaScript使我们有能力创建动态页面,而事件是可以被JavaScript侦测到的行为。 简单理解: 触发---响应机制。 网页中的每个元素都可以产生某些可以触发JavaScript的事件,例如,我们可以在用户点击某按钮时产生一…

libvirt qemu添加新类型磁盘格式

目录 前言 1 qemu部分 1.1 磁盘格式驱动创建 1.2 json文件创建数据结构对象: 2 libvirt部分: 2.1 对应关系设置 2.2参设向指令格式转换 前言 qemu中有很多虚拟机磁盘格式,比如较为熟悉的qcow2,luks,r…

矩阵分解及其在机器学习中的应用

阵分解是一种广泛应用于数据挖掘和机器学习领域的技术,它通过将一个高维数据集分解为多个低维的数据集,以降低数据的复杂性、提高计算效率,并发现数据中的隐含结构。本文将详细介绍矩阵分解的基本概念、主要方法及其在机器学习中的应用。 一、…

fastadmin框架后台列表固定第一行列表固定头部

在列表中,如果列表字段很多,并且每页数量很多,往下拉的时候就不好辨别数据是哪个字段的,对用户造成不好的浏览体验。 通过以下方法,可以实现将列表的第一行,也就是头部,固定在第一行显示&#…

14-62 剑和诗人36 - 混合专家 (MoE) 扩展 AI 视野

了解混合专家 (MoE) 混合专家 (MoE) 是一种机器学习技术,它将多个“专家”神经网络模型组合成一个更大的模型。MoE 的目标是通过组合专业专家(每个专家专注于不同的子领域)来提高 AI 系统的准确性和能力。 MoE 模型的一些关键特征&#xff1…

探索Kotlin:从K1到K2

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 嘿,小伙伴们!今天我们来聊聊Kotlin,这个在安卓开发圈里越来越火的编程语言。…

苹果手机抹机(马来西亚)操作步骤

苹果手机抹机(马来西亚)操作步骤 操作环境操作步骤 操作环境 苹果6s,没有插卡,就连接上了一个wifi 操作步骤

错位情缘悬疑升级

✨🔥【错位情缘,悬疑升级!关芝芝与黄牡丹的惊世婚约】🔥✨在这个迷雾重重的剧场,一场前所未有的错位大戏正悄然上演!👀 你没看错,昔日兄弟的前女友关芝芝,竟摇身一变成了…

FastAPI 学习之路(三十七)元数据和文档 URL

实现前的效果 那么如何实现呢,第一种方式如下: from routers.items import item_router from routers.users import user_router""" 自定义FastApi应用中的元数据配置Title:在 OpenAPI 和自动 API 文档用户界面中作为 API 的…

【SGX系列教程】(五)enclave多线程测试,以及EPC内存测试

文章目录 一. 概述二. 原理分析2.1 多线程在Enclave中的实现流程2.2 多线程和EPC内存分配之间的冲突2.3 解决多线程和EPC内存分配冲突的策略 三. 源码分析3.1 代码结构3.2 源码3.2.1 App文件夹3.2.2 Enclave文件夹3.2.3 Makefile 3.3 总结 四.感谢支持 一. 概述 在Intel SGX环境…

从零开始学习嵌入式----C语言框架梳理与后期规划

目录 一、环境搭建. 二、见解 三、C语言框架梳理 四、嵌入式学习规划流程图(学习顺序可能有变) 一、环境搭建. C语言是一门编程语言,在学习的时候要准备好环境。我个人比较喜欢用VS,具体怎么安装请百度。学习C语言的时候,切忌…

树莓派pico入坑笔记,ssd1306使用

目录 说明 后附进阶玩法:显示中文,外加简单库实现 官方模块使用 使用样例 方法说明 下面是绘图支持的方法 进阶玩法,显示中文 方法,对汉字取字模,然后按像素对字模进行显示 说明 circuitpython8.x使用iic接口驱…

类和对象——【运算符重载】

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件iostream的声明,使用时请自行添加。 博主主页:Yan. yan.                        …

宏任务与微任务对比【前端异步】

目录 简介微任务与宏任务的基本概念宏任务(Macrotasks)微任务(Microtasks)宏任务示例微任务示例微任务与宏任务的执行时序 结论 简介 在JavaScript的异步编程中,理解事件循环(Event Loop)是至关…

Qt+MySQL实现社团管理系统

开发环境 ● Qt 5.14.1 ● Win10 ● Mysql 5.7.28 系统介绍 系统主要实现的功能如下图所示 社团管理系统主要包含了以下几个亮点功能 轮播图显示社团信息支持excel形式的导入导出学生信息权限控制(管理员、超级管理员、用户) 系统效果展示 登录界面…

前端工程化(01):Webpack、Gulp、Grunt三大自动化构建工具对比

10年前端开发和UI设计老司机→贝格前端工场,为您分享。本期介绍三款自动化构建工具,看看他们的工作原理和差异化,帮助你来选择。 Webpack、Gulp和Grunt都是前端构建工具,用于优化前端开发流程和提高开发效率。它们都可以自动化执…

Java8新语法

一、Java8新特性 JDK 8 正式版在 2013 年 9 月份发布。 Java8主要内容Lambda表达式函数式接口方法引用与构造器引用Stream API接口中的默认方法与静态方法新时间日期API其他新特性Java8新特性简介: 速度更快代码更少(增加了新的Lambda表达式)强大的Stream API便于并行最大化减少…

构建未来对话:从零开始实现基于Vue 3的AI聊天页面

大家好,今天我们将一起探索如何从零开始,使用Vue 3构建一个AI对话页面。这个过程不仅会让我们了解Vue 3的新特性,还会让我们对构建交互式Web应用有一个全新的认识。如果你是编程新手,别担心,我会用通俗易懂的语言&…

HarmonyOS(43) @BuilderParam标签使用指南

BuilderParam BuilderParam使用举例定义模板定义具体实现BuilderParam初始化 demo源码参考资料 BuilderParam 该标签有的作用有点类似于设计模式中的模板模式,类似于指定一个UI占位符,具体的实现交给具体的Builder,顾名思义,可以…

SpringBoot项目架构实战之“网关zuul搭建“

第三章 网关zuul搭建 前言: 1、主要功能 zuul主要提供动态路由(内置ribbon实现)和过滤(可以做统一鉴权过滤器、灰度发布过滤器、黑白名单IP过滤器、服务限流过滤器(可以配合Sentinel实现))功能…