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

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

一.软件工程的发展脉络

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.hqwc.cn/news/123941.html

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

相关文章

C++语言GDAL批量裁剪多波段栅格图像:基于像元个数裁剪

本文介绍基于C 语言的GDAL模块,按照给定的像元行数与列数,批量裁剪大量多波段栅格遥感影像文件,并将所得到的裁剪后新的多波段遥感影像文件保存在指定路径中的方法。 在之前的文章中,我们多次介绍了在不同平台,或基于不…

软件测试教程 自动化测试selenium篇(二)

掌握Selenium常用的API的使用 一、webdriver API public class Main {public static void main(String[] args) {ChromeOptions options=new ChromeOptions();//参数表示允许所有请求options.addArguments("--remote-allow-origins=*");WebDriver webDriver=new Chr…

JS三大运行时全面对比:Node.js vs Bun vs Deno

全文约 5100 字,预计阅读需要 15 分钟。 JavaScript 运行时是指执行 JavaScript 代码的环境。目前,JavaScript 生态中有三大运行时:Node.js、Bun、Deno。老牌运行时 Node.js 的霸主地位正受到 Deno 和 Bun 的挑战,下面就来看看这…

电子地图 | VINS-FUSION | 小觅相机D系列

目录 一、相关介绍 二、VINS-FUSION环境安装及使用 (一)Ubuntu18.04安装配置 1、Ubuntu下载安装 2、设置虚拟内存(可选) (二)VINS-FUSION环境配置 1、ros安装 2、ceres-solver安装 3、vins-fusion…

MySQL进阶 —— 超详细操作演示!!!(下)

MySQL进阶 —— 超详细操作演示!!!(下) 五、锁5.1 概述5.2 全局锁5.3 表级锁5.4 行级锁 六、InnoDB 引擎6.1 逻辑存储结构6.2 架构6.3 事务原理6.4 MVCC 七、MySQL 管理7.1 系统数据库7.2 常用工具 MySQL— 基础语法大…

【Linux指令集】---git命令的基本使用

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

【Leetcode】 131. 分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s "aab" 输出:[["a","a"…

Django之ORM操作初了解

文章开篇,我们首先复习下Django架构中的MTV模式,分别以字母来翻译就是: Views-代码的核心逻辑Tamplates-展示在页面上的html代码Models-对数据库的操作 那么Models中最为核心的便是本篇所介绍的ORM。 一)基本知识 ORM&#xf…

R语言进行孟德尔随机化+meta分析(2)----基于R和stata

目前不少文章用到了孟德尔随机化meta分析,在上一章咱们简单介绍了一下meta分析的基础知识。咱们今天来介绍一篇11分文章,由文章看看孟德尔随机化meta分析如何进行,文章的题目是:Appraising the causal role of smoking in multipl…

亲测可用国产GPT人工智能

分享一些靠谱、可用、可以白嫖的GPT大模型。配合大模型,工作效率都会极大提升。 清华大学ChatGLM 官网: 智谱清言中国版对话语言模型,与GLM大模型进行对话。https://chatglm.cn/开源的、支持中英双语的1300亿参数的对话语言模型&#xff0…

ctfshow—1024系列练习

1024 柏拉图 有点像rce远程执行,有四个按钮,分别对应四份php文件,开始搞一下。一开始,先要试探出 文件上传到哪里? 怎么读取上传的文件? 第一步:试探上传文件位置 直接用burp抓包,…

AI智能问答系统源码/AI绘画商业系统/支持GPT联网提问/支持Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…