1、软件工程基础,考点1.软件的定义与组成1.软件:指的是计算机系统中与硬件相互依存的另一部分,包括程序、数据和相关文档的完整集合。(1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令序列。 (2)数据是使程序能正常操纵信息的数据结构。 (3)文档是与程序的开发、维护和使用有关的图文资料。,软件=程序+数据+文档,程序=数据结构+算法,2.软件的特点1)软件是一种逻辑实体,而不是物理实体,具有抽象性;2)软件的生产与硬件不同,它没有明显的制作过程;3)软件在运行、使用期间不存在磨损、老化问题;4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了
2、软件移植的问题;5)软件复杂性高,成本昂贵;6)软件开发涉及诸多的社会因素。,3.软件的分类 根据应用目标的不同,软件可分应用软件、系统软件和支撑软件(或工具软件)。(1)应用软件。它是在特定领域内开发,为特定目的服务的一类软件。(2)系统软件。它能与计算机硬件紧密配合在一起,使计算机系统各个部分、相关的软件和数据协调、高效的工作的软件。例如:操作系统、数据库管理系统。(3)支撑软件(或工具软件) 。它是协调用户开发软件的工具性软件,其中包括开发软件。,1.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )【2009年3月 】A)编译软件 B)操作系统
3、C)教务管理系统 D)汇编程序,C,2. 软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )【2010年3月 】)编辑软件 )操作系统)教务管理系统 )浏览器3. 软件是_数据和文档的集合。【2010年3月 】,B,程序,4. 软件危机 泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要表现在成本、质量、生产率等问题。,考点2:软件工程过程与软件生命周期1. 软件工程 是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。软件工程包括3个要素:方法、工具和过程。(1)方法是完成软件工程项目的技术手段;(2)工具是支持软
4、件的开发、管理、文档生成;(3)过程支持软件开发的各个环节的控制、管理。,2.软件工程过程是把软件转化为输出的一组彼此相关的资源和活动,包含4种基本活动:(1)P(plan) 软件规格说明;(2)D(do)软件开发;(3)C(check) 软件确认;(4)A(action)软件演进。,软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。,3.软件生命周期:软件产品从提出、实现、使用维护到停止使用退役的过程。包括软件定义、软件开发、运行维护,主要活动阶段是:(1)可行性研究与计划制定;(2)需求分析;(3)软件设计;(4)软件实现;(5)软件测试;(6)运行和维护。,4.软件工程
5、基本目标:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发软件易于移植;需要较低的费用;能按时完成开发,及时交付使用。,5. 软件工程基本原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。,考点3:软件开发工具与软件开发环境,软件开发工具包括:需求分析工具、设计工具、编码工具、排错工具和测试工具等。软件开发环境(软件工程环境),3.2结构化分析方法,需求分析方法包括:1)结构化分析方法;2)面向对象的分析方法。,结构化分析方法,结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解、建立系统的处理流程,以数据流图、数据字典、判定树和判定表为主
6、要工具,建立系统的逻辑模型。,4.结构化分析的常用工具,(1)数据流图(Data Flow Diagram,简称DFD ) 就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。,(2)数据字典是结构化分析方法的核心,定义了数据流图中每一个图形元素,使得用户和系统分析员对于输入、输出、存储成分和中间结果有共同的理解。,5.软件需求规格说明书,是需求分析的最后结果,是软件开发中重要的文档之一。软件需求规格说明书的特点:(1)正确性;(2)无岐义性(最重要) ;(3)完整性;(4)可验证性;(5)一致性;(
7、6)可理解性;(7)可追踪性。,(1)下面不属于需求分析阶段任务的是( )A)确定软件系统的性能需求 B)确定软件系统的功能需求C)指定软件集成测试计划 D)需求规格说明书评审,C,(2)在软件开发中,需求分析阶段产生的主要文档是( )A)软件集成测试计划 B)软件详细设计说明书C)用户手册 D)软件需求规格说明书,D,3.3 结构化设计方法,1.软件设计基础 从技术观点来看,软件设计包括软件结构设计、过程设计、数据设计、接口设计。 从工程管理角度来看,软件设计可以分为:概要设计和详细设计。,2.软件设计的基本原理,结构化软件设计方法的基本原理:抽象化模块化信息隐蔽模块独立衡量软件模块的独立性
8、,使用耦合性和内聚性两个定性的度量标准。在程序结构中各模块的内聚性越强,则耦合性越弱。优秀软件应高内聚,低耦合,考点2:概要设计,概要设计基本任务:(1)设计软件系统结构; (2)数据结构及数据库设计;(3)编写概要设计文档; (4)概要设计文档评审。2. 概要设计中常用的软件结构设计工具:结构图;,考点3:详细设计,详细设计为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。,详细设计常用工具:图形工具(程序流程图、 PAD图 、N-S图、HIPO图) 表格工具(判定表) 语言工具(PDL ),程序流程图,N-S图,HIPO图,(1)在软件设计
9、中不使用的工具是( )A)系统结构图B)程序流程图 C)PAD图D)数据流图(DFD图),D,(2)下面描述中错误的是( )A)系统总体结构图支持软件系统的详细设计B)软件设计是将软件需求转换为软件表示的过程C)数据结构与数据库设计是软件设计的任务之一D)PAD图是软件详细设计的表示工具,A,(3)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于( )A)定义阶段B)开发阶段C)维护阶段 D)上述三个阶段,B,(4)程序流程图中带有箭头的线段表示的是( )。A)图元关系 B)数据流C)控制流 D)调用关系(5)数据流图中带有箭头的线段表示的是( )。A)控制流 B)事件驱动C)模块
10、调用 D)数据流,C,D,3.4软件测试,软件测试的指用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。简单地说,软件测试的目的是尽可能多地发现程序中的错误。,考点2:软件测试方法,按是否要执行被测试软件的角度分为:静态测试和动态测试。静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。 动态测试是基于计算机的测试,主要包括白盒测试方法和黑盒测试方法。,软件测试,白盒测试:在程序内部进行,主要用于完成软件内部操作的验证。 主要方法有逻辑覆盖、基本路径测试。黑盒测试:主要诊断功能不对或遗漏、界面错误
11、、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错误等,用于软件确认。主要方法有等价类划分法、边界值分析法、错误推测法等。,软件测试,软件测试过程一般按4个步骤进行:单元测试(模块测试)集成测试验收测试(确认测试)系统测试,程序调试,程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行。,程序调试,程序调试的基本步骤:(1)错误定位;(2)修改设计和代码,以排除错误;(3)进行回归测试,防止引进新的错误。,程序调试,软件调试可分为静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的设计手段。,程序调试,动态调试用来辅助静态调试。主要调试方法有:1)强
12、行排错法;2)回溯法;3)原因排除法。,例题:,下列不属于软件工程的3个要素的是 A)工具 B)过程 C)方法 D)环境,答案:D,例题:,软件工程的出现是由于 A)程序设计方法学的影响 B)软件产业化的需要 C)软件危机的出现 D)计算机的发展,答案:C,例题:,软件设计中,有利于提高模块独立性的一个准则是 A)低内聚低耦合 B)低内聚高耦合 C)高内聚低耦合 D)高内聚高耦合,答案:C,例题:,下列不属于结构化分析的常用工具的是 A)数据流图 B)数据字典 C)判定树 D)PAD图,答案:D,例题:,通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为 。,软件生命周期,例题:,软件的 设计又称为总体结构设计,其主要任务是建立软件系统的总体结构。,概要,软件工程三要素包括方法、工具和过程,其中,_支持软件开发的各个环节,过程,