软件 工程

article/2025/10/31 0:37:15

目录

  • 第十章、软件工程
    • 1、瀑布模型(SDLC)
    • 2、快速原型模型
    • 3、增量模型
    • 4、螺旋模型
    • 5、Ⅴ模型
    • 6、喷泉模型
    • 7、构建组装模型(CBSD)
    • 8、统一过程(RUP)
    • 9、敏捷开发方法
    • 10、信息系统开发方法
    • 11、需求开发
    • 12、结构化设计
    • 13、软件测试
      • 13.1、黑盒测试
      • 13.2、白盒测试
      • 13.3、McCabe复杂度
    • 14、系统运行与维护
    • 15、能力成熟度模型-CMM
    • 16、项目管理

第十章、软件工程

1、瀑布模型(SDLC)

瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品

瀑布模型适用于需求相对稳定软件规模较大项目管理较为规范的软件开发项目,例如传统的企业级软件开发和信息系统开发等。
请添加图片描述

2、快速原型模型

在这里插入图片描述
主要用于挖掘需求,或是进行某种技术或开发方法的可行性研究,是开发人员为了快速而准确获得用户需求而经常采用的方法。

适用场合

  1. 预先不能确切定义需求的软件系统,或需求多变的系统
  2. 开发人员对设计方案没信心或对将要采用的技术手段不熟悉或把握不大
  3. 快速原型模型可作为单独的过程模型使用,也常被作为一种方法或实现技术应用于其他的过程模型

3、增量模型

把软件产品作为一系列增量构件来设计、编码、集成和测试,在项目软件开发过程中,以一系列的增量方式来逐步开发系统。
增量开发:按一定的时间间隔开发部分软件
增量提交:先提交部分软件给用户试用,听取用户意见,在提交另一部分软件让用户试用,反复多次,直到全部提交

适用场合

  1. 软件产品可以分批次地进行交付。
  2. 待开发的软件系统能够被模块化。
  3. 软件开发人员对应用领域不熟悉﹑难以一次性地进行系统开发时。
  4. 项目管理人员把握全局的水平较高。
  5. 对软件需求把握不准确、设计方案有一定风险的软件项目。

4、螺旋模型

在这里插入图片描述

在这里插入图片描述

5、Ⅴ模型

请添加图片描述
V模型(V-Model)是一种软件开发过程模型,它强调了测试和验证在软件开发过程中的重要性。与瀑布模型类似,V模型是一种线性顺序模型,但它强调了软件测试在整个开发周期中的重要性

V模型适用于要求高质量、低故障率的软件开发项目,特别是与安全和风险相关的项目,例如航空、军事等领域。

6、喷泉模型

请添加图片描述
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。

在这里插入图片描述

7、构建组装模型(CBSD)

对象技术为软件工程的基于构件的过程模型提供了技术框架。面向对象范型强调了类的创建,类封装了数据和用于操纵该数据的算法。如果经过合适的设计和实现,面向对象的类可以在不同的应用及基于计算机的系统结构中复用

构件组装模型导致软件复用,而可复用性给软件工程师提供了大量的可见的益处
在这里插入图片描述

8、统一过程(RUP)

什么是 Rational 统一过程( Rational Unified Process)?
Rational Unified Process 是软件工程的过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。

统一过程模型是一种“用例驱动,以体系结构为核,迭代及增量”的软件过程框架,由UML方法和工具支持

在这里插入图片描述

9、敏捷开发方法

敏捷开发以用户的需求进化为核心采用迭代循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态
在这里插入图片描述
(1)极限编程XP是一种轻量级的开发方法,它提出了四大价值观:沟通、简单、反馈、勇气。五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。十二个最佳实践:计划游戏、隐喻、小型发布、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户和编码标准。
(2)水晶法强调经常交付,认为每一种不同的项目都需要一套不同的策略、约定和方法论
(3)并列争球法核心是迭代、增量交付,按照30天进行迭代开发交付可实际运行的软件
(4)自适应软件开发(ASD方法)的核心是三个非线性的重迭的开发阶段:猜测、合作、学习。

10、信息系统开发方法

结构化方法

  1. 用户至上
  2. 严格区分工作阶段,每阶段有任务与成果
  3. 强调系统开发过程的整体性和全局性
  4. 系统开发过程工程化,文档资料标准化
  5. 自顶向下,逐步分解(求精)

原型法

  1. 适用于需求不明确的开发
  2. 包括抛弃式原型和演化式原型

面向对象方法

  1. 更好的复用性
  2. 关键在于建立一个全面、合理、统一的模型
  3. 分析、设计、实现三个阶段,界限不明确

面向服务方法

  1. SO方法有三个主要的抽象级别:操作、服务、业务流程
  2. SOAD分为三个层次:基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
  3. 服务建模:分为服务发现、服务规约和服务实现三个阶段

11、需求开发

在这里插入图片描述

12、结构化设计

基本原则:

  1. 自顶向下、逐步求精
  2. 信息隐蔽
  3. 模块独立(高内聚、低耦合、复杂度)
  • 保持模块的大小适中
  • 尽可能减少调用的深度
  • 多扇入,少扇出
  • 单入口,单出口
  • 模块的作用域应该在模块之内
  • 功能应该是可预测的
    请添加图片描述

内聚
在这里插入图片描述

耦合
在这里插入图片描述

13、软件测试

  • 尽早、不断的进行测试
  • 程序员避免测试自己设计的程序
  • 既要选择有效、合理的数据,也要选择无效、不合理的数据
  • 修改后应进行回归测试
  • 尚未发现的错误数量与该程序已发现错误数成正比

动态测试

  1. 黑盒测试法
  2. 白盒测试法
  3. 灰盒测试法

静态测试

  1. 桌前检查
  2. 代码走查
  3. 代码审查

在这里插入图片描述

13.1、黑盒测试

黑盒测试,也称为功能测试,是基于软件系统的外部功能需求规格说明书,对系统进行测试的一种方法,测试人员不了解系统的内部实现细节,仅仅是按照系统的功能和接口规格说明书来进行测试,以验证系统的功能是否满足需求

  1. 等价类划分
    将输入数据划分成若干个等价类,确保每个等价类内的数据具有相同的功能和处理方式,以便用最少的测试用例覆盖所有的等价类。
  2. 边界值分析
    测试边界条件下的行为,比如输入最大值、最小值、空值、超过允许的长度等情况,检查程序是否能够正确地处理这些边界条件
  3. 错误推测
    在开发软件测试用例时,通过观察程序的代码和逻辑,预测程序可能存在的错误,然后设计测试用例来验证这些错误是否存在
  4. 因果图
    因果图也称为因果关系图,它是用来分析系统中因果关系的图形工具。测试人员可以通过绘制因果图来理解系统的逻辑关系,从而发现潜在的错误和问题,提高测试的效率和质量

13.2、白盒测试

白盒测试,也称为结构测试或透明盒测试,是基于软件系统的内部实现细节,对系统进行测试的一种方法,测试人员了解系统的内部结构和实现方式,通过检查程序代码、路径、分支、循环等细节,以验证系统是否按照设计要求正常工作

  1. 基本路径测试
  2. 循环覆盖测试
  3. 逻辑覆盖测试
    语句覆盖
    判定覆盖
    条件覆盖
    条件判定覆盖
    修正的条件判断覆盖
    条件组合覆盖
    点覆盖
    边覆盖
    路径覆盖

13.3、McCabe复杂度

McCabe复杂度是通过计算程序的控制流图中节点数目和边的数目来确定的
请添加图片描述

计算有向图G的环路复杂度公式为:V(G)=m-n+2。说明:
其中V(G)是有向图G中的环路个数,m是G中的有向弧数n是G中的节点数

14、系统运行与维护

软件维护是生命周期的一个完整部分。可以将软件维护定义为需要提供软件支持的全部活动,这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等;交付后的活动包括软件修改、培训、帮助资料

可维护性

  1. 易分析性
  2. 易给变性
  3. 稳定性
  4. 易测试性

维护类型

  1. 改正性维护(25%)
    改正在系统开发阶段已经发生的而系统测试阶段尚未发生的错误
  2. 适应性维护(20%)
    适应软件环境发生的变化而进行的维护
  3. 完善性维护(50%)
    扩充软件的功能和用户提出的新需求而进行的维护
  4. 预防性维护(5%)
    为改进软件效率、可靠性、可维护性而进行的维护

15、能力成熟度模型-CMM

CMM(Capability Maturity Model)是一种软件过程改进框架,旨在帮助组织提高其软件开发和维护过程的质量和效率

在这里插入图片描述
在这里插入图片描述
第一级:初始级(Initial);无序,随意
初始级的软件过程是无序的,项目的执行是随意甚至是混乱的。工作方式处于救火状态,不断的应对突如其来的危机;
第二级:可重复级(Repeatable)基本的项目管理管理
建立了基本的项目管理过程来跟踪费用,进度和功能特性,制定了必要的过程纪律,能重复早先类似的应用项目取得的成功。
第三级:已定义级(Defined)标准化,文档化
已经将软件管理核工程两方面的过程文档化,标准化,并综合成组织的标准软件过程,所有项目均使用该标准开发维护软件。
第四级:已管理级(Managed)可预测
收集对软件过程和产品质量的详细度量,对软禁啊过程和产品都有定量的理解和控制。
第五级:优化级(Optimizing)优化
过程的量化反馈和先进的新思想,新技术促使过程不断改进

16、项目管理

时间管理
进度安排的常用图形描述方法有Gantt图和PERT图。Gantt图不能清晰地描述____;PERT图可以给出哪些任务完成后才能开始另一些任务。下图所示的PERT图中,事件6的最晚开始时间是____

请添加图片描述

(1)A.每个任务从何时开始B.每个任务到何时结束
C.每个任务的进展情况D.各任务之间的依赖关系
(2)A.0 B.3 C.10 D.11

风险是指"损失或伤害的可能性”。
项目风险
技术风险
商业风险

关心未来
关心变化
关心选择

风险曝光度(Risk Exposure):计算方法是风险出现的概率乘以风险可能造成的损失。假设正在开发的软件项目可能存在一个未被发现的错误,而这个错误出现的概率是0.5%,给公司造成的损失将是1000000元,那么这个错误的风险曝光度就应为1000000×0.5%=5000元。


http://chatgpt.dhexx.cn/article/EQ5TQ2A9.shtml

相关文章

造价师工程师零基础自学

二级造价工程师零基础自学可以考过,但是前提是自己要有很强的学习能力和自律性。帮过网表示,二级造价工程师考试难度不小,想要考过还是要付出很多的努力的。 1、零基础怎么备考二级造价师 一:理解基础知识——看教材。 作为小白…

2、软件造价总结(主要基准数据)

1、软件开发生产率 2、人月费率 3、功能点单价 功能点单价基准为 1245.19 元/功能点(以北京地区 功能点(以北京地区 统计数据 中位数 为基准, 费用包含 软件 开发 的直接 人力成本、间直接 人力成本、间人力 成本 、间接非人力成本 、间接非…

软考软件设计师----软件工程(自用)

本篇博文目录: 1.CMM与CMMI(1) CMM(2) CMMI 2.软件开发模型(1) 瀑布模型(2) V模型(3) 增量模型(4) 演化模型(5) 喷泉模型(6) 统一过程模型 3.敏捷方法(1) 软件需求(2) 系统设计(3) 系统测试 4.测试(1)单元测试(2)集成测试(3) 测试方法 5.运行和维护知识(1) 系统可维护的评价指标…

软件工程(Software Engineering)

软件工程(Software Engineering) GTI-分布式版本控制系统查看已有的git配置信息DVOS运维一体化单分支模型exitgit --versiongit clone urlnotepadgit config --listgit initgit remote add originjava JDK版本Builder Design Mode质量属性 FURPS功能性&a…

软考-软件工程

目录 🍓软件工程概述 🧀1.软件生存周期 🧅2.软件生存周期模型 🍚瀑布模型 🍈快速原型 🍘增量模型 🍯螺旋模型 🧀喷泉模型 🍪敏捷过程 🍣3.软件开发…

Springboot+建筑造价师资格考试应试网站设计与实现 毕业设计-附源码260839

Springboot建筑造价师资格考试应试网站 摘 要 如何合理确定和有效控制工程投资,是工程项目建设的一大难题,如何使建筑工程造价管理与社会生产水平相适应,是建筑工程造价管理中需要解决的问题,只有加强建筑工程造价管理工作力度&a…

linux强行退出线程,Linux 多线程编程--线程退出

今天分析项目中进程中虚存一直增长问题,运行10个小时虚存涨到121G ,RSS占用为16G 非常恐怖。 顺便查了下Linux单进程能创建线程的上限,以及相关内容。内存32G 64bit系统信息如下: Linux线程使用方式是主进程依据请求的多少动态创建…

Linux线程优先级设置

Linux内核的三种调度策略: 1.SCHED_OTHER 分时调度策略 2.SCHED_FIFO 实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃 3.SCHED_RR实 时调度策略,时间片轮转。当进程的时间片用完&#xff0…

linux多线程编程 实验,linux操作系统-实验五-linux 多线程编程.docx

linux操作系统-实验五-linux 多线程编程.docx 操作系统 实验报告 实验序号 5 实验项目名称 Linux 多线程编程 学 号 姓 名 专业、班 实验地点 指导教师 实验时间 2015.10.13 一、实验目的及要求 通过本实验的学习,使学生掌握 Linux 多线程编程的基本方法。 以学生自…

Linux下多线程的操作

线程定义 **定义:**线程是轻量级的进程(LWP:light weight pocess),在Linux环境下线程的本质仍然是进程。在计算机上运行的程序是一组指令及指令参数的组合,指令按照既定的逻辑控制计算机运行。操作系统会以进程为单位…

Linux多线程——概念

目录 前言 一.线程的概念 1.1 什么是线程 1.2 线程的优点 1.3 线程缺点 1.4 线程异常 1.5 线程用途 1.6 Linux进程和线程对比 1.7 关于进程和线程的问题 1.7.1 POSIX线程库 1.7.2 进程ID和线程ID 1.7.3 线程ID和进程地址空间 1.7.4 线程库与内核线程的关系 二.线程管理 …

Linux多线程 | 线程同步

文章目录 前言主要介绍四种常用的线程同步方式以及相关的函数接口。 一、线程同步二、同步方法1.互斥锁2.信号量3.条件变量4.读写锁 总结 前言 主要介绍四种常用的线程同步方式以及相关的函数接口。 提示:以下是本篇文章正文内容,下面案例可供参考 一…

linux多线程实验实验报告,Linux多线程实验.ppt

Linux多线程实验.ppt (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 Linux多线程实验实验目的掌握Linux多线程程序编写。 Date1实验设备硬件PC机(带网卡) 1台MagicARM270教学实验开…

linux线程全解

目录 一、再论进程1、进程的挂起、阻塞和睡眠的区别:2、多进程实现同时读取键盘和鼠标 二、线程的引入1、线程进程的区别体现在几个方面2、进程与线程的选择取决以下几点3、使用线程技术同时读取键盘和鼠标 三、线程常见函数1、线程创建与回收2、线程取消3、线程函数…

Linux线程详解(概念、原理、实现方法、优缺点)

文章目录 一、Linux线程基本概念二、Linux内核线程实现原理三、创建线程四、线程的优缺点 一、Linux线程基本概念 linux中,线程又叫做轻量级进程(light-weight process LWP),也有PCB,创建线程使用的底层函数和进程底层…

Linux 线程———详解

1、线程的概念 和 基础知识 1.1 什么是线程 线程可看作轻量级进程(light weight process),Linux的线程本质仍然是进程。Linux先有进程后有线程,当创建了一个进程时,系统给他分配一段4G的虚拟内存,并在其内…

【Linux】线程

前言 目录 1.Linux下的线程概念 2.Linux线程控制:pthread线程库 在单执行流的进程中,此执行流独占了进程的所有资源 在一个进程内部,有时不一定只有一个执行流,在多执行流下,多个执行流共享了进程的地址空间&#xf…

C语言string库strcpy、strcmp、strcat函数详解

strcpy 即string copy 语法格式为strcpy(str1, str2), 作用是将str2赋值给str1 使用方法类似于 char str1[10], str2[] "abc"; strcpy(str1, "bcd"); strcpy(str1, str2); printf("%s", str1); // abcstr2可以是字符串, 也可以是字…

C语言strcpy、strncpy函数是否会复制‘\0‘结束符

1.首先看看strcpy函数的原型 /* strcpy函数原型*/ char *strcpy(char *est,const char *src) {assert((dest!NULL)&&(src!NULL));char *addressdest;while((*dest *src)!\0);//直到src字符串结束符\0return address; }从while循环条…

C语言中的复制函数(strcpy和memcpy)

strcpy和strncpy函数 这个不陌生,大一学C语言讲过,其一般形式为strcpy(字符数组1,字符串2)作用是将字符串2复制到字符数组1中去。 EX: char str1[10],str2[]{"China"}; strcpy(str1,str2); st…