软件工程 第一章 软件工程概述

2023-11-15

1 什么是软件

软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
程序:按事先设计的功能和性能需求执行的指令序列)
数据:程序能正常操纵信息的数据结构—>软件的核心
文档:与程序开发、维护和使用有关的图文资料

Ps:(生命型模型)
软件是程序以及开发、使用和维护程序所需要的所有文档。软件=程序+文档+数据

2 软件可以有哪些分类?

功能划分:系统软件,应用程序,支撑软件

系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效率地工作的软件。
应用软件:是在特定的领域内开发,为特定目的服务的一类软件。
支撑软件:支撑各种软件的开发与维护的软件,又称为软件开发环境。

规模划分(按开发软件所需的人力、时间以及完成的源代码行数):微型,小型,中型,大型,甚大型,极大型

开发划分:软件项目开发,软件产品开发

软件项目开发:也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构根据合同的约定进行开发。
软件产品开发:可以被广大用户直接使用的软件系统。

3 软件的特点有哪些?本质特性有哪几个?

特点
(1)软件是一种逻辑实体。
(2)软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造。
(3)软件维护与硬件的维修有着本质的差别。
(4)软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
(5)软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制。
(6)软件的开发是一个复杂的过程。
(7)软件的成本非常高昂。
(8)相当多的软件工作涉及到社会因素

本质特性:复杂性,一致性,可变性,不可见性。

复杂性
一致性
可变性
可变性(续)

软件退化
不可见性

4 软件危机的现象是什么,为什么会发生软件危机。软件危机现在还存在吗?

定义:计算机软件的开发维护过程所遇到的一系列严重问题。

表现
(1)对软件开发成本和进度的估算很不准确
(2)用户很不满意
(3)质量很不可靠
(4)没有适当的文档难于维护
(5)软件成本比重上升
(6)供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势

原因
客观:软件本身独有的特点确实给开发和维护带来了困难Ps:逻辑部件、规模庞大、维护数量不断膨胀(软件维护通常意味着改正或修改原来的设计)
主观:与软件开发和维护的许多错误认识和做法的形成有关
Ps:忽视需求分析、认为软件开发=程序编写、轻视软件维护

仍然存在

5 解决软件危机的途径是什么?

组织管理
用现代工程的概念,原理,技术和方法进行计算机软件的开发,管理和维护
(编写程序所需的工作量只占软件开发全部工作量的10%~20%)
做好软件定义时期的工作

技术措施
软件开发技术与方法(例如面向对象技术等)
软件工具(例如配置管理工具、测试工具等)

6 软件工程包含的内容有哪些?

定义
1983年美国《IEEE软件工程标准术语》对软件工程下的定义为:软件工程是开发、运行、维护和修复软件的系统方法。
1993年IEEE进一步给出了一个更全面更具体的定义:
“软件工程是:
①把系统的、规范的、可度量的方法应用于软件开发、运行和维护,也就是工程化应用于软件;
②研究①中提到的途径、方法。”

内容
一个过程

  • 方法使用的顺序
  • 要求交付的文档资料
  • 为保证质量和适应变化所需要的管理
  • 软件开发各个阶段完成的里程碑

一组方法(如何做)
一系列工具
软件工具为软件工程方法提供了自动的或半自动的软件支撑环境

Ps:软件过程提供稳定性,控制和组织。期望像流水线一样生产软件。

7 软件工程的基本原理有哪些,请枚举若干。

  1. 用分阶段的生命周期计划严格管理
  2. 坚持进行阶段评审
  3. 实行严格的产品控制
  4. 采用现代程序设计技术
  5. 结果应该可以清楚地审查
  6. 开发小组的人员应该少而精(1+1 <2)
  7. 承认不断改进软件工程实践的必要性

8 如何评价软件质量?

通过以下四个方面进行评估
可靠性:正确性和健壮
正确性和对异常值边界值的处理能力
可维护性
可读性,可修改性,可测试性,完整性
可理解性
简单性,清晰性,可用性
效率

9 瀑布模型包含哪些开发阶段?

瀑布模型开发阶段

瀑布模型特点

  • 阶段间具有顺序性和依赖性。
  • 推迟程序的物理实现。
  • 质量保证:每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。
  • 易于组织,易于管理:因为你可以预先完成所有计划。
  • 是一种严格线性的、按阶段顺序的、逐步细化的过程模型(开发模式)。

10. 瀑布模型的优缺点是什么,什么样的开发试用瀑布模型。

优点
a.强调开发的阶段性:阶段间具有顺序性和依赖性
b.强调早期计划及需求调查:推迟实现的观点
c.强调评审,强调产品测试:质量保证的观点

缺点
a.依赖于早期进行的唯一一次需求调查,不能适应需求的变化;
b.由于是单一流程,开发中的经验教训不能反馈应用于本产品的
过程;
c.风险往往迟至后期的开发阶段才显露,因而失去及早纠正的机会。
d.文档驱动的,这对于非专业的用户来说是难以阅读和理解的。

瀑布模型是最早存在的开发模型。

适用于

  • 当需求很确定,有一个稳定的产品定义和很容易被理解的技术解决方案时,纯瀑布模型特别合适。
  • 当你对一个定义得很好的版本进行维护或将一个产品移植到一个新的平台上,瀑布模型也特别合适。
  • 对于那些容易理解但很复杂的项目,采用纯瀑布模型比较合适,因为可以用顺序方法处理问题。
  • 在质量需求高于成本需求和进度需求的时候,它尤为出色。
  • 当开发队伍的技术力量比较弱或者缺乏经验时,瀑布模型更为适合。

总结:

  • 项目周期内需求极少变动的项目
  • 稳定低风险项目,规模小实现简单易受控的项目
  • 合同式的合作方式,严格按照说明执行

11 快速原型的定义,特点,解决什么问题?(什么情况使用该模型)

定义:经过简单、快速的分析,快速实现一个原型,用户与开发人员在试用原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提高软件质量。

特点:原型被建造仅是为了定义需求,之后就被抛弃(或至少部分被抛弃)

优点

  • 从实践中学习
  • 改善通信
  • 改善用户参与
  • 使部分已知需求清晰化
  • 展示描述的一致性和完整性
  • 提高系统的实用性,可维护性
  • 节省开发投入,缩短整个软件开发周期

缺点

  • 用户有时误解了原型的角色,例如他们可能误解原型应该和真实系统一样可靠。
  • 缺少项目标准,进化原型方法有点像编码修正。
  • 缺少控制,由于用户可能不断提出新要求,因而原型迭代的周期很难控制。
  • 额外的花费:研究结果表明构造一个原型可能需要10%额外花费。
  • 为了尽快实现原型,采用了不合适的技术,运行效率可能会受影响。
  • 原型法要求开发者与用户密切接触,有时这是不可能的。例如外包软件。

适用于

  • 不能预先确切定义需求的软件系统的开发
  • 进行产品移植或升级或对已有产品原型进行客户化工作
  • 项目招投标时,可以以原型模型作为软件的开发模型
  • 简单而熟悉的行业或领域

12 增量模型的定义,特点,解决什么问题?(什么情况使用该模型)

定义:把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。

特点

  • 侧重于每个增量都提交一个可以运行的产品
  • 任务或功能模块驱动,可以分阶段提交产品
  • 增量模型是一种非整体开发的模型。 该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。

优缺点
增量模型优缺点
开发基本策略:分而治之

适用于:

  • 进行已有产品升级或新版本开发
  • 完成期限严格要求的产品
  • 软件需求不明确、设计方案有一定风险的软件项目

13 敏捷模型解决什么问题?

解决瀑布模型这样的重型软件开发方法存在的问题,用一种轻量的、敏捷的方法来改善甚至是替代它。瀑布模型的典型问题就是周期长、发布烦、变更难,敏捷开发就是快速迭代、持续集成、拥抱变化。

14 极限编程(XP)有哪些关键字?

用户故事、简单设计、测试驱动开发 (TDD)、持续集成、重构、结对编程

15 什么是用户故事。

用户故事在软件开发过程中被作为描述需求的一种表达形式。
用户故事通常的表达格式为:
作为一个<用户角色>, 我想要<完成活动>, 以便于<实现价值>。
eg:腾讯课堂的用户故事:学生登陆->查找需要学习的课程->进入课堂->听课

16 Scrum开发模型有哪些关键字?

三个角色,六个时间箱,四个工作
Scrum开发模型关键字

17.补充

程序语言分为三类
机器语言、汇编语言、高级语言

软件产品与物质产品有很大的区别,软件产品是一种(逻辑)产品。

软件质量
软件质量

软件质量理解

应用最广泛的两种软件工程方法学
结构化程序设计方法面向对象的程序设计方法
在这里插入图片描述
软件设计经历的三个时期
第一个时期:软件定义时期
(1)问题定义
这是软件生存期的第一个阶段,主要任务是弄清用户要计算机解决的问题是什么。
(2)可行性研究
任务是为前一阶段提出的问题寻求一种至数种在技术上可行、且在经济上有较高效益的解决方案。
第二个时期:软件开发时期
(1)需求分析
弄清用户对软件系统的全部需求,主要是确定目标系统必须具备哪些功能。
(2)总体设计
设计软件的结构,即确定程序由哪些模块组成以及模块间的关系。
(3)详细设计
针对单个模块的设计。
(4)编码
按照选定的语言,把模块的过程性描述翻译为源程序。
(5)测试
通过各种类型的测试(及相应的调试)使软件达到预定的要求。
第三个时期:软件运行时期
(1)软件安装运行
(2)维护

部分选择、判断题
部分相关选择判断题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件工程 第一章 软件工程概述 的相关文章

随机推荐

  • vue3+vite3+vant搭建移动端简易模版

    前言 vue3 x相关的生态已经在不断的完善中 相应的UI 路由 pinia等都已成熟 新的项目也在考虑使用新版本开发了 开一个帖子记录一下搭建移动端简易模版的过程 方便以后回顾 vite前端构建工具 兼容性注意 Vite 需要 Node
  • 数据结构单向链表的C++实现

    本文的链表实现使用的是c 的类模板 构造节点类模板Node
  • 打卡格式

    2019 X xx Chen70
  • 还只看花书,西瓜书?一文告诉你如何正确学习深度学习,从理论到实战。

    如今春招已接近尾声 大家都知道今年就业形势整体不乐观 不仅应聘人数远远大于招聘岗位 而且面试难度加大 想拿到理想的offer更是难上加难 这段时间 很多人都在自我充电 我也经常在后台给读者解答很多深度学习相关问题 但大家问的更多的却是一些非
  • 如何查看文件的MD5值?

    MD5 什么是MD5 md5是一种信息摘要算法 是计算机广泛使用的杂凑算法之一 又译摘要算法 哈希算法 它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串 这个特殊的字符串就被称之为摘要 我理解就是从文件中摘一些信息片段加工而
  • R语言colorRampPalette函数-创建颜色梯度(渐变色)

    在绘热图时 需要将数值映射到不同的颜色上 这时就需要一系列的颜色梯度 colorRampPalette 函数支持自定义的创建一系列的颜色梯度 代码示例 gt colors lt colorRampPalette c blue red 5 g
  • windows加固-服务安全

    禁用TCP IP上的NetBIOS NETBIOS 在安装了TCP IP协议的同时 NetBIOS也会被作为默认设置安装到系统中 NetBIOS 协议所使用的端 是139端口 139 端 的开放意味硬盘可能会在网络中共享 网上黑客也可通Ne
  • 网络地址转换的类型及特点

    1 网络地址转换的类型及特点 NAT有三种类型 静态NAT StaticNAT 动态地址NAT PooledNAT 网络地址端口转换NAPT Port LevelNAT 静态NAT 指将内部网络的私有IP地址转换为公有IP地址 IP地址对是
  • On Distillation of Guided Diffusion Models

    本论文是解决什么问题的 无分类器引导扩散模型最近被证明在高分辨率图像生成方面非常有效 无分类器的引导扩散模型的缺点是 它们在推理时计算昂贵 原因是 因为它们需要评估两个扩散模型 一个类条件模型和一个无条件模型 数十到数百次 这篇论文提出的解
  • Linux Ubuntu安装教程

    1 创建新的虚拟机 2 选择 典型 点击 下一步 3 选择 稍后安装操作系统 点击 下一步 4 选择 Linux 版本选择 ubuntu 64位 点击 下一步 5 虚拟机名称输入 ubuntu 64位 点击 浏览 更改系统的安装位置 建议安
  • MySQL基础命令学习

    MySQL安装请看上一篇MySQL server安装记录 进入到数据库管理系统 DBMS C Windows System32 gt cd D mysql 8 0 22 winx64 bin D mysql 8 0 22 winx64 bi
  • Web自动化测试(5)-POM

    POM设计模式 目录 POM设计模式 1 简介 2 简单示例 3 UnitTest框架测试用例执行顺序 4 数据驱动 5 简单示例 1 简介 POM Page Object Model 设计模式又被称为页面对象模型 其核心思想是将web项目
  • 面向小白的最全Python可视化教程,超全的

    今天小编总结归纳了若干个常用的可视化图表 并且通过调用plotly matplotlib altair bokeh和seaborn等模块来分别绘制这些常用的可视化图表 最后无论是绘制可视化的代码 还是会指出来的结果都会通过调用streaml
  • Vue3全网最细介绍使用

    文章目录 一 Vue3介绍 二 Vue3项目创建 三 Setup 四 ref与reactive 五 setup context 六 计算属性 七 监听属性 八 Vue3生命周期 九 自定义hook函数 十 toRef 一 Vue3介绍 1
  • 思科命令配置总结

    Packet tracer 6 0 交换机命令配置 1 基本配置 Switch gt enable 用户模式 Switch configure terminal 特权模式 Switch config 全局模式 Switch config h
  • SDN-Mininet模拟多数据中心带宽实验

    一 实验目的 通过Mininet模拟搭建基于不同数据中心的网络拓扑 掌握多数据中心网络拓扑的构建 熟悉网络性能测试工具lperf 根据实验测试SDN网络的性能 通过程序生成真实网络流量 二 数据中心拓扑逻辑网络 存在线路冗余 多条链路可达
  • C语言提取(key,value)键值对

    include stdio h include stdlib h include string h 去除空格 int trim str char inBuf char outBuf int i 0 j strlen inBuf 1 int
  • nginx 之正则表达式(一)

    1 元字符 匹配除换行符以外的任意字符 w 匹配字母或数字或下划线或汉字 s 匹配任意的空白符 d 匹配数字 b 匹配单词的开始或结束 匹配字符串的开始 匹配字符串的结束 2 重复 重复零次或多次 重复一次或多次 重复零次或一次 n 重复n
  • FTP被动模式连接被拒绝(FTP passive mode connection refused)

    I m creating an ftp client and I have a problem First I create a socket where I sent USER and PASS then PASV a receive I
  • 软件工程 第一章 软件工程概述

    1 什么是软件 软件是计算机系统中与硬件相互依存的另一部分 它是包括程序 数据及其相关文档的完整集合 程序 按事先设计的功能和性能需求执行的指令序列 数据 程序能正常操纵信息的数据结构 gt 软件的核心 文档 与程序开发 维护和使用有关的图