软件工程与计算总结(二)软件工程的发展

本章开始介绍第二节内容,主要是一些历史性的东西~ 

一.软件工程的发展脉络

1.基础环境因素的变化及其对软件工程的推动

抽象软件实体和虚拟计算机都是软件工程的基础环境因素,它们能从根本上影响软件工程的生产能力,而且是软件工程无法反向影响而只能适应的外界因素;不论是硬件水平的提升,还是系统软件的发展,都会要求软件工程方法和技术做出相应的调整~

2.现实问题的变化及其对软件工程的要求

软件工程的目标是解决现实问题,软件工程的进步能让问题解决的过程更顺利;反之,现实问题的变化也会给软件工程提出新的要求~

3.软件工程自身的发展

不论是实践经验的积累,还是研究上的进展,软件工程自身都会不断发展,既包括软件开发与技术上的发展,也包括软件开发过程中的发展,还包括一些影响深远的重要观念的形成。

二.20世纪50年代的软件工程

1.基础环境:

虚拟计算机:研究用大型机(出于军事和科研考虑)

主要的抽象软件实体:软件依赖于硬件,被视为硬件的零件

2.主要现实问题:科学计算

3.软件开发方法与技术:(没有普遍使用的开发技术)

4.软件开发过程:此时的理论是“制造软件和硬件是一样的”

5.重要思想:重视产品质量,进行评审和测试

6.总结:科学计算、机器为中心编程、软硬件生产方式相同

三.20世纪60年代的软件工程

1.基础环境

  • 虚拟计算机:商业大型机
  • 主要的抽象软件实体:第三代语言被广泛利用,促进了软件工程的问题从科学计算向业务应用转化

2.主要现实问题:商务应用

3.软件开发方法与技术:依靠程序员个人能力,是“工艺式”的开发

4.软件开发过程:“构建-修复”的过程(个人英雄主义编程)

5.重要思想:

软件不同于硬件:软件比硬件易于修改、软件没有损耗、软件不可见、软件于现实世界关系更密切

避免工艺式生产,采用工程式

(需要注意,这一阶段工艺式生产导致了“软件危机”的出现,主要现象为成本超支、质量不可靠等)

6.总结:业务应用、软硬件不同、工艺式开发

四.20世纪70年代的软件工程

1.基础环境

  • 虚拟计算机:商业微型计算机
  • 主要的抽象软件实体:结构化程序设计理论诞生,以高效率地开发正确、清晰和高质量的程序。结构化程序设计理论使用函数(也就是常说的面向过程)、块结构、和三种基本控制结构作为基础构建程序~

2.主要现实问题

随着商业微型计算机的销售量增加,软件产品的需求也在与日俱增,保证复杂软件系统开发的成功成为开发工作的主要指导思想~

3.软件开发方法与技术

前期采用逐步精化,自顶向下的软件开发方法,中后期采用结构化设计和结构化分析等结构化分析与设计方法。在这一年代,逐步产生了“低耦合高内聚”的模块化、抽象数据类型、信息隐藏等重要思想~

4.软件开发过程:采用瀑布模型,在开发过程中越早发现缺陷并进行修复,提高了开发效率,提高了项目成功率

5.重要思想:越早发现和修复问题,代价越低~

6.总结:结构化方法、瀑布模型、强调规则和纪律。奠定了软件工程的基础,是后续年代软件工程发展的支撑~

五.20世纪80年代的软件工程

1.基础环境

  • 虚拟计算机:个人计算机PC开始出现,并迅速普及大众人群;与此同时GUI技术出现,典范是Apple和微软~
  • 主要的抽象软件实体:面向对象编程方法开始被广泛使用

2.主要现实问题

业务应用仍是这一阶段软件工程面临的主要问题,同时软件开始服务消费大众的工作和生活

人们对软件产品的需求出现爆炸性增长,提高生产力成为他们的主要目标之一

此外,随着软件开发成本越来越高,人们更愿意通过维护延长一个软件产品的生存周期而不是将其废弃或重新开发~

3.软件开发方法与技术

结构化方法:该阶段的结构化方法更注重系统构建而㐊程序构建

面向对象编程:结构和关系能够为领域应用提供更加自然的支持,使得软件的复用性和可修改性更加强大~

软件复用:提高生产力的重要方法

4.软件开发过程

过程模型:软件过程的质量能够极大影响软件的质量,要保证产品质量就必须重视开发过程

过程评价:参照评估模型进行评估

使用工具支持的软件开发过程:对后续的软件工程发展尤其是过程管理的发展起到了重要的作用~

5.重要思想

没有银弹:软件该问题的银弹应该是能欧使得软件开发在生产率、可靠性和间接性上取得根本性提高的技术,由于软件有下列无法规避的内在特性,因此没有银弹:

  • 复杂度
  • 一致性
  • 可变性
  • 不可变性

重视人的作用:将个人与团队工作置于比开发过程更加重要的地位~

6.总结:追求生产力最大化、现代结构化方法/面向对象编程广泛应用、重视过程的作用

六.20世纪90年代的软件工程

1.基础环境

  • 虚拟计算机:阿帕网、因特网、万维网快速发展,网络操作系统成为主流
  • 主要的抽象软件实体:软件体系结构方法的出现、面向对象分析设计与方法逐渐成熟~

2.主要现实问题

  • 复杂度:探索新的开发技术
  • 可修改性:维护与修改来延续生存周期
  • 开发周期:防止用户等待时间过长
  • 用户价值:赢得市场非常关键

3.软件开发方法与技术

  • 面向对象方法
  • 软件体系结构
  • 人机交互
  • 需求工程
  • 基于软件复用的大规模软件系统开发技术
  • web开发技术

4.软件开发过程

  • 过程模型
  • 过程改进
  • 开源软件

5.重要思想:重视最佳实践方法

6.总结:web应用出现、追求快速开发、可变更新和用户价值

七.21世纪00年代的软件工程

1.基础环境

  • 虚拟计算机:嵌入式设备和移动终端与日增长
  • 主要的抽象软件实体:面向对象的思想做了一些更严谨的规格化

2.主要现实问题

  • 基于因特网的web应用日益成为主流
  • 面向消费大众的软件产品需求出现了爆炸性增长

3.软件开发方法与技术

  • 延续90年代的基础进展,并进一步完善
  • web技术发展
  • 领域特定的软件工程方法

4.软件开发过程

敏捷过程

5.总结:大规模web应用,大量面向大众的web产品,追求快速开发、可变更新、用户价值和创新

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十四天学会C++之第三天(数组和字符串)

1. 数组的定义和初始化 数组是一种由相同数据类型的元素组成的集合,这些元素按照一定的顺序存储在连续的内存位置上。数组的大小在创建时是固定的,无法在运行时改变。 在C中,数组的定义和声明非常简单。定义一个数组: 数据类型…

vtk 动画入门 1 代码

实现效果如图&#xff1a; #include <vtkAutoInit.h> //VTK_MODULE_INIT(vtkRenderingOpenGL2); //VTK_MODULE_INIT(vtkInteractionStyle); VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle); //VTK_MODULE_INIT(vtkRenderingFreeType); #in…

IDEA Rogstry中找不到compiler.automake.allow.when.app.running问题解决

网上大部分人教我们 先 File > Settings 然后 勾选 Build 下的 Compiler中的 Build project automatically 这些步骤都不会有问题 然后就会让我们 ctrl shift alt / 点 Rogstry 打开后 我人就麻了 根本没有什么 compiler.automake.allow.when.app.running 也不用慌 我们…

YTM32的电源管理与低功耗系统详解

YTM32的电源管理与低功耗系统详解 苏勇&#xff0c;2023年10月 文章目录 YTM32的电源管理与低功耗系统详解缘起原理与机制电源管理模型的功耗模式正常模式&#xff08;Normal&#xff09;休眠模式&#xff08;Sleep&#xff09;深度休眠模式&#xff08;DeepSleep&#xff09;…

大语言模型之十五-预训练和监督微调中文LLama-2

这篇博客是继《大语言模型之十二 SentencePiece扩充LLama2中文词汇》、《大语言模型之十三 LLama2中文推理》和《大语言模型之十四-PEFT的LoRA》 前面博客演示了中文词汇的扩充以及给予LoRA方法的预训练模型参数合并&#xff0c;并没有给出LoRA模型参数是如何训练得出的。 本篇…

WebSocket实战之六心跳重连机制

一、前言 WebSocket应用部署到生产环境&#xff0c;我们除了会碰到因为经过代理服务器无法连接的问题&#xff08;注&#xff1a;该问题可以通过搭建WSS来解决&#xff0c;具体配置请看 WebSocket实战之四WSS配置 &#xff09;&#xff0c;另外一个问题就是外网环境不稳定经常…

基本的五大排序算法

目录&#xff1a; 一&#xff0c;直接插入算法 二&#xff0c;希尔排序算法 三&#xff0c;选择排序 四&#xff0c;堆排序 五&#xff0c;冒泡排序算法 简介&#xff1a; 排序算法目前是我们最常用的算法之一&#xff0c;据研究表明&#xff0c;目前排序占用计算机CPU的时…

Linux环境下gdb调试方法与演示

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Linux专栏】&#x1f388; 本专栏旨在分享学习Linux的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 演示环境&#xff1…

OpenCV 14(角点特征Harris和Shi-Tomasi)

一、角点 角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点在三维场景重建运动估计&#xff0c;目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用。在现实世界中&#xff0c;角点对应于物体的拐角&#xff0c;道路的十字路口、丁字路…

BP神经网络的MATLAB实现(含源代码)

BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念&#xff0c;是一种按照误差逆向传播算法训练的多层前馈神经网络&#xff0c;是应用最广泛的神经网络模型之一 具体数学推导以及原理在本文不做详细介绍&#xff0c;本文将使用MATLAB进行B…

106.从中序与后序遍历序列构造二叉树

力扣题目链接(opens new window) 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 中序遍历 inorder [9,3,15,20,7]后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树&#xff1a; class Solution { public:Tr…

c++-vector

文章目录 前言一、vector介绍二、vector使用1、构造函数2、vector 元素访问3、vector iterator 的使用4、vector 空间增长问题5、vector 增删查改6、理解vector<vector< int >>7、电话号码的字母组合练习题 三、模拟实现vector1、查看STL库源码中怎样实现的vector2…

【Java 进阶篇】JDBC查询操作详解

在数据库编程中&#xff0c;查询是一项非常常见且重要的操作。JDBC&#xff08;Java Database Connectivity&#xff09;提供了丰富的API来执行各种类型的查询操作。本篇博客将详细介绍如何使用JDBC进行查询操作&#xff0c;包括连接数据库、创建查询语句、执行查询、处理结果集…

ElasticSearch第四讲:ES详解:ElasticSearch和Kibana安装

ElasticSearch第四讲&#xff1a;ES详解&#xff1a;ElasticSearch和Kibana安装 本文是ElasticSearch第四讲&#xff1a;ElasticSearch和Kibana安装&#xff0c;主要介绍ElasticSearch和Kibana的安装。了解完ElasticSearch基础和Elastic Stack生态后&#xff0c;我们便可以开始…

关于算法复杂度的几张表

算法在改进今天的计算机与古代的计算机的区别 去除冗余 数据点 算法复杂度 傅里叶变换

ASUS (k013) ME176CX不进入系统恢复出厂设置的方法

k013 me176cx ASUS k013 ME176CX不进入系统恢复出厂设置的方法 当忘记系统密码或系统异常导致无法进入系统时&#xff0c;可以按以下步骤尝试不进入系统恢复出厂设置来解决。 注意&#xff1a;执行恢复出厂设置前&#xff0c;请先将资料备份至外接设备&#xff0c;否则资料都…

基于MFC和OpenCV实现人脸识别

基于MFC和OpenCV实现人脸识别 文章目录 基于MFC和OpenCV实现人脸识别1. 项目说明1. 创建项目2. 启动窗口3. 登录窗口-添加窗口、从启动窗口跳转4. 启动窗口-美化按钮5. 登录窗口-美化按钮、雪花视频6. 注册窗口-美化按钮、雪花视频、从启动窗口跳转7. 注册窗口-开启摄像头8. 注…

知识图谱小白入门(1):neo4j的安装与CQL的使用

文章目录 序一、安装neo4j1.1 下载neo4j1.2 安装JDK1.3 BUG&#xff1a;dbms failed to start 二、CQL语法2.1 CQL语法创建节点查询节点创建关系查询关系2.2 习题 习题答案 序 知识图谱&#xff0c;是一种实体间的信息与关系知识的网状结构&#xff0c;借用图论中点与边的概念…

自动驾驶中的感知模型:实现安全与智能驾驶的关键

自动驾驶中的感知模型&#xff1a;实现安全与智能驾驶的关键 文章目录 引言感知模型的作用感知模型的技术安全与挑战结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造&#xff0c;包含PnC、新感知等的全新专项课程上线了。理论与实践相结合&#xff0c;全新的PnC培训…

力扣练习——链表在线OJ

目录 提示&#xff1a; 一、移除链表元素 题目&#xff1a; 解答&#xff1a; 二、反转链表 题目&#xff1a; 解答&#xff1a; 三、找到链表的中间结点 题目&#xff1a; 解答&#xff1a; 四、合并两个有序链表&#xff08;经典&#xff09; 题目&#xff1a; 解…