[Russell Han] 08 | 软工 0 | 软件工程基础
文章目录
什么是软件
信息
- 信息的记录
- 信息的交流
- 信息的存储
- Information => Computer => Digital Computer => Software
软件的发展
数字基础——30年代
- 硬件:各种原型机
微分计算机、继电器式计算机、ABC原型计算机、Harvard Mark 1等 - 理论:
Alan Turing,《论可计算数及其在判定问题上的应用》
Claude Elwood Shannon,电子继电器可以实现布尔符号逻辑
Alonzo Church,Lambda演算
Digital Computer——40年代
ENIAC
- 人们认为软件是硬件的一部分
- 软件运行场景,如图
ENIAC机器
蹲着的拨开关,站着的看图check - 工作流程:
得到问题——映射到机器上——画出纸——拨开关
从得到问题到画出纸往往要几星期,根据纸拨开关也要好几天 - 调试方法:单步调试
EDVAC
- 由冯诺依曼提出冯诺依曼架构,分成五部分:输入、输出、主存、控制单元、计算逻辑单元
- 理念:stored-programming concept
指令存在内存里,每次主存中既有数据又有指令,可被反复利用 - 冯诺依曼架构图示
软件工程==硬件工程——50年代
- 商用计算机的出现(如Ferranti Mark I,UNIVAC I,LEO I,IBM 701,IBM 650)
- 编程语言的出现(FORTRAN,LISP,COBAL)
- software一词出现于1958
软件!=硬件——60年代
- 大变革:
美国信息交换标准码(ASCII码)
ATM机
IBM的应用管理系统IMS应用于阿波罗航天器
软件咨询业务
IBM S/360
信用卡
DEC PDP-1小型机
——充分接触了商业项目 - 软件特性被发现
软件与现实世界关系更加密切,对需求的规格化更加困难
软件比硬件容易修改的多,并且不需要昂贵的生产线复制产品
软件没有损耗
软件不可见
Program = Algorithm + Data Structure——70年代~80年代
- Program = Algorithm + Data Structure的概念由Niklaus Wirth在1976年的书中提出
软件开发远不止编程——90年代
- 软件规模越大,编程以外的其他工作越多
软件工作量随应用程序规模变化的情况
注:KLOC为千行代码
大型软件系统(规模位100万LOC)的成本因素排序
软件类型
系统软件
系统软件有:操作系统,数据库,嵌入式设备,安全软件
应用软件
- 针对编程的应用软件有:IDE,持续集成,建模,度量
- 针对大众的商业应用软件有:商业,政府,休闲,医疗,教育,国防,个人,专业,科学
- 应用软件层次示意图
- 应用软件基于现实又高于显示
应用软件被开发的目的和意图来源于现实世界的问题
应用软件必须基于显示才能解决问题
软件最终要被用于现实并改进现实
最终在现实世界中观察到新的问题,循环往复,继续解决问题
如图
Summary
- 软件独立于硬件
- 软件是工具
- 软件不同于编程,是程序、文档、知识、数据等的集合
- 软件开发比编程复杂得多
- 应用软件来源于生活,用来提高现实生活的水平
什么是软件工程
软件工程的定义
- 针对系统、有规则的、可量化的方法的应用,对他们的软件开发、操作、维护
- 对这类方法的研究
软件工程之工程
- 关键词:creative application
- 目的:一定的限制范围内(如考虑到经济因素、对生命财产安全因素等),实现功能
- 工程师要:
做决策,折衷与妥协
使用工具
善于重用