




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程导论复习要点第一章1.软件的定义:软件是计算机程序、数据以及运行计算机系统可能需要的相关文档。(1)程序:程序是计算任务的处理对象和处理规则的描述。(软件!=程序)(2)数据:使程序能正常操纵信息的数据结构(即数据的组织形式)。(3)文档:文档是为了便于了解程序所需的阐明性资料。2.软件工程的定义:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究上面提到的途径。3.软件工程三要素:过程:开发软件产品的一组活动及其结果。方法:为软件开发过程提供“如何做”的技术。工具:为软件开发方法提供自动的或半自动的软件支撑环境。4.软件过程的四个基本活动:规格
2、说明:定义软件功能以及对其使用的限制。软件开发:设计和实现满足规格说明的软件。软件确认:验证软件足以保证能够满足客户的要求。软件演化:改进软件以适应不断变化的需求。5.两种主要的开发方法:结构化(面向过程)的方法、面向对象的方法。第二章1.软件工程发展历史:(1)第一阶段:软件危机是指计算机软件的开发和维护过程所遇到的一系列严重问题主要表现:软件开发费用和进度失控;软件的可靠性差;生产出来的软件难以维护;软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的需要。(1968年10月软件工程大会在德国由北约出资举办)(2)第二阶段:传统软件工程一是从管理的角度,希望实现软件开发过程的工程化(
3、软件生命周期模型;确定了一些重要文档格式的标准);二是侧重于对软件开发过程中、分析设计的方法的研究(结构化)。(3)第三阶段:现代软件工程从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。发展趋势:模块化;开放计算;合理的开发治理;全球化软件协作交付。第三章1.计算机网络的概念:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。2.互联网的概念:又称网际网络,或音译因特网(Internet)、英特网。互联网始于1969年美国的阿帕网,这种将计算
4、机网络互相联接在一起的方法称作“网络互联”。在这基础上发展出覆盖全世界的全球性互联网络称互联网,即是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。(互联网+:以互联网平台为基础,利用信息通信技术与各行业跨界融合,推动产品转型升级,并不断创造出新产品、新业务与新模式,构建连接一切的新生态(传统行业与互联网行业双向渗透)3.物联网的概念:物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础仍
5、然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息。物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中。4.人工智能的概念:人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。第四章1.软件工程过程
6、:ISO 9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)2.四个基本活动(PDCA):(1)P(Plan)软件规格说明:规定软件的功能及其运行的限制。软件规格说明是确定系统需要的服务以及运行与开发中所受的约束的过程,也称为需求工程。进行需求分析工作,通过与用户的反复交流,搞清楚用户对该软件的具体需求,这些需求是进行软件设计的依据;在编写程序之前需要先进行设计。(2)D(Do)软件开发:产生满足规格说明的软件。软件设
7、计是根据需求规格说明,确定软件体系结构,进一步设计每个系统部件的实现算法、数据结构及其接口等。软件实现是将软件设计转换成程序代码。通常,大型软件的设计工作又分成两个阶段进行,先进行总体设计(又称为概要设计),再进行详细设计;编写程序实质上是把设计结果翻译成用某种程序设计语言书写的程序;(3)C(Check)软件确认:确认软件能够完成客户提出的要求。验证和确认(Verification and Validation)需要指出软件是否符合规格说明以及是否满足客户的需求。 验证和确认包括检查和评审过程以及系统测试。系统测试是使用由规格说明产生的测试用例执行软件的过程。程序编写出来之后,还需要经过严格
8、的测试过程(需要的工作量通常占软件开发全部工作量的40%50%),软件确实符合用户需求而且质量合格,才能交付给用户使用。(4)A(Action)软件演进:为满足客户的变更要求,软件必须在使用的过程中演进。软件的内在本质是灵活和可变的:随着业务需求的变化,软件必须进化和变更;尽管在开发过程和演化过程中存在划分,但是现实中全新的系统越来越少。认识软件演化过程:好的软件需要维护;维护软件的成本是很高的,应该在开发阶段考虑维护问题;文档是很重要的,但在实际开发中经常存在文档过时或缺少文档的情况。3.软件的生存周期:软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期。软件生
9、存周期就是软件产品从提出、实现、使用维护到停止使用退役的全过程。阶段划分:软件定义-软件开发-软件运行维护。(1)软件定义时期:问题定义-可行性分析-需求分析;(2)软件开发时期:概要设计(总体设计)-详细设计-编码-测试(单元测试和综合测试);(3)软件运行维护时期:在软件被淘汰之前,要经历多次的纠错性、完善性和适应性维护活动。4.软件生存周期的六个步骤:制定计划、需求分析、设计、程序编码、测试及运行维护。(1)制定计划:确定要开发软件系统的总目标;给出功能、性能、可靠性以及接口等方面的要求;完成该软件任务的可行性研究;估计可利用的资源(计算机硬件,软件,人力等)、成本、效益、开发进度;制定
10、出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查(2)需求分析和定义:对待开发软件提出的需求进行分析并给出详细的定义;编写软件需求说明书或系统功能说明书及初步的系统用户手册;提交管理机构评审。(3)软件设计:概要设计:把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应;详细设计:对每个模块要完成的工作进行具体的描述,为源程序编写打下基础;编写设计说明书,提交评审。(4)程序编码:把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”;写出的程序应当是结构良好、清晰易读的,且与设计相一致的。(5)软
11、件测试:单元测试:查找各模块在功能和结构上存在的问题并加以纠正;组装测试,将已测试过的模块按一定顺序组装起来;按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用(6)运行/维护:改正性维护:运行中发现了软件中的错误需要修正;适应性维护:为了适应变化了的软件工作环境,需做适当变更;完善性维护 为了增强软件的功能需做变更。5.软件生存周期模型:是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架(也称软件开发模型、软件过程模型、软件工程范型)简单地说,是软件产品或软件系统从设计、投入使用到被淘汰的全过程。编码修复模型、瀑布模型、增量模型、快速原
12、型模型、螺旋模型。增量模型:先完成一个系统核心产品的开发,再按同样的开发步骤增加功能,每一个线性序列产生软件的一个可发布的“增量”。如此递增直至满足全部需求。快速原型模型:用户给出软件产品的基本需求;开发小组和用户共同定义软件总体目标:标识已知需求;对界面、功能、人机交互方式等,进行设计并建造原型;强调“快速”,釆用基于构件的软件开发方法,尽量缩短软件开发周期,不宜釆用过多的新技术;用户对原型进行评估;修改需求、更新设计、完善原型直至确定需求。第五章1.模块的概念:指具有相对独立性的,由数据说明、执行语句等程序对象构成的集合。程序中的每个模块都需要单独命名,通过名字可实现对指定模块的访问。在高
13、级语言中,模块具体表现为函数、子程序、过程等。2.模块化:将程序划分成若干个独立的模块,每个模块完成一个特定子功能,每个模块既是相对独立的,又是相互联系的,它们共同完成系统指定的各项功能。(降低软件的复杂性)3.模块独立性:软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。4.耦合和内聚:衡量软件模块独立性使用模块本身的内聚和模块之间的耦合两个定性的度量标准。内聚性:一个模块内部各个元素之间彼此结合的紧密程度的度量。耦合性:模块之间互相连接的紧密程度的度量。模块设计准则:高内聚,低耦合。5.软件工程主要开发方法:结构化方法、面向对象方法。6.结构化编程的基本
14、单位:模块。程序核心:计算方法。第六章1.软件工具:软件工具是用来辅助计算机软件的开发、运行、维护、管理、支持过程中的活动或任务的软件。2.分类:(1)支持软件开发过程的工具:主要有需求分析工具、设计工具(通常还可以分为概要设计工具和详细设计工具)、编码工具、排错工具、测试工具等;(2)支持软件维护过程的工具:主要有版本控制工具、文档分析工具、信息库开发工具、逆向工程工具、再工程工具等;(3)支持软件管理过程和支持过程的工具:主要有项目管理工具、配置管理工具、软件评价工具等。3.统一建模语言UML由:用例图、静态图、行为图、交互图、实现图来定义。用例图:从用户角度描述系统功能,是用户所能观察到
15、的系统功能的模型图,用例是系统中的一个功能单元。静态图:包括类图、对象图和包图。行为图:描述系统的动态模型和组成对象间的交互关系。交互图:描述对象间的交互关系。实现图:如部署图,定义系统中软硬件的物理体系结构。4.UML特点:统一标准;面向对象;可视化,表达能力强;独立于过程;容易掌握使用;与编程语言的关系。第七章1.程序设计语言:是一组用来定义计算机程序的语法规则,程序设计语言有3个方面的因素,即语法、语义和语用。2.分类:(1)按应用范围:通用语言、专用语言、系统程序设计语言、科学计算语言、事务处理语言、实时控制语言;(2)按客观系统的描述:面向过程语言和面向对象语言;(3)按与硬件的联系
16、程度:机器语言、汇编语言、高级语言(与机器硬件基本无关)。3.机器语言特点:质量高,运行速度快,占储存空间小;编程难度大、指令难记、繁琐、直观性差、容易出错、检查调试困难、通用性差、不兼容。4.汇编语言:汇编语言或符号语言被称为第二代程序设计语言。它是将机器语言符号化,即用英文助记符来代替机器语言中的指令和数据, 比用机器语言编写的程序简单,容易理解和掌握。特点:质量高、执行速度快、占存储空间小、可读性有所提高;大型程序难以开发,依赖于具体计算机,类似机器语言,通用性、可移植性差,与人的自然语言还相差很悬殊。5.高级语言:高级语言被称为第三代程序设计语言,是一种独立于机器的算法语言。高级语言的
17、表达方式接近于人们日常使用的自然语言和数学表达式,并且有一定的语法规则。特点:接近人们日常使用的自然语言(主要是英语)容易理解、记忆和使用;编程简单易学、可移植性好、可读性强、调试容易;编写的程序运行要慢一些。6.翻译方式:用高级语言编写的程序称为源程序,计算机不能直接识别和执行源程序。在执行源程序前需要通过翻译成机器语言形式的目标程序,这种“翻译”通常有两种方式,即编译方式和解释方式。(1)编译方式:编译方式是一次性全部翻译,然后执行。如果编译过程中发现程序有错,计算机系统会给出相应的提示,这时必须修改程序并重新编译,直到程序编译正确为止。当程序编译正确后,将产生一个目标程序;(2)解释方式
18、:解释方式的翻译工作由解释器来完成,边扫描源程序边翻译执行,若解释时发现错误,便会立即停止,报错并提醒用户修改程序。如此继续,整个过程不产生目标程序。7.模块的组成:接口,功能,内部数据,程序代码。(1)接口:模块的输入输出;用于实现模块与其他模块间的数据传送,即向模块传 入所需的原始数据及从模块传出得到的结果数据;(2)功能:指模块实现什么功能,有什么作用;(3)内部数据:描述模块内部实现功能需求所需数据;(4)程序代码:用于描述实现模块功能的具体方法和步骤。8.模块的特征:模块的输入/输出和功能构成了模块的外部特征;模块的内部数据和程序代码反映的是模块的内部特征。9.模块的设计准则:模块规
19、模应该适中;降低模块接口的复杂程度和冗余程度并提高一致性;设计单入口、单出口的模块;模块功能应该可以预测。10.结构化语言的设计准则:使用语言中的顺序、选择、循环等有限的基本控制结构表示程序;选用的控制结构只准许有一个入口和一个出口;程序语句组成容易识别的块,每块只有一个入口和一个出口;复杂结构应该用基本控制结构进行组合嵌套来实现 ;严格控制GOTO语句。11.结构化语言的控制结构:顺序结构、选择结构、循环结构。12.面向对象四大基本特征:抽象,封装,继承,多态。(1)抽象:是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。(2)封装:将抽象得到的数据与操作数据的行为相结
20、合,形成一个有机的整体。(3)继承:就是从先辈处得到属性和行为特征。类的继承,是新的类从已有类那里得到已有的特性。(4)多态:是指类中具有相似功能的不同函数使用同一个名称来实现。使用同一个函数可以调用不同的行为。第八章1.与测试相关的三个重要观点:测试是为了证明程序有错,而不是证明程序无错误;一个好的测试用例是在于它能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。2.测试用例:即用于测试的输入数据及预期的输出结果。(测试数据+执行条件+期望结果)3.测试结果:测试数据+执行条件+期望结果+实际结果。4.软件测试的概念:软件测试是为了发现错误而执行程序的过程。或者说,软件测
21、试是根据软件开发各阶段的规格说明和程序内部结构而精心设计的一批测试用例(即输入数据及预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。5.软件测试的准则:所有测试都应该能追溯到用户需求;应该远在测试前就制定出测试计划;充分注意测试中的群集现象。测试后程序中残存的错误数目与该程序中已发现的错误数目成正比;应该从“小规模”测试开始,并逐步进行“大规模”测试;穷尽测试是不可能的(包含所有可能情况的测试称为穷尽测试);为了达到最佳测试效果,应该由独立的第三方从事测试工作;严格执行测试计划,排除测试的随意性;应当对每一个测试结果做全面检查;妥善保存测试计划,测试用例,出错统计和最终分
22、析报告,为维护提供方便。6.软件测试的对象:软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间;需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。7.软件测试用例的设计:在设计测试用例时,应包括合理的输入条件和不合理的输入条件两种常用方法:白盒测试和黑盒测试。白盒测试:也叫玻璃盒测试或结构测试。对软件的过程性细节做细致的检查。这一方法是把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,来设计或选择测试用例,对程序所有逻辑路径进行测试。此方法把测试对象看做一个玻璃盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试;通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。8.软件测试的步骤:(1)模块测试:又称单元测试,它把每个模块作为单独的实体来测试;(2)子系统测试:是把经过单元测试的模块放在一起形成一个子系统来测试;(3)系统测试:是把经过测试的子系统装配成一个完整的系统来测试;(4)验收测试:把软件系统作为单一的实体进行测试(利用用户的实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂房拆迁补偿与环保设施配套合同
- 老师介绍课件
- 公共厕所日常维护及深度清洁合作协议
- 新能源汽车制造厂区转让与市场推广合同
- 出租车副班司机合同解除与终止合同
- 专业仓储物流企业成品油代购代销合同范本
- 采石场承包与矿产资源补偿费合同
- 老人睡眠护理课件
- 美术课件中国画
- 消防安全生产制度
- 弱电设备维护保养方案
- 道路及两侧便道保洁方案.docx
- 旅游开发公司组织架构
- 上期开特下期出特公式
- 杭州市普通住宅物业菜单式服务参考收费标准(试行)
- 钢材标准-SAEAMS5662M-2004镍基高温合金[1]._pdf
- 建筑工程内外墙面喷浆、粘钉、挂网施工合同(共2页)
- 山东生态功能区划(文字)
- DP备份软件日常维护手册
- DFMEA模板(完整版)
- 省教改课题申报书填写技巧
评论
0/150
提交评论