软件工程导论复习要点第一章1.软件的定义:软件是计算机程序、数据以及运行计算机系统可能需要的相关文档。
(1)程序:程序是计算任务的处理对象和处理规则的描述。
(软件!=程序)(2)数据:使程序能正常操纵信息的数据结构(即数据的组织形式)。
(3)文档:文档是为了便于了解程序所需的阐明性资料。
2.软件工程的定义:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;研究上面提到的途径。
3.软件工程三要素:过程:开发软件产品的一组活动及其结果。
方法:为软件开发过程提供“如何做”的技术。
工具:为软件开发方法提供自动的或半自动的软件支撑环境。
4.软件过程的四个基本活动:规格说明:定义软件功能以及对其使用的限制。
软件开发:设计和实现满足规格说明的软件。
软件确认:验证软件足以保证能够满足客户的要求。
软件演化:改进软件以适应不断变化的需求。
5.两种主要的开发方法:结构化(面向过程)的方法、面向对象的方法。
第二章1.软件工程发展历史:(1)第一阶段:软件危机——是指计算机软件的开发和维护过程所遇到的一系列严重问题主要表现:软件开发费用和进度失控;软件的可靠性差;生产出来的软件难以维护;软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的需要。
(1968年10 月软件工程大会在德国由北约出资举办)(2)第二阶段:传统软件工程——一是从管理的角度,希望实现软件开发过程的工程化(软件生命周期模型;确定了一些重要文档格式的标准);二是侧重于对软件开发过程中、分析设计的方法的研究(结构化)。
(3)第三阶段:现代软件工程——从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
发展趋势:模块化;开放计算;合理的开发治理;全球化软件协作交付。
第三章1.计算机网络的概念:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
2.互联网的概念:又称网际网络,或音译因特网(Internet)、英特网。
互联网始于1969年美国的阿帕网,这种将计算机网络互相联接在一起的方法称作“网络互联”。
在这基础上发展出覆盖全世界的全球性互联网络称互联网,即是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。
(互联网+:以互联网平台为基础,利用信息通信技术与各行业跨界融合,推动产品转型升级,并不断创造出新产品、新业务与新模式,构建连接一切的新生态(传统行业与互联网行业双向渗透))3.物联网的概念:物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。
其英文名称是:“Internet of things(IoT)”。
顾名思义,物联网就是物物相连的互联网。
这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息。
物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中。
4.人工智能的概念:人工智能(Artificial Intelligence),英文缩写为AI。
它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
第四章1.软件工程过程:ISO 9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。
从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)2.四个基本活动(PDCA):(1)P(Plan)软件规格说明:规定软件的功能及其运行的限制。
软件规格说明是确定系统需要的服务以及运行与开发中所受的约束的过程,也称为需求工程。
进行需求分析工作,通过与用户的反复交流,搞清楚用户对该软件的具体需求,这些需求是进行软件设计的依据;在编写程序之前需要先进行设计。
(2)D(Do)软件开发:产生满足规格说明的软件。
软件设计是根据需求规格说明,确定软件体系结构,进一步设计每个系统部件的实现算法、数据结构及其接口等。
软件实现是将软件设计转换成程序代码。
通常,大型软件的设计工作又分成两个阶段进行,先进行总体设计(又称为概要设计),再进行详细设计;编写程序实质上是把设计结果翻译成用某种程序设计语言书写的程序;(3)C(Check)软件确认:确认软件能够完成客户提出的要求。
验证和确认(Verification and Validation)需要指出软件是否符合规格说明以及是否满足客户的需求。
—验证和确认包括检查和评审过程以及系统测试。
—系统测试是使用由规格说明产生的测试用例执行软件的过程。
程序编写出来之后,还需要经过严格的测试过程(需要的工作量通常占软件开发全部工作量的40%~50%),软件确实符合用户需求而且质量合格,才能交付给用户使用。
(4)A(Action)软件演进:为满足客户的变更要求,软件必须在使用的过程中演进。
软件的内在本质是灵活和可变的:随着业务需求的变化,软件必须进化和变更;尽管在开发过程和演化过程中存在划分,但是现实中全新的系统越来越少。
认识软件演化过程:好的软件需要维护;维护软件的成本是很高的,应该在开发阶段考虑维护问题;文档是很重要的,但在实际开发中经常存在文档过时或缺少文档的情况。
3.软件的生存周期:软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。
这个过程即为计算机软件的生存期。
软件生存周期就是软件产品从提出、实现、使用维护到停止使用退役的全过程。
阶段划分:软件定义->软件开发->软件运行维护。
(1)软件定义时期:问题定义->可行性分析->需求分析;(2)软件开发时期:概要设计(总体设计)->详细设计->编码->测试(单元测试和综合测试);(3)软件运行维护时期:在软件被淘汰之前,要经历多次的纠错性、完善性和适应性维护活动。
4.软件生存周期的六个步骤:制定计划、需求分析、设计、程序编码、测试及运行维护。
(1)制定计划:确定要开发软件系统的总目标;给出功能、性能、可靠性以及接口等方面的要求;完成该软件任务的可行性研究;估计可利用的资源(计算机硬件,软件,人力等)、成本、效益、开发进度;制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查(2)需求分析和定义:对待开发软件提出的需求进行分析并给出详细的定义;编写软件需求说明书或系统功能说明书及初步的系统用户手册;提交管理机构评审。
(3)软件设计:概要设计:把各项需求转换成软件的体系结构。
结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应;详细设计:对每个模块要完成的工作进行具体的描述,为源程序编写打下基础;编写设计说明书,提交评审。
(4)程序编码:把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”;写出的程序应当是结构良好、清晰易读的,且与设计相一致的。
(5)软件测试:单元测试:查找各模块在功能和结构上存在的问题并加以纠正;组装测试,将已测试过的模块按一定顺序组装起来;按规定的各项需求,逐项进行有效性测试,决定已开发的软件是否合格,能否交付用户使用(6)运行/维护:改正性维护:运行中发现了软件中的错误需要修正;适应性维护:为了适应变化了的软件工作环境,需做适当变更;完善性维护为了增强软件的功能需做变更。
5.软件生存周期模型:是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架(也称软件开发模型、软件过程模型、软件工程范型)简单地说,是软件产品或软件系统从设计、投入使用到被淘汰的全过程。
编码修复模型、瀑布模型、增量模型、快速原型模型、螺旋模型。
增量模型:先完成一个系统核心产品的开发,再按同样的开发步骤增加功能,每一个线性序列产生软件的一个可发布的“增量”。
如此递增直至满足全部需求。
快速原型模型:用户给出软件产品的基本需求;开发小组和用户共同定义软件总体目标:标识已知需求;对界面、功能、人机交互方式等,进行设计并建造原型;强调“快速”,釆用基于构件的软件开发方法,尽量缩短软件开发周期,不宜釆用过多的新技术;用户对原型进行评估;修改需求、更新设计、完善原型直至确定需求。
第五章1.模块的概念:指具有相对独立性的,由数据说明、执行语句等程序对象构成的集合。
程序中的每个模块都需要单独命名,通过名字可实现对指定模块的访问。
在高级语言中,模块具体表现为函数、子程序、过程等。
2.模块化:将程序划分成若干个独立的模块,每个模块完成一个特定子功能,每个模块既是相对独立的,又是相互联系的,它们共同完成系统指定的各项功能。
(降低软件的复杂性)3.模块独立性:软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。
4.耦合和内聚:衡量软件模块独立性使用模块本身的内聚和模块之间的耦合两个定性的度量标准。
内聚性:一个模块内部各个元素之间彼此结合的紧密程度的度量。
耦合性:模块之间互相连接的紧密程度的度量。
模块设计准则:高内聚,低耦合。
5.软件工程主要开发方法:结构化方法、面向对象方法。
6.结构化编程的基本单位:模块。
程序核心:计算方法。
’第六章1.软件工具:软件工具是用来辅助计算机软件的开发、运行、维护、管理、支持过程中的活动或任务的软件。
2.分类:(1)支持软件开发过程的工具:主要有需求分析工具、设计工具(通常还可以分为概要设计工具和详细设计工具)、编码工具、排错工具、测试工具等;(2)支持软件维护过程的工具:主要有版本控制工具、文档分析工具、信息库开发工具、逆向工程工具、再工程工具等;(3)支持软件管理过程和支持过程的工具:主要有项目管理工具、配置管理工具、软件评价工具等。
3.统一建模语言UML由:用例图、静态图、行为图、交互图、实现图来定义。
用例图:从用户角度描述系统功能,是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元。
静态图:包括类图、对象图和包图。
行为图:描述系统的动态模型和组成对象间的交互关系。
交互图:描述对象间的交互关系。
实现图:如部署图,定义系统中软硬件的物理体系结构。
4.UML特点:统一标准;面向对象;可视化,表达能力强;独立于过程;容易掌握使用;与编程语言的关系。
第七章1.程序设计语言:是一组用来定义计算机程序的语法规则,程序设计语言有3个方面的因素,即语法、语义和语用。