版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.1软件与程序1.1.1程序的特性1.程序的静态与动态属性程序实际上是一个用计算机语言描述的某一问题的解决步骤。它的表示是静态的。人们的最终目的还是要它解决问题,所以程序必须能够运行,否则毫无用处。也就是说程序是指示一个计算机动态执行的序列。正因为如此,编写程序就是为机器写行动计划,形式上必须符合程序设计语言的规范,内容上要能得到计算结果。程序的动态执行就是进程。2.程序由程序语言抽象的符号表达下一页返回1.1软件与程序用机器码最直接,它是机器可以直接“读懂”的语言,但编写起来太麻烦,一整版32位1和0的组合谁读都会错。即使编出二进制程序也得通过穿孔或其他手段才能“装入”内存,即要在符号和电信号之间进行转换。于是采用八进制数、十六进制数编程,这样既容易读,也容易转换。进一步把操作码变成英文字母就出现了汇编语言,这时的“转换”就成了用汇编程序作“翻译”,把符号表示翻译成机器能够具体执行的指令集。它们是同一程序的两种不同表示,也就是说,完成了抽象到具体的映射。更进一步出现了高级语言,完全不需要考虑机器指令和内存存储安排,只有变量、运算符、表达式、过程/函数,让编译程序将其翻译为机器码程序。上一页下一页返回1.1软件与程序3.程序是对数据施行算法的过程按程序设计语言提供的符号和语法写出程序,同时也表达了语义,即该程序要做的计算。翻译是语义等价的,执行后,或是改变(加工)了数据或是提供了一组动作。对一组数据进行排序虽然没有改变数据的值,但改变了它们之间的顺序(结构)关系,这也要有一个计算的办法,即算法。算法使数据由初始态变为终止态。按解题的算法排定顺序,当然同样的数据改变可以用不同的算法。数据一般用于描述事物的属性和状态,人们往往因不善于设计数据结构致使程序质量低劣。算法和数据结构是软件技术中很基本的技术。第6章中将介绍算法和数据结构方面的知识。上一页下一页返回1.1软件与程序4.程序是分层嵌套的利用底层的中断指令,一个程序执行到某个中间位置就暂停执行(挂起)转而执行另一个子程序,待子程序执行完后返回,又恢复原程序执行,完毕后再停机。这反映到程序结构中是层层嵌套的结构。如图1-1(a)所示。程序还有一个更为广义的理解,即程序是信息。人们知道信息只有大小而无形状,信息可用多种媒体形式(声、文、图)表示,信息的传递总要借助某种介质(媒体)。程序作为商品要以有形的介质作为载体进行交易,故称软件(Software)。上一页下一页返回1.1软件与程序1.1.2软件的特性(1)软件是功能、性能相对完备的程序系统。(2)软件是具有使用性能的软设备。(3)软件是信息商品。(4)软件是只有过时而无“磨损”的商品。上一页返回1.2软件的分类与工程软件传统上把软件分为两大类:一为系统软件,一为应用软件。系统软件指软件制售商为释放硬件潜能、方便使用而配备的软件,如操作系统、各种语言编译/解释系统、网络软件、数据库管理软件、各种服务程序、界面工具箱等支持计算机正常运作和“通用”的软件。应用软件是指解决某一应用领域问题的软件,如财会软件、通信软件、科技计算、计算机辅助设计与制造(CAD/CAE/CAM)软件,等等。在当今整个社会信息化的情况下,系统软件和应用软件的界线正在模糊。一台机器上提供的系统软件的总和叫做软件(开发)平台,在此平台上应用开发者编制应用程序。下一页返回1.2软件的分类与工程软件应用程序通用化、商品化后就是应用软件。此时的使用者是最终用户(enduser)。他一般不需编制程序即可利用应用软件去解决自己的问题。有时要利用应用软件提供的简单语言编写简单程序,这称为二次开发。最终用户只需做使用培训,一般不需做软件技术知识的培训。当今计算机应用领域非常广阔,按照应用领域分类举不胜举,各行各业都有自己的应用特点。这里就技术特点进行分类。1.业务软件业务软件处理日常业务信息,目前已发展为管理信息系统(MIS)。上一页下一页返回1.2软件的分类与工程软件它的特点是有一个或多个数据库,存放所有业务的信息;而应用程序是离散的,如工资、会计、仓库、生产计划调度,彼此只有数据联系。技术重点是数据库应用,如联机事务处理(OLTP)、联机分析处理(OLAP)、决策支持系统(DSS)等,目的是改善业务运营。近年来为适应市场竞争,发展了业务过程重组(BPR)、企业资源规划(ERP)等技术。2.科技计算软件传统的应用领域,注重数值算法的速度和精度。目前转向多机协作计算、并行计算、可视计算、大量图形的计算机辅助设计。当今系统模拟软件的实时性要求不亚于系统软件设计。上一页下一页返回1.2软件的分类与工程软件3.嵌入式软件嵌入式软件使工业产品自动化、智能化成为可能。每个产品(如电冰箱、导弹)中放一单片机,其中的软件即可根据传感器传入的数据控制该产品行为。这些软件在宿主机(host)上以某种语言开发,它经交叉编译后成为单片机的机器码程序,“烧入”单片机,故为嵌入式。应用程序的开发、调试、修改、升级全在宿主机上完成。近年Java芯片和Java嵌入式应用发展特别迅速。4.实时软件用来监控、分析、控制实时事件的软件就是实时软件。上一页下一页返回1.2软件的分类与工程软件它包括从外部环境收集信息(模拟量数据要通过A/D、D/A变换),分析后按应用要求转移信息,处理后做出响应(到外部的输出),监控部件保证能按时间要求做出响应(一般是1μs到1s)。多用于工业控制系统。5.个人计算机软件包括字处理、电子报表、计算机制图、多媒体写作、娱乐游戏、个人数据库、个人财务、联机上网。这类软件在市场上大量涌现,其特点是“用户友好”,不用编程直接使用。6.人工智能软件上一页下一页返回1.2软件的分类与工程软件这类软件以非数值算法解题,一般有一个知识库,存放知识和规则。计算量大,空间开销也大。实际可用的是各种专家系统,辅助决策、模式识别、定理证明。近年来图像、声音识别、自学习、人工神经网发展迅速,它们作为传统应用软件的一个子部分正在投入实际应用,例如语音输入、机器语言翻译等。工程软件是指在工程领域中的应用软件,可以是上述六种应用软件中的一种,也可以是几种应用软件的组合。上一页返回1.3工程软件开发基本技术1.3.1程序重用技术考虑到标准件对机械加工行业发展的促进作用,人们就想到在软件开发中建立公共子程序库。标准件生产还需要原材料、加工设备及制造工时,要花费成本,而程序复制几乎不需要成本,因此公共子程序的使用势在必行。程序重用可分两类:一是程序级的,如通用前置及后置处理程序、通用绘图程序等;二是子程序级的。对程序级的重用,在此不作深入讨论,本节重点讨论子程序级的重用。早在20世纪70年代人们就开始注意收集各类子程序并对其分门别类,加上必要的检索关键字,建立相应的数据库,以利查找与应用。下一页返回1.3工程软件开发基本技术最近已开发了用图的形式来表示一个子程序的工具,用凹槽与凸台来分别表示基本输入、输出参数。这种以形象的方式,让开发者注意参数的匹配,可以保证使用的正确性。目前各类语言及计算机操作系统提供的图形子程序库、标准函数子程序库、系统功能子程序库等,以及各类数学库、算法库都可看作是程序重用的一个方面。开发者在使用这些现成程序库的同时也应建立专用的子程序库。在大型软件开发中,最好指定专人对这些子程序库进行调查,在开发中提供咨询与支持。以避免重复劳动,同时也提高程序质量。程序重用技术的思想虽然很简单,但真正用好程序重用技术要解决三个问题,即子程序模块划分、子程序功能需求多变性及应用支持。上一页下一页返回1.3工程软件开发基本技术1.子程序模块划分子程序模块功能划分,始终是一个较复杂的问题。除一些定型子程序,如数学库、图形库中子程序功能很明显外,大部分情况会使开发者左右为难。若模块功能划分小了,一个子程序中只有2~3条语句,就失去了公共子程序的作用。若模块功能划分大了却发现该模块又失去了通用性。有时当一个程序完成代码编写后发现,在多个路径段上,所完成的程序功能及代码形式都很类似,但是因一些微小差别就是形成不了一个通用子程序模块,这就是模块需求多变性引起的问题。模块功能划分大部分靠经验。上一页下一页返回1.3工程软件开发基本技术一般做法是在程序结构设计完成后,根据经验,先定义出比较明显的公用子程序,在程序开发完毕后,再回头分析源程序,进一步定义出公用模块,“对程序进行规范整理,最后对公用子程序进行整理,编写文档,分类归入相应的子程序库。2.子程序功能需求多变性子程序功能需求多变性是程序重用技术运用的主要技术关键。3.程序重用技术实施要点面向对象编程语言,为程序重用提供了有力的支持,但由于这类语言在编程思想、程序组织上有了很大变化,另外有些应用程序对象不易划分确定,因此目前使用传统的C或FORTRAN语言来开发的仍不少。上一页下一页返回1.3工程软件开发基本技术但是开发者即使不用面向对象语言,也要有程序重用及面向对象的思想。首先要建立公共子程序库,在一个软件开发中,公共子程序库所占的比例越大,程序质量、可靠性、可移植性、可集成性越容易得到保证,测试也越容易,开发效率自然也就提高了。在子程序开发时要有封装思想,要把子程序内部数据结构隐藏起来。子程序与调用程序之间的信息只能通过参数来传递,而不要用全程变量或公共块来传递。子程序被初用时,尽量采用子程序名加操作的形式。操作为一个参数,调用时用字符中常量给出操作名。这样做程序运行起来可能略慢一些,但可读性要好得多。在子程序命名时,要善于利用重载技术,使完成同一种功能的子程序用相同的命名。上一页下一页返回1.3工程软件开发基本技术当一个程序开发调试通过后,一定要归纳、整理、总结与规范化。在做这个工作时要注意子程序的收集、整理及说明文档编写。最好能开发相应伪工具(如公用的程序索引数据库),以利于检索与应用。1.3.2数据处理技术目前常用的编程语言基本上是过程化语言,这样在程序中每个操作过程都必须完整地描述出来。一个大型程序在运行时会涉及到大量数据,如输入数据、中间数据、结果数据。这些数据的存放、查找、修改、删除等操作,简称为数据处理。当程序中数据量大、数据结构复杂时,为了有效地存放及查找数据,就有必要采用链表、索引、排序等数据处理技术。上一页下一页返回1.3工程软件开发基本技术由此可见在一个大型程序开发中数据处理部分的开发会占有相当比例的工作量,其技术难度也较大,在程序调试中最伤脑筋的也是数据处理部分。因此,程序开发必须重视数据处理技术的应用。目前,数据库技术已发展得很成熟,在大型软件开发中全面使用数据库技术,将会较好地解决数据处理问题。1.采用数据库技术的优点在工程软件开发中使用数据库技术具有以下优点:(1)提高开发效率,增加程序可读性。(2)改善程序结构。(3)降低程序对数据结构的依赖。上一页下一页返回1.3工程软件开发基本技术(4)增强数据的可移植性。(5)减少程序集成难度。(6)有利于程序的并行开发。2.数据库的组织从数据库技术在数据处理中的应用来说尚需注意下述几点:(1)区分临时数据及要保留数据(永久数据)。一般建两个数据库:一个是临时库,存放临时数据,程序退出就删除;另一个是永久库。在临时库模式设计时主要考虑响应速度及编程难度,较少考虑数据冗余,在永久库设计时最好把冗余降为最小。上一页下一页返回1.3工程软件开发基本技术(2)数据使用同时性分析。在工程软件中,有时数据显得很分散,实体定义较困难,此时可把数据使用同时性作为分析的一个依据。在工程软件的数据中常会遇到可变长数组,此时不要简单地使用规范化原则定义新实体,而要根据数据使用的同时性,允许可变长数组存在。GDML允许一个记录中存在任意多个可变长数组,这就为工程软件开发提供了方便。(3)重视多对多关系的分析。在工程软件中会遇到较多的多对多关系,此时不要简单地建立连接实体(即将多对多关系分解成两个一对多关系),而是要注意分析关系的物理含义。有不少多对多关系是由于对物理含义的理解造成的,特别要注意对连接实体自身数据的分析。上一页下一页返回1.3工程软件开发基本技术(4)实体自身多对多关系的应用。在工程软件中大量地存在实体自身的多对多关系,如总装配图—子装配图—零件图关系,部件—子部件—零件关系。1.3.3程序结构组织程序结构的合理组织对提高程序的可读性和可维护性起着关键作用。1.数据流驱动组织程序结构在这种程序结构组织方法中,开发者把数据处理、数据流放在第一位,而不太多考虑程序优化。具体来说以数据输入为起点,按照数据处理的自然先后顺序安排程序流程,原则上每个数据流与一个相对独立的程序流对应,不过分考虑代码优化。上一页下一页返回1.3工程软件开发基本技术其基本指导思想是程序流与数据流对应,不同数据处理中的程序流互相独立,互不干扰。这样做对提高程序结构化程度,增加程序可读性有很大好处。由于程序流间互相独立,因此维护就比较容易。在实际应用中数据处理流不会总是简单的树形结构,大多数情况是复杂的网状结构。当采用数据库技术后,程序结构就会自然向数据流驱动方式靠拢。一般使用数据库后数据结构都以E-R图的形式表示,数据操作也按E-R图的关系顺序依次进行,程序段也按对各个实体操作来划分。这样一来程序流自然向数据流靠拢,程序结构会变得很清晰。上一页下一页返回1.3工程软件开发基本技术2.菜单驱动组织程序结构随着窗口技术发展,使用菜单作为用户界面越来越普遍,菜单使用也给程序结构组织也带来了较大的变化。使用窗口技术后,程序起动就进入菜单,随后等待事件发生(即用户在菜单上选择所需操作)。一旦事件到达,程序就判别该事件的要求,执行相应的程序。程序以菜单作为中心而聚集,这样程序的模块化结构就非常明显。由于模块划分很清晰,也就使程序的可维护性得到很大提高,菜单驱动在人机交互比较频繁的应用软件如CAD/CAM程序、管理程序中应用很普遍。3.合理划分程序功能,缩小子程序规模上一页下一页返回1.3工程软件开发基本技术提倡缩小程序,每个子程序规模尽量控制在100行以下,编小程序有如下优点:(1)可读性好。(2)可重用度高。(3)文档容易编写。4.分层次组织程序工程软件通常是由大量的子程序组成。这样就带来对这些子程序的管理问题,因此有必要考虑子程序的组织方式。比较好的组织方式就是分层次组织子程序,一个层就是一个子程序库。分层可根据与操作系统、支持软件等的接近程度划分,也可根据功能细化程度划分。上一页下一页返回1.3工程软件开发基本技术在分层次中要做到上层程序只能调用其直接下层程序,不允许跨层调用。下层程序不允许调用上层程序。在层与层间数据传递时,尽量采用参数形式,少用全局变量(对系统顶层设计中定义的全局公共数据结构可适当放宽)。同层的子程序间可用全局变量传递数据。这样组织子程序可对程序维护及系统二次开发带来很大方便,也保证了程序的可移植性。1.3.4工程软件集成方法工程软件各模块的技术相对成熟,已实现在工程实际中的应用,但各模块的集成相对较弱,而且集成的必要性表现得越来越迫切,如在机械工程中CAD、CAE、CAM各模块都比较成熟,但CAD/CAE/CAM集成、信息共享需要解决的问题很多。上一页下一页返回1.3工程软件开发基本技术从技术发展的层次上看,CAD/CAM集成在方法上有以下4种:(1)通过专用数据格式文件交换产品信息的集成方式(图1-2)。这种方式中各应用系统所建立的产品模型各不相同,相互间的数据交换需要存在于两个系统之间。其特点是原理简单,转换接口程序易于实现,运行效率较高。但当子系统较多时,接口程序增多,编写接口时需要了解的数据结构也增多,当一个系统的数据结构发生变化时,引起的修改量较大。这是CAD/CAM系统发展初期所采用的集成方式。(2)通过标准数据格式文件交换产品信息的集成方式(图1-3)。上一页下一页返回1.3工程软件开发基本技术系统中存在一个与各子系统无关的标准格式,各子系统的数据通过前置处理转换成标准格式的文件。各子系统也可以通过后置处理,将标准格式文件转换为本系统所需的数据。采用这种集成方式,每个子系统只与标准格式文件打交道,无需知道别的系统细节,为系统的开发者和使用者提供了较大的方便,降低了接口维护难度。但这种集成方式需要解决各子系统间模型统一问题,不能算是一种十分理想的集成方式。(3)在中性文件的基础上进行数据交换的集成方式。这种方式仍然属于在数据文件基础上的系统间互联和集成。上一页下一页返回1.3工程软件开发基本技术例如用STEP标准建立中性文件,各需要集成在一起共享数据的系统,都必须开发用于前置和后置处理的数据转换接口(图1-4)来解决系统数据的输出和输入。这些中性文件可以用一个通用的数据库管理系统(DBMS)进行控制和管理。因此,用这种方式建立起来的系统能在较广泛的范围内实现数据共享和数据的安全维护。但是,各分系统不能直接操作数据库来存取数据,而必须通过各种接口来转换数据文件,会影响数据的一致性和数据的可靠性,并会产生许多不必要的数据冗余。这是较易实现在各独立开发的分系统间进行信息集成的有效方式,也是目前开发CAD/CAM系统中较多采用的方式。上一页下一页返回1.3工程软件开发基本技术(4)以工程数据库为核心实现系统集成的方式。这种方式中分系统通过用户接口按工程数据库要求直接存取数据或操作数据库,如图1-5所示。在工程数据库中不仅能操作结构化数据,而且应能管理各种类型的非结构化数据,如NC代码、工程图形、知识等。各种类型的数据都由数据库管理系统直接管理,达到真正的数据一致性、准确性、及时性和共享性,对系统数据实现可行的维护和根据工作需要及时刷新。在系统工程中完全避免了不必要的数据冗余、矛盾和冲突。但是,目前还没有一个真正适合于工程要求的工程数据库产品可供选用,正在进行的研究工作或者是按STEP标准采用EXPRESS语言开发面向复杂对象的工程数据模型,或者在原有的关系数据库基础上加以改造和扩充功能以满足工程数据库的要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夜读推广活动方案策划(3篇)
- 小闸门施工方案(3篇)
- 房顶泡沫施工方案(3篇)
- 施工方案确认单(3篇)
- 深扎活动策划方案(3篇)
- 甘肃换热站施工方案(3篇)
- 结构地面施工方案(3篇)
- 装修-弱电施工方案(3篇)
- 野外攀岩活动策划方案(3篇)
- 龙舟游街活动策划方案(3篇)
- 2026年内蒙古电子信息职业技术学院单招综合素质考试题库带答案详解(精练)
- 塔吊作业安全技术交底
- 2026浙江绍兴杭绍临空示范区开发集团有限公司工作人员招聘23人考试参考题库及答案解析
- 2025年贵州医疗岗位笔试真题及答案
- 隧道复工安全培训课件
- 2026年及未来5年中国内河水运行业市场供需格局及投资规划建议报告
- 2025至2030中国在线教育平台用户行为付费意愿及商业模式优化分析报告
- 2026年上海市初三上学期语文一模试题汇编之现代文阅读试题和参考答案
- 2026年《必背60题》车辆工程专业26届考研复试高频面试题包含详细解答
- 机械臂安全事故培训课件
- 混凝土地坪施工组织设计方案
评论
0/150
提交评论