计算机二级 公共基础知识 第3章 软件工程基础Word格式文档下载.docx
《计算机二级 公共基础知识 第3章 软件工程基础Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算机二级 公共基础知识 第3章 软件工程基础Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
方法是完成软件工程项目的技术手段。
工具支持软件的开发、管理、文档生成。
过程支持软件开发的各个环节的控制、管理。
*考点2软件生命周期定义
软件生命周期(softwarelifecycle):
将软件产品从提出、实现、使用维护到停止使用退役的过程。
即:
软件产品从考虑其概念开始,以该软件产品不能使用为止的整个时期都属于软件生存期/软件生命周期。
软件生命周期包括:
可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。
即七个:
可行性研究、需求分析、概要设计、详细设计、编码实现、测试、运行与维护。
软件生命周期分为三个阶段:
软件定义、软件开发及软件运行维护。
(1)软件定义阶段:
也称为软件分析阶段
1可行性研究与计划制定
确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。
可不可做
经济可行性、技术可行性、操作可行性和开发可行性等方法
2需求分析
对待开发软件提出的需求进行分析并给出详细定义。
编写软件规格说明书及初步的用户手册,提交评审。
做什么,功能说明做什么
(2)软件开发阶段
软件设计:
包括概要设计和详细设计
系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程,在系统比较复杂的情况下,设计阶段可分成解成概要设计阶段和详细设计阶段,编写概要设计说明书、详细设计说明书和测试计划初稿,提交评审。
如何做
总体设计或概要设计,实现的是功能模块的划分
详细设计,具休模块的功能设计。
②软件实现:
把软件设计转换成计算机可以接收的程序代码,即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
怎样做
③软件测试:
在设计测试用例的基础上,检验软件的各个组成部分。
编写测试分析报告。
(3)软件维护阶段
包括运行和维护。
将已交付的软件投入运行,并在运行使用中不断的维护,根据新提出的需求分析进行必要而且可能的扩充和删改。
软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为瀑布模型,恰如自上而下的瀑布。
重点
考点3软件工程的目标与原则
1、软件工程的目标
软件工程的目标:
在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
软件工程需达到的基本目标是:
付出较低的开发成本;
达到要求的软件功能;
取得较好的软件性能;
开发的软件易于移植;
需要较低的维护费用;
能按时完成开发,及时交付使用。
软件工程研究的内容包括:
软件开发技术和软件工程管理。
2、软件工程的原则
软件工程的原则:
抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
二、结构化分析方法
考点4关于结构化分析方法
结构化分析方法:
是结构化程序设计理论在软件需求分析阶段的运用。
结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。
结构化分析方法的实质是着眼于数据流、自顶向下、逐层分解、建立系统的流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
需求分析与需求分析方法
1、需求分析
软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
需求分析的任务是发现需求、求精、建模和定义需求的过程。
需求分析将创建所需的数据模型、功能模型和控制模型。
(1)需求分析的定义
(2)需求分析阶段的工作重点
①需求获取
②需求分析
③编写需求规格说明书
④需求评审
2、需求分析方法
常见方法有
①结构化分析法:
面向数据流的结构化分析方法SA,面向数据结构的Jackson方法,面向数据结构的结构化数据系统开发方法DSSD重点
②D面向对象的分析方法OOA
*考点5关于结构化分析的常用工具
需求分析常用的工具
1、数据流图(DFD)
DFD:
是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。
数据流图从数据传递和加工的角度来刻画数据流从输入到输出的移动变换过程。
数据流图的主要图形元素与说明如下:
加工(转换):
输入数据经加工变换后输出。
数据流:
沿箭头方向传送数据的通道,一般在旁边标注数据流名。
存储文件(数据源):
表示处理过程中存放各种数
据的文件。
源,潭:
表示系统和环境的接口,属于系统之外的
实体。
使用数据流图为系统建立逻辑模型。
2、数据字典(DD)
DD:
其作用是对DFD中出现的被命名的图形元素的确切解释。
数据字典是结构化分析方法的核心。
3、判定树了解
4、判定表了解
考点6软件需求规格说明书了解
1、软件需求规格说明书的作用
便于用户、开发人员进行理解和交流
反映出用户问题的结构,可以作为软件开发工作的基础和依据。
作为确认测试和验收的依据
2、软件需求规格说明书的内容
书写的内容和框架如下:
一、概述
二、数据描述
数据流图
数据字典
系统接口说明
内部接口
三、功能描述
功能
处理说明
设计的限制
四、性能描述
性能参数
测试种类
预期的软件响应
应考虑的特殊问题
五、参考文献和目录
六、附录
3、软件需求规格说明书的特点
正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性、可追综性。
三、结构化设计方法
*考点7有关软件设计的基本内容
1、软件设计的基础
软件设计是软件工程的重要阶段,是一个把软件需求转换成软件表示的过程。
软件设计是确定系统的物理模型。
从技术观点来看,软件设计包括:
软件结构设计;
数据设计;
接口设计及过程设计。
从工程管理角度来看,软件设计分两步完成:
概要设计和详细设计。
软件设计是一个迭代的过程,其一般过程是:
先进行高层次的结构设计;
后进行低层次的过程设计;
穿插进行数据设计和接口设计。
2、软件设计的基本原理有的也叫原则重点
抽象
模块化
信息隐蔽
模块独立性
*衡量软件的模块独立性,可使用耦合性和内聚性两个定性的度量标准。
内聚性:
一个模块内部各个元素间彼此结合的紧密程序的度量。
内聚是从功能角度来度量模块内的联系。
内聚有多种。
略
内聚性是信息隐蔽和局部化概念的自然扩展。
一个模块的内聚性越强该模块的模块独立性越强。
耦合性:
耦合性是模块间互相连接的紧密程序。
耦合性取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。
一个模块与其他模块的耦合性越强,则该模块的模块独立性越弱。
结论:
高内聚,低耦合。
有利于提高模块的独立性。
*考点8有关结构化设计方法的基本内容
结构化设计方法的基本思想是将软件设计成由相对独立、单一功能的模块组成的结构。
1、概要设计或总体设计
(1)概要设计的任务
设计软件系统结构、数据结构及数据库设计、编写概要设计文档、概要设计文档评审。
(2)面向数据流的设计方法
1)数据流的类型
有两种:
变换型和事务型。
掌握名称
2)面向数据流设计方法的实施要点与设计过程
(3)设计的准则
提高模块独立性。
降低耦合提高内聚
模块化规模适中。
深度、宽度、扇出和扇入适当。
顶层高扇出,中间扇出较少,底层高扇入
使模块的作用域在该模块的控制域内。
应减少模块的接口和界面的复杂性。
设计成单入口、单出口的模块。
设计功能可预测的模块。
2、详细设计
详细设计的任务是为软件结构图中的每一个模块确定实现算法和局部设计结构用某种选定的表达工具表示算法和数据结构的细节。
表达工具工具可由设计人员自由选择,但它应该具有描述过程细节的能力,而且能够使程序员在编程时便于直接翻译成程序设计语言的源程序。
现主要讨论过程设计。
在过程设计阶段,要对每个模块规定的功能以及算法的设计给出适当的算法描述,即确定模块内部的详细过程,包括局部数据组织、控制流、每一步具体处理要求和各种实现细节等,其目的是确定应该怎样来具体实现所要求的系统。
常见的过程设计工具有以下几种:
图形工具:
PFD、N-S、PAD、HIPO。
表格工具:
判定表。
语言工具:
PDL(伪码)。
程序流程图PFD重点
程序流程图是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图。
构成程序流程图的最基本图符及含义如下:
或控制流
加工步骤
逻辑条件
注意与需求分析所用的图形区别
按照结构化程序设计的要求,程序流程图构成的任何程序描述限制为如下图所示的5种控制结构。
顺序结构,选择结构,多分支选择型,后判断重复型,先判断重复型。
N-S图
方框或盒图。
问题分析图,PAD图
PDL或伪码
过程语言也称为结构化的英语或伪码,它是一种混合语言,采用英语的词汇和结构化程序设计语言的语法,类似于编程语言。
注意缩写的含义:
PFD,PAD,N-S,PDL,DFD,DD
四、软件测试
*考点9软件测试的方法与技术
从是否需要执行被测软件的角度,可分为静态测试和动态测试方法。
软件测试的目的是为了发现错误。
按照功能划分可以分为白盒测试和黑盒测试方法。
1、静态测试和动态测试重点
静态测试
包括代码检查、静态结构分析、代码质量度量等。
静态测试可以由人工运行,充分发挥人的逻辑思维优势,也可以借助软件工具自主运行。
经验表明,使用人工测试能够有效地发现30%到70%的逻辑设计和编码错误。
动态测试
不实际运行软件,主要通过人工运行。
动态测试是通过计算机的测试,是为了发现错误而执行程序的过程。
或者说,是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
设计高效、合理的测试用例是动态测试的关键。
测试用例(testcase)是为测试设计的数据。
测试用例由测试输入数据和与之对应的预期输出结果两部分组成。
测试用例的格式如下:
[(输入值集),(输出值集)]
2、白盒测试方法与测试用例设计重点
白盒测试方法也称为结构测试或逻辑驱动测试。
它是根据软件产品的内容工作过程检查内部成分,以确认每种内部操作符合设计规格要求。
白盒测试的基本原则:
保证所测模块中每一个独立路径至少执行一次;
保证所测模块所有判断的每一个分支至少执行一次;
保证所测模块的每一循环都在边界条件和一般条件下至少执行一次;
验证所有内部数据结构的有效性。
因此,白盒法是穷举路径测试。
白盒测试的主要方法有:
逻辑覆盖测试和基本路径测试等。
3、黑盒测试方法与测试用例设计重点
黑盒测试也称为功能测试或数据驱动测试。
黑盒测试是对软件已试验的功能是否满足需求进行测试和验证。
黑盒测试只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明。
因此,黑盒测试是在软件接口处进行,完成功能验证。
黑盒测试的主要方法有:
等价类划分法,边界值分析法、错误推测法等。
*考点10软件测试的实施
软件测试过程一般按4个步骤进行:
单元测试(依据是详细设计)、集成测试(依据是概要设计)、验收测试或确认测试(依据是需求分析)和系统测试。
记住名称
1、单元测试
单元测试是对软件设计的最小单位----模块进行正确性检测的过程,其目的是发现一个模块内部可能存在的各种错误。
单元测试的依据是详细设计说明书和源程序。
单元测试的技术可以采用静态分析和动态分析。
对动态测试通常以白盒动态测试为主,辅之以黑盒测试。
2、集成测试
集成测试是测试和组装软件的过程。
它是把模块在按照设计要求组装起来的同时进行测试,主要目的是发现与结构有关的错误。
集成测试的依据是概要设计说明书,
集成测试时将模块组装成程序通常采用两种方式:
非增量方式组装与增量方式组装。
3、确认测试或验收测试
确认测试的任务是验证软件的功能和性能驻其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。
确认测试的实施首先运用黑盒测试方法,对软件进行有效性测试,即验证被测软件是否满足了规格说明书中确认的标准。
复审的目的在于保证软件配置齐全、分类有序,以及软件配置所有成分的完备性、一致性、准确性和可操作性,并且包括软件维护所必需的细节
确认测试的论据是需求分析规格说明书,
4、系统测试
系统测试是将通过测试的软件作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其它系统元素组合在一起,在实际运行环境下对计算机系统进行一系列的集成测试和确认测试。
发现和捕捉软件中潜在的错误。
系统测试的目的是在真实的系统工作环境下检验软件是否能与系统正确连接,发现软件与系统需求不一致的地方。
五、程序的调试
考点11基本概念
程序调试,也称Debug,即排错:
在对程序进行了成功的测试之后将进入程序调试。
程序调试的任务:
诊断和修改程序中的错误。
程序调试主要在开发阶段。
程序调试由两部分组成:
一是根据错误的迹象确定程序中错误的确切性质、原因和位置。
二是对程序进行修改,排除这个错误。
*考点12软件调试方法
强行排错法,
回溯法,
原因排除法:
通过演泽和归纳及二分法来实现的。
六、软件开发工具与软件开发环境
1、软件开发工具
2、软件开发环境
软件开发环境或软件工程环境是全面支持软件开发全过程的软件工具的集合。
习题3基本习题
一、选择题
1、在软件生命周期中,能准确地确定软件系统必须做什么和必须具备中哪些功能的阶段是______。
A)概要设计B)详细设计
C)可行性分析D)需求分析
2、下面不属于软件工程3个要素的是______。
A)工具B)过程C)方法D)环境
3、检查软件产品是否符合需求定义的过程称为______。
A)确认测试B)集成测试C)验证测试D)验收测试
4、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。
下列图符名标识的图符不属于数据流图合法图符的是______。
A)控制流B)加工C)数据存储D)源和潭
5、下面不属于软件设计原则的是______。
A)抽象B)模块化C)自底向上D)信息隐蔽
6、程序流程图(PFD)中的箭头代表的是______。
A)数据流B)控制流C)调用关系D)组成关系
7、下列工具中为需求分析常用工具的是______。
A)PADB)PFDC)N-SD)DFD
8、在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。
A)详细设计B)需求分析C)总体设计D)编程调试
9、软件调试的目的是______。
A)发现错误B)改正错误
C)改善软件的功能D)挖掘软件的潜能
10、软件需求分析阶段的工作,可以分为四个方向:
需求获取,需求分析,编写需求规格说明书,以及______。
A)阶段性报告B)需求评审C)总结D)都不正确
二、填空题
1、软件是程序、数据和______。
2、Jackson方法是一种面向______的结构化方法。
3、软件工程研究的内容主要包括:
______技术和软件工程管理。
4、数据流图的类型有______和事务型。
5、软件开发环境是全面支持软件开发全过程的______集合。
答案
1、D2、D3、AD4、A5、C
6、B7、D8、C9、B10、B
注:
可行性分析:
值不值得做
需求分析:
做什么,有哪些功能等
概要设计或总体设计:
模块的划分,结构设计等
详细设计:
各个模块的详细设计等
这两部分解决的是如何做
实现:
编码实现各功能。
9:
软件调试的目的是:
发现错误,软件测试的目的是:
改正错误
1、文档2、数据结构3、软件开发
4、变换型5、软件工具