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

news2025/1/11 21:05:12

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

一.软件工程的发展脉络

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.coloradmin.cn/o/1058559.html

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

相关文章

设计模式(包括Spring)、贯穿项目梳理与源码知识点

目标:高复用性,高内聚,低耦合 目的:高可读性,重用性,可靠性 类的六种关系 依赖,类中用到了对方,没有对方连编译都通不过,如下的几种关系全部是依赖关系泛化/继承&…

05_对象性能模式

对象性能模式 面向对象很好地解决了“抽象”的问题,但是必不可免地要付出定的代价。对于通常情况来讲,面向对象的成本大都可以忽略计。但是某些情况,面向对象所带来的成本必须谨慎处理。 典型模型: SingletonFlyweight Singleton 单件模式…

你写过的最蠢的代码是?——AI领域的奇妙体验

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

vertx的学习总结三

一、event bus是什么 各个verticle的通信 二、point-to-point, request-reply, publish/subscribe 通过 the event bus 例题一:点对点 package eventBus;import io.vertx.core.AbstractVerticle; import io.vertx.core.Vertx;public class EventBusExample exte…

【Redis】基础数据结构-字典

Redis 字典 基本语法 字典是Redis中的一种数据结构,底层使用哈希表实现,一个哈希表中可以存储多个键值对,它的语法如下,其中KEY为键,field和value为值(也是一个键值对): HSET key…

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

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

ARMv8如何读取cache line中MESI 状态以及Tag信息(tag RAM dirty RAM)并以Cortex-A55示例

Cortex-A55 MESI 状态获取 一,系统寄存器以及读写指令二,Cortex-A55 Data cache的MESI信息获取(AARCH 64)2.1 将Set/way信息写入Data Cache Tag Read Operation Register2.2 读取Data Register 1和Data Register 0数据并解码 参考…

Page Cache难以回收产生之直接内存回收引起 load 飙高或者业务时延抖动

相信你在平时的工作中,应该会或多或少遇到过这些情形:系统很卡顿,敲命令响应非常慢;应用程序的 RT 变得很高,或者抖动得很厉害。在发生这些问题时,很有可能也伴随着系统 load 飙得很高。 据我观察&#xf…

以太网基础学习(二)——ARP协议

一、什么是MAC地址 MAC地址(英语:Media Access Control Address),直译为媒体访问控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Addr…

小白自己​制作一个苹果.ios安卓.apk文件app应用手机下载的代码合并文件一码双端的落地页面详细教程

小白自己制作一个苹果.ios安卓.apk文件app应用手机下载的代码落地页面详细教程 图片取自这里哈 我们在这篇文章中教你如何制作一个手机下载引导落地页。这个落地页将可以自动识别访问者使用的是安卓还是苹果设备,并引导下载相应的应用程序。让我们按照以下步骤一…

Sui第五轮资助: 17个项目共获105万美元资助金

近日,Sui基金会宣布17个项目获得了105万美元的资助,用于建设项目以推动Sui的采用和发展。要获得资助,项目必须提交详细的提案,说明构建的项目、预算明细、关键里程碑、团队经验,以及对Sui社区的预期贡献。了解更多Sui资…

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

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

《2023年中国科技论文报告》解读:高校-浙大TOP1,企业-华为TOP1

最近小编看到中国科学技术信息研究所发布了《2023年中国科技论文统计报告》,里面有很多有趣的数据,摘取部分跟大家分享,更多详细内容,请点击文章底部“阅读原文”下载原文件。 第一点:在高水平国际期刊论文排名中&…

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

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

网络安全考研院校推荐

考研预报名开始了 大部分院校也出来了考纲 本篇文章盘点一下网络空间安全(080911TK) 考研院校推荐 以下仅供参考,详情可去学校官网查看招生简章 2023一志愿录取分数线 院校 录取最低分 录取平均分 南昌大学 279 304 河北师…

23.2 Bootstrap 卡片

1.卡片 1.1卡片样式 在Bootstrap 5中, .card, card-header, .card-body, .card-footer类是用于创建卡片样式.下面是这些类的简单介绍: * 1. .card: 用于创建一个基本的卡片容器它作为一个包裹元素,通常与其他卡片类一起使用.* 2. .card-header: 用于创建卡片的头部部分.通常在…

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 也不用慌 我们…

lv7 嵌入式开发-网络编程开发 03 TCP/IP与五层体系结构

目录 1 TCP/IP协议族体系结构 1.1 OSI与TCP/IP 1.2 TCP/IP 的体系结构 1.3 TCP/IP 体系结构的另一种表示方法 1.4 沙漏计时器形状的 TCP/IP 协议族 2 五层协议的体系结构 2.1 各层的主要功能 2.2 互联网中客户-服务器工作方式 2.3 同时为多个客户进程提供服务 3 练…

WebSocket实战之六心跳重连机制

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

力扣刷题-哈希表-三数之和

15 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a b c 0 ?请你找出所有满足条件且不重复的三元组。 注意: 答案中不可以包含重复的三元组。 示例&#xff1a…