• 1.52 MB
  • 2022-04-29 14:31:34 发布

最新软件工程基础63课件PPT.ppt

  • 102页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'软件工程基础63 7.1软件工程的基本概念7.1.1软件的定义、特点和发展1.软件的定义计算机软件(Software)是指计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档。在国家标准(GB)中,软件被定义为与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。程序是对计算机的处理对象和处理规则的描述,是软件开发人员根据用户需求开发的、用程序语言描述的、适合计算机执行的指令序列。数据能够保证程序的正常运行,文档是程序的资源说明,是与程序的开发、维护和使用相关的资料。 2.软件的特点软件是逻辑产品,具有抽象性;硬件是物理产品,具有可见性。(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。软件开发、设计几乎都是从头开始,成本和进度很难估计。(2)软件存在潜伏错误,硬件错误一般能排除。(3)软件开发成功后,只需对原版进行复制。(4)软件在使用过程中维护复杂:①纠错性维护—改正运行期间发现的潜伏错误;②完善性维护—提高或完善软件的性能;③适应性维护—修改软件,以适应软硬件环境的变化;④预防性维护—改进软件未来的可维护性和可靠性。(5)软件不会磨损和老化。 2.产生软件危机的原因1)用户对软件需求的描述不精确。2)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致。3)缺乏处理大型软件项目的经验。开发大型软件项目需要组织众多人员共同完成。一般来说,多数管理人员缺乏大型软件的开发经验,而多数软件开发人员又缺乏大型软件项目的管理经验,致使各类人员的信息交流不及时、不准确、容易产生误解。4)开发大型软件易产生疏漏和错误。5)缺乏有力的方法学的指导和有效的开发工具的支持。软件开发过多地依靠程序员的“技巧”,从而加剧了软件产品的个性化。6)面对日益增长的软件需求,人们显得力不从心。从某种意义上说,解决供求矛盾将是一个永恒的主题。 3.缓解软件危机的途径到了20世纪60年代末期,软件危机已相当严重。这促使计算机科学家们开始探索缓解软件危机的方法。他们提出了“软件工程”的概念,即用现代工程的原理、技术和方法进行软件的开发、管理、维护和更新。于是,开创了计算机科学技术的一个新的研究领域。4.软件工程的定义和三要素为了消除软件危机,通过认真研究解决软件危机的方法,1968年,北大西洋公约组织在原西德召开计算机科学会议,由FritzBauer首次提出了“软件工程”的概念。软件工程就是试图用工程、科学和数学的原则与方法开发、维护计算机软件的有关技术和管理方法。软件工程的定义:国标(GB)中指出软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。 软件工程由方法、工具和过程三部分组成,称软件工程的三要素。软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的各个阶段。软件工程使用的软件工具能够自动或半自动地支持软件的开发、管理和文档的生成。软件工程中的过程贯穿于整个工程的各个环节,在这一过程中,管理人员应对软件开发的质量、进度、成本等进行评估、管理和控制,包括计划跟踪与控制、成本估算、人员的组织、质量保证、配置管理等。7.1.3软件工程过程与软件生命周期1.软件工程过程(SoftwareEngineeringProcess)ISO9000中定义,软件工程过程是将输入转化为输出的一组彼此相关的资源和活动。事实上,软件工程过程是一个软件开发机构针对某类软件产品为自己规定的工作步骤;当然它应当是科学的、合理的,否则将影响软件产品的质量。 通常把用户的要求变成软件产品的过程也叫做软件开发过程。此过程包括对用户的需求进行分析,解释成软件需求,把需求变换成设计,把设计用代码来实现并进行代码测试,有些软件还需要进行代码安装和交付运行。所以,软件工程过程是将软件工程的方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的。软件工程过程应确定方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的任务。软件工程过程包含软件规格说明、软件开发、软件确认和软件演进等4种基本活动。其中软件规格说明规定软件的功能及其运行机制;软件开发产生满足规格说明的软件;软件确认确保软件能够满足客户提出的要求;软件演进是为满足客户的变更要求,软件必须在使用的过程中演进。1.软件工程过程(SoftwareEngineeringProcess) 2.软件生命周期软件产品从定义开始,经过开发、使用和维护,直到最终退役的全过程称为软件生存周期。可将软件生存周期划分为三个过程共九个阶段。三个过程是:软件定义过程、软件开发过程、软件使用与维护过程。九个阶段有:可行性研究、需求分析、概要设计、详细设计、实现、组装测试、验收测试、使用与维护、退役。对每个阶段,都明确规定了该阶段的任务、实施方法、实施步骤和完成标志,其中特别规定了每个阶段需要产生的文档。它们之间的关系如图7.2所示。 7.1.4软件工程的目标与原则1.软件工程的目标及目标间的关系(如图7.3)软件工程的目标是在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性和可互操作性且满足用户需求的产品。图7.2软件生存周期阶段的划分 图7.3软件工程目标之间的关系(1)可修改性(modifiability),允许对软件系统进行修改而不增加其复杂性。它支持软件调试与维护。(2)有效性(efficiency),指软件系统的时间和空间效率。这是一个应当努力追求的重要目标。(3)可靠性(reliability),是指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软件质量的一个重要目标。 (4)可理解性(understandability),指系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。(5)可维护性(maintainability),是指软件产品交付使用后,在实现改正潜伏的错误、改进性能等属性、适应环境变化等方面工作的难易程度。由于软件的维护费用在整个软件生存周期中占主要的比重,因此,可维护性是软件工程中的一个十分重要的目标。软件的可理解性和可修改性支持软件的可维护性。(6)可重用性(reusability),是指软部件可以在多种场合使用的程度。概念或功能相对独立的一个或一组相关模块可构成一个软部件。软部件应具有清晰的结构和注释、正确的编码和较高的时空效率。可将各种软部件按照某种规则放在软部件库中供开发人员选用。 广义地讲,可重用性还应包括应用项目、规格说明、设计、概念和方法等等的重用。一般来说,重用的层次越高,带来的效益越大。可重用性有助于提高软件产品的质量和开发效率、降低软件开发和维护费用。(7)可适应性(adaptability),是指软件在不同的系统约束条件下,使用户需求得到满足的难易程度。选择广为流行的软硬件支持环境、采用广为流行的程序设计语言编码、采用标准的术语和格式书写文档可增强软件产品的可适应性。(8)可移植性(portability),是指软件从一个计算机系统或环境移植到另一个上去的难易程度。采用通用的运行支持环境和尽量通用的程序设计语言的标准部分可提高可移植性。而应将依赖于计算机系统的低级(物理)特征部分相对独立、集中起来。可移植性支持软件的可重用性和可适应性。 基于上述目标,软件工程学所研究的主要内容包括:软件开发技术和软件工程管理两个方面。其中:软件开发技术包括:(1)软件开发方法学(SoftwareDevelopmentMethods)①传统方法学,也称为生命周期方法学或结构化范型②面向对象方法学:面向对象=对象+类+继承+消息通信(2)开发过程(3)软件工具(SoftwareTools)(4)软件工程环境(SoftwareEngineeringEnvironment,简称SEE)软件工程管理包括:软件管理学、软件工程经济学、软件心理学等。2.软件工程的原则 为了达到上述目标,在软件开发过程中必须遵循软件工程的基本原则,这些基本原则包括抽象、信息屏蔽、模式化、局部化、确定性、一致性、完备性和可验证性。(1)抽象(abstraction),抽取各个事物中共同的最基本的特征和行为,暂时忽略它们之间的差异。抽象使软件的可理解性增强并有利于开发过程的管理。(2)信息隐藏(informationhiding),将模块内部的信息(数据和过程)封装起来。其他模块只能通过简单的模块接口来调用该模块,而不能直接访问该模块内部的数据或过程,即将模块设计成“黑箱”。信息隐藏的原则可使开发人员把注意力集中于更高层次的抽象上。(3)模块化(model)模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义。模块的大小要适中,模块过大会使模块内部的复杂性增加,不利于模块的理解和修改,也不利于模块的调试和重用;模块太小会导致整个系统表示过于复杂,不利于控制系统的复杂性。 (4)局部化(localization),即在一个物理模块内集中逻辑上相互关联的计算资源。局部化支持信息隐藏,从而保证模块之间具有松散的耦合、模块内部有较强的内聚。这有助于控制每一个解的复杂性。(5)一致性(consistency),整个软件系统(包括程序、数据和文档)的各个模块应使用一致的概念、符号和术语;程序内部接口应保持一致;软件与环境的接口应保持一致;系统规格说明应与系统行为保持一致;用于形式化规格说明的公理系统应保持一致。(6)完全性(completeness),软件系统不丢失任何重要成分,完全实现所需的系统功能的程度。为了保证系统的完全性,在软件的开发和维护过程中需要严格的技术评审。(7)可验证性(verifiability),开发大型软件系统需要对系统逐层分解。系统分解应遵循易于检查、测试、评审的原则,以使系统可验证。 抽象、信息隐藏、模块化和局部化的原则支持可理解性、可修改性、可靠性等目标,并可提高软件产品的质量和开发效率;一致性、完全性和可验证性等原则可以帮助软件开发人员去实现一个正确的系统。7.1.5软件开发工具与环境软件开发的工具软件:支持软件项目的开发、管理、维护活动的软件例如,项目管理工具、需求分析工具、设计工具、编码工具、测试工具、维护工具等。软件开发环境是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。工具集包括支持软件开发相关过程、活动、任务的软件工具,以便对软件开发提供全面的支持。环境集成机制为工具集成和软件开发、维护与管理提供统一的支持,它通常包括数据集成、控制集成和界面集成3个部分。 在软件工程活动中,人们按照软件工程的原则和方法,利用计算机及其集成的软件开发环境,辅助软件项目的开发、维护及管理的过程,称为计算机辅助软件工程(即CASE,Computer-AidedSoftwareEngineering)。CASE工具和环境的核心是软件工程信息库。这些工具和环境应遵循统一的标准,在操作系统、网络和数据库的支持下工作,以便使开发者们方便地相互通信并协同工作。7.2结构化分析方法结构化方法是结构化分析、结构化设计和结构化编程的总称;其核心和基础是结构化程序设计理论。7.2.1需求分析和需求分析方法1.需求分析软件需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。 (1)需求分析的定义1997年在IEEE软件工程标准词汇表中对需求分析定义是:①用户解决问题或达到目标所需的条件或权能;②系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能;③一种反映①或②所描述的条件或权能的文档说明。(2)需求分析阶段的工作需求分析阶段的工作可概括为需求获取,需求分析,编写需求规格说明书和需求评审。2.需求分析方法常见的需求分析方法有结构化分析方法和面向对象的分析方法。7.2.2结构化分析方法(SA)SA(StructuredAnalysis)是结构化程序设计理论在软件需求分析阶段的运用;是20世纪70年代中期由E.Yourdon等人倡导的一种面向数据流的分析方法。T.DeMarco对SA所下的 定义为“结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化语言、判定表和判定树等工具,来建立一种新的称为结构化说明书的目标文档”。随着计算机的发展,结构化分析方法有了一些改进,但最基本的内容还是应用DFD、DD和PSPEC(ProcessSpecification,加工说明)来描述系统的功能模型。结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。结构化分析的步骤:1)通过对用户的调查,以软件的需求为线索,获得当前系统的具体模型;2)去掉具体模型中非本质因素,抽象出当前系统的逻辑模型;3)根据计算机的特点,分析当前系统与目标系统的差别,建立目标系统的逻辑模型; 4)完善目标系统并补充细节,写出系统的软件需求规格说明;5)评审直到确认完全符合用户对软件的需求。1.结构化分析的常用工具(1)数据流图(DataFlowDiagram,DFD)数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模,它从数据传递和加工的角度,刻画了数据流从输入到输出的移动变换过程,数据流图的基本符号的含义说明如下:表7.1数据流图的基本符号的含义 数据流图的附加符号图7.4,表示数据流之间的关系。图7.4表明多个数据流与加工之间关系的符号(2)数据流图的绘制步骤(以学生成绩管理系统为例) 画顶层数据流图。通常把整个系统当作一个大的加工,标出系统的输入、输出及数据的源点与汇点,如图7.5。图7.5学生成绩管理系统的顶层DFD②画第二层数据流图。图7.6学生成绩管理系统的分层DFD ③画第三层数据流图。第二层数据流图中的加工细节还不够清晰,需要把每个加工继续分解成更小的加工。图7.7学生成绩管理系统查询细化DFD 图7.8学生成绩管理系统统计细化DFD图7.9学生成绩管理系统编辑细化DFD (3)数据字典数据字典(DataDictionary,DD)是结构化分析方法的另一种有力工具,是结构化分析方法的核心。数据字典是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、储存成分和中间计算结果有共同的理解。概括地说,数据字典的作用是对DFD中出现的被命名的图形元素做确切解释。通常数据字典包含的信息有:名称、别名、何处使用/如何使用、内容描述、补充信息等。同时,数据字典也是软件维护时使用的一种重要资料。如果要求所有开发人员都根据公共的数据字典描述数据和设计模块,则能避免许多麻烦的接口问题,提高开发的效率和质量。①数据字典的内容数据字典是对数据流图中出现的所有数据元素给出定义。它对数据流图上的数据流名字、加工名字和文件名字给出了确切的解释,并按照字典的方式组织起来,以便于查询和维护。主要 包括:数据流词条描述、数据项词条描述、数据文件词条描述、加工逻辑词条描述、源点及汇(终)点词条描述。②数据字典的数据定义方法在对数据进行定义时,可以使用数据各成分的组合来表示该数据,这些组合又由更底层的成分组合进行定义表7.2数据字典定义式中的符号符号含义说明=表示定义为用于对=左边的条目进行确切的定义+表示与关系X=a+b表示X由a和b共同构成[|]或[,]表示或关系X=[a|b]与X=[a,b]的等价,表示X由a或b组成()表示可选项X=(a)表示a可以在X中出现,也可以不出现{}表示重复大括号中的内容重复0到多次m{}n表示规定次数的重复重复的次数最少m次,最多n次“”表示基本数据元素“”中的内容是基本数据元素,不可再分..连接符Month=1..12表示month可取1~12中的任意值**表示注释两个星号之间的内容为注释信息 总之,数据字典与数据流图应相辅相成、互相配合,并应遵守以下约定:1)有关数据的流向在数据流图中描述;2)有关数据的组成在数据字典中描述;3)有关数据的加工细节在数据字典中描述;4)编写数据字典时不能有遗漏和重复,即遵循不重不漏的原则;5)数据字典小的条目的排列要有一定规律,要能通过名字方便地查阅条目的内容,如按英文字母表顺序或按汉字笔划顺序排列或按功能分类等;6)数据字典的编写要易于更新修改。7.2.3软件需求规格说明书软件需求规格说明书(SoftwareRequirementSpecification,SRS)是需求分析阶段的最后成果,是软件开发中的重要文档之一。 1.软件需求规格说明书的作用:(1)便于用户、开发人员进行理解和交流。(2)反映出用户问题的结构,可以作为软件开发工作的基础和依据。(3)作为确认测试和验收的依据。2.软件需求规格说明书的内容软件需求规格说明书的内容包括概述、数据描述、功能描述、性能描述、参考文献和附录等。3.软件需求规格说明书的特点:正确性、无歧义性、完整性、可验收性、一致性、可理解性、可修改性、可追踪性。 7.3.1有关软件设计的基本内容1.软件设计的任务和目标软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。软件设计的基本目标是用比较抽象、概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计定义软件系统各主要部件之间的关系;数据设计将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何通信;过程设计则是把系统结构部件转换为软件的过程性描述。从工程管理角度来看,软件设计包括概要设计和详细设计两部分。7.3结构化设计方法 概要设计:将软件需求转换为软件结构和数据结构,并编写概要设计说明书;详细设计:通过对软件结构的细化,得到软件的详细的算法和数据结构,产生描述软件的详细设计文档。2.软件设计的基本原理软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和软件设计有关的概念。(1)抽象:抽象是一种思维工具,就是把事务的本质的共同特性提取出来,而不用考虑其他细节。(2)模块化:模块化是指把一个待开发的软件分解成若干小的简单部分。(3)信息隐蔽:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。 (4)模块的独立性:模块的独立性是指在每一个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。1)内聚性:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。2)耦合性:耦合性是模块间相互连接的紧密程度的度量。7.3.2有关结构化设计方法的基本内容与结构化需求方法相对应的是结构化设计方法。结构化设计方法是采用最佳的可能方法设计系统的各个组成部分以及各成分之间的内部联系的技术。也就是说,结构化设计方法是这样一个过程,它决定用哪些方法把哪些部分联系 起来,才能解决好某个具体的、有清楚定义的问题。结构化设计方法的基本思想是将软件设计成由相对独立、有单一功能的模块组成的结构。以面向数据流的结构化方法为例,结构化设计方法主要包括概要设计和详细设计。1.概要设计(又称为初步设计或总体设计)的主要任务:(1)设计软件系统结构(2)设计数据结构及数据库(3)编写概要设计文档(4)概要设计文档评审2.设计软件结构的图形工具(1)层次图和HIPO图:层次图用来描绘软件的层次结构,很适于在自顶向下设计软件的过程中使用。在图7.10中已经非正式地使用了层次图。 图7.10学生成绩管理系统的层次图 在层次图(H图)里除了最顶层的方框之外,每个方框都加编号。像图7.11这样带编号的层次图称为HIPO图(层次图加输入/处理/输出图的英文缩写)。图7.11学生成绩管理系统HIPO图 (2)结构图(StructureChart,SC)结构图(也叫程序结构图、软件结构图、系统结构图)的符号方框代表模块,框内注明模块的名字或主要功能。方框之间的大箭头或直线表示模块的调用关系。带注释的小箭头表示模块调用时传递的信息及其方向。尾部加空心圆的小箭头表示传递数据信息,加实心圆的小箭头表示传递控制信息。结构图是SD方法使用的主要描述工具,用来描述软件的组成模块及其调用关系。依据结构化设计思想,构成结构图的基本形式如图7.12所示。经常使用的结构图有四种类型模块如图7.13所示。 图7.12结构图构成的基本形式图7.13系统结构图中的模块类型。 1)传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块。2)传出模块:从上级模块获得数据,进行某些处理,再将其传送给下属模块。3)变换模块:即加工模块。它从上级模块取得数据,进行特定的处理,转换成其他形式,再回传给上级模块。大多数计算模块(原子模块)属于这一类。4)协调模块:对所有下属模块进行协调和管理的模块。在系统的输入/输出部分或数据加工部分可以找到这样的模块。在一个好的系统结构图中,协调模块应在较高层出现结构图的形态特征包括深度(模块的层数)、宽度(一层中最大的模块个数)、扇出(一个模块直接调用下属模块的个数)和扇入(一个模块直接上属模块的个数)。画结构图时,同一名字的模块在结构图中只出现一次;调用关系只能从上到下;模块调用次序一般从左到右。 3.面向数据流的设计方法所有系统的DFD结构可分为两种典型形式:即变换型结构和事务型结构。相应地,由数据流图转换成的软件结构图也有变换型和事务型两种结构。(1)变换型结构变换型数据流图中数据的处理过程大致可分为3步,即输入数据、变换数据和输出数据。将变换型数据流图映射为软件结构图的方法是:首先将数据流图的输入、变换和输出部分分别转换为输入、变换和输出模块;然后在输入、变换和输出模块之上增加总控模块,以调度这3个模块,协调完成任务。总控模块的工作过程如下:调用输入模块,获取输入数据;调用加工模块,将获取的输入数据传给加工模块,获取加工模块加工好的数据;调用输出模块,将获取的加工好的数据传给输出模块,由输出模块输出该数据。 (2)事务型结构事务型数据流图有一个明显的事务中心,它接受一项事务,根据该事务的特点和性质,选择分配一个适当的处理单元,然后输出结果。所以,事务型数据流图由接受事务、事务中心和若干处理单元输出结果部分组成。将事务型数据流图映射为软件结构图的方法是:首先将数据流图中的各个部分转换成软件结构图中的相应模块;然后增加调度模块,让它调度n个处理单元,最后让事务中心模块调度接受事务、调度和输出结果模块。事务中心模块的工作流程如下:a)调用接受事务模块,接受一项事务;b)调用调度模块选择分配处理单元,获取处理结果;c)调用输出模块输出结果。4.设计准则面向数据流设计方法的设计准则包括提高模块独立性;模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域内;应减少模块的接口和 界面的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块。7.3.3详细设计在概要设计阶段完成了软件系统的总体设计,规定了各个模块的功能及模块之间的联系之后,进一步就要考虑实现各个模块规定的功能,也就是进行软件的详细设计,也称为过程设计。在详细设计阶段,要根据概要设计对每个模块的定义进行设计,以实现指定的功能、算法和外部接口所要求的模块内部的数据结构和程序的逻辑结构。详细设计的重点在如何描述程序的逻辑结构。只有有了好的详细设计,才能设计出可维护性好质量好的软件。详细设计阶段主要采用结构化程序设计方法(StructuredProgramming,SP),与SA和SD方法相衔接。当前流行的表示程序逻辑结构的方式有3种: 图形描述语言描述表格描述其中图形描述工具主要有程序流程图、N-S图及PAD图等;语言描述工具主要有PDL;表格描述有判定表及判定树等。1.程序流程图(ProgramFlowChart)又称为程序框图。基本符号如图7.14所示。图7.14程序流程图的基本符号 为使用流程图描述结构化程序,必须限制流程图只能使用如图7.15所给出的5种基本控制结构。图7.15五种基本控制结构 任何复杂的程序流程图都应由这5种基本控制结构组成;其含义分别为:顺序型:几个连续的加工步骤依次排列,执行时按先后顺序执行;选择型:依逻辑判断式的取值决定选择两个加工中的一个来执行;先判定型循环:先对循环控制条件进行判定,成立时,重复执行选定的加工否则退出循环;后判定型循环:先执行一次循环体,再对结束循环控制条件进行判定,成立时,退出循环,否则重复执行循环体;多情况型选择:列举多个加工情况,根据控制变量的取值,选择执行其一。 表7.3常用标准程序流程图符号 2.N-S图N-S图也称盒图(Box-Diagram),是由Nassi和Shneiderman提出的一种符合结构化程序设计原则的图形描述工具。在N-S图中,相应规定了5种图形构件,如图7.16所示。图7.16N-S图的5种基本控制结构 从上面图可以看出,N-S图有以下几个特点:a)图中每个矩形框都是明确定义了的功能域。b)图中的控制转移不能任意规定,必须遵守结构化程序设计要求。c)从图中可以很容易地确定局部数据和全局数据的作用域。d)图中很容易表现嵌套关系及模块的层次结构。3.PAD图PAD(ProblemAnalysisDiagram,问题分析图),是日本日立公司提出的用结构化程序设计思想表现程序逻辑结构的图形工具。现在已被ISO认可。PAD也设置了5种基本控制结构的图式,并允许递归使用。这5种基本控制结构如图7.17所示。 图7.17PAD的基本控制结构 其中:①表示按顺序先执行A,再执行B。②给出了判断条件为P的选择型结构。当P为真时执行上面的A框中的内容,当P为假时执行下面的B框中的内容。如果这种选择型结构只有A框,没有B框,表示该选择结构中只有THEN后面有执行语句A,没有ELSE部分。③与④中P是循环判断条件,S是循环体。⑤是CASE型结构。当判定条件P=1时,执行A1框的内容,P=2时,执行A2框的内容,P=n时,执行An框的内容。PAD的执行顺序是从上到下,从左到右,即从最左主干线的上端的结点开始,自上而下依次执行。每遇到判断或循环,就自左而右进入下一层,从表示下一层的纵线上端开始执行,直到该纵线下端,再返回上一层的纵线的转入处。如此继续,直到执行到主干线的下端为止。 用PAD所表达的程序,结构清晰并且结构化程度高。作为一种详细设计的工具,它比流程图更易读,且由于PAD是一种树形结构,比流程图更容易在计算机上处理,容易将PAD图转换成程序。另外,PAD除了可以描述程序的逻辑结构,还可以描述数据结构。4.判定表与判定树(1)判定表(DecisionTable)判定表一般由4部分组成:左上半部分列出所有条件、左下半部分列出所有动作、右上半部分列出各种条件组合,右下半部分列出和每组条件取值组合对应的动作。其结构图如图3.33所示。 图3.33判定表结构示意图判定表的优点是能够简洁,无二义性的描述所有的处理规则。缺点是它所表示的是静态逻辑,是在某种条件组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结构。因不能成为一种通用的设计工具,一般配合其他工具一起使用。 (2)判定树(DecisionTree)判定树实质上是判定表的一种变形,本质上是一样的。判定树的优点是形式简单、比较直观、易于掌握和使用。缺点是不如判定表简洁。5.过程设计语言PDL(ProgramDesignLanguage)PDL是一种用于描述功能模块的算法设计和加工细节的语言,称为设计程序用语言。它是一种伪码,是一个笼统的名称,现在有许多种不同的过程设计语言在使用。PDL作为一种用于描述程序逻辑设计的语言,具有以下特点: (1)有固定的关键字外语法,提供全部结构化控制结构、数据说明和模块特征。(2)内语法使用自然语言来描述处理特性。(3)有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。(4)有子程序定义与调用机制,用以表达各种方式的接口说明 7.4软件测试7.4.1软件测试的目的和准则1.软件测试的目的测试的目的就是在软件投入运行之前,尽可能多地发现软件中的错误。软件测试是对软件规格说明、设计和编码的最后复审,所以软件测试贯穿在整个软件开发期的全过程。软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。GrenfordJ.Myers就软件测试目的提出了以下观点:(1)测试是程序执行的过程,目的在于发现错误。 (2)个好的测试用例在于能发现至尽尚未发现的错误。(3)一个成功的测试是发现了至今尚未发现的错误的测试。2.软件测试的原则(1)应当尽早规划和不断地进行软件测试。(2)测试用例设计应包括测试输入数据和与之对应的预期输出结果。(3)程序员应避免检查自己的程序。(4)在设计测试用例时,应包括合理的输入条件和不合理的输入条件。(5)充分注意测试中的群集现象。(6)严格执行测试计划,排除测试的随意性。(7)应当对每一个测试结果做全面检查。(8)妥善保存测试中的有关数据和最终分析报告,为维护提供方便。 2.软件测试的原则(续)(9)应该从“小规模”测试开始,并逐步进行“大规模”测试。(10)穷举测试是不可能的,应有一个终止的标准7.4.2软件测试技术与方法按照测试过程是否执行程序来分,有静态分析和动态测试;按照测试数据的设计依据和功能可分为黑盒法与白盒法。1.静态分析和动态测试静态分析不执行被测软件,通常对需求分析说明书、软件设计说明书与源程序作结构检查、流程图分析、编码分析等来发现软件错误,这是十分有效的软件质量控制方法。动态测试以执行程序并分析程序来查错。需要事先准备好测试数据:输入数据和预期的输出结果。把输入数据和与之对应的预期输出结果称为测试用例。怎样设计测试用例是动态测试的关键。 2.白盒测试和黑盒测试(1)白盒测试白盒测试方法也称为结构测试或逻辑驱动测试。此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。白盒测试的基本原则是:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一支至少执行一次;保证所测模块每一循环都在边界条件和一般条件下至少执行一次;验证所有内部数据结构的有效性。白盒测试的主要方法有逻辑覆盖、基本路径测试等。逻辑覆盖测试泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术。通常,程序中的逻辑表示有判断、分支、条件等几种表示方式。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断一条件覆盖五种测试用例设计技术。 (2)黑盒测试黑盒测试也称为功能测试或数据驱动测试。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法、因果图等,主要用于软件确认错误。等价类划分法是一种典型的黑盒测试方法。它是将程序的所有可能的输入数据划分成若干部分,然后从每个等价类中选取数据作为测试用例。使用等价类划分法设计测试方案,首先要划分输入集合的等价类。等价类包括:有效等价类:合理、有意义的输入数据构成的集合。无效等价类:不合理、无意义的输入数据构成的集合。 边界值分析法是对各种输入、输出范围的边界情况设计测试用例的方法。实践证明,程序往往在处理边缘情况时出错,因而检查边缘情况的测试实例查错率较高,这里边缘情况是指输入等价类或输出等价类的边界值。错误推测法在很大程度依靠直觉和经验进行,它的基本想法是列出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。7.4.3软件测试的实施软件测试是保证软件质量的重要手段。软件测试是一个过程,其测试流程是该过程规定的程序,目的是软件工作系统化。软件测试过程一般按四个过程进行,即单元测试、集成测试、验收测试和系统测试,通过这些步骤的实施来验证软件是否合格,能否交给用户使用。 1.单元测试:指对软件设计的最小单位—模块进行正确性检测的过程。其目的是发现模块内部可能存在的各种错误。单元测试的技术可以采用静态分析和动态测试。单元测试的依据是详细设计说明书和源程序。单元测试主要针对模块来进行。它主要包括模块接口测试,局部数据结构测试,重要的执行路径检查,出错处理测试和影响以上各点及其他相关点的边界条件测试。2.集成测试:指测试和组装软件的过程。它是把模块在按照设计要求组装起来的同时进行测试,主要目的是发现与结构有关的错误。集成测试的依据是概要设计说明书。在集成测试的过程中将模块组装成程序,通常采用非增方式组装与增量方式组装两种方式。非增量式组装方式也叫一次性组装方式,又叫做整体拼装。使用这种方式,先对每个模块分别进行模块测试,再把所有模块放在一起结合成所要的程序,进行测试。增量式组装方式是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完 以后再把下一个应该测试的模块结合进来测试。增量方式包括自顶向下、自底向上、自顶向下与自底向上相结合的混合增量方法。3确认测试:也称验收测试,任务是验证软件的功能和性能及其他特性是否满足了规格说明书中确定的各种需求,以及软件配置是否完全、正确,包括α测试和β测试4.系统测试:将通过测试的软件作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其他系统元素组合在一起,在实际运行环境下对计算机系统进行一系列的集成测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。系统测试的测试用例应根据需求分析规格说明来设计,并在实际使用环境下运行。系统测试的具体实施一般包括功能测试、性能测试、操作测试、配置测试、外部接口测试、安全性测试等。。 7.5.1程序调试的基本概念程序调试的任务是诊断和修改程序中的错误。程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。其二是对程序进行修改,排除这个错误。1.程序调试的基本步骤:(1)错误定位。错误定位是从错误的外部表现形式入手,研究有关部分的程序,确定程序中出错的位置,找出错误的内在原因。(2)修改设计和代码,以排除错误。排错是软件开发过程中一项艰苦的工作,这也决定了调试工作是一个具有很强技术性和技巧性的工作。7.5程序的调试 (3)进行回归测试,防止引进新的错误。修改程序可能带来新的错误,重复进行暴露这个错误的原始测试或某些有关测试,以确认该错误是否被排除、是否引进了新的错误。2.程序调试原则和注意事项(1)确定错误的性质和位置时,应该分析、思考与错误征兆有关的信息;避开死胡同;只把调试工具当作辅助手段来使用;避免用试探法,最多只能把它当作最后手段。(2)修改错误时应该注意,在出现错误的地方,很可能有别的错误;修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身;修正一个错误的同时有可能会引入新的错误;修改错误的过程将迫使人们暂时回到程序设计阶段;修改源代码程序,不要改变目标代码。 7.5.2软件调试方法调试的关键在于推断程序内部错误的位置和原因。软件调试从是否跟踪和执行程序的角度,类似于软件测试,可分为静态调试和动态调试。软件测试中讨论的静态分析方法同样使用于静态调试。静态调试主要指通过人的思维来分析源程序代码和排错,是主要的调试手段,而动态调试是辅助静态调试的,主要调试方法可以采用:强行排错法、回溯法、原因排除法。1.强行排错法作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。涉及的调试技术主要是设置断点和监视表达式。2.回溯法适合于小规模程序的排错,即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。然后,从发现“症状”的地方开始,沿程序的控制流程,逆向跟踪源程序代码,直到找到错误根源或确定出错产生的范围。 原因排除法是通过演绎、归纳和二分法来实现的。演绎法:是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。归纳法:是一种从特殊推断出一般的系统化思考方法,其基本思想是从一些线索着手,通过分析寻找到潜在的原因,从而找出错误。二分法:如果已知每个变量在程序中若干个关键点的正确值,则可以使用定值语句(如赋值语句、输入语句等)在程序中的某点附近给这些变量赋正确值,然后运行程序并检查程序的输出,这是二分法实现的基本思想。 一、选择题1、下列叙述中正确的是。(2005年9月)A)程序设计就是编制程序B)程序的测试必须由程序员自己去完成C)程序经调试改错后还应进行再测试D)程序经调试改错后不用进行再调试2、下列描述中正确的是。(2005年9月)A)软件工程只是解决软件的管理问题B)软件工程主要解决软件产品的生产率问题C)软件工程的主要思想是强调在软件开发的过程中需要应用工程化原则D)软件工程只是解决软件开发中的技术问题习题7 3、在软件设计中,不属于过程设计工具的是。(2005年9月)A)PDL(过程设计语言)B)PAD图C)N—S图D)DFD图4.下列叙述中正确的是。(2005年9月)A)软件交付使用后还需要进行维护B)软件一旦交付使用就不需要再进行维护C)软件交付使用后其生命周期便结束D)软件维护是指修复程序中被破坏的指令5.两个或两个以上模块之间关联的紧密程度称为。(2006年4月)A)耦合度B)内聚度C)复杂度D)数据传输特性 6.下列叙述正确的是。(2006年4月)A)软件测试应该由程序开发者来完成B)程序经调试不需要再测试C)软件维护只包括对程序代码的维护D)以上三项都不对7.从工程管理角度,软件审计一般分为两步完成,它们是。(2006年9月)A)概要设计和详细设计B)数据设计和接口设计C)软件结构设计和数据设计D)过陈设计和数据设计8.下列选项中不属于软件生命周期开发阶段任务的是。(2006年9月)A)软件测试B)概要设计C)软件维护D)详细设计 9.下列叙述中正确的是。A)软件测试的主要目的是发现程序中的错误B)软件测试的主要目的是确定程序中错误的位置C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D)软件测试是证明软件没有错误10.软件是指。A)程序B)程序和文档C)算法加数据结构D)程序、数据与相关文档11.软件调试的目的是_____。A)发现错误B)更正错误C)改善软件功能D)验证软件的正确性 12.下列对于软件测试的描述中正确的是_______。(2005年4月)A)软件测试的目的是证明程序是否正确B)软件测试的目的是使程序运行结果正确C)软件测试的目的是尽可能的多发现程序中的错误D)软件测试的目的是使程序的符合结构化原则13.下列描述中正确的是。(2005年4月)A)程序就是软件B)软件开发不受计算机系统的限制C)软件既是逻辑实体又是物理实体D)软件是程序、数据与相关文档的集合14.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的是。A)概要设计B)详细设计C)可行性分析D)需求分析 15.下列不属于软件工程的三个要素的是。A)工具B)过程C)方法D)环境16.检查软件产品是否符合需求定义的过程称为。A)确认测试B)集成测试C)验证测试D)验收测试17.下列不属于软件设计原则的是。A)抽象B)模块化C)自底向上D)信息隐蔽18.程序流程图(PFD)中箭头代表的是。A)数据流B)控制流C)调用关系D)组成关系19.下列工具中需求分析常用的工具是。A)PADB)PFDC)N-SD)DFD20在结构化方法中,软件功能分解属于下列软件开发中的阶段是。A)详细设计B)需求分析C)总体设计D)编程调试 21.软件调试的目的是()A)发现错误B)改正错误C)改善软件的性能D)挖掘软件的潜能二、填空题1.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块).其中_____的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果.(2005年9月)2.程序测试分为静态测试和动态测试。其中______是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。(2006年4月)3._____的任务是诊断和改正程序中的错误(2006年9月)4.软件测试分为白盒(箱)和黑盒(箱)测试,等价类划分法属于_______(2007年4月) 5.软件的规格说明书具有完整性、无歧义性、可正确性、可修改性等特性,其中最重要的是______(2007年9月)6.在两种基本测试方法中,______测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。(2007年9月)7.诊断和改正程序中错误的工作通常称。(2005年4月)8.软件是程序、数据和的集合。9软件工程研究的内容主要包括:技术和软件工程管理。10.数据流图的类型主要有和事务型。11.Jackson方法是一种面向结构化方法。12.软件开发环境是全面支持软件开发过程的集合。 谢谢! hPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMa3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXleNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(u%r#kShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+$qYnVkSgPdMaI7F3C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#kThPeMbJ7G4C1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2w&t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZogPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3 課指組精進作為:社團志願服務與服務學習的整合報告人:朱朝煌 大學的目的在教學、研究及服務服務社會是大學的目的之一,大學不應只是狹隘的服務企業與創新知識而已,更應該善盡服務社會的功能,養成大學生服務社會的觀念。 志願服務法的實施中華民國九十年一月二十日總統(90)華總一義字第9000011840號令施行。整合社會人力資源,使願意投入志願服務工作之國民力量做最有效之運用,以發揚志願服務美德,促進社會各項建設及提昇國民生活素質,特制定本法。 本校服務學習教育課程九十一年三月二十日九十學年度第二次校務會議通過,將勞動服務教育課程自九十一學年度更名為「服務學習教育課程」,正式推動本校服務學習的課程。目的:培育學生勤勞工作之態度與服務學習之人生觀;並培育成大人之團隊精神,以營造整潔、溫馨、且充滿人文關懷之校園環境。 服務學習是什麼?服務學習是一種哲學思想、教學法及方案計畫(Program)。服務學習(ServiceLearning)是合併社會服務(CommunityService)和教室學習(Classroomlearning),以增強二者,並產生比其中任何一項學習的總和還大的整體效果(沈六,1999)。 服務學習的哲學思想服務學習是「服務」與「學習」的相互結合,也就是在「服務」過程中獲得「學習」的效果,正如美國教育學家杜威(JohnDewey)所說的「做中學」(learningbydoing)(青輔會,2001)。 服務學習是經驗學習理論 服務學習的特質協同合作(Collaboration)互惠(Reciprocity)多元(Diversity)以學習為基礎(Learning-Based)社會正義為焦點(SocialJusticeFocus) 服務學習關係的類型service—LEARNING以學習目標為主,服務成果不重要SERVICE—learning以服務成果為主,學習目標不重要service,learning服務與學習彼此目標沒有關聯SERVICE—LEARNING服務與學習目標同等重要(資料來源:Sigmon,1996) 不同服務方案的經驗教育資料來源:UniversityofMaryland2002Facultyhandbook 服務學習不同於志願服務依據我國志願服務法的定義:「志願服務」乃指民眾出於自由意志,非基於個人義務或法律責任,秉誠心以知識、體能、勞力、經驗、技術、時間等貢獻社會,不以獲取報酬為目的,以提高公共事務效能及增進社會公益所為之各項輔助性服務。 服務學習不同於社會服務社會服務(CommunityService)與美國的文化有很深的根源,被認為是一種合作倫理。我國傳統教育中,社會服務不是新的教育概念,學生秉持社區關懷的理念利用課餘時間從事教育性、慈善性社區服務工作,在中學與大學社會服務被當作一項課外活動(extracurricularactivity),主要存在於學生社團及課外活動裡(沈六,1999;黃玉,2002)。 服務學習不同於勞動教育勞動教育制度之精神在摒除動口不動手的士大夫觀念、實踐人格平等的真諦、體驗稼穡之艱難、建立正確的價值觀(種瓜得瓜)、堅定服務的信念。結合身體與精神的勞作而成為本身的活動,而達於身體、精神本身活動之自立性教育(呂宗麟,2000)。 服務學習不同於課程實習學校基礎訓練為了能提供學生學習機會,透過實習、實習時的觀察及經驗的學習,來發展不斷學習的能力(蔡窈靜,2000)。因此,課程實習是正規的課程安排,實習以學習為目標。 服務學習的服務方式單次型服務學習:體驗服務學習的一天或半天活動,如新生訓練進行全校性社區清潔日。密集式服務學習:以ㄧ學期或寒暑假期間進行社區服務。課外活動式服務學習:課程以外活動方式,可以包括宿舍、衛生教育等服務。課程式服務學習:結合課程所進行的服務工作。 有效服務學習方案要素PSRCModel準備階段(Preparation)服務階段(Service)反思階段(Reflection)慶賀階段(Celebration)PAREModel準備階段(Preparation)行動階段(ActionService)反思階段(Reflection)評鑑階段(Evaluation) 服務學習的課程範例l文學院學生教導小朋友英文或作文。l理學院學生陪伴受虐團體學習元素表與原子結構等。l設計學院都計系學生設計與規劃婦女保護機構的社區花園。l電資學院資訊系學生為非營利事業發展資料庫系統。l社會科學院法律系學生提供弱勢族群法律諮商。 志願服務與服務學習課程的整合志願服務運用單位:運用志工之機關、機構、學校、法人或經政府立案團體。所稱之主管機關:在中央為內政部;在直轄市為直轄市政府;在縣(市)為縣(市)政府。本法所定事項,涉及各目的事業主管機關職掌者,由各目的事業主管機關辦理。(教育部高教司;訓委會) 志願服務與服務學習課程的整合志願服務運用者應依志願服務計畫運用志願服務人員。前項志願服務計畫應包括志願服務人員之召募、訓練、管理、運用、輔導、考核及其服務項目。 志願服務與服務學習課程的整合為提昇志願服務工作品質,保障受服務者之權益,志願服務運用單位應對志工辦理下列教育訓練:一、基礎訓練(志願服務的內涵、志願服務倫理、自我了解及自我肯定、志願服務經驗分享、志願服務法規之認識、志願服務發展趨勢共12小時)二、特殊訓練。 志願服務與服務學習課程的整合服務學習(三)其服務範圍以由各學系或學生社團所規劃之校內外人文關懷或社會性服務為原則,亦可由學校提供一般性服務工作供各學系選擇。本款服務課程得利用寒、暑假執行,其服務總時數不得低於十八小時。各研究所亦得參照本辦法辦理之。 志願服務與服務學習課程的整合本校學生服務學習教育課程之設計、管理及有關行政事宜,均由學系辦理之。為提升服務學習教育課程之教育成效,教務處、學務處、及總務處得提供必要之協助。本校全體教職員對服務學習教育課程均有參與推動與輔導之義務與責任。 志願服務與服務學習課程的整合本校學生於申請校內各項獎學金與工讀時,服務學習教育課程成績列為審查條件之一。服務學習教育課程成績優良者得優先申請工讀。 志願服務與服務學習課程的整合 結論修改本校獎學金審查辦法,將服務學習教育課程成績列為審查條件。整合志願服務法與服務學習課程需求的社團社會服務之機制建立。'