版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章软件的发展概况1.1计算机软件系统1.1.1软件的概念与特点
软件是由程序、数据及其相关文档三部分组成。①程序:按照事先设计的功能和性能要求执行的计算机指令序列。②数据:使程序能够正常操纵信息的数据结构。③文档:与程序开发、维护和使用有关的资料。1.1计算机软件系统1.1.2软件的分类
软件可以按功能、工作方式、服务对象进行划分,其中按软件功能可划分为:②支撑软件:又称为软件开发环境。是介于系统软件和应用软件之间的中间层软件,是支撑各种软件的开发与维护的软件。
③应用软件:针对特定领域开发,为特定目的服务的软件。应用软件又可分为:应用软件包和用户程序。①系统软件:能与计算机硬件紧密配合,使计算机系统的各个部件、相关的软件和数据协调、高效工作。主要包括:操作系统、驱动程序、各种语言解释程序和编译程序、各种服务性程序。
1.1计算机软件系统
计算机软件系统中所包括的各种软件之间的关系不是并列的,而是有一定的层次关系。1.1.3计算机软件的层次结构系统软件支撑软件应用软件计算机语言经过了机器语言、汇编语言、高级语言三代。1.2计算机语言的发展
机器语言汇编语言发明人莫奇莱(左)1.2计算机语言的发展
FORTRAN语言发明人约翰.巴库斯UNIX和C语言的发明人之一、C语言之父丹尼斯.里奇1.2计算机语言的发展
高级语言发展依据程序设计方法经历了三个时期:线性程序设计语言
结构化程序设计语言
面向对象程序设计语言程序设计就是用计算机语言编写程序。程序=算法+数据结构
编写计算机程序时使用的语言称为程序设计语言(ProgrammingLanguage),程序设计语言分为机器语言、汇编语言和高级语言三种。对数据操作的步骤如何表示、组织和存储数据1.2计算机语言的发展
1.2.1机器语言
机器语言是唯一能被计算机直接理解和执行的程序设计语言,属低级语言。机器语言的一条语句就是一条指令,机器指令的格式如下:操作码操作数例如:计算256+16结果的机器代码如下(以十六进制表示):B80001;把256放入累加器AX051000;把16与AX中值相加,结果存入AX101110000000000100000101000010001.2计算机语言的发展
1.2.2汇编语言
为了解决机器语言难记忆、可读性差的缺点,人们把机器指令中的操作码和操作数用英文助记符来表示,这种助记符语言称为汇编语言,也属于低级语言。MOVAX,256;把256放入累加器AXADDAX,16;把16与AX中值相加,结果存入AX
汇编语言编写的程序属于符号程序,计算机不能直接识别和执行,必须翻译成计算机能识别的机器指令后才能在计算机上执行,其翻译过程如下:1.2计算机语言的发展
1.2.3高级语言
高级语言是一类程序设计语言的统称,它采用接近人类自然语言的表示方法,并遵循一定的语法规则来编写程序。实现求整数的绝对值的程序段:intintVar,result;scanf(“%d”,&intVar);if(intVar>=0)result=intVar;elseresult=-1*intVar;printf(“%d的绝对值是:%d”,intVar,result);1.2计算机语言的发展
高级语言程序的翻译和执行过程如下:
高级语言编写的程序也属于符号程序,不能直接在计算机上执行,必须通过程序的翻译才能执行,其翻译成指令代码的方法主要有编译和解释两种。1.2计算机语言的发展
1.2计算机语言的发展
1.2.4程序设计语言的构成程序设计语言的构成主要包括以下几个方面:
(1)数据类型
基本数据类型:是由程序设计语言内置的,其特点是不能再分解为其它的类型。在主流的程序设计语言中一般包括:整数类型、实数类型、字符类型、布尔类型等。构造数据类型:是由基本数据类型按照某种方式组合构成的。常见的构造数据类型有:数组类型、记录类型(结构体)等等。(2)运算符和表达式
在程序设计中使用表达式可完成各种各样的运算。表达式通常包括:常量、变量、运算符和函数调用等。1.2计算机语言的发展
(3)语句
程序是对计算机要执行的操作的描述,高级语言源程序的基本组成单位就是语句。语句按功能可以分为两类:①用于描述操作运算的语句,如赋值语句;②用于控制操作运算流程的语句,如分支控制语句。(4)控制结构①顺序结构,按照语句出现的先后顺序依次执行。②分支结构,根据给定条件判断,决定程序执行的顺序。③循环结构,循环(重复)是计算机解题的一个重要特征。1.2计算机语言的发展
(5)输入/输出
高级程序设计语言中通常以函数或语句的形式提供输入输出操作。现代高级程序设计语言通常都提供通过窗口、文本框、按钮、组合框、图表等图形组件进行输入输出。(6)子程序
子程序就是将需要重复使用的程序段或分解的子问题编写成一个独立的子程序,当程序中需要使用子程序时,再对其进行调用。子程序有两种:函数(Function)和过程(Procedure),它们的主要区别是函数有返回值,而过程不能有返回值。1.2计算机语言的发展
语言谱系图流行编程语言历史流行的编程语言排名计算机操作系统的发展经历了两个阶段。第一个阶段为单用户、单任务的操作系统,以CP/M、MS-DOS等磁盘操作系统为代表;第二个阶段是多用户多任务和分时系统。以Windows、UNIX、Linux以及MacOS操作系统为代表。
1.3操作系统的发展
1.CP/M操作系统是第一个微机操作系统(8位操作系统),这个系统允许用户通过控制台的键盘对系统进行控制和管理,其主要功能是对文件信息进行管理,以实现硬盘文件或其他设备文件的自动存取。1.3操作系统的发展
加里·基尔代尔,电脑软件开发真正的先驱人物。最早创造了磁盘操作系统(DOS),为A盘、B盘和C盘(CD-ROM)最早编写了驱动程序,加里·基尔代尔也是图形用户界面(GUI)的先驱之一,开发了“DrLogo”计算机语言。在1974年,帮助创建了硅谷最富盛名的“家酿俱乐部”(HomeBrewClub),成为计算机业余爱好者交流的天堂,加里·基尔代尔还为微机首创了世界上第一个实用的软件API。2.DOS操作系统其中最成功的是微软的MS-DOS(16位操作系统),它是在IBM-PC及其兼容机上运行的操作系统,它起源于SCP86-DOS(也是CP/M一类的操作系统),是1980年基于8086微处理器而设计的单用户操作系统。3.Windows操作系统
Windows是Microsoft公司在1985年11月开始发布的窗口式多任务系统,版本依次为1.x,2.1,3.0,3.1,95(32位),98,NT(64位),2000,XP,Vista,7,8
它使微机进入了图形用户界面时代。
1.3操作系统的发展
4.UNIX操作系统
(1969年)
UNIX操作系统并非指单一的操作系统软件,而是包括一系列的UNIX家族:AIX、BSD、DigitalUNIX、FreeBSD、HP-UX、IRIX、SunOS等。它是一个真正的多用户分时系统。
UNIX系统主要用于小型机、工作站和服务器。5.Linux操作系统(1991年)它是一个免费软件,您可以自由安装并任意修改软件的源代码。
Linux操作系统与主流的UNIX系统兼容,这使得它一出现就有了一个很好的用户群。支持几乎所有的硬件平台,包括Intel系列、680x0系列、Alpha系列、MIPS系列等,并广泛支持各种周边设备。1.3操作系统的发展
6.MacOS操作系统
MacOS是一套运行于苹果Macintosh系列电脑上的操作系统。1984年,苹果公司发布了System1,这是一个黑白界面的,也是世界上第一款成功的图形化用户界面操作系统。从System7.6版本开始苹果操作系统更名为MacOS,版本依次位8,9,10。1.3操作系统的发展
1.软件开发经历的三个时期程序时期(1947-1960年初),程序作为机器运行时必须进行的准备工作。程序设计全凭设计者个人经验和技艺独立进行,是一种典型的手工艺智力劳动。软件=程序+说明时期(20世纪50年代末-20世纪70年代初),程序规模较大,需要多人协作才能完成;程序的设计与运行维护不能由一个人来承担;程序不再是计算机硬件的附属部分,而是计算机系统中与硬件相互依存不可缺少的部分。1.4软件开发与软件产业软件=程序+文档时期(20世纪70年代至今,即软件工程时期),用“工程化”的思想作指导来解决软件研究和开发中面临的困难和混乱。2.软件产业基本情况美国40%,欧洲30%,日本10%;韩国2.69%,中国2.58%,印度2.14%软件产业的不成熟体现在两个方面:第一,与软件研发相关技术和理论还没有成熟;第二,软件工程化水平不成熟。
1.4
软件开发与软件产业结构化编程的缺点:面向过程:实现的焦点集中在处理步骤上。在分析和设计过程中很难对现实事物进行直接描述,常常造成分析和设计与用户的要求不符。最后导致软件设计的失败。程序算法变化时相应的数据结构也必须修改,不利于代码重用和维护。1.5面向对象技术的提出面向对象技术:直接对现实事物进行描述和抽象。这样的分析和设计方式使得用户容易理解,对后期的软件维护也提供了便利条件。面向对象的四种基本技术使数据和算法的松耦合实现成为可能。是一种思维、思考方式。1.5面向对象技术的提出面向对象基础抽象(Abstraction)封装(Encapsulation)多态(Polymorphism)继承(Inheritance)几种著名的面向对象编程语言Simula:1964年诞生,是面向对象编程语言的老祖宗。Smalltalk:1972-1978由XeroxPARC施乐帕洛阿尔托研究中心(XeroxPaloAltoResearchCenter)研发,具备了现代面向对象编程语言的大部分概念。但由于商业的原因没能流行起来。C++:1983年BjarneStroustrup[布贾尼·斯特劳斯特卢普]在AT&TBell实验室研发。是目前流行的最广泛的面向对象编程语言,但为了保证与C的兼容性,丧失了一些好的面向对象编程语言的特性。面向对象的缺点
面向对象的优点主要是针对分析、设计和源代码等软件开发阶段的。但缺点是:当一个面向对象的代码经过编译、连接后得到的可执行软件是铁板一块的、不可改变的、无法重用的。面向对象最初所追求的目标并没有完全达到:面向对象的软件是由对象类构成的,面向对象的软件开发不需要每次都从头开始,它可以借用以前软件开发中积累下来的对象类。在极端的情况下,当我们开发一个项目时,就像计算机硬件市场一样,所需要的类都可通过市场买到标准的软部件,程序员的工作就是将这些标准的软部件重新组织,让它们相互合作完成本此项目的任务。目前,这个目标还是软件的乌托邦,面向对象的方法和技术并不能完全达到这一目标。导致缺点的原因(1)对软件设计的结果最终是要用某种面向对象的语言实现,那么,用一种语言实现的对象类怎么用另一种语言来复用呢?软件世界是五彩缤纷,各种语言各有其各自的优点和适应的范围,如果想用某一种通用的、万能的语言代替所有的其它语言,在目前是不现实的,Ada语言就是一种失败的尝试。退一步讲,即使我们发明了这种语言,我们又如何复用以前大量的、用现有语言开发的软件呢?导致缺点的原因(2)2.面向对象所得到的软件的良好结构是源代码级的,软件的进化和维护只能在这一级进行,它不能解决一个软件产品交给最终用户以后(可执行的二进制代码),要想对其直接进行维护(增加或修改某个功能),这只有在得到源代码的前提下才可能,而得到源代码有时是不可能的。这就限制了最终用户的特定要求和以后软件方便地升级。
导致缺点的原因(3)3.一个对象的二进制代码是与实现它的硬件环境、操作系统平台相关的,他们不能满足Internet上日益增长的移动计算的需要,不能在异质的环境中对它们进行复用。因此,我们需要一种新的、不依赖于某种特定语言的、在二进制代码级可复用的软件“对象”,这种“对象”就是构件(Component)1.6软件技术发展方向软件构件化,就是要让软件开发像机械制造工业一样,可以用各种标准和非标准的零件来进行组装,或者像建筑业一样,用各种建筑材料搭建成各式各样的建筑。软件的构件化和集成技术的目标是:软件可以由不同厂商提供的,用不同语言开发的,在不同硬件平台上实现的软件构件,方便地、动态地集成。
构件技术构件技术是一种软件实现的技术和方法,是对面向对象方法在二进制代码级的完善和补充。构件是由接口构成的,它把接口和接口的实现分离开了。接口是独立于语言的一种描述,它将内部的实现以及接口到实现的映射都封装起来了,外界只能通过接口描述使用构件。因此,接口用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 世界男性健康日:中年男性体检指南课件
- 季节性病毒性肺炎流行规律科普课件
- 世界更年期关怀日互动游戏课件
- 国际志愿者日:志愿者在行动课件
- 冬季呼吸道多病原叠加流行防控科普课件
- 2026年安徽高职单招数学考试题库(含答案)
- 2026年高考北京卷生物历年真题试卷
- 2025年宁夏回族自治区理科专升本真题试卷及答案
- 2025年度神经外科住院医师工作总结及下一年工作计划
- 2026国考时事政治考试卷及答案
- 第一月考过关测试卷(试卷)2026-2027学年五年级语文上册统编版(含答案)
- 现代农业与生态农业
- 2026年特种设备安全管理人员A证考试题库(含答案)
- 3.1《买文具》课件 -2026-2027学年五年级上册数学北师大版
- 2026年湖南工业职业技术学院高职单招笔试职业技能测验试题库含答案解析3套试卷
- 电子档案和档案数字化副本移交接收规范
- 围手术期高血糖患者营养支持治疗管理专家共识(2025版)
- 医院职工绩效考核制度(2026版)
- 临床科学防治颈椎病守护颈部健康关键策略
- 信托业务监管分类说明(试行)
- 油田分层注水技术
评论
0/150
提交评论