计算机软件技术概述_第1页
计算机软件技术概述_第2页
计算机软件技术概述_第3页
计算机软件技术概述_第4页
计算机软件技术概述_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机软件技术概述

1.1计算机软件技术涉及的内容

计算机的应用是非常广泛的,包括工业、农业、科研、教育、

商业、国防、行政管理,直至家庭和个人等各个领域。

一般又分为科学计算、数据处理、过程控制和人工智能几大

类。为了把计算机用于解决某类具体问题,

软件部分着重研究的是在机器一级的程序及有关数据的表示

方法、控制程序执行的方案,以及对计算机语言进行处理和管理

计算机资源与操作过程的各种程序及实现技术。

这些研究包括:

①程序设计语言;②编译技术;③操作系统及实用程序;④数据

库技术;⑤软件工具及实现技术等方面。

对应用问题的求解,首先必须解决的问题

是清晰地描述问题。

在现代的软件开发中采用了逐步求精等程序设计方

法,提出软件工程的概念,即以工程的手段、技术和方法

来开发与维护软件。

确定数据结构和算法,它们涉及程序的数据结构和控

制结构。

如果对应用问题能细化到这一步,则就可以用某种程

序设计语言来编写程序了。

所以,在软件开发方法和技术方面包括

综上所述,计算机软件技术应涉及以下内容:

程序设计语言

编译技术

[软件及实现技术《操作系统及实用程序

Ij数据库技术

计算机软件技术,I软件工具及实现技术

,软件工程

软件开发方法与技术《程序设计方法

、数据结构与算法

计算机软件及软件开发方法与技术涉及的内容是非常丰富的,

它的每一个方面都是计算机科学中的重要分支。

1.2计算机软件概述

计算机由硬件和软件两大部分组成。

硬件主要研究机器的组成和逻辑设计。它包括中央处

理机、主存贮器、外部设备等部件。

软件是程序、数据及有关文档资料的集合。例如,操

作系统、汇编程序、编译程序、诊断程序、专用程序包、

嘉神励I麟居系统、各种维护使用手册、程序

计算机软件自20世纪50年代到目前的发展过程中在以下四大领域中有重大的

进展:

1.程序设计语言及语言处理;

2.操作系统;

3.数据设置与处理;

4,软件工具;

5.技术和规定。

程序设计语言是用户用来编写输入到计算机的程序所

使用的语言。当问题能清晰地描述时,就可以用程序设计

语言来编写程序了。但从便于用户书写的语言形式到计算

机能够理解的机器语言的转换还需要语言翻译(编译)系统。

在研制编译系统时,重点是提供快速翻译和产生高效

目标代码的技术。

操作系统是控制计算机工作流程和管理计算机软件、

硬件资源的系统程序。它能使计算机以顺序或并行的方式

处理用户提交的算题任务;或以交互式或联机方式进行处

理,并提供极为方便的手段让用户使用计算机。

操作系统的实现技术涉及多道程序设计技术、

分时技术、资源的分配与调度等极为丰富的内容。

数据设置与处理是指用来处理大量数据的工具与技

术。它涉及描述文件与单个记录的工具与技术,对

数据进行排序、分类、查询、计算并产生各种报表

目前,这方面有较为成熟的数据库技术。

第四个领域是软件工具。研制软件工具的目的

是使软件开发过程“自动化”。软件工具按功能可

划分为:说明工具系统、设计工具系统、实现工具

系统、维护工具系统、管理工具系统。例如:结构

化编辑器、源程序调试器都是软件工具。另外,编

译程序也是一种翻译工具。这些软件工具与操作系

统及实用程序一起组成了软件开发环境。

软件开发方法与技术

软件研制过程与软件工程概述

(一)软件研制过程中的问题

在科学技术迅猛发展的当今时代,有大量的科

学计算、数据处理和各种应用领域中的实际问题需

要求解。为此,首先必须提出问题,弄清楚要研究

的对象;然后给出对问题的形式化定义和求解方法

的形式描述。

O做到这一步

就可以利用计算机求解问题了。

例如,要解决轮船最少航行费用问题。假设以匀速V航行的轮船,

每小时燃料费用为C元,每小时管理费用为M元,经过航程为L,欲

使总航行费用最少,航行速度v应取何值?

这是一个实际问题。为了能使航行费用最少,需要找出该问题的

形式化描述。经过大量的实验,可以得出,匀速航行的轮船,其每

小时的燃料费与速度的立方成正比。即有:

C=kv3(k为比例系数)

航行总费用x由下式决定(t为总航时)

x=t(C+M)=L/v(kv3+M)

欲使X为最小值,求其对V的导数,并使之等于零。此即为最少航

行费用的数学模型。

dx/dv=(2KL/vA2)(vA3-M/2k)=0

上式在V=(M/2k)人1/3时成立。这样可以得到为使

总航行费用最少时所应取的航行速度V。

所以,用计算机解题时,首先是提出问题,然后建立数学模型,

确定算法。确定算法后就可以编程、上机调试、运行,最后得到结

果,再经分析整理后存档。这一解题过程可用图表示。

计算机解题过程

计算机出现后的相当长的一段时间内,人们在编制程

序或开发软件系统时,往往一个人或几个人按各自的习惯

和经验来进行,这实际上是一种手工作坊式的生产方式。

以这种方式研制的软件,其周期长、费用高,而且质量低

下、可靠性得不到保证。

到60年代中期,计算机进入到集成电路时代,大批功

能强大的计算机进入市场,高级语言蓬勃兴起。计算机应

用迅速地渗透到各个科学技术领域。同时,程序的规模和

复杂程度也急剧地增长。然而程序设计仍停留在个体手工

方式上。

到70年代初,形成了所谓的“软件危机”。

软件危机是指在计算机软件的开发和维护过程中所遇

到的一系列严重的问题,其主要表现在以下几个方面:

⑴对软件开发成本和进度的估计很不准确,个

体手工生产方式的软件生产率很低,软件常常不能

如期交货。

(2)用户对“已完成”的软件系统不满意的现象

经常发生。

(3)软件产品的质量不可靠,在那个时期,可以

说“没有不出现错误的软件”。

(4)软件常常是不可维护的。

⑸软件通常没有适当的文档资料。

后来,当研制的软件规模日趋庞大时,使问题

变得越来越复杂。

(二)软件工程概述

软件工程是指导计算机软件开发和维护的工程

科学,采用工程的概念、原理、技术和方法来开发

与维护软件。

软件工程强调使用软件生命周期方法学和各种

结构分析及结构设计技术。

所谓软件生命期是指一个软件从定义、开发、

使用和维护,直到最终被废弃所经历的一段漫长的

时期。

软件生命期分为三个时期,每个时期又进一步分成若干个阶段。

软件生命期模型可由表说明,其中:

软件生命期模型

时期阶段

软件定义软件计划

软件需求分析

软件开发总体设计

详细设计

软件编码

单元测试

综合测试

软件维护

■;在设计任务确立前,首先要进行调研和可

行性研究,理解工作范围和所花费的代价,然后作出软件

并如O

■:对用户要求具体进行分析,确定用户

要求软件系统做什么,并用软件需求规格说明书表达出来,

作为用户和软件人员之间共同的约定。

■:根据需求说明建立软件系统的“结构”,

包括数据结构和模块结构。它又分为总体设计和详细设计

两个阶段。其中:总体设计决定系统的模块结构,给出模

块的相互调用关系,产生软件概要说明书;详细设计给出

模块内部的细节及功能说明,产生详细设计说明书。

■:按软件设计的要求为每个模块编写程序。

■:发现和排除程序中留存的错误,经过测试

排错,得到可交付运行的软件。软件测试又分为单元测试

和综合测试两个阶段。

软件生命期各阶段的任务、应完成的工作:

软件生命期各阶段的任务

航段基本任身产生文档

软件计划理解工作范HI计划任务书

病求分析定义用户要求fll求规格说明书

软件微要设计说明竹

软件设计建立软件结构,

软件详城设计说明书

・耳程序程序

■试发现和排除帽湿।可运行的程序

摊护运行和管理改进的皋键

程序与程序设计语言

(一)程序

是按某种顺序排列的,使计算机能执行某种

任务(例如解题、检索数据或对一个系统进行控制

等)的指令集合。

也可以这样定义:程序是计算机系统中计算任

O

一个计算机程序总是用某种程序设计语言书

写的。程序设计语言是组成软件的重要部分。

现在实际使用的语言是相当丰富的,它们满足

了各种不同的需要。

(二)程序设计语言

程序设计语言是编写计算机程序所用的语言。程序设计语言按

语言的级别来分可以分为低级语言和高级语言两大类。

机器语言是计算机直接使用的程序语言或指令代码。这些代码

:需翻译,可直接为机器所接受。机器语言使用绝对地址和绝对操

作码。

而汇编语言又称为面向计算机的语言,是围绕特定的计算机或

其目的尾婚置恳慰虺试融细节

,,斗将制薮转履I和存储分配等),而

内在联系。汇编语言又称符号机器rq

它的主要思想是用符号形式表示机器指令,用助记忆码代表机器的

操作码,用标识符代一一O

常用的高级语言有PASCAL、

FORTRAN>C、C++、C#、VB语言等。

高级语言根据应用特点又可分为通用语言和专

用语言。

通用语言是在商业、科学、工程计算等方面能

广泛应用的程序设计语言。这些语言有大量的软件

库,并为大家所熟悉和接受。

专用语言是具有为某种特殊应用而设计的独特

的语法形式,其应用面较窄,仅适用于某一类问题

如API语言是为数组和向量运算设计的简洁而又功

能很强的语言,它几乎不提供结构化的控制结构和

数据类型。针对某一类问题采用专用语言编制的程

序,其执行效率是很高的。

程序设计方法

程序设计是把复杂问题的求解转换为计算机能

执行的简单操作的过程,是一种处理复杂问题的高

智力活动。

为了将复杂的问题分解简化,人们提出了逐步

求精的设计方法。同时,为了提高程序的可靠性和

可维护性,必须提高程序的可读性,这就要求对程

序从结构和风格上加以必要的限制。

为此,人们提出了结构化程序设计技术

和模块化程序设计技术。

(一)逐步求精的设计方法

在进行程序设计时,要将一个复杂的问题最终

变为一个书写正确的程序,最好的方式是逐步展开

而采用逐步展开的方式研制程序的策略应是自顶向

下的策略。

把要解决的复杂问题分解成若干个子问题,然

后分别独立解决这些子问题,再将各个子问题的解

以某种方式联结起来,这就是原始问题的正确解答

如果子问题仍较复杂,则又可以把这些子问题

看作新的要解决的问题而对它们进行分解。这样不

断地分解,最终使得子问题简单得可用若干行程序

设计语言来表达,于是整个问题便得到了解决。

使用自顶向下、逐步细化的设计方法符合人们

解决复杂问题的一般规律,是人的智力能接受的方

法,可以显著地提高程序设计的效率。

在这样的设计方法指导下,实现了先全局后局

部,先整体后细节,先抽象后具体的逐步细化的过

程。这样研制出来的程序具有结构清晰的特点,有

很高的可读性和可维护性。

(二)结构化程序设计

结构化程序设计是按照一定的原则与原理,组织和编制正确且

易读的程序的软件技术。

结构化程序设计的主要特征有以下几点:

⑴结构化程序设计要求把程序的结构限制为顺序、选择和循环三

种基本结构,即以三种基本结构的组合来描述程序。

(2)有限制地使用got。语句,在非用不可的情况下,也要十分谨慎,

并且只限于在一个结构内部跳转,不允许从一个结构跳到另一个结

构。这样可缩小程序的静态结构与动态执行过程之间的差异,使人

们能正确理解程序的功能。

(3)以控制结构为单位,只有一个入口,一个出口,各单位之间接

口简单,每个单位也容易理解。

(4)采用结构化程序设计语言来书写结构化程序,并采用一定的书

写格式以提高程序结构的清晰性和增进程序的易读性。

(三)模块化程序设计

程序设计是把复杂问题的求解转换为计算机能

执行的简单操作的过程。

模块化指的是把一个程序按功能分解成若干彼

此具有一定独立性同时也具有一定联系的组成部分

这些组成部分称为模块。每个程序由一个或多个模

块组成。

采用模块化程序设计时,一个系统被划分为若干模块。因此,

在结构化设计方法下,要求在设计程序系统时按层次结构组织模块。

其中,最上层的模块是对系统的整体功能的抽象,它指出系统

应该“做什么”,而不涉及“如何做”的细节;下层模块是对上层

所分解的几个“做什么”进行进一步的描述。

在最后一层模块中,才对“如何做”进行精确的描述。图给出

了一个程序的模块结构。

程序的模块结构

程序结构

程序设计是设计、编制和调试程序的过程。这

一过程首先要确定解题方式,设计程序流程图,使

问题内容和解题计划变为计算机能够接受的指令或

语句序列。

程序设计概括地说应包括四个方面的内容:

O

算法和数据结构涉及的是程序的数据结构和控

制结构。

方法是研究如何将复杂问题的求解转换为计算

机能执行的简单操作的方法。

而程序设计是在一定环境中进行的,其中包括

了在程序设计过程中可能使用的软件工具。

(一)程序的数据结构

程序的执行总要处理大量的数据信息,即任何

一个算法总是与某些特定的数据相联的,这些数据

或作为输入,或作为中间结果,或作为输出。

信息不仅具有属性,而且在大多数情况下互相

联系,尤其是在非数值处理领域中更是如此。

在程序中,信息的特征被抽象为数据类型和值

而O

1.数据类型

不同的高级语言所提供的数据类型以及类型定

义的方式是不相同的。一般数据类型分为基本数据

类型(简单数据类型)和构造数据类型两种。构造类

型是由基本数据类型按某种方式组合而成的,如数

组(array)>指针(pointer)>结构(struct)等。

O例

如,对类型为int的量只能进行整型运算。所以,

概括起来说,量涉及名、值与类型三个方面,而类

型则涉及名、值集和运算集三个方面。

2.数据结构

数据结构研究的是数据的组织形式,它涉及三个方面

的电容匕抽象薮据结标,内部存储结构,数据结构上所施

加的运算。

1)抽象数据结构

抽象数据结构又称数据的逻辑结构,它是客体之间联

系的抽象。

抽象数据结构分为线性结构和非线性结构。线性结构

有串、栈、队、表等,非线性结构有树、图等。

2)内部存储结构

内部存储结构又称数据的物理结构。它是数据逻辑结

构的物理实现方式,是依赖于计算机的,即是数据的逻辑

结抱在正算机的存储器中的排布方式。它一般有两种方式:

顺序万式和链接万式。

3)数据结构与算法

用计算机解题涉及解题方法和被处理对

象的表示,所以算法与数据结构是人们用计

算机解题时所作的两种抽象。

这两种抽象互相依赖、互相补充、紧密相联。进行程

序设计时,建立合适的数据结构、确定合理的算法是编制

高质量程序的两个重要方面。

(二)程序的控制结构

程序的基本目标是实现算法和对初始数据进行

处理从而获得所期望的效果。而算法实现过程是由

一系列操作所组成的。

算法使用一些最基本的操作(加、减、乘、除、

“与”、“或”、“非”、传送、比较),通过对

已知条件进行一步一步的加工、变换,最终实现解

题目标。这些操作的执行实现了程序应完成的功能

而操作之间的执行次序就是控制结构。有三种

最基本的控制结构:顺序结构、选择结构、重复结

构。

1966年Bohm和Jacopini证明了任何复杂的算法都

可以用顺序、选择、循环三种结构组合而成。所以

这三种控制结构称为程序的三种基本控制结构。

程序设计工具

为了提高程序设计的效率和保证软件的质量,

应该选择使用各种优秀的软件工具。软件工具也是

一些计算机程序,它们用来辅助与支持其它软件的

设计、编制和调试工作。

在程序设计的全过程中涉及的软件工具有:

(一)程序设计语言的选用

在进行程序设计时选用哪种语言,这与许多因

素有关,如应用范围、算法复杂程度、数据结构的

复杂程度、与该语言相联系的软件工具是否丰富等

就计算机应用范围来说,大致可以分为科学工

程计算、计算机模拟、数据处理、实时控制、

CAD和CAI、系统程序设计、人工智能等领域。

各种程序设计语言都具有某一方面的优势。

(二)算法描述工具

在软件设计和编制阶段,为了能对算法的各个

实现步骤进行清晰的描述,往往使用算法描述工具

来进行。常用的算法描述工具有流程图、NS图(结

构化流程图)、PDL,语言等。

在这里,我们仅讨论流程图。流程图能形象地

描述算法各阶段所应完成的工作及各阶段之间的联

系。

它是一个有向图,图中用矩形框代表一个或一

系列操作,箭头指明各框执行的先后次序。下面给

出一个算法框图的例子。

例:计算两个正整数m和n的最大公因子的算法如下:

第一^步:读入两个正整数m和n(设m>n)。

第二步:求m和n的余数r,即

r—mod(m,n)=m-[m/n]*n

式中:[m/n]表示小于或等于m/n的最大整数。

第三步:变换m和n值,即m=nn=ro

第四步:判断r是否为零。如果r=0,则m为最大公因子,

转第五步,否则转第二步。

第五步:输出m值,即为最大公因子。

第六步:结束。

这个算法实现时,从第一步开始,一步一步执行,

直到『0,转至第五步,输出最大公因子,然后停止。

此算法的流程图如图所示。

/输个0,n/

lr=mod(m»n)

m=n.n=r

/输出m/

C结束)

求最大公因子流程图

在结构化程序设计方法出现后,要求算法的结构限制在顺序、选

择、循环三种基本结构及其组合上。在一般的程序设计语言中,这

三种基本结构共有五种形式,现具体描述如下:

1)顺序结构(SEQUENCE)

在顺序结构中,控制从A顺序地流向B,如图所示。

2)条件转移结构(IFTHENELSE)

在条件转移结构中,如果条件A成立,则处理B,

否则处理C。如果条件A不成立,则不执行C。

3)当循环结构(DOWHILE)及

4)直到循环结构(DOUNTIL)

在当循环结构中,当条件A成立时,处理B。B

执行结束后,再次判断条件A。如果条件A不成立,

则控制转出该循环。

5)分情况结构(CASE)

在分情况结构中,根据第i种情况,选择处理Pi。

(三)编辑工具

编辑工具用来产生和修改文件,用户通过它们

对文件进行增、册h修改、剪接等处理工作。

(四)格式化工具

格式化工具是将格式不标准的文本按规定格式

重新进行编排的程序。该软件工具根据预定义的或

用户定义的约定排列程序正文。

在进行程序设计时,为了使程序易读、易理解

往往需要遵守某种特定的书写格式(如行首

缩进形式)。采用格式化工具可以使嵌

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论