软件 工程

目录

  • 第十章、软件工程
    • 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元。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

收藏|必读10本pcb设计书籍推荐

1."High-Speed Digital Design: A Handbook of Black Magic"。 作者是Howard Johnson和Martin Graham。这是一本关于高速数字电路设计的优秀教材,适合那些需要设计高速电路的工程师。 作为比较早出来的信号完整性参考书,对国内的信号完整性研…

H.265/HEVC编码原理及其处理流程的分析

H.265/HEVC编码原理及其处理流程的分析 H.265/HEVC编码的框架图,查了很多资料都没搞明白,各个模块的处理的分析网上有很多,很少有把这个流程串起来的。本文的主要目的是讲清楚H.265/HEVC视频编码的处理流程,不涉及复杂的计算过程。…

第3天学习Docker-Docker部署常见应用(MySQL、Tomcat、Nginx、Redis、Centos)

前提须知: (1)搜索镜像命令 格式:docker search 镜像名 (2)设置Docker镜像加速器 详见文章:Docker设置ustc的镜像源(镜像加速器) 1、部署MySQL 拉取镜像(这…

从0到1无比流畅的React入门教程

无比流畅的React入门教程TOC React 是什么 简介 用于构建 Web 和原生交互界面的库React 用组件创建用户界面通俗来讲:是一个将数据渲染为HTML视图的开源JS库 其他信息 Facebook 开发,并且开源 为什么使用React? 原生JS使用DOM-API修改UI代码很繁…

4年外包出来人废了,5次面试全挂....

我的情况 大概介绍一下个人情况,男,毕业于普通二本院校非计算机专业,18年跨专业入行测试,第一份工作在湖南某软件公司,做了接近4年的外包测试工程师,今年年初,感觉自己不能够再这样下去了&…

软件设计模式介绍与入门

目录 1、软件设计模式的起源 2、什么是设计模式? 2.1、设计模式的设计意图 2.2、设计模式的分类准则 3、为什么要学习设计模式 4、如何学习设计模式 5、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...&#x…

Redis--弱口令未授权访问漏洞

Redis--弱口令未授权访问漏洞 一、漏洞简介二、危险等级三、漏洞影响四、入侵事件五、漏洞复现--Redis CrackIT入侵事件5.1、以root启动的redis,可以远程登入到redis console--------A主机5.2、生成公钥5.3、执行: redis-cli flushall 清空redis(非常暴力&#xff0…

《终身成长》笔记四——如何面对失败

目录 经典摘录 秉性 一个英雄具备的所有特质 ​编辑 什么是成功 什么是失败 掌控成功 领导力与固定型思维模式 成长型思维模式领导者的行为 害羞 经典摘录 秉性 天才们,因为自己拥有的优势而得意忘形,不去学习如何努力奋斗以及如何面对挫折。…

分享一个程序员接私活、兼职的平台

分享一个程序员接私活、兼职的平台 1、技术方向满足任一即可2、技术要求3、最后 1、技术方向满足任一即可 Python:熟练掌握Python编程语言,能够使用Python进行数据处理、机器学习和深度学习等相关工作。 MATLAB:熟练掌握MATLAB编程语言&…

MathType7公式编辑器新版详细介绍下载安装

由于CSDN这边不能发相关的教程等,若仅用于学习体验,请移步,有能力请支持正版。 wx供重浩:创享日记 对话框发送:mathtype 免费获取MathType-win-zh.exe安装包 它是一款用于数学公式编辑和排版的软件。MathType可以在Mi…

粪菌移植——一种治疗人体疾病的新型疗法

谷禾健康 粪菌移植是一项近年来备受关注的医疗技术,它涉及将健康捐赠者的粪便物质转移至患有疾病或障碍患者的胃肠道。 简单来说就是选择健康合适的人粪便,通过科学方法提取出有用的微生物,去除有害与无用的部分,然后制成制剂&…

基于布谷鸟优化算法(CS)在微电网优化中的应用研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

ChatGPT应用场景巡航之广告文案

此文为ChatGPT应用场景巡航第二篇:广告文案。 写出成功的文案,需要专业的技术水准,如果加以辅助工具,那会更加如虎添翼,事半功倍,本文会给大家介绍一下广告文案的写作技巧和辅助工具的使用。 01 — 指导原…

如何使用jenkins、ant、selenium、testng搭建自动化测试框架

如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入,然后写一些测试脚本,这就是你所说的自动化测试,其实这个还不能算是真正的自动化测试,你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗&#xff…

文献阅读:A Lite Distributed Semantic Communication System for Internet of Things

目录 动机:为什么作者想要解决这个问题?贡献:作者在这篇论文中完成了什么工作(创新点)?规划:他们如何完成工作?理由:通过什么实验验证它们的工作结果自己的看法 动机:为什么作者想要…

【接口自动化测试】cookie绕过验证码自动登录?(保持登录状态)

目录 前言 cookie工作原理 cookie绕过登录 【自动化测试工程师学习路线】 1、自动化测试必备Python编程内容​ 2、Web UI 自动化测试基础内容​ 3、Web UI 自动化测试实战内容​ 4、APP UI 自动化测试基础内容​ 5、APP UI 自动化测试实战内容​ 6、API 接口自动化测…

从‘discover.partitions‘=‘true‘分析Hive的TBLPROPERTIES

从’discover.partitions’true’分析Hive的TBLPROPERTIES 前言 Hive3.1.2先建表: show databases ;use db_lzy;show tables ;create external table if not exists test_external_20230502(id int,comment1 string,comment2 string ) stored as parquet ;creat…

高精度示波器keysight是德DSOS054、MSOS054销售回收

安捷伦Keysight DSOS054A MSOS054 500MHZ高清晰度示波器 特征: 带宽:500 MHz,具有平坦的频率响应,可实现高信号保真度 频道:4 最大存储深度:800 Mpts(2 通道),400 Mpt…

2023五一杯数学建模竞赛ABC题思路解析+代码+论文

AB题见文末,下面是C C题:“双碳”目标下低碳建筑研究 “双碳”即碳达峰与碳中和的简称,我国力争2030年前实现碳达峰,2060年前实现碳中和。“双碳”战略倡导绿色、环保、低碳的生活方式。我国加快降低碳排放步伐,大力推…

莫言用 GPT 写颁奖辞,那如果他自己写会是什么效果呢?

在《收获》杂志 65 周年庆典上,莫言在为余华颁奖时表示,余华是自己的好朋友,但给他的颁奖词写了好几天也想不出来,后来找了 ChatGPT 帮忙写。最后,莫言让 ChatGPT 写了一篇莎士比亚风格 1000 多字的颁奖词,…