软考笔记——第九章--软件工程基础知识

2023-10-28

第九章 软件工程基础知识

  • 软件工程概述、软件过程模型、软件开发方法、软件工具与软件开发环境、软件项目管理、软件风险管理、软件度量。

1.软件工程概述

  • 软件工程基本原理:用分阶段的生命周期计划严格管理、坚持进行阶段评审、实现严格的产品控制、采用现代程序设计技术、结果应能清楚的审查、开发小组的人员应少而精、承认不断改进软件工程实践的必要性。
  • 基本要素:方法、工具、过程
  • 软件生存周期:可行性分析与项目开发计划、需求分析、概要设计(选择系统解决方案,规划子系统)、详细设计(设计子系统内部具体实现)、编码、测试、维护。

2.软件过程

  • 能力成熟度模型CMM:对软件组织化阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力经过这些阶段逐步提高。

    • 初始级
    • 可重复级
    • 已定义级
    • 已管理级
    • 优化级
  • 能力成熟度模型CMMI:将已有的几个CMM模型结合在一起,使之构造成为“集成模型”。支持多个工程学科和领域的、系统的、一致的过程改进框架,能适应现代工程的特点和需要,能提高过程的质量和工作效率。

  • CMMI两种表示方法:

    1. 阶段式模型:类似于CMM,它关注组织的成熟度,五个成熟模型如下:
    • 初始的
    • 已管理的
    • 已定义的
    • 定量管理的
    • 优化的
    1. 连续式模型:关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程能力等级。

3.统一过程UP

  • 统一过程模型:是一种开发过程,特征如下:
  • 三大特点:用例和风险驱动、以架构为中心、迭代并且增量
  • 开发的四个阶段:起始(项目的初始活动,如确认需求和风险评估等)、精化(需求分析和架构设计等)、构建(系统的构建,产生实现模型等)、移交(软件提交方面的工作,产生软件增量,进行β测试,交付系统等)。
  • UP的每一次迭代都是一次完整的软件开发过程,包括整个软件开发生命周期,有五个核心工作流(需求、分析、设计、实现、测试

4.软件过程模型

  • 软件过程模型:即软件开发模型,是软件开发全部过程、活动和任务的结构框架。

瀑布模型(SDLC)

软考48

  • 结构化方法中的模型,是结构化的开发,开发流程如同瀑布一般,一步一步的走下去,直到最后完成项目开发,只适用于需求明确或者二次开发(需求稳定),当需求不明确时,最终开发的项目会错误,有很大的缺陷。

V模型

软考49

  • 是瀑布模型的一个变体。特点是增加了很多轮测试,并且这些测试贯穿于软件开发的各个阶段,不像其他模型都是软件开发完再测试,很大程度上保证了项目的准确性。

演化模型

软考50

  • 原型模型:即快速原型开发,与瀑布模型相反,原型针对的就是==需求不明确的情况==,首先快速构造一个功能模型,演示给用户看,并按用户要求及时修改,中间再通过不断的演示与用户沟通,最终设计出项目,就不会出现与用户要求不符合的情况,采用的是迭代的思想。

  • 螺旋模型:是多种模型的混合,针对需求不明确的项目,与原型类似,但是增加了**风险分析**,这也是其最大的特点。同时,该模型特别适合用于庞大、复杂并且具有高风险的系统。(也适用于用户需求不清、需求经常变化的情况)

    • 四步:制定计划—风险分析—实施工程—用户评估

增量模型

  • 首先开发核心模块功能,而后与用户确认,之后再开发核心模块的功能,即每次开发一部分功能,并与用户需求确认,最终完成项目开发,优先级最高的服务最先交付。
  • 特点:但由于并不是从系统整体角度规划各个模块,因此不利于模块划分。难点在于如何将客户需求划分为多个增量。与原型不同的是==增量模型的每一次增量版本都可作为独立可操作的作品==,而原型的构造一般是为了演示。

其他模型

  • 喷泉模型:是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。使开发过程具有迭代性和无间隙性。
  • 基于构件的开发模型CBSD:利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品软件构件。
  • 特点是增强了复用性,在系统开发过程中,会构建一个构件库,供其他系统复用,因此可以提高可靠性,节省时间和成本。

5.软件开发方法

  • 结构化方法:流程固定,针对需求明确的项目,自顶向下,逐层分解,面向数据流
  • 结构化方法的设计:体系结构设计是宏观架构设计;数据设计是数据流的设计;接口设计关注模块间的连接设计;过程设计是模块内的具体实现过程的数据结构和算法的设计。
  • Jackson方法:面向数据结构的开发方法,适合于小规模的项目。
  • 原型方法:适合于需求不明确的开发,以原型模型为代表。
  • 面向对象方法:强调复用性,构建全面合理的模型,供不同项目使用,方便修改,节省开发时间和效率,增强复用性,以构件组装模型为代表。

6.敏捷开发

  • 针对中小型项目,主要是为了给程序员减负,去掉一些不必要的会议和文档。指代一组模型(极限编程、自适应开发、水晶方法…),这些模型都具有相同的原则和价值观,具体如图所示:软考51

  • 开发宣言:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划。

  • 结对编程:一个程序员开发,另一个程序员在一旁观察审查代码,能够有效的提高代码质量,共同对代码负责。

  • 自适应开发:强调开发方法的适应性。

  • 水晶开发:每一个不同的项目都需要一套不同的策略、约定和方法论。

  • 特性驱动开发:是一套针对中小型软件开发项目的开发模式。

  • 极限编程XP:核心是沟通、简明、反馈和勇气。XP提倡测试先行,为了将以后出现bug的几率降到最低。

  • 并列争球法SCRUM:是一种迭代的增量化过程。

7.软件工具

  • 软件开发工具:对于软件开发过程的各种活动。包括需求分析工具、设计工具、编码与排错工具、测试工具。
  • 软件维护工具:辅助软件维护过程中活动的软件,辅助维护人员对软件代码及其文档进行各种维护活动。
  • 软件管理和软件支持工具:辅助管理人员和软件支持人员的管理活动和支持活动,以确保软件高质量的完成。包括项目管理工具、配置管理工具、软件评价工具。

8.软件开发环境

  • 软件开发环境:指支持软件产品开发的软件系统,由软件工具集和环境集成机制构成。
  • 开发支持环境(环境信息库,过程控制和消息服务,用户界面规范)

9.软件项目管理

  • 有效的项目管理集中在4P上:人员、产品、过程、项目。
  • 软件项目估算方法:成本估算方法
    • 自顶向下估算
    • 自底向上估算
    • 差别估算法
    • 专家估算
  • COCOMO模型:常见的软件规模估算方法。
  • COCOMOⅡ模型:COCOMO的升级,也是以软件规模作为成本的主要因素,考虑多个成本驱动因子。

10.进度管理

  • 基本原则:划分、相互依赖、世间分配、工作量确认、确认责任、明确输出结果、确定里程碑。

  • Gantt图(甘特图):又称横道图。横轴表示时间、纵轴表示活动、以时间顺序表示活动。能反应活动间的并行关系,但无法反应活动之间的依赖关系,因此也难以清晰的确关键任务和关键路径。

  • PERT图:类似于前趋图,是有向图,反应活动之间的依赖关系,有向边上标注活动运行的时间,但无法反应活动之间的并行关系。

  • 图的关键路径:软考52

  • 时间/事件 1 2 3 4 5 6 7 8 9
    最早开始时间 0 2 2 0 4 4 9 9 15
    最晚开始时间 0 2 9 6 4 10 9 11 15

    由上图分析,以及Gantt图和PERT图的相关概念,可知,第一空选D,第二空选C。

  • 松弛时间:关键路径—哪段的最长段的路径。

11.软件项目的组织(了解)

  • 组织结构模式:项目型、职能型、矩阵型

  • 程序设计小组的组织方式:

    • 主程序员制小组:主程序员全权负责,后援工程师必要时能替代主程序员,适合大规模项目。
    • 民主制小组:也即无主程序员小组,成员之间地位平等,任何决策都是全员参与投票,适合于项目规模小,开发人员少,采用新技术和确定性较小的项目。
    • 层次式小组:两个层次,一名组长领导若干个高级程序员,每个高级程序员领导若干个程序员。

12.软件质量管理

  • ISO/IEC9126软件质量模型:质量特性和子特性
    • 功能性:适合性、准确性、互用性、依从性、安全性
    • 可靠性:成熟性、容错性、易恢复性
    • 易使用性:易理解性、易学性、易操作性
    • 效率:时间特性、资源特性
    • 可维护性:易分析性、易改变性、稳定性、易测试性
    • 可移植性:适应性、易安装性、一致性、易替换性

13.软件质量保证

  • 3个要点:

    • 软件必须满足用户需求,与用户需求不一致的软件无质量可言。
    • 软件应遵循规定的一系列开发标准,不遵循这些准则的软件,其质量难以得到保证。
    • 软件还应满足某些隐含的需求(如可理解性、可维护性,未明确写在用户需求中)。
  • 7个任务:

    • 应用技术方法、正式的技术评审、测试软件、标准的实施、控制变更、质量、记录保存和报告。
  • 软件容错技术

    • 通常将质量理解为用户满意程度,有两个必要条件:设计质量评审程序质量评审
  • 软件配置管理

    • 基线
    • 软件配置项
    • 版本控制

14.风险管理

  • 软件风险两个特性:不确定性、损失。

  • 在这里插入图片描述

  • 风险管理过程如下:

    • 风险识别
    • 风险预测
    • 风险评估
    • 风险控制

15.软件度量

  • 软件的两种属性:外部属性指面向管理者和用户的属性,可直接测量,一般为性能指标。内部属性指软件产品本身的属性,如可靠性等,只能间接测量
  • McCabe度量法:又称为环路复杂度,假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为 m − n + 2 m-n+2 mn+2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软考笔记——第九章--软件工程基础知识 的相关文章

  • 安卓(Android)的原生系统真的那么好用吗

    定制系统有定制系统的优点 它一定更适合中国的大众用户 毕竟中国的大众用户甚至连微信调整一个功能都可能不会使用了 学习成本 这种东西能不要就不要 在 Android 9 0 之前也一定更适合中国的 Android 软件环境 原生 Androi

随机推荐

  • tomcat如何增大并发_【高并发】高并发环境下如何优化Tomcat性能?看完我懂了!...

    写在前面 Tomcat作为最常用的Java Web服务器 随着并发量越来越高 Tomcat的性能会急剧下降 那有没有什么方法来优化Tomcat在高并发环境下的性能呢 Tomcat运行模式 Tomcat的运行模式有3种 1 bio模式 默认的
  • Doxygen和VS助手配置代码注释模板

    Title FileNote Shortcut filenote Description 文件注释 Copyright c YEAR xx科技有限公司 http blog csdn net stelalala All rights rese
  • android ios通用OTG,被忽视的iOS13福利:OTG随心读写移动SSD

    被忽视的iOS13福利 OTG随心读写移动SSD 2019 09 22 15 58 14 11点赞 59收藏 29评论 iOS13带来了深色模式 HapticTouch等众多新功能 但很少有人提到OTG读取优盘 移动固态硬盘的新增特性 所需
  • MySQL视图详解

    今天继续给大家介绍MySQL相关知识 本文主要内容是MySQL视图 一 MySQL视图详解 MySQL引入了视图的概念 所谓视图 其实就是一张虚拟的数据表 该数据表与其他普通数据表一样 有列和属性 视图和普通的数据表唯一不同的是 视图中本身
  • Java定义一个队列Queue及操作

    定义一个队列 定义一个队列 Queue
  • postMessage - 跨域消息传递

    window postMessage 方法允许来自一个文档的脚本可以传递文本消息到另一个文档里的脚本 而不用管是否跨域 一个文档里的脚本还是不能调用在其他文档里方法和读取属性 但他们可以用这种消息传递技术来实现安全的通信 这项技术称为 跨文
  • grep 基本选项

    grep 命令基本格式 gt gt grep 选项 模式 文件 如果模式字符串中有空格必须用 括起来 1 c 选项 表示输出匹配字符串行的数量 默认情况下 grep命令打印出包含模式的所有行 2 n 选项 不但显示匹配的行号 而且会将该行打
  • forms组件

    转载于 https www cnblogs com cmd61 p 11582275 html
  • Bug记录——nn.Parameter()参数不更新、根据loss自学习权重变量不更新、pytorch 模型自定义参数不更新、网络梯度为None,参数不更新解、tensor参数有梯度,但不更新

    系列文章目录 PyTorch学习 关于tensor Variable nn Parameter 叶子节点 非叶子节点 detach 函数 查看网络层参数 pytorch优化器 add param group 介绍及示例 Yolov7 优化器
  • (附源码)基于SSM学生作业管理系统-计算机毕设 20912

    SSM学生作业管理系统 摘 要 随着科学技术的飞速发展 各行各业都在努力与现代先进技术接轨 通过科技手段提高自身的优势 对于学生作业管理系统当然也不能排除在外 随着网络技术的不断成熟 带动了学生作业管理系统 它彻底改变了过去传统的管理方式
  • Android开机启动shell脚本(Android 8.0测试OK)

    Android 下做开机启动shell脚本的大致流程如下 目录 写shell脚本 为脚本写te文件 在init rc中启动脚本 添加Selinux权限 写shell脚本 比如新建一个init test sh 内容如下 system bin
  • C语言/C++基础之奔跑的小人

    C语言 C 基础之奔跑的小人 程序之美 前言 主体 运行效果 代码示例一 运行结果 代码示例二 结束语 程序之美 前言 C语言实现的会动的小人 非常有意思 代码也比较简单 有兴趣的小伙伴 可以抽时间学习或者了解下 其实就是一些字符的拼接 最
  • 7-14 然后是几点 (15分)

    7 14 然后是几点 15分 题目描述如下 有时候人们用四位数字表示一个时间 比如 1106 表示 11 点零 6 分 现在 你的程序要根据起始时间和流逝的时间计算出终止时间 读入两个数字 第一个数字以这样的四位数字表示当前时间 第二个数字
  • shinyapps安装

    相信很多刚接触shiny的小白都和我一样 会遇到shinyapps配置失败的问题 因为网站上能找到的教程提供的方法已经out 现在更新之后和以前有所不同 这是以前的配置方法 准备工作 1 拥有R或像RStudio的集成开发环境 2 R包构建
  • How to print out more than 20 items (documents) in MongoDB's shell?

    How to print out more than 20 items documents in MongoDB s shell db foo find limit 300 won t do it It still prints out o
  • STlink下载和打断点Debug调试小结

    一 下载 1 检查设备是否选择正确 2 检查SWDIO有没有识别到 如果没有 检查硬件连线是否正确 3 检查Utilities选项 4 点击settings 添加FLASH 二 Debug调试 前 言 当之前在用STlink进行调试的时候
  • 关于spring的aop的xml和注解操作

    AOP 相关概念 1 横切关注点 一些具有横切多个不同软件模块的行为 通过传统的软件开发方法不能够有效地实现模块化的一类特殊关注点 横切关注点可以对某些方法进行拦截 拦截后对原方法进行增强处理 2 切面 Aspect 切面就是对横切关注点的
  • 耗时半月,终于把牛客网上的软件测试面试八股文整理成PDF合集!

    大家好 最近收到不少小伙伴的留言 反映现在的面试难度越来越高 要背的八股文越来越多了 考察的知识点也越来越细致 明摆着就是想让我们 徒手造航母 嘛 对程序员们来说确实是一大挑战 因此 我特地整理了今年上半年大厂软件测试面试题的合集 希望能够
  • 租约锁机制

    背景和介绍 缓存是计算机里广泛使用的一种技术 对降低读取延迟 网络流量和服务器负载都非常有效 但也带来了一致性 Consistency 的问题 所谓一致就是客户端总能读到最新的数据 使用缓存后有可能服务器端的数据已经被修改 但客户端仍然从缓
  • 软考笔记——第九章--软件工程基础知识

    第九章 软件工程基础知识 软件工程概述 软件过程模型 软件开发方法 软件工具与软件开发环境 软件项目管理 软件风险管理 软件度量 1 软件工程概述 软件工程基本原理 用分阶段的生命周期计划严格管理 坚持进行阶段评审 实现严格的产品控制 采用