您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 简明扼要的软件工程讲义
软件工程1.软件工程基本概念。2.结构化分析方法。3.结构化设计方法。4.软件测试的方法。5.程序的调试。1软件工程的基本概念1.1软件以及特点(1)软件的组成计算机软件(Software)是计算机系统中与硬件相互依存的另一部分,包括程序、数据及其相关文档。软件由两部分组成:机器可执行的程序和数据;有关文档。(2)软件的特点①软件是一种逻辑实体,而不是物理实体,具有抽象性。②软件的生产与硬件不同,它没有明显的制作过程。③软件在运行、使用期间不存在磨损、老化问题。④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题。⑤软件复杂性高,成本昂贵。⑥软件开发涉及诸多的社会因素。1.2软件危机与软件工程软件工程概念的提出源自软件危机。软件危机主要表现在:①软件需求的增长得不到满足;②软件开发的成本和进度无法控制;③软件质量难以保证;④软件不可维护或维护成度非常低;⑤软件成本不断提高;⑥软件开发生产率的提高赶不上硬件的发展和应用需求的增长。为了消除软件危机,形成了软件工程的概念,开辟了工程学的新兴领域——软件工程学。软件工程就是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。关于软件工程的定义,国标(GB)中指出,软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。软件工程包括3个要素,即方法、工具和过程。①方法是完成软件工程项目的技术手段;②工具支持软件的开发、管理、文档生成;③过程支持软件开发的各个环节的控制、管理。软件工程的核心思想是把软件产品作为是一个工程产品来处理。把需求计划、可行性研究、工程审核、质量监督等工程化的概念引入到软件生产当中,以期达到工程项目的三个基本要素:进度、经费和质量的目标。1.3软件工程过程与软件生命周期1.软件工程过程(SoftwareEngineeringProcess)软件工程过程是为获得软件产品,在软件工具的支持下由软件人员完成的一系列软件工程活动。2.软件的生命周期(SoftwareLifeCycle)通常,将软件产品提出、实现、使用、维护到停止使用退役的过程称为软件的生命周期。可将软件生命周期分为定义、开发及维护三个阶段。可行性研究初步项目计划需求分析概要设计详细设计实现测试使用维护退役定义阶段开发阶段维护阶段1.4软件工程的目标与原则1.软件工程的目标软件工程的目标是,在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。软件工程研究的内容主要包括:软件开发技术和软件工程管理;2.软件工程的原则软件工程原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。①抽象。抽取事物最基本的特性和行为,忽略非本质细节。②信息隐蔽。用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。③模块化。模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义。④局部化。要求在一个物理模块内集中逻辑上相互关联的计算资源,保证模块间具有松散的耦合关系,模块内部有较强的内聚性,这有助于控制解的复杂性。⑤确定性。软件开发过程中所有概念的表达应是确定的、无歧义且规范的。⑥一致性。包括程序、数据和文档的整个软件系统的各模块应使用已知的概念,内外部接口应保持一致,系统规格说明与系统行为应保持一致。⑦完备性。软件系统不丢失任何重要成分,完全实现系统所需的功能。⑧可验证性。开发大型软件系统需要对系统自顶向下,逐层分解。系统分解应遵循容易检查、测评、评审的原则,以确保系统的正确性。1.5软件开发工具与软件开发环境1.软件开发工具软件开发工具是指可以用来帮助开发,测试、分析、维护其他计算机程序及其文档资料,实现软件生产过程自动化的一类程序。软件工具主要包括需求分析工具、设计工具、编码工具、确认工具、维护工具等。2.软件工程环境称软件工程环境是全面支持软件开发全过程的软件工具集合。计算机辅助软件工程(CASE)是将各种软件工具、开发机器和一个存放开发过程信息的中心数据库组合起来,形成软件工程环境。2软件需求分析2.1需求分析与需求分析方法1.需求分析软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析阶段的工作包括四个方面:①需求获取②需求分析③编写需求说明书④需求评审2.需求分析方法常见的需求分析方法有:①结构化分析方法。②面向对象的分析方法。2.2结构化分析方法(1)关于结构化分析方法结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。结构化分析的步骤如下:①通过对用户的调查,以软件的需求为线索,获得当前系统的具体模型:②去掉具体模型中非本质因素,抽象出当前系统的逻辑模型:③根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型④完善目标系统并补充细节,写出目标系统的软件需求规格说明;⑤评审直到确认完全符合用户对软件的需求。(2)结构化分析的的常用工具1.数据流图数据流图是描述数据处理过程的有力工具,是从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。2.数据字典数据字典是结构化分析方法的另一个工具。数据字典是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。3.判定表判定表是一种文本化的加工说明的流行格式,它特别适用于带有一组测试条件的说明。条件分类1234金额〉1000〉1000≤1000≤1000动作账目状况未过期已过期未过期已过期押下批准单√发出批准单√√√发出提货单√√√发出通知单√4.判定树判定树也是用来表达加工逻辑的一种工具。元)(元——〉)(——元——产品乙)元(元——〉)元(元————产品甲奖金政策40.0200-N50200N100-N3.020.0200N100N0.2100N150-N15.06.550N20-N12.0250N20N10.020N12.3软件需求规格说明书软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。1.软件需求规格说明书的作用①便于用户、开发人员进行理解和交流。②反映出用户问题的结构,可以作为软件开发工作的基础和依据。③作为确认测试和验收的依据。2.软件需求规格说明书的内容一.概述;二.数据描述;三.功能描述;四.性能描述;五.参考文献;六.附录。3.软件需求规格说明书的特点①正确性;②无歧义性;③完整性;④可验证性;⑤一致性;⑥可理解性;⑦可修改性;⑧可追踪性。3软件设计3.1软件设计的概念和原理1.模块化模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集成起来组成一个整体,可以完成指定的功能,解决实际问题。2.抽象用自顶向下由抽象到具体的方式进行分配控制,简化了软件的设计和实现,提高了软件的可理解性和可测试性,并且使软件更容易维护。3.信息隐蔽信息隐蔽使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。4.模块独立性每个模块完成一个相对独立的特定子功能,并且和其他模块之间的接口很简单。模块的独立程度可以由两个定性标准来衡量,这两个标准分别称为耦合性和内聚性。藕合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此间结合的紧密程度。一般较较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。3.结构化设计方法结构化设计方法的基本思想是将软件设计成由相对独立、单—功能的模块组成的结构。3.2概要设计1.概要设计的任务软件概要设计的基本任务是:1)设计软件系统结构2)数据结构及数据库设计3)编写概要设计文档4)概要设计文档评审2.面向数据流的设计方法(1)数据流类型有两种:变换型和事务型。①变换型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。②事务型。在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。(2)面向数据流设计方法的实施要点与设计过程第1步:分析、确认数据流图的类型,区分是事务型还是变换型。第2步:说明数据流的边界。第3步:把数据流图映射为程序结构。第4步:根据设计准则对产生的结构进行细化和求精。3.设计的准则①提高模块独立性。②模块规模适中。③深度、宽度、扇出和扇入适当④使模块的作用域在该模块的控制域内。⑤应减少模块的接口和界面的复杂性。⑥设计成单入口、单出口的模块。⑦设计功能可预测的模块。3.3详细设计详细设计也称过程设计。在过程设计阶段,要对每个模块规定的功能以及算法的设计,给出适当的算法描述,即确定模块内部的详细执行过程,包括局部数据组织、控制流、每一步具体处理要求和各种实现细节等。其目的是确定应该怎样来具体实现所要求的系统常见的过程设计工具有:图形工具:程序流程图,N-S,PAD,HIPO。表格工具:判定表。语言工具:PDL(伪码)。在程序流程图中常用的图形符号如图所示:结构化程序设计限制流程图只能使用五种基本控制结构,如图所示。例如,下面是简单托运货物运费计算的问题。设货物重量x,客户信息y,输入x、y后,计算运费的具体要求是:如果0x≤15(设为条件1),则用公式1计算后,循环3次完成同样的“记账”和“输出”操作,然后程序结束;如果x15(设为条件2),则用公式2计算后,循环3次完成同样的“记账”和“输出”操作,然后程序结束。该问题程序的程序流程图描述如图公式1计算i315≥x0x15i=i+1记账、输出输入x,yi=0FTF公式2计算开始FT结束1973年Nossi和Shneiderman提出了用方框图来代替传统的程序流程图,通常把这种图称为N—S图。五种基本结构的N—S图如图所示。下面是求某数是否是素数的问题,该问题的N—S图描述如图所示:4软件测试4.1软件测试的基础1.什么是软件测试软件测试是在软件投入生产性运行之前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。如果给软件测试下定义的话,可以这样讲:软件测试是为了发现错误而执行程序的过程。2.软件测试的目的和准则(1)软件测试的目的:①测试是程序的执行过程,目的在于发现错误;②一个好的测试用例在于能发现至今未发现的错误;③一个成功的测试是发现了至今未发现的错误的测试。(2)软件测试的准则:①所有测试都应追溯到需求;②严格执行测试计划,排除测试的随意性;③充分注意测试中的群集现象;④程序员应避免检查自己的程序;⑤穷举测试不可能;⑥妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。4.2软件测试技术与方法软件测试的方法和技术是多种多样的。若从是否需要执行被测软件的角度,可以分为静态测试和动态测试方法。若按照功能划分可以分为白盒测试和黑盒测试方法。一、静态测试与动态测试(一)静态测试方法静态测试一般指人工评审软件文档或程序,以便发现错误。静态测试包括:代码检查、静态结构分析、代码质量度量等。(二)动态测试方法动态测试是在样板测试数据上执行程序并分析输出以发现错误的过程。所以动态测试包括三部分:生成测试数据、执行程序与验证的输出结果。二、白盒测试与黑盒测试任何工程产品都可以使用以下两种方法之一进行测试:(1)已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。(2)已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。前者是黑盒测试,后者是白盒测试。(一)白盒测试软件的白盒测试是对软件的过程性细节作细致的检查。这一方法是把测试对象看作
本文标题:简明扼要的软件工程讲义
链接地址:https://www.777doc.com/doc-204768 .html