软件工程基础部分知识点总结.docx
《软件工程基础部分知识点总结.docx》由会员分享,可在线阅读,更多相关《软件工程基础部分知识点总结.docx(13页珍藏版)》请在冰点文库上搜索。
软件工程基础部分知识点总结
知识点1软件工程基本概念
1.软件定义:
是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。
2.软件的特点:
1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分;
2)软件的生产与硬件不同,它没有明显的制作过程;
3)软件在运行、使用期间不存在磨损、老化问题;
4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;
5)软件复杂性高,成本昂贵;
6)软件开发涉及诸多的社会因素
3.软件的分类:
按照功能可以分为:
应用软件、系统软件、支撑软件(或工具软件)
a应用软件是为解决特定领域的应用而开发的软件。
如:
教务管理系统、财务管理系统等。
b系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。
如:
操作系统、数据库管理系统等。
c支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。
比如:
编码工具软件、测试工具软件
4.软件危机
软件危机是指在软件的开发和维护过程中所遇到的一系列严重问题。
软件危机主要体现在以下几个方面:
①软件开发的实际成本和进度估计不准确
②开发出来的软件常常不能使用户满意
③软件产品的质量不高,存在漏洞,需要经常打补丁
④大量已有的软件难以维护
⑤软件缺少有关的文档资料
⑥开发和维护成本不断提高,直接威胁计算机应用的扩大
⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长
5.软件工程
a.软件工程概念的出现源自软件危机。
b.软件工程的基本要素
方法:
完成软件工程项目的技术手段;
工具:
支持软件的开发、管理、文档生成;
过程:
支持软件开发的各个环节的控制、管理。
C.软件工程的核心思想:
把软件产品看作是一个工程产品来处理。
知识点2软件生命周期
1.将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
2.软件生命周期一般划分为定义、开发和维护3个阶段:
定义阶段:
可行性研究、需求分析2个阶段;
开发阶段:
概要设计、详细设计、编码实现和测试4个阶段;
维护阶段:
使用、维护、退役阶段。
3.软件工程的概述
1)软件定义阶段:
包括制定计划和需求分析。
2)软件开发阶段:
软件设计:
分为概要设计和详细设计两个部分。
软件实现:
把软件设计转换成计算机可以接受的程序代码。
软件测试:
在设计测试用例的基础上检验软件的各个组成部分。
3)软件运行维护阶段:
软件投入运行,并在使用中不断地维护,进行必要的扩充和删改。
软件生命周期中所花费最多的阶段是软件运行维护阶段。
4)软件工程原则:
抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
5)软件工具与软件开发环境
知识点3软件设计基本概念
软件工程过程:
问题定义——可行性研究——需求分析——
软件设计——软件编码——软件测试——软件维护
软件设计分为:
a.总体设计
目的:
要解决的问题是“怎样实现目标系统”
任务:
确定软件的总体结构,进行模块划分,确定每个模块的功能、接口及模块之间的调用关系,并对全局数据结构进行设计,同时产生概要设计说明书
b.详细设计
目的:
要解决的问题是“应该怎样具体实现目标系统”
任务:
在概要设计的基础上,设计每个模块实现的细节及对局部数据进行设计(包括模块的数据结构和所需的算法),同时产生详细设计说明书
软件测试:
是为了发现程序中的错误而执行程序的过程
知识点4软件设计的基本原理
1模块化:
指解决问题时自顶向下的方法逐层把软件系统划分成若干个模块的过程
2抽象:
认识复杂过程中使用的思维工具,即抽出事务的本质的共同的特性而暂不考虑它的细节和其他因素。
3信息隐蔽:
旨在设计和确定模块式的时候,是的一个模块内包含的信息,对于不需要这些信息的其他模块来说不可访问
4模块独立性:
指每个模块只完成系统要求的独立的功能,并且与其他模块联系最少且接口简单
模块的耦合性和内聚性是衡量软件的模块独立性的两个定性指标。
1)内聚性:
是对模块功能强度的度量,即对一个模块内部各个元素(语句之间、程序段)间彼此结合的紧密程度的度量。
2)耦合性:
是模块间互相连接的紧密程度的度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
一个设计良好的软件系统应具有高内聚、低耦合的特征。
在结构化程序设计中,模块划分的原则是:
模块内具有高内聚度,模块间具有低耦合度。
软件设计有两个步骤:
(1)概要设计(又称结构设计)是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;
(2)详细设计是确定每个模块的实现算法和局部数据结构,通过对结构表示进行细化,得到软件的详细数据结构和算法。
知识点5结构化分析方法
1.结构化分析(简称SA)方法是面向数据流进行需求分析的方法。
2.结构化分析方法的常用工具:
数据流图、数据字典、结构化语言、判定树、判定表
3.SA的基本步骤如下:
①自顶向下对系统进行功能分解,画出分层的数据流图
②由后向前定义系统的数据和加工,编制数据字典和加工说明
③写出需求规格说明书(SRS)
4.数据流图(简称DFD--DataFlowDiagram)
a图形元素
b
①数据流:
是数据在系统内传播的路径。
使用箭头代表数据的流向,数据名称标在箭头的边上
②加工:
输入数据经过加工变换产生输出。
使用圆框代表加工
③数据存储:
指处理过程中存放各种数据。
使用双杠(或单杠)表示数据文件或数据库。
文件与加工之间用箭头线连接,单向表示只读或只写,双向表示可读可写
④数据源点或终点:
指软件系统外部环境中的实体(包括人员、组织或其他软件系统,统称为外部实体)。
使用方框表示数据的源点和终点
5.数据字典
a数据字典就是用来定义数据流图中的各个成分的具体含义和详细的描述。
它和数据流图共同构成了系统的逻辑模型,是需求规格说b明书的主要组成部分。
是结构化分析方法的核心。
数据字典有四类条目:
数据流、数据项、数据存储和基本加工。
6.SD方法的中心任务就是把用DFD图表示的系统分析模型方便地转换为软件结构的设计模型。
.知识点6软件测试的目的和准则
1.软件测试的定义:
软件测试就是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
2.软件测试的原则:
1.
所有测试都应追溯到需求
2.严格执行测试计划,排除测试的随意性
3.避免由软件开发人员测试自己的程序
4.充分注意测试中的群集性现象
5.除了很小的程序外,“彻底”的穷举测试是不可能的
6.妥善保存测试计划、测试用例、出错统计和最终的分析报告,为维护提供方便
3.软件测试的目的:
软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命周期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试、验证软件是否合格、能否交付给用户使用。
知识点7软件测试的方法和实施
1.软件测试的分类:
a从是否需要执行被测软件的角度,软件测试分为静态分析和动态测试
静态测试一般是指人工评审软件文档或程序,借以发现其中的错误,由于被评审的文档或程序不必运行,所以称为静态的。
静态测试包括代码检查、静态结构分析、代码质量度量等。
动态测试是指通过运行软件来检查软件中的动态行为和运行结果的正确性,也就是常说的上机测试。
被测程序
测试数据
b按照功能划分,动态测试又分为白盒测试和黑盒测试
白盒测试
也称结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试用例,它涉及程序风格、控制方法、源程序、数据库设计和编码细节。
黑盒测试
是测试者已经知道被测程序的功能,而对程序内部的逻辑结构和处理过程完全不用考虑,只是对它的每一个功能进行测试,将测试后的结果与期望的结果进行分析比较,检查程序的功能是否符合规格说明书的要求。
用黑盒法设计测试用例常用以下几种技术:
①等价类划分法②边界值分析法
③错误推测法④因果图法
黑盒测试是在程序接口进行的测试
2.软件测试的实施
a单元测试
b集成测试
非增量组装方式是先分别对每个模块进行单元测试,再把所有模块按设计要求组装在一起进行测试,最终得到所要求的软件
增量组装方式是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试
c确认测试
d系统测试
知识点8程序的调试
1.调试也称排错或纠错。
2.程序调试的任务:
诊断和改正程序中错误。
软件测试贯穿整个生命周期,调试主要在开发阶段。
3.程序调试的基本步骤:
(1)错误定位;
(2)纠正错误;(3)回归测试。
对软件主要的调试方法可以采用:
1)强行排错法。
2)回溯法。
3)原因排除法
4.软件调试可分为静态调试和动态调试。
1.静态调试就是指对源程序进行分析,然后确定可能出错的地方并进行排错。
2.动态调试是指对程序的运行进行跟踪并观察其出错点,然后进行排错。