1 / 49

第三部分 计算机应用技术基础

第三部分 计算机应用技术基础. 第 11 章 软件技术基础. 本章介绍了软件工程的基本概念和开发方法,结构化程序设计的思想,面向对象程序设计的基本概念,算法的特征与表示,数据结构的基本概念,线性表、二叉树的基本操作及查找、排序的方法。. 学习目标. 了解程序设计语言的分类、选择及程序设计方法与风格 理解算法与数据结构的基本思想,掌握线性表、二叉树的操作及查找、排序的方法 了解结构化程序设计的思想和方法,掌握结构化程序设计的基本结构 理解面向对象程序设计的基本概念及程序设计思想 了解软件工程的基本概念及软件开发方法与软件测试. 学习纲要. 程序设计概述 算法

Download Presentation

第三部分 计算机应用技术基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三部分 计算机应用技术基础

  2. 第11章 软件技术基础 • 本章介绍了软件工程的基本概念和开发方法,结构化程序设计的思想,面向对象程序设计的基本概念,算法的特征与表示,数据结构的基本概念,线性表、二叉树的基本操作及查找、排序的方法。

  3. 学习目标 • 了解程序设计语言的分类、选择及程序设计方法与风格 • 理解算法与数据结构的基本思想,掌握线性表、二叉树的操作及查找、排序的方法 • 了解结构化程序设计的思想和方法,掌握结构化程序设计的基本结构 • 理解面向对象程序设计的基本概念及程序设计思想 • 了解软件工程的基本概念及软件开发方法与软件测试

  4. 学习纲要 • 程序设计概述 • 算法 • 数据结构 • 结构化程序设计 • 面向对象程序设计 • 软件工程

  5. 程序设计概述 程序设计概述 语言是人们交流思想、传达信息的工具。人类在长期的历史发展过程中,为了交流思想、表达感情和交换信息,逐步形成了语言。这类语言,如汉语和英语,通常称为自然语言。另一方面,人们为了某种专门用途,创造出种种不同的语言,例如旗语和哑语,这类语言通常称为人工语言。专门用于人与计算机之间交流信息的各种人工语言称为计算机语言或程序设计语言。

  6. 程序设计语言的分类 根据程序设计语言发展的历程,可将其大致分为4类。 1.机器语言 2.汇编语言 3.高级语言 4.4GL语言

  7. 程序设计语言的选择 在选择程序设计语言时,既要考虑程序设计语言的特性,又要考虑是否能满足需求分析和设计阶段所产生的模型的需要。一般而言,衡量某种程序设计语言是否适合特定的项目,应考虑下面的一些因素: • 应用领域。 • 算法和计算复杂性。 • 软件运行环境。 • 用户需求中关于性能方面的需要。 • 数据结构的复杂性。 • 软件开发人员的知识水平和心理因素等。

  8. 程序设计的基本过程 程序设计就是使用某种程序设计语言编写程序代码来驱动计算机完成特定功能的过程。程序设计的基本过程一般由分析所求解的问题、抽象数学模型、选择合适算法、编写程序、调试通过直至得到正确结果等几个阶段所组成。

  9. 程序设计方法与风格 程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计方法和技术的发展,主要经过了结构化程序设计阶段和面向对象程序设计阶段。除了好的程序设计方法和技术之外,程序设计风格也是很重要的。良好的程序设计风格可以使程序结构清晰合理,使程序代码便于测试和维护。程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路,为了测试和维护程序,往往还要阅读和跟踪程序,因此程序设计的风格总体而言应该强调简单和清晰,著名的“清晰第一,效率第二”论点已成为当今主导的程序设计风格。

  10. 算法 算法的概念 算法是对解决某一特定问题的操作步骤的具体描述。简单地说,算法就是解决一个问题而采取的方法和步骤。如打电话,要拨号、接通后通话、结束通话,这就是“通话算法”;植树的过程,是挖坑、栽树苗、培土、浇水,这就是“植树算法”。

  11. 在计算机科学中,算法是描述计算机解决给定问题的有明确意义操作步骤的有限集合。计算机算法一般可分为数值计算算法和非数值计算算法。数值计算算法就是对所给的问题求数值解,如求函数的极限、求方程的根等;非数值计算算法主要是指对数据的处理,如对数据的排序、分类、查找及文字处理、图形图像处理等。在计算机科学中,算法是描述计算机解决给定问题的有明确意义操作步骤的有限集合。计算机算法一般可分为数值计算算法和非数值计算算法。数值计算算法就是对所给的问题求数值解,如求函数的极限、求方程的根等;非数值计算算法主要是指对数据的处理,如对数据的排序、分类、查找及文字处理、图形图像处理等。

  12. 算法的特征 算法应具有以下基本特征。 • 可行性:算法中描述的操作必须是可执行的,通过有限次基本操作可以实现。 • 确定性:算法的每一步操作,必须有确切的含义,不能有二义性和多义性。 • 有穷性:一个算法必须保证执行有限步骤之后结束。 • 输入:一个算法有零个或多个输入,以描述运算对象的初始情况,所谓零个输入是指算法本身定出了初始条件。 • 输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。

  13. 算法的表示 算法的描述应直观、清晰、易懂,便于维护和修改。描述算法的方法有多种,常用的表示方法有自然语言、传统流程图、N-S图、伪代码和计算机语言等。其中最常用的是传统流程图和N-S图。

  14. 算法设计基本方法 1.列举法 2.归纳法 3.递推法 4.递归法 5.回溯法

  15. 算法的评价 算法的好与不好,关系到整个问题解决得好与不好,一般从以下几个方面对一个算法进行评价。 1.正确性 2.运行时间 3.占用空间 4.可理解性

  16. 数据结构 数据结构主要研究和讨论以下3个方面的问题: • 数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构。 • 在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构。 • 对各种数据结构进行的运算。

  17. 数据结构的基本概念 1.数据 2.数据元素 3.数据对象 4.数据类型 5.数据结构

  18. 线性结构与非线性结构 线性表 1.线性表定义 线性表是由n(n≥0)个数据元素a1,a2,…,an组成的一个有限序列,记为(a1,a2,…,ai,…,an)。其中,数据元素个数n称为线性表长度,n=0时称此线性表为空表。

  19. 2.非空线性表的结构特征 非空线性表有如下一些结构特征: (1)有且只有一个无前件的结点a1。 (2)有且只有一个无后件的结点an。 (3)其他所有结点有且只有一个前件和一个后件。

  20. 3.线性表的顺序存储结构 在计算机中存放线性表,一种最简单的方法是顺序存储,也称为顺序表。 线性表在顺序存储结构中具有以下两个基本特点: 1.线性表中所有元素所占的存储空间是连续的。 2.线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

  21. 由此可以看出,在线性表的顺序存储结构中,某一个结点的前后件两个元素在存储空间中与该结点是紧邻的。由此可以看出,在线性表的顺序存储结构中,某一个结点的前后件两个元素在存储空间中与该结点是紧邻的。 对线性表进行的基本操作包括:存取、插入、删除、合并、分解、查找、排序、求线性表的长度等。

  22. 栈和队列 1.栈 栈(Stack)是一种特殊的线性表,这种线性表上的插入与删除运算限定在表的一端进行。即在这种线性表的结构中,一端是封闭的,不允许进行插入与删除元素操作;另一端是开口的,允许插入与删除元素操作。

  23. 在顺序存储结构下,对这种类型线性表的插入与删除运算不需要移动表中其他数据元素。栈这种数据结构在日常生活中也很常见,例如:子弹夹是一种栈的结构,最后压入的子弹总是最先被弹出,而最先压入的子弹最后才能被弹出。在顺序存储结构下,对这种类型线性表的插入与删除运算不需要移动表中其他数据元素。栈这种数据结构在日常生活中也很常见,例如:子弹夹是一种栈的结构,最后压入的子弹总是最先被弹出,而最先压入的子弹最后才能被弹出。

  24. 2.队列 队列(Queue)是只允许在一端进行插入元素,而在另一端进行删除元素的线性表。 在队列中,允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为队首,通常也用一个队首指针(front)指向队首元素的位置。

  25. 队列又称为“先进先出”(First In First Out,FIFO)或“后进后出”(Last In Last Out,LILO)的线性表,它体现了“先来先服务”的原则。在队列中,队尾指针rear与队首指针front共同反映了队列中元素动态变化的情况。

  26. 树与二叉树 1. 树 树(Tree)是一种简单的非线性结构。树中所有数据元素之间的关系具有明显的层次特性,即树是一种层次结构。在用图形表示树时,很像自然界中的树,只不过是一棵倒长的树,因此,这种数据结构就用“树”来命名。

  27. 2.二叉树 二叉树(Binary Tree)是一种特殊的树,它的特点是每个结点最多只有两个子结点,即二叉树中不存在度大于2的结点。二叉树的子树有左右之分,其次序不能任意颠倒,其所有子树(左子树或右子树)也均为二叉树。在二叉树中,一个结点可以只有一个子树(左子树或右子树),也可以没有子树。

  28. 查找与排序方法 1.查找 查找是根据给定的条件,在线性表中,确定一个与给定条件相匹配的数据元素。若找到相应的数据元素,则称查找成功,否则称查找失败。查找是数据处理领域中的一个重要内容,查找的效率将直接影响到数据处理的效率。下面介绍几种常用的查找方法。

  29. 2.排序 排序也是数据处理的重要内容。排序是指将一个无序序列整理成按值递增或递减顺序排列的有序序列。排序的方法很多,根据待排序序列的规模以及对数据处理的要求,可以采用不同的排序方法。

  30. 结构化程序设计 结构化程序设计 由于软件危机的出现,人们开始研究程序设计方法,其中最受关注的是结构化程序设计方法。20世纪70年代提出了“结构化程序设计”(Structured Programming)的思想和方法,该方法引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。

  31. 结构化程序的基本结构与设计思想 (1)顺序结构 (2)选择结构 (3)循环结构 结构化程序设计的基本原则 (1)自顶向下 (2)逐步求精 (3)模块化 (4)限制使用goto语句

  32. 面向对象程序设计 面向对象程序设计 面向对象程序设计,是当前程序设计的主流方向,是程序设计方式在思维上和方法上的一次飞跃。面向对象程序设计方式是一种模仿人们建立现实世界模型的程序设计方式,是对程序设计的一种全新的认识。

  33. 面向对象程序设计的基本概念 1.对象 2.类 3.消息 4.继承 5.多态性

  34. 面向对象程序设计的思想 1.是从现实世界中客观存在的事物(即对象)出发,尽可能运用人类自然的思维方式去构造软件系统,也就是直接以客观世界的事务为中心来思考问题、认识问题、分析问题和解决问题。 2.是将事物的本质特征经抽象后表示为软件系统的对象,以此作为系统构造的基本单位。

  35. 3.是使软件系统能直接映射问题,并保持问题中事物及其相互关系的本来面貌。 因此,面向对象方法强调按照人类思维方法中的抽象、分类、继承、组合、封装等原则去解决问题。这样,软件开发人员便能更有效地思考问题,从而更容易与客户沟通。

  36. 面向对象程序设计的步骤: (1)面向对象分析 (Object Oriented Analysis,OOA) (2)面向对象设计 (Object Oriented Design,OOD) (3)面向对象编程 (Object Oriented Programming,OOP) (4)面向对象测试 (Object Oriented Test,OOT) (5)面向对象维护 (Object Oriented Soft Maintenance,OOSM)

  37. 软件工程 软件工程 软件工程是随着计算机系统的发展而逐步形成的计算机科学领域中的一门新兴学科。

  38. 软件工程基本概念 1. 软件定义与软件特点 2.软件危机 3.软件工程 4.软件生命周期 5.软件开发模型 6. 软件工程的目标 7.软件工程的原则 8. 软件开发工具 9. 软件开发环境

  39. 软件开发方法 软件测试 1.测试的目的 1983年IEEE(Institute of Electrical & Electronic Engineers)将软件测试定义为:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果的差别。

  40. 2. 测试的方法 软件测试的方法有多种,可以从不同的角度加以分类。按软件测试的性质来分,可分为静态测试和动态测试。静态测试又分为文档测试和代码测试;动态测试又称为运行程序测试,可分为黑盒测试和白盒测试。

  41. (1)静态测试 静态测试就是测试人员(包括程序员、分析员)阅读、分析文档或源程序及批注时所发现的问题。 (2)动态测试 动态测试是基于计算机的测试,就是在计算机或网络上运行被测试的系统,按照事先规定的测试计划,运行事先准备的测试用例,取得运行的数据,再将此数据与测试计划中的计划数据相比较。若两者一致,则测试通过;否则发现有错误,并找出错误。

  42. 3.测试的策略 软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。通过这些步骤的实施来验证软件是否合格,能否交付用户使用。

  43. (1)单元测试 单元测试是对软件设计的各模块进行正确性检验的测试。单元测试的目的是发现各模块内部可能存在的各种错误。 (2)集成测试 集成测试是测试和组装软件的过程。它是在将模块按照设计要求组装起来的同时进行测试,主要目的是发现与接口有关的错误。

  44. (3)确认测试 确认测试的任务是验证软件的功能和性能是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全正确。 (4)系统测试 系统测试是将通过测试确认的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其他系统元素组合在一起,在实际运行环境下对计算机系统进行一系列的集成测试和确认测试。

  45. 软件维护 1.传统的软件维护 传统软件维护活动根据起因分为纠错性维护、适应性维护、完善性维护、预防性维护4类。 (1)纠错性维护:产品或项目中存在缺陷或错误,在测试和验收时未发现,到了使用过程中逐渐暴露出来,需要改正。 (2)适应性维护:这类维护是为了产品或项目适应变化了的硬件、系统软件的运行环境,如系统升级。

  46. (3)完善性维护:这类维护是为了给软件系统增加一些新功能,使产品或项目的功能更加完善与合理,又不至于对系统进行伤筋动骨的改造,这类维护占维护活动的大部分。(3)完善性维护:这类维护是为了给软件系统增加一些新功能,使产品或项目的功能更加完善与合理,又不至于对系统进行伤筋动骨的改造,这类维护占维护活动的大部分。 (4)预防性维护:这类维护是为了提高产品或项目的可靠性和可维护性,有利于系统的进一步改造或升级换代。

  47. 2.目前的软件维护 随着软件开发模型、软件开发方法、软件支持过程和软件管理过程4个方面技术的飞速发展,软件维护的方法也随之发展。目前软件企业一般将自己的软件产品维护活动分为面向缺陷维护(程序级维护)和面向功能维护(设计级维护)两类。

  48. 面向功能维护的条件是:该软件产品在功能、性能、接口上存在某些不足,不能满足用户的某些需求,因此需要增加某些功能、性能、接口。这样的软件产品若不加以维护,就不能正常运转,也不能降级使用。存在不足的原因是多种多样的,但是不足发生的部位都在分析设计的级别上,自然也表现在程序实现的级别上。克服不足的方法是不仅要修改分析与设计,而且也要修改程序实现,也就是通常说的既修改数据结构,又修改编码。面向功能维护的条件是:该软件产品在功能、性能、接口上存在某些不足,不能满足用户的某些需求,因此需要增加某些功能、性能、接口。这样的软件产品若不加以维护,就不能正常运转,也不能降级使用。存在不足的原因是多种多样的,但是不足发生的部位都在分析设计的级别上,自然也表现在程序实现的级别上。克服不足的方法是不仅要修改分析与设计,而且也要修改程序实现,也就是通常说的既修改数据结构,又修改编码。 由此可见,面向缺陷维护是较小规模的维护,面向功能维护是较大规模的维护。

  49. 3.软件维护与软件产品版本升级 软件维护与软件产品版本升级有一定的关系,若小规模维护前的版本号为V1.00,则小规模维护后的版本号为V1.01。若大规模维护前的版本号为V1.01,则大规模维护后的版本号为V1.11。一般而言,版本号中小数点的左侧第一位,用于表示该软件产品的第几个版本;版本号中小数点的右侧第一位,用于表示该版本的大修改次数;版本号中小数点右侧的第二位,表示该版本的小修改次数。只有当该软件产品的运行环境发生改变时,或者该软件产品的功能变化超过30%时,其版本才能升级,此时,版本号中小数点的左一位才能加1,例如,由V1.11变为V2.00。

More Related