您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第十五讲 程序设计方法和软件工程基础
计算机基础科学系2009.10第7章计算机软件技术计算机基础科学系第十五讲程序设计方法和软件工程基础计算机基础科学系主要教学内容程序设计方法1软件工程基础2小结3计算机基础科学系学习目标1了解结构化程序设计方法的优点和缺点;掌握面向对象程序设计的基本概念和基本特征。2了解面向主体的程序设计方法;掌握软件工程的基本概念。3掌握软件工程的生命周期;了解软件的测试方法;了解优质软件的评价方面。计算机基础科学系重点与难点面对对象程序设计的基本概念与基本思想,软件工程的目标、软件生命周期、软件测试方法与软件质量的评价是本讲的重点,面向对程序设思想的领悟是本讲的难点。计算机基础科学系1.程序设计方法对象是独立存在的客观事物,是组成程序的构件,由属性和方法构成。以模块化设计为中心,结构按功能划分成若干个模块。模块功能通过子程序调用实现。用主体模拟人的思想和行为,用多主体系统模拟社会结构化程序设计面向对象程序设计面向主体程序设计计算机基础科学系1.1结构化程序设计结构化程序设计方法由迪克斯特拉(E.W.dijkstra)在1969年提出。基本思想:把一个待求解的问题按功能自顶向下分解成一个个相对简单的子问题,即小模块;然后用子程序或函数来解决这些子问题,用子程序或函数之间的数据通信来模拟这些子问题间的联系;最后把这些子程序或函数装配起来以形成解决问题的完整程序。开发方法:自上向下,逐步分解,分而治之计算机基础科学系1.1结构化程序设计优点缺点1.各模块相对独立、功能单一、结构清晰、接口简单2.控制了程序设计的复杂性3.提高元件的可靠性4.缩短开发周期5.避免程序开发的重复劳动6.易于维护和功能扩充1.代码的可重用性差2.可维护性差3.稳定性差计算机基础科学系1.2面向对象程序设计在面向对象程序设计中,设计人员直接用一种称为“对象”的程序构件来描述客观问题中的实体,并用“对象”间的“消息”来模拟实体间的联系,用“类”来模拟这些实体间的共性。(1)对象对象是独立存在的客观事物。例如,一个人、一台电脑、一辆汽车等都是一个对象。每个对象都有其相应的属性及附属于它的行为。例如:一辆汽车有型号、外壳、颜色等特性,又有启动、加速、停止等行为。换档开大灯刹车开冷气颜色排档数排气量轮胎型号基本概念计算机基础科学系1.2面向对象程序设计对象有两个特征:属性状态和行为。例如:一个人有他的身高或体重作属性,并有他的行为:如唱歌、打球、骑摩托车、开汽车。而在程序设计中,软件对象的概念由真实世界对象而来。对象的概念是面向对象,软件对象将状态保存在变量或称数据字段里。而行为则借助方法为工具来实现。datafield1datafieldnmethod1methodn数据字段(状态)方法(行为)计算机基础科学系1.2面向对象程序设计又如:在下图中,有一个对话框对象,三个标签对象,三个文本框对象,两个命令按钮对象,这些对象的组合构成了加法运算程序的界面。作为对象之一的“确定”命令按钮的主要属性有按钮的宽度与高度,按钮的标题等;方法是用户为命令按钮写的程序代码。该程序代码将两个文本框中的数相加显示在第三个文本框中。图1加法运算程序计算机基础科学系1.2面向对象程序设计(2)类类在汉语词典中的解释为“很多相似事物的综合,如种类、类别、人类等”。在面向对象程序设计中,类是具有相同属性和相同操作(服务)的对象的集合,是一个抽象的概念,而一个对象则是类的一个“实例”。例如:汽车是一个抽象的类,具体的对象可以是:轿车、吉普车、中巴车、客车、跑车等。又如,在面向对象程序中,按钮是类,具体的按钮是由按钮类来创建的一个实例。又如,Shape也是类,通过改变Shape的属性可以创建圆、正方形、椭圆等形状。计算机基础科学系1.2面向对象程序设计(3)消息对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。如当你(一个对象)发动汽车(另一个对象),踩油门(交互)后,汽车内部就发生一连串复杂的行为。datafield1datafieldnmethodnmethod1对象A对象B消息计算机基础科学系1.2面向对象程序设计抽象封装继承同类事物具有共同性,每个事物又具有其特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性,则得到一个适应于一批对象的类,这便是父类,而把具有特殊性的类称为子类。封装可被理解为一种用做保护的包装器,以防止代码和数据被外部代码任意访问,而要对其访问时则通过一个明确定义的接口实现。在软件程序中,并不需要知道一个类的完整结构,只要知道调用的方法。好比开车换档时,不须知道变速箱、齿轮等是如何运作的,只要知道将档排到哪里即可。基本特征计算机基础科学系1.2面向对象程序设计1.模块化:一个对象的原始文件可以独立地被撰写及维护而不影响其他对象。而且对象可以轻易地在系统中来回地传递使用。就好像你借车给朋友,而它仍能正常地运作一样。2.信息隐藏:一个对象有一个公开的接口可供其他的对象与之沟通,但对象仍然维持私有的信息及方法,这些信息及方法可以在任何时间被修改,而不影响那些依赖此对象的其他对象。3.软件复用:类的封装特性使得类可重用性大为提高,这样的有机单元特别适宜构建大型标准化的应用软件系统,可以大幅度地提高生产效率。封装的好处:计算机基础科学系1.2面向对象程序设计继承多态继承继承是指一个对象从另一个对象中获得属性的过程,它支持按层次分类的概念。例如,波斯猫是猫的一种,猫又是哺乳动物的一种,哺乳动物又是动物的一种。子类的对象拥有其父类的全部或部分属性与方法,即称子类对父类的继承。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,即多态性。比如同样的加法,把两个时间加在一起和把两个整数加在一起完全不同。基本特征计算机基础科学系1.2面向对象程序设计注意:当对“父类”进行修改后,这种修改会立即反映到所有以该“父类”为基础而建立的全部“子类”中,不管这些“子类”是在“子类”对“父类”的继承如此,以一个“类”为基础建立的“对象”,对所属“类”的继承也是如此。在子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。继承的好处:实现代码重用计算机基础科学系1.3面向主体程序设计面向主体方法是希望通过对人解决应用问题的智能行为进行模拟,在软件解空间中建立一种嵌入在不断变化,不确定世界中,能进行感知并能自主采取行动的计算实体。主体是含有心智成分,如信念,愿望,能力,职责,承诺等的实体。学习能力反应性社会性自主性主体的特征主体在没有人直接干预下能够采取行动,并能控制自己的行为和内部状态。主体能够感知它们的环境,并以实时方式响应环境中发生的变化。主体能够根据其求解状态和技能,在合适的时候与其他主体交互,以提高自己的问题求解能力或帮助其他主体的问题求解活动。主体通过学习以往的经验不断改善自己对同一问题的求解能力。计算机基础科学系2.软件工程基础IEEE【IEE83】给出的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法。”IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。计算机软件是包括程序、数据及相关文档资料的完整的集合。软件工程则是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序的总称。软件工程包括软件开发与设计的方法,软件开发过程使用的工具,以及软件开发的过程。计算机基础科学系2.1软件工程的目标软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的软件产品。软件工程是一门工程性学科,目的是成功地建造一个大型软件系统。所谓成功,即:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护用费;能按时完成开发任务,及时交付使用;以及开发的软件可靠性高等等。计算机基础科学系2.2软件生命周期问题定义及规划需求分析软件设计程序编码软件测试软件生命周期软件产品从提出、实现、使用维护到停止使用的过程。运行维护计算机基础科学系2.3软件测试方法软件测试是发现错误而执行程序的过程。软件测试方法静态测试白盒测试动态测试黑盒测试包括代码检查、静态结构分析、代码质量度量或不实际运行软件,这种测试方法主要通过人工进行。主要方法有逻辑覆盖、基本路径测试。主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错误。计算机基础科学系2.3软件测试方法系统测试验收测试集成测试单元测试软件测试的目的就是要在软件投入生产运行之前,尽可能多地发现软件中的错误。大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上,在极端情况下,软件测试所花费的成本,可能相当于软件工程其它开发步骤总成本的3~5倍。因此,必须高度重视软件测试工作。测试过程计算机基础科学系2.4软件质量软件工程学的最终目标是获得优质量的软件。所谓优质软件是指软件能够满足用户显式或隐式的需求,文档齐全,符合组织的操作标准,在其开发使用的硬件上高效运行。可靠性效率可理解性可维护性如何评价软件质量?计算机基础科学系总结对象是独立存在的客观事物,它由一组属性和一组方法够成。属性是对象静态特征的描述,方法是对象动态特征的描述。面向对象程序设计方法有抽象、封装、继承和多态四个基本特征。软件工程是指利用合理的工程方法和原则来获得在真实机器上工作的可靠软件。软件生命周期可分为软件定义、软件开发和运行维护三大环节。软件测试的目的是执行程序发现错误的过程。优质软件是指软件能够满足用户显式或隐式的需求,文档齐全,符合组织的操作标准,在其开发使用的硬件上高效运行。DepartmentofComputerScienceandTechnology!
本文标题:第十五讲 程序设计方法和软件工程基础
链接地址:https://www.777doc.com/doc-3921056 .html