第1章-软件与软件工程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 这三个过程在本学科是同等重要和基本的。 • 它是理论、抽象和设计三者唯一的交汇点。
程序设计的作用
• (1) "计算科学 = 程序设计"是错误的。 • (2) 计算领域的许多活动并不是程序设计,硬件设计、体
系结构、操作系统结构、数据库应用等。 • (3) 程序设计是本学科标准的实践活动的一部分,每一个
与数学的关系
• 计算作为数学的主要对象已有几千年了。
• 自然现象的许多模型被用来导出方程,它的解就 导致那些自然现象的预言。例如轨道的弹道计算、 天气预报和流体的流动等。解这些方程的许多方 法已经给出。例如线性方程组的解法、微分方程 的解法和求函数的积分。
• 几乎在这同时,机械系统设计中所需要的计算成 为工程主要关注的对象。例如计算静态物体压力 的算法、计算运动物体惯量的算法和测量比我们 直觉要大得多或小得多的距离的方法。
软件方法学和工程-基本问题
• 本领域研究满足技术要求、安全、可靠、可 信的程序和大型软件系统的设计。基本问题 包括: 1.在程序和程序设计系统的开发背后的原理 是什么? 2.怎样去证明程序或系统满足它的技术要求? 3.怎样去给定技术要求,使不遗漏重要的情 况,而且可以分析它的安全性? 4.怎样使软件系统通过不同阶段不断改进? 5.怎样使软件设计得易理解和易修改?
计算工作者必须有程序设计的能力。但这并不意味着本学 科就建筑在程序设计的基础上,也不意味着导引性课程必 须是程序设计方面的课程。 • (4) 程序设计语言是涉足本领域特色的工具。
建议:程序设计作为ຫໍສະໝຸດ Baidu心课程的一部分,并把程序设计语 言作为涉足计算学科重要特色的有用媒介。
计算机科学的原有定义
• (1) 1967年、和主张:计算科学是研究计算机及围绕它的 主要现象的科学,而且说明反对这个定义就无异于表明其 他科学都不是科学。 (2) 计算科学资格审查部:计算机科学是关于计算机和计 算的知识总体。 它由理论、实验和设计三部分,并且包括理解计算专职、 程序和系统的理论,为概念的发展和测试所进行的实验, 设计方法论、算法和实现工具以及严整这些实现满足要求 的分析方法。 (3) 计算机科学是研究知识表达机器实现的科学。 (4) 和:计算机革命是思维方法和思维表达方法的革命。
• 建议: 把面向学科的思维能力作为计算专业课程设置的主要 目的。 同时,计算专业工作者必须充分熟悉工具,以便与其 他学科的人们有效地合作,进行那些学科的设计活动。
学科渊源
• (1) 本学科和算法理论、数理逻辑和存储程序式电 子计算机的发明一起,形成于40年代初。 (2) 计算的渊源可以深入扩展到数学和工程。数学 把分析分到这一领域,而工程把设计分到这一领 域。 (3) 本学科包括它自己的理论、实验方法和工程。 这与许多其他的自然科学不同。许多其他的自然 科学和运用其成果的工程学科是分开的(例如化 学和化学工程原理)、计算机科学与工程却是不 可分的,因为本学科的科学与工程形态从根本上 是相互渗透的。
对计算机科学的学科形态的认识 与争论
• (2) 争论 ¤ 基于一个假定:三个过程的某一个是最基 本的。 ¤ 计算的三个形态密切相连 抽象和设计阶段出现了理论;理论和设计阶 段需要模型化;理论和抽象阶段始终离不开 设计。 ¤ 计算的三个形态有所不同
争论的结论
• 计算处于应用数学、科学和工程三者的主 要过程的交叉路口。
计算机科学的三个学科形态
对计算机科学的学科形态的认识与争论
• (1)认识 ¤ 理论是数学科学的根本。应用数学家们都 认为:科学的进展都是基于纯数学的。 ¤ 抽象(模型化)是自然科学的根本。科学 家相信:科学进展的过程基本上都是形成假 设,然后用模型化过程求证。 ¤ 设计是工程的根本。工程师们认为:工程 进展都是提出问题,然后通过设计去构造系 统,以解决问题。
软件方法学和工程 –理论
• 软件方法学和工具练域理论的主要部分是: (l) 程序验证和证明。 (2) 时态逻辑。 (3) 可靠性理论。 (4) 谓词演算、公理语义学、和认知心理学 等支撑领域。
软件方法学和工程 -抽象
• 软件方法学和工具抽象的主要部分是: (1) 定义技术要求的方法。如调词变换器、程序设计演算、 抽象数据类型和弗洛依德一霍尔() 公理化符号。 (2) 方法学,如逐步提炼、模块化设计、模块、分离编译、 信息隐藏( ) 、数据流和抽象层次。 (3) 程序开发自动化的方法。例如,文本编辑程序,面向 语法的编辑程序和屏幕编辑程序。 (4) 可信计算的方法学;例如,容错,安全性,可靠性, 恢复,N版本程序设计,多方式冗余,和检查点插入。 (5) 软件工具和程序设计环境。 (6) 程序和系统的测度和评估。 (7) 软件系统到特定机器结构的匹配问题域。 (8) 软件研制的生命周期模型。
发展方向
• (1)新一代计算机体系结构。该方向包括神经元计算、 计算机设计与制造、网络与通信技术、大容量存储设备 的研究、容错模型内容等; (2)并行与分布式软件开发方法学研究。该方向包括数 理逻辑、计算理论、形式语义学、高级语言与程序设计 理论、系统软件设计、软件工程、容错理论等内容; (3)人工智能理论及其应用。该方向包括数理逻辑、高 等逻辑、算法理论、知识工程、神经元计算、人工智能 高能语言与人工智能程序设计等内容; (4)计算机应用的关键技术。主要将围绕计算可视化与 虚拟现实,计算几何,科学计算这几个重点方向开展有 工作,并带动数据库技术、计算机图形学、自然语言处 理与机器翻译、模式识别与图解处理等方向发展。在这 一综合方向上研究内容将几乎覆盖所有的计算科学应用 技术方向内容。
计算机科学简短定义
• (1) 计算学科是对描述和变换信息的算法过 程的系统研究, 包括它的理论、分析、设计、有效性、实 现和应用。
• (2) 全部计算科学的基本问题是"什么能 (有效地)自动进行?"。
计算机科学划分的分支领域
计算科学的学科能力的培养
• (1) 面向学科的思维能力 发现本领域新的特性的能力,这些特性导致新的活动 方式和新的工具,以便这些特性能被其他人所利用。 (2) 使用工具的能力 使用本领域的工具有效地进行其他领域时间活动的能 力。
联系方式
绪论
• 计算机科学是什么? 1、是科学?是工程学科?还是一门技术?…….
• 2、学科的智力本质是什么? 3、它将持续兴旺下去还是衰落下去? 4、 计算机科学和工程的核心课程是否反映了这 个领域? 5、 怎样把理论和实验集成在计算课程中? 6、 各核心课程培养计算方面的能力吗? 7、 ......
程序设计的作用
• (1) "计算科学 = 程序设计"是错误的。 • (2) 计算领域的许多活动并不是程序设计,硬件设计、体
系结构、操作系统结构、数据库应用等。 • (3) 程序设计是本学科标准的实践活动的一部分,每一个
与数学的关系
• 计算作为数学的主要对象已有几千年了。
• 自然现象的许多模型被用来导出方程,它的解就 导致那些自然现象的预言。例如轨道的弹道计算、 天气预报和流体的流动等。解这些方程的许多方 法已经给出。例如线性方程组的解法、微分方程 的解法和求函数的积分。
• 几乎在这同时,机械系统设计中所需要的计算成 为工程主要关注的对象。例如计算静态物体压力 的算法、计算运动物体惯量的算法和测量比我们 直觉要大得多或小得多的距离的方法。
软件方法学和工程-基本问题
• 本领域研究满足技术要求、安全、可靠、可 信的程序和大型软件系统的设计。基本问题 包括: 1.在程序和程序设计系统的开发背后的原理 是什么? 2.怎样去证明程序或系统满足它的技术要求? 3.怎样去给定技术要求,使不遗漏重要的情 况,而且可以分析它的安全性? 4.怎样使软件系统通过不同阶段不断改进? 5.怎样使软件设计得易理解和易修改?
计算工作者必须有程序设计的能力。但这并不意味着本学 科就建筑在程序设计的基础上,也不意味着导引性课程必 须是程序设计方面的课程。 • (4) 程序设计语言是涉足本领域特色的工具。
建议:程序设计作为ຫໍສະໝຸດ Baidu心课程的一部分,并把程序设计语 言作为涉足计算学科重要特色的有用媒介。
计算机科学的原有定义
• (1) 1967年、和主张:计算科学是研究计算机及围绕它的 主要现象的科学,而且说明反对这个定义就无异于表明其 他科学都不是科学。 (2) 计算科学资格审查部:计算机科学是关于计算机和计 算的知识总体。 它由理论、实验和设计三部分,并且包括理解计算专职、 程序和系统的理论,为概念的发展和测试所进行的实验, 设计方法论、算法和实现工具以及严整这些实现满足要求 的分析方法。 (3) 计算机科学是研究知识表达机器实现的科学。 (4) 和:计算机革命是思维方法和思维表达方法的革命。
• 建议: 把面向学科的思维能力作为计算专业课程设置的主要 目的。 同时,计算专业工作者必须充分熟悉工具,以便与其 他学科的人们有效地合作,进行那些学科的设计活动。
学科渊源
• (1) 本学科和算法理论、数理逻辑和存储程序式电 子计算机的发明一起,形成于40年代初。 (2) 计算的渊源可以深入扩展到数学和工程。数学 把分析分到这一领域,而工程把设计分到这一领 域。 (3) 本学科包括它自己的理论、实验方法和工程。 这与许多其他的自然科学不同。许多其他的自然 科学和运用其成果的工程学科是分开的(例如化 学和化学工程原理)、计算机科学与工程却是不 可分的,因为本学科的科学与工程形态从根本上 是相互渗透的。
对计算机科学的学科形态的认识 与争论
• (2) 争论 ¤ 基于一个假定:三个过程的某一个是最基 本的。 ¤ 计算的三个形态密切相连 抽象和设计阶段出现了理论;理论和设计阶 段需要模型化;理论和抽象阶段始终离不开 设计。 ¤ 计算的三个形态有所不同
争论的结论
• 计算处于应用数学、科学和工程三者的主 要过程的交叉路口。
计算机科学的三个学科形态
对计算机科学的学科形态的认识与争论
• (1)认识 ¤ 理论是数学科学的根本。应用数学家们都 认为:科学的进展都是基于纯数学的。 ¤ 抽象(模型化)是自然科学的根本。科学 家相信:科学进展的过程基本上都是形成假 设,然后用模型化过程求证。 ¤ 设计是工程的根本。工程师们认为:工程 进展都是提出问题,然后通过设计去构造系 统,以解决问题。
软件方法学和工程 –理论
• 软件方法学和工具练域理论的主要部分是: (l) 程序验证和证明。 (2) 时态逻辑。 (3) 可靠性理论。 (4) 谓词演算、公理语义学、和认知心理学 等支撑领域。
软件方法学和工程 -抽象
• 软件方法学和工具抽象的主要部分是: (1) 定义技术要求的方法。如调词变换器、程序设计演算、 抽象数据类型和弗洛依德一霍尔() 公理化符号。 (2) 方法学,如逐步提炼、模块化设计、模块、分离编译、 信息隐藏( ) 、数据流和抽象层次。 (3) 程序开发自动化的方法。例如,文本编辑程序,面向 语法的编辑程序和屏幕编辑程序。 (4) 可信计算的方法学;例如,容错,安全性,可靠性, 恢复,N版本程序设计,多方式冗余,和检查点插入。 (5) 软件工具和程序设计环境。 (6) 程序和系统的测度和评估。 (7) 软件系统到特定机器结构的匹配问题域。 (8) 软件研制的生命周期模型。
发展方向
• (1)新一代计算机体系结构。该方向包括神经元计算、 计算机设计与制造、网络与通信技术、大容量存储设备 的研究、容错模型内容等; (2)并行与分布式软件开发方法学研究。该方向包括数 理逻辑、计算理论、形式语义学、高级语言与程序设计 理论、系统软件设计、软件工程、容错理论等内容; (3)人工智能理论及其应用。该方向包括数理逻辑、高 等逻辑、算法理论、知识工程、神经元计算、人工智能 高能语言与人工智能程序设计等内容; (4)计算机应用的关键技术。主要将围绕计算可视化与 虚拟现实,计算几何,科学计算这几个重点方向开展有 工作,并带动数据库技术、计算机图形学、自然语言处 理与机器翻译、模式识别与图解处理等方向发展。在这 一综合方向上研究内容将几乎覆盖所有的计算科学应用 技术方向内容。
计算机科学简短定义
• (1) 计算学科是对描述和变换信息的算法过 程的系统研究, 包括它的理论、分析、设计、有效性、实 现和应用。
• (2) 全部计算科学的基本问题是"什么能 (有效地)自动进行?"。
计算机科学划分的分支领域
计算科学的学科能力的培养
• (1) 面向学科的思维能力 发现本领域新的特性的能力,这些特性导致新的活动 方式和新的工具,以便这些特性能被其他人所利用。 (2) 使用工具的能力 使用本领域的工具有效地进行其他领域时间活动的能 力。
联系方式
绪论
• 计算机科学是什么? 1、是科学?是工程学科?还是一门技术?…….
• 2、学科的智力本质是什么? 3、它将持续兴旺下去还是衰落下去? 4、 计算机科学和工程的核心课程是否反映了这 个领域? 5、 怎样把理论和实验集成在计算课程中? 6、 各核心课程培养计算方面的能力吗? 7、 ......