软件工程——第1章软件工程学概述知识点整理

news2024/9/21 22:49:23

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明!

文章目录

1.为什么要有软件工程这门学科?

2.软件分为哪些阶段?

3.软件危机的定义?

4.软件危机包含的问题有哪些?

5.软件危机的典型表现有哪些?

6.产生软件危机的原因有哪些?

7.软件开发和维护的错误认识与做法?

8.软件产品的配置分别是什么?

9.软件工程的定义?

10.解决软件危机的措施有哪些?

11.软件工程的基本原理是什么?

12.软件工程方法学/范型的定义?

13.软件工程方法学的三要素是什么?以及各自的作用是什么?

14.什么是传统方法学?

15.文档的作用有哪些?

16.为什么要用面向对象方法学?(传统方法学的缺点)

17.面向对象方法学的缺点?

18.面向对象方法的一个著名公式?

 19.传统方法学与面向对象方法学过程对比?

 20.什么是软件生命周期?分为哪几个阶段?

 21.什么是软件过程?

22.瀑布模型和快速原型模型主要区别是什么?

23.瀑布模型作为应用最广泛的过程模型,有哪些特点?

24.实际的瀑布模型?

25.瀑布模型的优点?

26.快速原型模型的本质?

27.快速原型模型能够线性开发的原因是?

28.快速原型模型的优点?

29.增量模型的优点?

30.螺旋模型的构成?

31.螺旋模型的优点?

32.喷泉模型属于哪种类型的过程模型?有什么特性?

 33.什么是RUP和敏捷过程?

34.RUP和极限编程对比?

35.微软过程的适用场景?

36.软件工程的本质特性是什么?

章末小结


1.为什么要有软件工程这门学科?

为了更有效的开发与维护软件,研究消除软件危机的途径,所以形成了软件工程这门学科

2.软件分为哪些阶段?

  1. 规模较小的程序,为每个具体应用而专门编写,只保存程序清单
  2. 软件作坊
  3. 软件工程阶段

3.软件危机的定义?

        软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题几乎所有的软件都不同程度的存在这些问题

4.软件危机包含的问题有哪些?

  1. 如何开发软件,以满足对软件日益增长的需求
  2. 如何维护数量不断膨胀的已有软件
  3. 软件危机具有长期性症状不明显的特征

5.软件危机的典型表现有哪些?

  1. 对软件开发成本进度估计常常很不准确
  2. 用户对已完成的软件系统不满意的现象经常发生
  3. 软件产品的质量往往靠不住
  4. 软件常常是不可维护
  5. 软件通常没有适当的文档资料
  6. 软件成本在计算机系统总成本中所占的比例逐年上升
  7. 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势

6.产生软件危机的原因有哪些?

  1. 与软件本身的复杂性特点有关(根本原因
  2. 与软件开发与维护的方法不正确有关(主要原因

7.软件开发和维护的错误认识与做法?

        主要表现为忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护

8.软件产品的配置分别是什么?

主要包括程序、文档和数据

程序是指能够完成预定功能和性能的可执行的指令序列

数据是使程序能够适当地处理信息的数据结构

文档是开发、使用和维护程序所需要的图文资料

9.软件工程的定义?

  1. 系统的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是将工程应用于软件
  2. 研究1中所提到的途径

10.解决软件危机的措施有哪些?

  1. 应该推广使用在实践中总结出来的开发软件的成功技术和方法,并且研究探索更好更有效的技术和方法
  2. 应该开发和使用更好的软件工具
  3. 应该有必要的组织管理措施

11.软件工程的基本原理是什么?

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

简记:分 、评 、控 、现 、审 、少 、必

12.软件工程方法学/范型的定义?

通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型

13.软件工程方法学的三要素是什么?以及各自的作用是什么?

软件工程三要素是指:方法、工具和过程

方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题

工具是为应用方法而提供的自动的或者半自动的软件工程支持环境

过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤

14.什么是传统方法学?

        传统方法学也称为生命周期方法学结构化范型,采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境支持结构化技术的运用。

15.文档的作用有哪些?

  1. 文档是通信的工具
  2. 文档也起到了备忘录的作用
  3. 文档能提高软件开发过程的能见度
  4. 文档记录了开发过程的有关信息
  5. 文档可作为阶段工作成果和结束的标志

简记:通、备、度、记、标

16.为什么要用面向对象方法学?(传统方法学的缺点)

        传统方法学要么面向数据要么面向处理,当软件规模庞大,或者对软件的需求是模糊的或会随着时间变化而变化时,使用传统方法学开发软件往往不成功,并且难以维护

17.面向对象方法学的缺点?

  1. 面向对象方法学其特有的继承、多态等机制,造成面向对象测试和调试困难
  2. 面向对象架构设计困难,比较复杂,可能会造成系统不合理等问题
  3. 面向对象的开发成本高,且不利于新手开发

18.面向对象方法的一个著名公式?

面向对象方法 = 对象 + 类 + 继承 + 消息通信

 19.传统方法学与面向对象方法学过程对比?

        传统方法学强调自顶向下顺序的完成软件开发的各项阶段任务。

        而面向对象则是一个主动地多次反复迭代的演化过程,其特有的继承性和多态性进一步提高了面向对象软件的可重用性

 20.什么是软件生命周期?分为哪几个阶段?

软件生命周期是指从软件产品开始,直到该软件被淘汰全过程

分为八大阶段:问题定义、可行性研究、需求分析、总体设计、

详细设计、编码和单元测试、综合测试、软件维护

 

 

 21.什么是软件过程?

        软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤

22.瀑布模型和快速原型模型主要区别是什么?

获取用户需求的方法不同

23.瀑布模型作为应用最广泛的过程模型,有哪些特点?

  1. 阶段间具有顺序性依赖性
  2. 推迟实现的观点
  3. 质量保证的观点

 

24.实际的瀑布模型?

实际的瀑布模型是带“反馈环”的,它是由文档驱动的模型,这既是它的优点也是缺点。

 

25.瀑布模型的优点?

  1. 强迫开发人员采用规范的方法
  2. 严格规定了每个阶段必须提交的文档
  3. 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证

26.快速原型模型的本质?

        快速原型模型的本质是“快速”,不带“反馈环”,开发基本上是线性顺序进行,优点是有助于保证用户的真实需要得到满足。

 

27.快速原型模型能够线性开发的原因是?

  1. 原型系统已经通过与用户交互而得到了验证,据此产生的规格说明文档正确描述了用户的需求,不会因此而后期返工
  2. 开发人员通过建立原型系统学到了很多东西,在设计和编码阶段犯错的可能性降低

28.快速原型模型的优点?

  1. 原型系统已经通过与用户交互而得到了验证,据此产生的规格说明文档正确描述了用户的需求,不会因此而后期返工
  2. 开发人员通过建立原型系统学到了很多东西,在设计和编码阶段犯错的可能性降低
  3. 原型使得用户可以尽早接触系统
  4. 原型系统可以用来识别和化解风险

29.增量模型的优点?

  1. 可以在较短时间内向用户提交可完成部分工作的产品
  2. 逐步增加产品功能,使得用户有充裕的时间学习和适应,从而减少新软件带来的冲击

 

 

 

30.螺旋模型的构成?

螺旋模型由制定计划风险分析实施工程客户评估四部分构成

螺旋模型=瀑布模型 + 风险分析的快速原型模型

另一种说法:螺旋模型=瀑布模型 + 风险分析的增量模型

 

 

31.螺旋模型的优点?

  1. 有利于已有软件的重用
  2. 使软件开发和软件维护没有本质区别
  3. 有助于把软件质量作为软件开发的重要目标
  4. 减少测试不足所带来的风险

32.喷泉模型属于哪种类型的过程模型?有什么特性?

喷泉模型是典型的面向对象软件过程模型,有迭代无缝的特性。

 

 33.什么是RUP和敏捷过程?

RUP(Rational Unified Process)是一个二维的生命周期模型

敏捷过程是为了有更高效工作和快速响应变化的能力,极限编程就是其中最有名的一个

极限是指将好的开发实践运用到极致

 

34.RUP和极限编程对比?

  1. RUP是一个二维的生命周期模型,而极限编程是一维
  2. 极限编程对于需求变化和不确定性有着更快速的反应,且能保持高速的开发速度
  3. RUP比极限编程更加全面

35.微软过程的适用场景?

微软过程适用于商业环境下具有有限资源和有限开发时间约束的项目

微软过程对方法、工具和产品等方面的论述不如RUP和敏捷过程全面

 

36.软件工程的本质特性是什么?

  1. 软件工程关注于大型程序的构造
  2. 软件工程的中心课题是控制复杂性
  3. 软件经常变化
  4. 开发软件的效率非常重要
  5. 和谐地开发是开发软件的关键
  6. 软件必须有效地支持它的用户
  7. 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品

章末小结

        本章力图对计算机软件工程学作一个简短的概述。

        首先通过回顾计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的严重弊病(软件危机),澄清了一些糊涂观念。为了计算机系统的进步发展 ,需要认真研究开发和维护软件的科学技术。应总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步使软件工程这门新学科发展和完善起来。
        本章力求使读者对软件工程的基本原理和方法有概括的本质的认识。生命周期方法
学把软件生命周期划分为若干个相对独立的阶段,每个阶段完成一些确定的任务,交出最
终的软件配置的一个或几个成分(文档或程序);基本上按顺序完成各个阶段的任务,在
完成每个阶段的任务时采用结构化技术和适当的软件工具;在每个阶段结束之前都进行
严格的技术审查和管理复审。当软件规模庞大或对软件的需求模糊易变时,采用生命周期方法学开发往往不成功,近年来在许多应用领域面向对象方法学已经迅速取代了生命周期方法学。

        面向对象方法学有4个要点,可以用下列方程式概括:面向对象方法=对象+类+继承+消息通信。也就是说,面向对象方法就是既使用对象又使用类和继承等机制,而且对象之间仅能
通过传递消息实现彼此通信
的方法。面向对象方法简化了软件的开发和维护,提高了软件的可重用性。按照在软件生命周期全过程中应完成的任务的性质,在概念可以把软件生命周期
划分成问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试以及运行维护共8个阶段。实际从事软件开发工作时,软件规模种类,开发环境及使用的技术方法等因素,都影响阶段的划分。软件过程是为了获得高质量的软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤,由于没有一个适用于所有软件项目的任务集合,科学、有效的软件过程应该定义一组适 合于所承担的项目特点的任务集合。

        通常使用软件过程模型简洁地描述软件过程,它规定了把软件生命周期划分成的阶段及各个阶段的顺序。本章介绍了8种典型的软件过程模型。
        瀑布模型历史悠久、广为人知,它的优势在于它是规范的、文档驱动的方法;这种模型
的问题是,最终开发出的软件产品可能并不是用户真正需要的。
        快速原型模型正是为了克服瀑布模型的缺点而提出来的。它通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求。
        增量模型具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但
是,要求软件具有开放的结构是使用这种模型时固有的困难。
        风险驱动的螺旋模型适用于内部开发的大型软件项目,但是,只有在开发人员具有风
险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。

        喷泉模型较好地体现了面向对象软件开发过程无缝与迭代的特性,是典型的面向对象
的软件过程模型
之一。
        1998年首次推出的Rational统一过程(RUP)是一个具有突出优点的软件过程模型,
它提供了理想开发环境下软件过程的一种完整而且完美的模式,可以作为对一个项目进
行软件开发的良好开端。
        近年来推出的以极限编程(XP)为杰出代表的敏捷过程,具有对变化和不确定性的更快速、更敏捷的反应特性,因此能够较好地适应商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束,可以作为对RUP的补充和完善;但是,作为种软件过程模式,敏捷过程远不如RUP全面和完整。
        多年的实践经验证明微软过程是非常成功和行之有效的。一方面,可以把微软过程看作RUP的一个精简配置版本,整个过程包含着工个生命周期的持续递进循环,每个生命周期由5个阶段组成,每个阶段精简为由次迭代完成;另 一方面,可以把微软过程看作敏捷过程的一个扩充版本,它扩充了每个生命周期内的各个阶段的具体工作流程。

反反复复,扎扎实实;念念不忘,必有回响!

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

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

相关文章

Unity UGUI4——组合控件

一、Button ​ Button 是按钮组件,是 UGUI 中用于处理玩家按钮相关交互的关键组件 ​ 默认创建的 Button由 2 个对象组成 ​ 父对象——Button 组件依附对象,同时挂载了一个 Image 组件作为按钮背景图 ​ 子对象——按钮文本 Text(可选&…

【探索 Kubernetes|作业管理篇 系列 11】控制器核心功能

前言 大家好,我是秋意零。 上一篇结束了 Pod 对象的内容。 今天要探讨的内容是 “控制器”,它是 Kubernetes 编排最核心的功能。理解了 “控制器”,你就能理解 Deployment、StatefulSet、DaemontSet、Job、CroJob 控制器对象。 最近搞了一…

Windows 安装 Podman Desktop

Windows 安装 Podman Desktop podman 简介概述和范围Roadmap 路线图Rootless 无根 podman 安装说明Podman for Windows前置条件安装 podman自动 WSL 安装机器初始化过程启动 machine Rootful & Rootless安装 podman desktop podman 命令介绍podman -hpodman machine -h 参考…

2023最新最全!蓝队护网初级面试题大合集!必看!

前言 1.先来个自我介绍 答:本人从事网络安全工作10年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。 随着网络安全被列为国家安全战略的一部分&#xff0c…

deepstream指北——安装配置篇

目录 一、机器配置二、安装教程1. 软件对应版本要求2. 安装 三、运行示例 参考博客:https://blog.csdn.net/m0_73702795/article/details/127940733 (ps: deepstream的参考资料太少了-_-||,上面这个是我见过最详细的) 一、机器配…

SDN是什么?详解软件定义网络技术原理与应用

目录 一、引言 二、SDN原理 三、SDN优势 四、SDN应用前景 五、最后的话 一、引言 SDN,即Software-Defined Networking,即软件定义网络技术,是近年来新兴的网络技术,其主要思想是将网络的控制平面和数据平面进行分离&#xff…

阿里巴巴最新出版的 Java 面试参考指南(泰山版)开源了!

谈到 Java 面试,相信大家第一时间脑子里想到的词肯定是金三银四,金九银十。好像大家的潜意识里做 Java 开发的都得在这个时候才能出去面试,跳槽成功率才高!但 LZ 不这么认为,LZ 觉得我们做技术的一生中会遇到很多大大小…

html 前端笔记常用样式和方法

目录 textarea宽高固定 Js获取文本框中鼠标选中文本 Js设置鼠标选中文本 Js追加/清空表格 自定义CheckBox 颜色 多选框选中和反选操作多次后attr()不生效 JS转Json 选择器 textarea宽高固定 style"resize: vertical" resize: vertical 宽固定none 宽高固定bo…

Windows系统如何将frp或其他应用配置为service服务并开机自启?

本文使用WinSW实现service服务配置 WinSW(Windows Service Wrapper)是一个开源的 Windows 服务包装器,它可以将任何可执行文件(如 Java 应用程序、Python 脚本、Ruby 脚本等)转换为 Windows 服务,并为其提供…

绩点计算 - C/C++ 语法基础

某大学的GPA(绩点)计算规则如下: 课程百分制成绩90分对应绩点4.0,超过90分的,按90分计;如不足90分,则课程绩点 4.0 * 分数/90。 学生综合绩点按该生已修的各门课程绩点结合学分加权平均而得。 现有步步同学入学后的已…

关于VPN的一些总结和理解

关于VPN的一些总结和理解 前言一、VPN的概述二、VPN的原理2.1 原理概述2.2 虚拟网卡2.3 点对点隧道的建立 三、其他3.1 vpn和vlan的区别?3.2 vpn和web代理的关系? 参考 前言 同样的机缘巧合,最近看了一些关于vpn的内容,总结一下&a…

NVM安装使用

电脑重装了系统,需要重新安装软件应用,顺便记录一下安装过程。 NVM是一个Node的版本管理工具,通过NVM可以方便的切换Node的版本 安装 下载,去github下载 Releases coreybutler/nvm-windows 运行安装程序 使用 接下来使用…

局域网内海量文件快速复制方法

遇到的问题:最近需要不同磁盘和服务器间大文件(一个文件夹几十 T,里面有很多小文件)的快速复制,直接通过默认复制卡死。 解决方法:FastCopy,官网:FastCopy ,测试速度能能…

vue2旧项目 极速打包实践

背景 公司项目的体量较大,每次serve需要1分钟左右,build需要3分多钟,这是在电脑资源空闲时的速度,如果浏览器开了10几个标签啥的,更慢了。每次改点东西打包发测试环境都很难受。 项目技术栈 // package.json{"d…

百万粉丝都在看的Python上手教程----滚雪球学Python

前言: Hello大家好,我是Dream。 今天为大家带来一本书:《滚雪球学Python》 一起来看看吧~ 《滚雪球学Python》之所以这样命名本书,是希望大家用滚雪球的思维学习编程语言,“滚”的第一遍,从全局掌握Python技…

大话Stable-Diffusion-Webui-动手开发一个简单的stable-diffusion-webui(三)

文章目录 原理文生图API组件的输入TypeScript响应式数据文生图API调用Axios安装使用配置代理文生图API调用调用结果处理图片渲染安装swiper代码仓库原理 上一篇内容中,我们已经将文生图功能的整体UI界面设计好了,这一篇内容将通过调用sd的API,使得我们设计的UI与sd进行联动…

多域名实现单点登录详解

Hi I’m Shendi 多域名实现单点登录详解 简介 在很久以前给自己的网站制作了登录系统,但因为个人备案等原因没有需要用到登录的地方,于是就没有特意去完善这部分功能,仅仅是将用户部分抽取出来作为一个微服务 最近编写一个转换工具&#xf…

unittest教程__认识unittest(1)

unittest是python内置的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件。 使用unittest前需要了解该框架的五个概念: 即test case,test suite,test loader,test runner,test fixture。 …

【多线程】锁策略、CAS、Synchronized

目录 常见的锁策略 乐观锁 vs 悲观锁 悲观锁: 乐观锁: 读写锁 重量级锁 vs 轻量级锁 自旋锁(Spin Lock) 公平锁 vs 非公平锁 可重入锁 vs 不可重入锁 CAS 什么是 CAS CAS 是怎么实现的 CAS 有哪些应用 1) 实现原子类 2) 实现自…

从0到1使用NodeJS编写后端接口的实战案例(仅供参考)

目录 一、项目简介 1、使用技术 2、实现的主要功能 3、项目结构 二、开发环境准备 1、安装node.js 2、安装 MYSQL 数据库 3、安装 node.js 的 mysql 驱动 4、安装 Express 框架 5、Node 格式化时间模块Silly-datetime 6、安装 nodemon 三、后端代码 1、入口文件 —…