软件工程学习笔记.docx
- 文档编号:23563973
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:28
- 大小:35.78KB
软件工程学习笔记.docx
《软件工程学习笔记.docx》由会员分享,可在线阅读,更多相关《软件工程学习笔记.docx(28页珍藏版)》请在冰豆网上搜索。
软件工程学习笔记
第一章
一、软件的特点
1、软件:
计算机程序及其说明程序的各种文档
2、程序:
是计算机任务的处理对象和处理规则的描述
3、文档:
是有关计算机程序功能、设计、编制、使用的文字或图形资料
4、软件的特点:
1)软件是一种逻辑产品
2)软件产品的生产主要是研制
3)软件产品不会用坏,不存在磨损、消耗问题
4)软件产品的生产主要是脑力劳动
5)软件费用不断增加,软件成本相当昂贵
二、软件生产有几个阶段,各有何特征
1、程序设计时代
生产方式:
个体手工劳动 工具:
机器语言、汇编语言 开发方法:
追求程序运行效率
硬件特征:
价格贵、存储容量小、运行可靠性差
软件特征:
只有程序、程序设计概念,不重视程序设计方法
2、程序系统时代
生产方式:
作坊式的小集团合作生产 生产工具:
高级语言
开发方法:
个人技巧,开始提出结构法方法
硬件特征:
速度、容量、工作可靠跃居第一 明显提高
软件特征:
程序员数量猛增加,导致软件危机出现。
3、软件工程时代
生产方式:
工程化的生产
生产工具:
数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件
硬件特征:
向超高速、大容量、微型化以及网络化方向发展
三、什么是软件危机,其产生的原因是什么?
1、软件危机
软件发展到第二阶段末期,一些复杂的、大型的软件开发项目提出来了,但是,软件开发技术进步一直不能满足发展的要求。
在软件开发中遇到的问题找不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
2、软件危机的表现
1)经费预算经常突破
2)开发的软件不能满足用户的要求
3)开发的软件可维护性差
4)软件的软件可靠性差
3、原因
1)软件的规模越来越大,结构越来越复杂
2)软件开发管理困难而复杂
3)软件开发费用不断增加
4)软件开发技术落后
5)生产方式落后
6)开发工具落后
四、什么是软件工程,其目标和内容是什么?
1、软件工程
用科学知识和技术原理来定义、开发、维护软件的一门学科
2、目标
建造一个大型软件系统,一般有以下几个目标
1) 付出较低的开发成本
2) 达到软件要求的功能
3) 取得较好的软件性能
4) 开发的软件易于移植
5) 需要较低的维护费用
6) 能按时完成开发任务及时交付使用
7) 开发的软件可靠性高
3、内容
软件开发技术:
主要研究软件开发方法、软件开发过程、软件开发工具和环境
软件开发管理:
软件管理学、软件经济学、软件必理学
4、面临的问题
1)软件的费用
2)软件的可靠性
3)软件的维护
4)软件的生产率
5)软件的重用
五、什么是软件的生存周期,它有哪几个活动
1、软件的生存周期
一个软件从提出开发要求开始直到该软件报废为止的整个日期。
2、活动
1)可行性分析和项目开发计划
2)需要求分析
3)概要设计
4)详细设计
5)编码
6)测试
7)维护
六、什么是软件生存周期模型,有哪些主要的模型
1、生存周期模型
是描述软件开发过程中各种活动如何执行的模型
2、主要的模型
1)瀑布模型
将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。
它是一种理想的线性开发模式,缺乏灵活性,特别是不支解决软件需要不明确或不准确的问题
2)增量模型
是一种非整体开发模型。
开发出一部分向用户展示一部分。
具有较大的灵活性,适合于软件需要不明确,设计方案有一定风险的软件项目
3)螺旋模型
是一种风险驱支模型。
适合于大型软件的开发。
4)喷泉模型
是一种以用户需要为动力,以对象作为驱动的模型。
适合于面向对象的开发方法
5)基于知识的模型
它把瀑布模型和专家系统结合在一起。
6)变换模型
是一种适合于形式化开发方法的模型。
七、什么是软件开发方法,有哪些方法
1、软件开发方法
是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程
2、有如下主要的方法
1)结构化方法
结构化方法是由结构化分析、结构化设计、结构化程序设计构成。
它是一种面向数据流的开发方法
数据流图建立功能模型
软件结构图建立物理模型
结构化程序设计来实施详细设计
对于特别复杂的项目不太适应
2)Jackson方法
是一种面向数据结构的开发方法
3)维也纳开发方法(VDM)
VDM是一种基于模型的方法。
它的主要思想是将软件系统当作模型来描述,把软件的输入、输出看作模型对象。
4)面向对象的开发方法
基本出发点:
尽可能按照人类认识世界的方法和思维来分析和解决问题
包括:
面向对象分析、面向对象设计、面向对象实现。
作者:
思渊提交日期:
2006-10-2114:
49:
00
第二章
一、可行性研究的任务是什么?
1、技术可行性
1)开发的风险
2)资源的有效性
3)技术
4)开发人员的评估可行性
2、经济可行性
3、社会可行性
二、可行性研究有哪此步骤
1)确定项目规模和目标
2)研究正在运行的系统
3)建立新系统的高层逻辑模型
4)导出和评价各种方案
5)推荐可行性方案
6)编写可行性报告
三、可行性研究报告有哪些内容?
1、引言
2、可行性研究前提
3、对现有系统的分析
4、所建议系统的技术可行性
5、所建议系统的经济可行性分析
6、社会因素可行性分析
7、其它可供选择方案
8、结论意见
四、成本、效益分析有哪些指标
1、货币时间价值
2、投资回收期
3、纯收入
五、项目开发技术有哪些内容
1、项目概述
2、实施计划
3、人员组织及分工
4、交付期限
作者:
思渊提交日期:
2006-10-2114:
50:
00
第三章
一、什么是需求分析?
需求分析阶段的基本任务是什么?
1、需求分析
开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换为相应的形式功能规约的过程。
1.1需求分析的难点
1)问题的复杂性
2)交流障碍
3)不完备性和不一致性
4)需求易变性
1.2适用的基本原则
1)必须能够表达和理解问题的数据域和功能域
2)可以把子个复杂问题功能进行分解并可逐层细化
3)建模
2、基本任务
1)问题识别
这些需求包括:
功能需求,性能需求,环境需求,用户界面需求
2)分析与综合,导出软件的逻辑模型
3)编写文档
主要包括:
编写需求规则说明书,初步用户使用手册,确认测试计划,修改完善软件开发计划
二、什么是结构化分析方法?
该方法使用什么描述工具?
1、结构化分析方法(SA)
是面向数据流进行需求分析的方法
2、策略
自顶向下逐层分解的分析策略
3、描述工具
利用图形等半形式化的描述方式表达需求
1) 数据流图
描述系统的分解即系统由哪几个部分组成,各部分之间有什么联系
2)数据字典
数据流图中每一个图形元素。
3)描述逻辑加工的结构化语言,判定表,判定数
三、结构化分析方法通过哪些步骤来实现
1、了解当前系统的工作流程,获得当前系统的物理模型
2、抽象出当前系统的逻辑模型
3、建立目标系统的逻辑模型
4、作进一步的补充和优化
四、什么是数据流图?
其作用是什么?
其中的基本符号各表示什么含义?
1、数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,是一种功能模型。
2、作用:
它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能。
3、基本符号及含义
箭头:
数据流
圆或椭圆:
加工
双杠:
数据存储
方框:
数据的源点和起点
五、画数据流图的步骤
1、首先画系统的输入输出,即先画顶层数据流图
2、画系统内部,即画下层数据流图。
一般将层号从0开始编号,采用自顶向下,由外向内的原则
六、画数据流图就注意的事项
1、命名:
合适的命名使人们易于理解其含义。
2、画数据流而不是控制流,反映做什么,数据流名称只能是名词或名词短语。
3、一般不画物质流
4、每个加工至少有一个输入流和一个输出流
5、编号
6、父图与子图平衡:
了图的输入输出数据流同父图相应加工的输入输出数据流必须一致。
7、局部数据存储
当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,即为局部数据存储
8、提高数据流图的易理解性
七、什么是数据字典?
其作用是什么?
它有哪些条目?
1、数据字典
简称DD,用来定义数据流图中各个成分的具体含义的,它以一种准确的、无二义的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述
2、作用
1)为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述
2)为分析人员查找数据流图中有关名字的详细定义而服务的
3)它有数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分
3、条目
数据流、数据项、数据存储、基本加工
八、描述加工逻辑有哪些工具
1、结构化语言
是介于自然语言和形式语言之间的一种半形式语言。
它的结构分为外层和内层
1) 外层:
用来描述控制结构,采用顺序、选择、重复三种基本结构
2) 内层:
采用祈使语句的自然语言短语。
2、判定表
3、判定树
九、什么是IDEF方法?
IDEF0方法有什么特点?
1、IDEF方法
是在结构分析与设计技术的基础上提出来的,用于进行复杂系统分析和设计的方法。
它分为三个部分:
1) IDEF0:
描述系统的功能活动及其联系,建立系统的功能模型。
2) IDEF1:
描述系统的信息及其联系,建立系统的信息模型
3) IDEF2:
进行系统模拟,建立系统动态模型。
2、特点
1)采用方框和箭头等简单图形符号描述系统的活动和数据流,描述活动所受到的约束和实现机制
2)采用严格的自顶向下、逐层分析的方式建立系统功能模型。
十、简述SA方法的优缺点
1、优点
1)公认的、有成效的、技术成熟、使用广泛的一种方法。
它比较适合于开发数据处理类型软件的需求分析
2)该方法利用图形等半形式化工具表达需求,简明、易读,也易于使用,为后一阶段的设计、测试提供了有利条件
2、缺点
1)传统的SA方法主要用于数据处理方面的问题,它仅是一个静态模型,没反映处理顺序即控制流程。
因此,不适合描述实时控制系统。
2)SA方法在使用DFD在分析与描述“数据要求”方面有局限的
3)DFD不适合描述人机界面系统的要求
4)为了更精确地描述软件包需求,提高软件系统的可靠性、安全性,也便于实现自动化,SA方法可与形式方法结合起来。
作者:
思渊提交日期:
2006-10-2114:
51:
00
第四章
一、什么是软件概要设计?
该阶段的基本任务是什么?
1、软件概要设计
在需求分析的基础上通过抽象和分析将系统分解成模块,确定系统功能的实现即把软件需求转换为软件包的过程。
2、基本任务
2.1设计软件体系结构
1)采用某种设计方案,将一个复杂的系统按功能划分成模块
2)确定每个模块的功能
3)确定模块之间的调用关系
4)确定模块之间的接口
5)评价模块结构的质量
2.2数据结构及数据库设计
1)数据结构设计
2)数据库设计:
概念设计、逻辑设计、物理设计
2.3编写概要设计文档
主要有:
1) 概要设计说明书
2) 数据库设计说明书
3) 用户手册
4) 用户测试计划
2.4评审
二、软件设计的基本原理包括哪些内容
1、模块化
1)模块:
是可组合、分解和更换的单元
2)基本属性
接口:
指模块的输入和输出
功能:
模块实现什么功能
逻辑:
如何实现要求的功能及所需要的数据(内部特性)
状态:
该模块的运行环境,即模块调用和被调用关系
2、抽象
是认识复杂现象过程中使用的思维工具,即抽出事物的本质的共同特性而暂不考虑它的细节,不考虑其它因素。
3、信息隐蔽
指在设计和确定模块时,使得一个模块内包含的信息,对于不需要这些信息的其它模块来说,是不能访问的。
4、模块的独立性
指每个模块只完成系统要求的独立的子功能,并且与其它模块的联系最少且接口简单。
三、模块独立性的两个标准是什么?
它们各表示什么含义?
1、标准
1)耦合性
2)内聚性
2、含义
1)耦合性
也称块间联系
指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间联系越紧密,其耦合性越强,模块的独立性越差。
耦合性取决于模块接口之间的复杂性、调用的方式及传递的信息。
3) 内聚性
也称块内联系
模块功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
若一个模块内各元素联系的越紧密,则它的内聚性就越高。
四、模块间的耦合性有哪几种?
它们各表示什么含义?
1、无直接耦合
两个模块之间没有直接关系。
2、数据耦合
两个模块之间有调用关系,传递的是简单的数据值。
3、标记耦合
两个模块之间传递的是数据结构
4、控制耦合
一个模块是调另一个模块时,传递的是控制变量,被调模块通过该控制变量的值有选择地执行块内某一功能。
5、公共耦合
通过一个公共数据环境相互作用的那些模块的耦合。
公共耦合随着耦合模块的个数增加而增加。
6、内容耦合
最高程度的耦合,也是最差的耦合。
一个模块直接使用另一个模块内部数据或通过非正式入口而转入另一个模块内部。
五、模块的内聚性由哪几种?
各表示什么含义?
1、偶然内聚
指一个模块内的各个处理元素之间没有任何联系。
2、逻辑内聚
指模块内执行几个逻辑相似的功能,通过参数确定该模块完成哪一个功能。
3、时间内聚
把需要同时执行的动作组合在一起形成的模块。
4、通信内聚
模块块内所有处理元素都在同一个数据结构上操作。
或者指各处理使用相同的输入数据或者产生相同的输入数据。
5、顺序内聚
一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。
6、功能内聚
这是最强的内聚。
模块内所有元素共同完成一个功能,缺一不可。
六、什么是软件结构?
简述软件结构优化准则?
1、软件结构图
是软件系统的模块层次图,反映了整个系统功能实现,即将来程序的控制层次体系。
软件结构往往用树状或网状结构的图形来表示。
2、结构图的内容
1)模块
2)模块的控制关系
3)模块间的信息传递
3、结构图的形态特征
1)深度:
模块的层数
2)宽度:
最大的模块个数
3)扇出:
模块直接下属模块个数
4)扇入:
一个模块直接上属模块个数
4、画结构图注意事项
1)、同一名字的模块在结构图中仅出现一次
2)调用关系只能从上到下
3)不严格表示模块的调用次序。
5、软件结构优化设计准则
1)划分模块时,尽量做到高内聚,低耦合保持模块相对独立。
2)一个模块的作用范围应在其控制范围之内。
3)软件结构的深度、宽度、扇入、扇出应当适当。
4)模块大小适中
5)模块的接口要简单、清晰、含义明确、便于理解、易于实现、测试和维护。
七、什么是模块的影响范围?
什么是模块的控制范围?
它们之间应该建立什么关系?
1、模块的影响范围
受该模块内一个判定影响的所有模块的集合。
2、模块的控制范围
模块本身以及其所有下属模块的集合。
3、它们之间应建立的关系
一个模块的影响范围应在其控制范围内,且判定所在的模块应与受其影响的模块在层上尽量靠近。
八、结构化设计
以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构即结构化设计(SD)
九、什么是变换流?
什么是“事物流”?
1、变换流
是由输入、变换、和输出三个部分组成的DFD。
2、事物流
若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择一个路径来执行。
这种牲的DFD称为事物数据流图。
十、面向数据流设计法的过程
1、精化DFD
2、确定DFD类型
3、分解上层模块
4、根据优化准则对软件结构求精
5、描述模块功能
6、复杂
十一、变换分析的设计步骤
1、 确定DFD中心,逻辑输入和逻辑输出
2、 设置软件结构的顶层和第一层:
变换结构
第一层一般至少要有三种功能模块:
输入、输出和变换模块。
3、 设置中、下层模块
输入模块:
接收数据;转换成调用模块所需信息
输出模块:
将数据转换成下属模块所需的形式;发送数据
4、 变换模块下属模块的设计
5、 设计的优化
十二、事务分析设计步骤
1、 确定DFD中的事务中心和加工路径
2、 设计软件结构的顶层和第一层:
事务结构。
事物型软件结构应该包括两个部分:
一个接收分支和一个发送分析(包含一个高度模块)。
3、 事务结构中、下层模块的设计、优化
作者:
思渊提交日期:
2006-10-2114:
52:
00
第五章
一、软件详细设计的基本任务是什么?
有哪几种描述方法?
1、软件详细设计的基本任务
1)为每个模块进行详细的算法设计
2)为模块内的数据结构进行设计
3)对数据库进行物理设计
4)其它设计:
代码设计
输入/输出格式设计
人机对话设计
5) 编写详细设计说明书
6) 评审
2、描述方法
1)程序流程图
2)PAD图
3)过程设计语言
二、结构化程序设计的基本要点是什么?
1、采用自顶向下、逐步求精的程序设计方法
2、使用三种基本控制结构构造程序
3、主程序员组的组织形式。
三、程序流程图
1、程序流程图
又称为程序框图,它是历史最悠久,使用最广泛的一种程序逻辑结构的工具
2、优点:
直观清晰,易于使用
3、缺点
1)可以随心所欲地画流程线的流向,容易造成非结构化的程序结构。
2)流程图不易反映逐步求精的过程,往往反映的是最后的结果
3)不易表示数据结构。
四、什么是PAD图,其优点是什么?
1、PAD图
指问题分析图,是日本日立公司1979年提出的一种算法描述工具,它是一种由左往右展开的二维树型结构。
控制流程为自上而下、从左到右地执行。
2、优点
1)清晰地反映程序的层次结构
2)支持逐步求精的设计方法
3)易读易写,使用方便
4)支持结构化的程序设计原理
5)可自动生成程序
五、什么是过程设计语言?
其优点是什么?
1、过程设计语言
PDL 也称程序描述语言,又称伪码。
它是一种用于描述模块算法设计和处理细节的语言。
2、优点
1)提供的机制比图形全面,为保证详细设计与编码的质量创造了有利条件
2)可作为注释嵌入在源程序中一起作为程序文档并可同高级语言一样进行编辑、修改,有利于软件的维护
3)可自动生存程序代码,提高软件生产率。
六、什么是JACKSON方法
Jackson方法是面向数据结构的设计方法。
它定义了一组以数据结构为指导的映射过程,它根据输入、输出的数据结构,按一定的规则映射成软件的过程描述,即程序结构,而不是软件体系结构,因此该方法适用于详细设计阶段。
七、JACKSON结构图的优点
1、能对结构进行自顶向下分解,因此可以表示层次结构
2、结构易读,形象直观
3、即能表示数据结构也能表示程序结构,且表示的是组成关系。
八、简述JSP的设计步骤
1、分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图表示这些数据结构。
2、找出输入数据结构和输出数据结构中有对应关系的数据单元。
3、按一定的规则由输入、输出的数据结构导出程序结构。
4、列出基本操作与条件,并把它们分配到结构图的适当位置。
5、用伪码写程序。
作者:
思渊提交日期:
2006-10-2114:
52:
00
第六章
一、程序语言有哪些共同的特征?
1、心理特性
岐义性 简洁性 局部性和顺序性 传统性
2、工程特性
可移植性 开发工具可利用性 软件的可重用性 可维护性
4、 技术特性
二、在项目开发时,选择程序设计语言通常考虑哪些因素?
1、项目的应用领域
1)科学工程计算领域
Fortran:
第一个被正式推广应用的计算机语言
Pascal:
第一个体现结构化编程思想的语言,有利于培养良好的编程风格。
C PL.1等
2)数据处理和数据库应用
Cobol SQL
4GL(VF Uniface Power Builder Informix 4GL等)
3)实时处理
汇编语言 Ada等
4)系统软件
汇编语言 C Ada Pascal等
5)人工智能
Lisp 函数型语言
Prolog:
逻辑型语言
2、软件开发方法
快速模型开发 :
4GL语言
面向对象:
C++ Java
3、软件执行环境
4、算法和数据结构的复杂性
5、软件开发人员的知识
三、第4代语言(4GL)有哪些特征?
1、友好的界面
2、兼有过程性和非过程性双重特性
3、高效的程序代码
4、完备的数据库
5、应用程序生成器
四、什么是程序设计风格?
为了具有良好的设计风格,应注意哪些方面的问题?
1、程序设计风格
一个人编程序时所表现出来的特点、习惯、逻辑思路等。
2、应注意的问题
1)源程序文档化
标识符应注意取名
程序应注释
2)数据说明
3)语句构造:
简单直接
4)输入和输出。
5)效率
作者:
思渊提交日期:
2006-10-2114:
53:
00
第七章
一、软件测试的目的是什么?
在软件测试中,应注意哪些原则?
1、目的
G.J.Myers对软件测试的目的提出了以下观点:
1)、软件测试的目的是为了发现错误而执行程序的过程。
2)、一个好的测试用例能够发现至今尚未发现的错误
3)、一个成功的测试是发现了至今尚未发现的错误的测试
因此测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例,找出软件中潜在的各种错误和缺陷。
2、软件测试的原则
1)测试用例应由输入数据和预期的输出数据两部分组成。
2)测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。
3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事]
4)应制定测试计划并严格执行
5)长期保留测试用例
6)对发现错误较多的程序段,应进行更深入的测试。
7)程序员避免测试自己的程序。
二、测试方法
1、静态测试
1)人工检测
2)计算机辅助静态分析
2、动态测试
1)白盒法:
测试产品内部结构及处理过程
2)墨盒法:
测试产品功能。
三、什么是白盒测试?
有哪些覆盖标准?
试对质它们的检错能力进行比较?
1、白盒测试
把测试对象看作一个打开的盒子,测试人员必须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据是否错误,实际运行状态与预期是否一致。
2、覆盖标准
2.1逻辑覆盖
1)语句覆盖
设计足够的测试用例,使被测试程序中每个语句至少执行一次。
2)判定覆盖
设计足够测试用例,使被测试程序中每个判定表达式至少获得一次“真”值或“假”值。
3)条件覆盖
设计足够测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。
4)判定/条件覆盖
设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果至少出现一次。
5)条件组合覆盖
设计足够的测试用例,使得每个判定表达式条件的各种可能的值的组合都至少出现一次。
6)路径覆盖
设计足够的测试用例,覆盖被测试程序中所有可能的路径
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 学习 笔记