2011-计算机软件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
某交通规则教材勘误表
20
《特洛伊》中的穿帮镜头
1960年代-现在:ຫໍສະໝຸດ Baidu件=程序+工程化文档
软件工程:软件危机的解决之道(1968年提出)
应用计算机科学、数学及管理科学等原理,开发软件的工程 (是一门交叉学科) 传统或狭义的软件工程主要解决软件规模化生产的问题 如何在给定的人力、物力、时间等 资源条件下,开发给定需求的软件 (以规范的文档为载体)
必须尽可能满足应用需求
Windows 95: 1500万行 Windows 98: 1800万行 Windows XP: 3500万行 Windows Vista: 5000万行
11
宝马7系 软件总量超2亿行 占全车成本40%以上
1960年代-现在:软件复杂性持续增加
程序规模越大,复杂性越高
基于Windows的Web服务器显示一张图片而执行的系统调用序列
用软件解决的问题越来越复 杂、困难
软件规模化生产的复杂性和 成本难以控制 计算机不能发现、纠正、容 忍任何软件错误
22
软件开发的起点不断深入问 题域,与问题域同步演化
软件协同开发、基于复用的 工业化生产 计算机软硬件系统自适应
计算机软件 小结
客观 现实世界 软件发展的主旋律: 不断缩小现实世界与计算机之间在 问题求解工具、能力和方法上的鸿沟 软件工程(方法) 编 程 语 言 ( 工 具 )
计算机应用范围扩大,程序也日益庞杂,出现了操作系统和 数据库管理系统等大型软件,代码量达数十万甚至百万行
• 美国宇航局1963年水星计划系统 200万条指令,1967年 的双子星座 计划系统 400万条指令,1973年阿波罗计划系统 1000万条指令
程序难以理解,难以维护,必须用文档说明
所以,软件 = 程序 + 文档
10
1960年代-现在:软件规模持续扩大
计算机应用进一步普及,程序规模进一步扩大
美国宇航局1963年水星计划系统 200万条指令,1967年 的双子星座计划 系统 400万条指令,1973年阿波罗计划系统 1000万条指令,1979年哥伦 比亚航天飞机系统 4000万条指令
程序必须尽可能发挥硬件能力
设计 实现 测试
维护
19
Frederick P. Brooks IBM System 360
1960年代-现在:软件开发何难?
更关键的是,计算机不能发现、 纠正、容忍任何软件错误
一般的知识制品是给人看的,而人可以 适当容忍和纠正其中的错误,不致于造 成严重后果 前面3个困难导致的任何问题,都会最终 造成计算机不能正确完成计算任务
12
1960年代-现在:软件开发效率和质量不足
程序规模越大,复杂性越高,开发效率和质量不足
操作系统规模增长
6年50亿美元5000人 开发6千万行代码的 Vista以失败告终!
13
1960年代-现在:软件危机
Software Crisis(1968年NATO会议提出,至今依然存 在):软件质量无法保证,成本和进度难以控制
*同一个复杂运算可以有
…
5050
多种简单运算的组合方式
15
1960年代-现在:软件的本质 软件是典型的知识制品
是客观世界中问题空间与解空间的计算机描述 “数字化信息化知识化智能化 ”的所有“动作/计 算”均由软件描述
现实世界
(人与社会)
将现实世界的 数据和信息 “数字化”
处理数字化的 数据和信息
问题:机器语言难写难 读,人使用不便,程序 开发效率极低
5
1940年代-50年代:软件=程序
本阶段的计算机主要用于科学计算
对于一项计算任务,数据输入输出量不大,计算量大 汇编语言采用助记符号形 式,有利于人阅读和使用。 问题: • 每条指令的意义容易理 解,仍需直接操作硬件 • 仍以计算为主,对复杂 数据和大量数据的支持 不够 • 程序无结构,缺乏组织 手段,写大程序仍然很 困难
Niklaus Wirth
Alan Kay
其他相关的图灵奖得主:Barbara Liskov、Frances E. Allen、John Cocke、John Hopcroft、 Robert Tarjan、C. Antony R. Hoare、Kenneth E. Iverson、Robert W. Floyd、Donald E. Knuth、 A.J. Perlis
计算概论
计算机软件
黄罡 北京大学信息科学技术学院
本讲概览
什么是软件 软件发展史
软件的未来
2
计算机硬件与软件
硬件(hardware)
就是计算机中的所有物理 的事物(physical artifacts)
软件(software)
就是执行一次计算所需的、 硬件以外的事物 (nonphysical artifacts) 即二进制表示的程序与数据 看不见、摸不着、无损耗
能力成熟度 模型 (Capability Maturity Model for Software, CMM)
21
1960年代-现在:软件=程序+工程化文档
现代或广义的软件工程全面针对软件危机的所有因素
软件开发的固有难点 描述和认知方式的“巨大鸿 沟” 软件工程的解决之道 更贴近人类思维方式的高级 语言和设计方法
1960年代-现在:软件=程序+工程化文档 1950年代-60年代:软件=程序+文档
1940年代-50年代:软件=程序
计算机 虚拟空间
系 统 软 件 ( 能 力 )
23
6
1940年代-50年代:软件=程序
本阶段的计算机主要用于科学计算
对于一项计算任务,数据输入输出量不大,计算量大 本阶段的程序设计: • 强调程序的功效,即运 行时间省、占用内存少 • 很少考虑结构清晰、易 读、易维护 • 编程复杂、繁琐、费时、 易错 • 此时,尚未出现“软件” 一词
7
1950年代-60年代:软件=程序+文档
IBM 360 OS 1963-1966 5000多人年 2亿多美元 1991年,爱国 者导弹拦截系 统因时钟误差 而失效
1997年, 火星探路 者因优先 级翻转而 频繁重启
2007年, 北京奥运 门票预订 系统首日 因流量过 大而瘫痪
14
1960年代-现在:软件的本质 硬件是计算机的身躯,软件是计算机的灵魂
1956年高级语言Fortran的出现
具有类似文字的表现形式; 用类似数学的表达式形式描述基本计算; 用变量等概念取代低级的存储概念,摆脱了繁琐的存储安排; 提供高级操作流程控制手段和程序组织手段
约翰· 巴克斯 IBM 图灵奖获得者
8
1950年代-60年代:软件=程序+文档
程序设计语言的“高级化”
影响和改造 现实世界的 数据和信息
计算机 数字世界
16
1960年代-现在:软件开发何难? 描述和认知方式的“巨大鸿沟”
软件是客观世界中问题空间与解空间的计算机描述
人类固有的描述和认知方式
17
计算机固有的描述和认知方式
1960年代-现在:软件开发何难? 用软件解决的问题越来越复杂、困难
软件是客观世界中问题空间与解空间的计算机描述
包括由金属、硅、塑料等 材料制成的电路、芯片、 数据带、外壳、风扇等 硬件 看得见、摸得着、会损耗
3
计算机硬件与软件
指 挥 实现
硬件 硬件
指 挥
软件
实现
4
1940年代-50年代:软件=程序
本阶段的计算机主要用于科学计算
对于一项计算任务,数据输入输出量不大,计算量大 机器语言是机 器指令形成的 语言 形式为二进制 编码,机器可 直接执行
Google 自动驾驶汽车
18
1960年代-现在:软件开发何难? 软件规模化生产的复杂性和成本难以控制
软件规模与复杂远远超出个人的控制,必须分工合作 但个人能力与背景的差异,使得合作难度与成本过高
Waterfall Model by Winston W. Royce, 1970 使得软件开发工作得以 细分,开始走向规模化 分析
文档可以理解为更全面、详细、有组织的注释,是给人看的, 不一定装入机器 example1文档: 按照时、分、秒的 顺序输入3个整数, 程序将换算成秒并 输出
9
程序设计语言概览
E.W. Dijkstra
Peter Naur Ole-Johan Dahl Kristen Nygaard
John Backus
计算机只能直接执行简单的逻辑和算术运算
必须由人“以程序的形式”告诉计算机如何通过一系列的 简单运算来实现复杂运算
同等甚至更重要的是,只能由人“以文档和程序的形式” 解释计算机执行的运算到底是为了什么(或者有什么用)
求等差数列的和: 1 + 2 + 3 + … + 100 = ?
3 6
(1+100) x 100 = 5050 2