计算机等级考试二级公共基础知识第三章.docx
《计算机等级考试二级公共基础知识第三章.docx》由会员分享,可在线阅读,更多相关《计算机等级考试二级公共基础知识第三章.docx(12页珍藏版)》请在冰豆网上搜索。
计算机等级考试二级公共基础知识第三章
第三章软件工程基础
一、教学目标
1、了解软件工程的基本概念。
2、理解结构化分析方法。
3、理解结构化设计方法。
4、了解软件测设的目的准则方法等基础知识。
5、了解程序调试的基本概念与方法。
二、教学方法
1、重点内容与常考内容重点讲解。
2、以实例如真题来讲解程序设计中的重点与难点。
三、重点内容
1、软件定义与特点。
2、软件工程与软件生命周期。
3、软件的需求分析与需求分析方法。
4、结构化分析方法及其常用的工具。
5、软件设计的基本原理。
6、概要设计与详细设计。
7、软件测试目的、原则、方法与实施。
8、程序调试的目的。
四、教学内容
3.1软件工程基本概念
3.1.1软件定义与软件特点
1、软件的定义
计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。
2、软件的特点【了解】
(1)抽象性;
(2)没有明显的制作过程;
(3)软件在运行、使用期间不存在磨损、老化问题;
(4)软件的开发、运行对计算机系统具有依赖性;
(5)软件复杂性高,成本昂贵;
(6)软件开发涉及诸多的社会因素。
3.1.2软件危机与软件工程
1、软件危机的主要表现:
(了解)
(1)软件需求的增长得不到满足;
(2)软件开发成本和进度无法控制;
(3)软件质量难以保证;
(4)软件不可维护或维护程度非常低;
(5)软件的成本不断提高;
(6)软件开发生产率的提高赶不上硬件的发展和应用需求的增长。
总之,可以将软件危机归结为成本、质量、生产率等问题。
2、软件工程
软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
软件工程的3个要素:
方法、工具和过程。
方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。
软件工程的核心思想是把软件产品看做是一个工程产品来处理。
这些思想都是强调在软件开发过程中需要应用工程化原则。
3.1.3软件工程过程与软件生命周期
1、软件工程过程
ISO9000定义:
软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。
软件工程的过程是将软件工程的方法和工具综合起来,以达到合理及时地进行计算机软件开发的目的。
2、软件生命周期
通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
软件生命周期的三个阶段:
软件定义阶段、软件开发阶段、软件运行和维护阶段。
(1)软件定义阶段:
可行性研究与计划制定;需求分析
(2)开发阶段:
概要设计;详细设计;实现;测试
(3)维护阶段:
运行;维护;退役
3.1.4软件工程的目标与原则(了解)
1、软件工程的目标
(1)目标:
在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
(2)内容:
软件开发技术和软件工程管理。
2、软件工程的原则【了解】
(1)抽象;
(2)信息隐蔽;采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。
(3)模块化;
(4)局部化;
(5)确定化;
(6)一致性;
(7)完备性;
(8)可验证性。
3.1.5软件开发工具与软件开发环境【简单了解】
1、软件开发工具
软件开发工具的发展是从单项工具的开发逐步向集成工具发展的,软件开发工具为软件工程方法提供了自动的或半自动的软件支撑环境。
2、软件开发环境
软件开发环境或称软件工程环境是全面支持软件开发全过程的软件工具集合。
3.2结构化分析方法
3.2.1需求分析与需求分析方法
需求分析的任务是发现需求、求精、建模和定义需求的过程。
需求分析将创建的数据模型、功能模型和控制模型。
1、需求分析
(1)需求分析的定义(了解)
(2)需求分析阶段的工作
①需求获取;
②需求分析;
③编写需求规格说明书;
④需求评审。
2、需求分析的方法
(1)结构化分析方法(了解)
(2)面向对象的分析方法(了解)
3.2.2结构化分析方法
1、关于结构化分析方法
(1)结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用,其目的是帮助弄清用户对软件的需求。
(2)面向数据流的结构化分析方法:
结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。
(3)结构化分析方法的实质着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑结构模型。
(4)结构化分析的步骤(简单了解)
2、结构化分析的常用工具:
(重点掌握)
(1)数据流图(DFD)
数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。
图形表示:
a.椭圆:
加工转换
b.箭头:
数据流
c.(双横线):
存储文件
d.矩形:
源
(2)数据字典(DD)
数据字典是结构化分析方法的核心。
数据字典的作用是对DFD(数据流图)中出现的被命名的图形元素的确切解释。
(3)判定树
(4)判定表
3.2.3软件需求规格说明书
软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。
1、软件需求规格说明书的作用【了解】
(1)便于用户、开发人员进行理解和交流。
(2)反映处用户问题的接哦故,可以作为软件开发工作的基础和依据。
(3)作为确定测试和验收的依据。
2、软件需求规格说明书的内容(简单了解)
3、软件需求规格说明书的特点
(1)正确性
(2)无歧义性,最重要的特点
(3)完整性
(4)可验证性
(5)一致性
(6)可理解性
(7)可修改性
(8)可追踪性
3.3结构化设计方法
3.3.1软件设计的基本概念
1、软件设计的基础
(1)软件设计是一个把软件需求转换为软件表示的过程。
(2)软件设计的基本目标是用比较抽象概括的发那个是确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。
(3)软件设计步骤
①从技术观点来看,软件设计包括:
结构设计、数据设计、接口设计、过程设计。
②从工程管理角度来看,软件设计分两步完成:
概要设计和详细设计。
2、软件设计的基本原理
(1)抽象
(2)模块化
(3)信息隐蔽(通过封装来实现)
(4)模块独立性【“高内聚,低耦合”】
模块的独立程度是评价设计好坏的中要度量标准。
衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。
①内聚性:
是一个模块内部各个元素间彼此结合的紧密程度的度量。
内聚是从功能角度来度量模块内的联系。
②耦合性:
是模块之间互相连接的紧密程度的度量。
“高内聚,低耦合”,减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
3、结构化设计方法(了解)
3.3.2概要设计
1、概要设计的任务:
(简单了解)
(1)设计软件系统结构
(2)数据结构及数据库设计
(3)编写概要设计文档
(4)概要设计文档审评
常用的软件结构设计工具是结构图(SC),也叫程序结构图。
结构图是描述软件结构的图形工具。
程序结构图的有关术语:
深度:
控制的层数
宽度:
整体控制跨度
2、面向数据流的设计方法
(1)数据流类型
典型的数据流类型有两种:
变换型和事务型
(2)面向数据流设计方法的实施要点与设计过程(简单了解)
(3)设计的准则
①提高模块独立性
②模块规模适中
③深度、宽度、扇出和扇入适当
④使模块的作用域在该模块的控制域内
⑤应减少模块的接口和界面的复杂性
⑥设计成单入口、单出口的模块
⑦设计功能可预测的模块
3.3.3详细设计
详细设计的任务,是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
常用的过程设计工具:
(1)图形工具:
程序流程图,N—S,PAD,HIPO
(2)表格工具:
判定表
(3)语言工具:
PDL(伪码)
1、程序流程图(PFD)
(1)程序流程图的基本图符含义
箭头:
控制流
矩形:
加工步骤
菱形:
逻辑条件
(2)5种控制结构:
顺序型、选择型、先判断重复型、后判断重复型、多分支选择型。
2、N-S图方框图
3、PAD图是问题分析图
4、PDL过程设计语言(伪码)
3.4软件测试
3.4.1软件测试的目的
软件测试是为了发现错误而执行程序的过程。
3.4.2软件测试的准则:
(了解)
1、所有测试都应追溯到需求。
2、严格执行测试计划,排除测试的随意性。
3、充分注意测试中反而群集现象。
4、程序员应避免检查自己的程序。
5、穷举测试不可能。
6、妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
3.4.3软件测试技术与方法综述
从是否执行被测试的角度,可以分为静态测试和动态测试。
按照功能划分可以分为白盒测试和黑盒测试方法。
1、静态测试与动态测试
(1)静态测试不实际运行软件,主要通过人工进行。
(2)动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。
设计高效、合理的测试用例是动态测试的关键。
测试用例由两部分组成:
输入值集和输出值集
2、白盒测试方法与测试用例设计
白盒测试方法也称为结构测试或逻辑驱动测试。
(1)白盒测试的基本原则:
(理解,多看看)
①保证所测模块中每一独立路径至少执行一次;
②保证所测模块所有判断的每一分支至少执行一次;
③保证所测模块每一循环都在边界条件和一般条件下至少各执行一次;④验证所有内部数据结构的有效性。
(2)白盒测试的主要方法:
(记住)
逻辑覆盖、基本路径测试等。
3、黑盒测试方法与测试用例设计
黑盒测试方法一称为功能测试或数据驱动测试。
黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。
不考虑程序内部的逻辑结构和内部特性,只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明。
黑盒测试的主要方法:
(记住)
等价类划分法、边界值分析法、错误推测法、因果图等
3.4.4软件测试的实施
步骤:
单元测试、集成测试、确认测试、系统测试。
(记住)
1、单元测试
单元测试是对软件设计的最小单位—模块进行正确定检验的测试。
单元测试的目的是发现各模块内部可能存在的各种错误。
①驱动模块,相当于被测模块的主程序。
它接收测试数据,并传给被测模块,输出实际测试结果。
②桩模块,通常用于代替被测模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入。
2、集成测试
集成测试是测试和组装软件的过程。
主要目的是发现与接口有关的错误。
集成测试的依据是概要设计说明书
3、确认测试
确认测试的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。
确认测试的实施首先运用黑盒测试方法。
4、系统测试
系统测试的目的是在真实的系统工作环境下检验软件是否能与系统正确连接,发现软件与系统需求不一致的地方。
3.5程序的调试
3.5.1基本概念
程序调试(通常称Debug,即排错)的任务是:
诊断和改正程序中的错误。
(记住)
软件测试贯穿整个软件生命周期,调试主要在开发阶段。
1、程序调试的基本步骤(简单了解)
(1)错误定位
(2)修改设计和代码,以排除错误
(3)进行回归测试,防止引进新的错误
2、软件调试的原则(简单了解)
(1)确定错误的性质和位置时的注意事项
(2)修改错误的原则
3.5.2软件调试方法
调试的关键在于推断程序内部的错误位置及原因
软件调试分为:
静态调试和动态调试。
(知道,注意区分)
静态调试主要指通过人的思维来分析源程序代码和排错,是主要的调试手段,动态调试是辅助静态调试的。
软件调试的主要方法:
(简单了解)
(1)强行排错法
(2)回溯法
(3)原因排除法