软件工程总复习【精选】

合集下载

软件工程总复习简略版

软件工程总复习简略版

软件工程绪论第1章软件工程绪论1.软件的认识(小题)定义:软件是计算机系统中与硬件相互依存的另一部分。

它包括程序、数据及其相关文档的完整集合。

特点:软件是无形的、不可见的逻辑实体–它的正确与否,一直到程序在机器上运行才能知道–这就给设计、生产和管理带来许多困难软件是设计开发的,而不是生产制造的软件在使用过程中没有磨损、老化的问题软件是定制开发的–虽然整个工业向着基于构件的构造模式发展–然而大多数软件仍是根据实际的顾客需求定制的软件是复杂的:–软件涉及人类社会的各行各业–软件开发常常涉及其他领域的专业知识,这对软件工程师提出了很高的要求软件的开发成本高软件易于复制系统维护,计划,单元测试,系统测试,编码开发占据的成本有高到低硬件:任何机械、电子设备在运行和使用期间其失效率大都遵循以下的U型曲线。

因为在刚刚投入使用时,各部位都都尚未做到配合良好、运转灵活,常常容易出现问题。

经过一段时间的运行,就可以稳定下来。

当设备经历了相当长的时间的运转,就会出现磨损、老化等问题。

使失效率越来越大,达到一定的程度,则就到达了寿命的终点。

软件:它没有U型曲线的右半翼,因为它不存在磨损和老化问题。

在软件生存期中,了使它能够克服以前没有发现的故障、使它能够适应硬件、软件环境的变化以及用户新的要求,必须要多次修改(维护)软件,而每次修改必不免地引入新的错误,就这样一次次修改,从而导致软件的失效率升高,如下图所示,以至造成软件退化。

因此说,软件的维护要比硬件的维护要复杂的多,与硬件的维修有着本质上的差别。

分类:(小题)按照软件的功能划分:系统软件、支撑软件和应用按照软件的规模划分:微型,小型,中型,大型,甚大型,极大型在信息产业中,微电子是基础,计算机和网络是载体,软件是核心。

开发过程:个人程序时期(1947年-1950年代末),机器语言和汇编语言,负责从程序的开发、运行和维护的全过程,这是一种私人化的软件环境。

软件作坊时期(1960年代初-1960年代末)软件工程时期(1970年代初至今)2.软件的危机(简答题)表现:–对软件开发成本以及进度的估计常常很不准确–用户对已完成的软件系统不满意的现象经常发生–软件产品的质量往往难以保证–软件常常是不可维护的–软件通常没有适当的文档资料–软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度,远远比不上计算机应用技术的迅速普及3.软件工程:定义:所谓软件工程,就是研究大规模程序设计的方法、工具和管理的一门工程科学,指导计算机软件开发和维护的工程科学。

软件工程复习知识点和例题

软件工程复习知识点和例题

.1.软件危机的概念,内容,原因及消除的途径;概念:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

内容:软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护不断膨胀的已有软件。

具体地说,软件危机主要有以下一些典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;原因:在软件开发和维护的过程中存在这么多严重问题:一方面与软件本身的特点有关;另一方面也和软件开发与维护的方法不正确有关。

(1)软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。

(2)软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序的规模的增加而呈指数上升。

(3)目前相当多的软件专业人员对软件开发和维护还有不少糊涂概念,在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。

(4)对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。

2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。

基本原理:软件工程的7条基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性3.软降工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。

软件工程方法学包含3个要素:方法、工具和过程。

软件工程复习知识点和例题

软件工程复习知识点和例题

1.软件危机的概念,内容,原因及消除的途径;概念:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

内容:软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护不断膨胀的已有软件。

具体地说,软件危机主要有以下一些典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;原因:在软件开发和维护的过程中存在这么多严重问题:一方面与软件本身的特点有关;另一方面也和软件开发与维护的方法不正确有关。

(1)软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。

(2)软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序的规模的增加而呈指数上升。

(3)目前相当多的软件专业人员对软件开发和维护还有不少糊涂概念,在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。

(4)对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。

2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。

基本原理:软件工程的7条基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性3.软降工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。

软件工程方法学包含3个要素:方法、工具和过程。

软件工程复习汇总和答案

软件工程复习汇总和答案

软件工程复习汇总和答案1. 判断题1.编程中应采用统一的标准和约定,降低程序的复杂性。

(√)2.软件可重用性(reusability),是指软部件可以在多种场合使用的程度。

(√)3.一般来说,设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共数据耦合,杜绝内容耦合。

(√)4.第四代语言(4GL)还局限在某些领域内,如数据库查询语言。

(√)5.编码的依据是详细设计说明书。

(√)6.程序文档应该包括代码的功能、代码的完成者等内容。

(√)7.预防性维护是修改软件,以适应软硬件环境的变化。

(X)8.软件项目定义部分由制定软件项目开发计划、需求分析2个阶段组成。

(√)9.10.软件可移植性(portability),是指软件从一个计算机系统或(环境)移植到另一个上去的难易程度。

(√)11.纠错性维护是改正运行期间发现的潜伏错误。

(√)12.软件开发、设计几乎都是从头开始,成本和进度很难估计。

(√)13.目前我国还没有颁布软件开发标准。

(X)14.耦合度是对软件结构中模块间关联程度的一种度量。

在设计软件时应追求尽可能紧密的耦合的系统。

(X)15.在同一用户界面中,所有的菜单选择、命令输入、数据显示和其他功能应采用不同的形式和风格。

(X)16.在面向对象设计阶段则着重完成“如何做”的问题,也就是着重考虑对象的实现细节。

(√)17.随着软件复杂性的不断提高,软件的维护难度越来越大。

(√)18.软件的可维护性差是软件维护工作量和费用激增的直接原因。

(√)19.20.软件可靠性是指在给定的时间间隔内,程序成功运行的概率(T)21.C语言不是高级语言,C++和Java才是(F)22.第一代人机界面采用可视化图形方式(F)23.软件过程中维护成本占据了最大的比例(T)24.文档不属于软件范畴(F)25.用户对软件需求的描述不精确,往往是产生软件危机的原因之一。

(√)26.目前,软件项目的进度安排的两种比较常用的方法是程序评估与审查技术(PERT)和关键路径法(CPM)。

软件工程复习

软件工程复习

1.软件生存周期:是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。

包括问题定义及可行性研究、需求分析、概要设计、详细设计、编码、测试、维护等部分。

2.数据字典(DD):是为分析人员查找数据流图中有关名字的详细定义而服务的,因此也像普通字典一样,要把所有条目按一定的次序排列起来,以便查阅。

数据字典有以下4类条目:数据流、数据项、数据存储及基本加工。

数据项是组成数据流和数据存储的最小元素。

3.DFD图:数据流图从数据传递和加工的角度,以图形的方式描述数据流从输入到输出的传输变换过程。

数据流图是结构化系统分析的主要工具,它表示了系统内部信息的流向,并表示了系统的逻辑处理功能。

4.α测试:由用户在开发环境下进行测试,也可以是开发机构内部的用户在模拟实际环境下进行的测试。

开发者坐在用户旁边,随时记录错误情况和使用中的问题。

这是受控环境下进行的测试。

5.β测试:由软件的最终用户在一个或多个实际使用环境下进行的测试,开发者通常不在测试现场。

它是在软件开发者不能控制的环境中的“真实”应用,由用户记录下在测试过程中遇到的一切问题,包括真实的及主观的认定,定期把这些问题报告给开发者。

开发者在综合报告后作出修改,将软件产品交付给所有用户使用。

6. 什么是需求分析?是软件计划时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”,深入描述软件的功能和性能,确定软件设计的限制和软件与其他系统的接口细节,描述软件的其他有效性需求。

该阶段的基本任务是什么?①确定对系统的综合要求②分析系统的数据要求③提出系统的逻辑模型④修正系统开发计划⑤开发原型系统。

7. SA方法?如果一个程序的代码仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和出口,则称这个程序为结构化的。

它的原则可以概括为自顶向下、逐步求精、模块化和限制使用GOTO语句。

8. 概要设计阶段?概要设计的任务①设计软件系统结构②数据结构及数据库库设计③编写概要设计文档④评审设计过程①设想供选择的方案②选取最佳的方案③功能分解④设计软件结构⑤数据库设计⑥制定测试计划⑦书写文档⑧审查和复审。

软件工程复习要点

软件工程复习要点

题型1、名词说明2、问答题3、应用题(看图题,分析题,计算题)学问点:1、什么是软件及软件特点,软件的分类软件是计算机系统中和硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合软件的特点(1)软件是一种逻辑实体。

(2)软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造。

(3)软件维护和硬件的修理有着本质的差别。

(4)软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依靠性。

(5)软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制。

(6)软件的开发是一个困难的过程。

(7)软件的成本特殊昂扬软件的分类1.基于软件功能的划分系统软应用软件支撑软件2.基于软件工作方式的划分实时处理软件分时软件交互式软件批处理软件2、什么是软件危机,起因一方面软件特殊困难,价格昂贵,供需差日益增大,另一方面软件开发时又常常受挫,质量差,指定的进度表和完成日期很少能按时实现,研制过程很难管理,即软件的研制往往失去限制。

我们称软件开发和维护过程中所中遇到的这一系列严峻问题为软件危机。

软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

3、什么是软件工程,它的基本目标,要素,原则(1)软件工程是指探讨软件生产的一门学科,也就是将完善的工程原理应用于经济地生产既牢靠又能在实际机器上有效运行的软件。

(2)软件工程学探讨的基本目标是:定义良好的方法学,面对支配,开发维护整个软件生存周期的方法学;确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹;可预料的结果,在生存周期中,每隔确定时间可以进行复审(3)软件工程的原则:分解;抽象和信息隐藏;一样性;确定性4、什么是软件生命周期,每个阶段的意义理解如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生命周期。

1.软件定义时期(1)问题定义:这是软件生存期的第一个阶段,主要任务是弄清用户要计算机解决的问题是什么。

软件工程复习知识点

1.软件危机的概念,内容,原因及消除的途径;软件危机的概念:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题;概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;软件危机产生的原因:软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确;消除软件危机的途径:1对计算机软件应当有一个正确的认识;2应当有组织、有计划、通过严格的管理手段进行软件的开发;3及时总结软件开发的成功技术和方法并加以推广;4开发和使用更好的软件工具;总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施;2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科;基本原理:软件工程的7条基本原理:1用分阶段的生命周期计划严格管理2坚持进行阶段评审3实行严格的产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应该少而精7承认不断改进软件工程实践的必要性3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型;软件工程方法学包含3个要素:方法、工具和过程;内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学;传统方法学也称为生命周期方法学或结构化范型;4.软件生命周期的具体内容,每一个阶段的任务是什么结合具体的工程例子来理解做软件项目主要分那几个个阶段;①问题定义:确定要求解决的问题是什么②可行性研究:决定该问题是否存在一个可行的解决办法③需求分析:深入了解用户的要求,在要开发的目标系统必须做什么问题和用户取得完全一致的看法;④概要设计:概括回答怎样实现目标系统;概要设计又叫逻辑设计、总体设计、高层设计;⑤详细设计:把解法具体化,设计出程序的详细规格说明;详细设计也叫模块设计、底层设计;⑥编码和单元测试:编写程序的工作量只占软件开发全部工作量的10%-20%;⑦综合测试:软件测试的工作量通常占软件开发全部工作量的40%-50%;⑧软件维护:软件维护的费用通常占软件总费用的55%-70%;①②③为软件定义时期,④⑤⑥⑦为软件开发阶段;④⑤为系统设计,⑥⑦为系统实现;5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;瀑布模型内容:瀑布模型是带“反馈环”的;优点:1可强迫开发人员采用的规范的方法结构化技术;2严格地规定了每个阶段必须提交的文档;3要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;缺点:瀑布模型是由文档驱动的;1开发过程一般不可逆,否则代价太大;2实际的项目开发过程很难严格按照模型进行;3客户往往很难清楚地给出所有需求,而该模型却要求如此;4软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心;快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;不带反馈环优点:软件产品的开发基本上是线性顺序进行的;1可以得到比较良好的需求定义,容易适应需求的变化;2有利于开发与培训的同步;3开发费用低、开发周期短且对用户更友好;缺点:1客户与开发者对原型理解不同;2准确的原型设计比较困难;3不利于开发人员的创新;增量模型也称为渐增模型;使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试;优点:在较短时间内可以向用户提交可完成部分工作的产品,逐步增加产品功能可以使用户有比较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击;1人员分配灵活,刚开始不用投入大量资源;2如果核心产品很受欢迎,则可增加人力实现下一增量;3可先发布部分功能给客户,对客户起到镇定剂的作用;缺点:1并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构2增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程失去整体性;螺旋模型的基本思想是使用原型及其他方法来尽量降低风险;理解这种模型的一种简便方法是把它看做在每个阶段之前都增加了风险分析过程的快速原型模型;优点:1设计上的灵活性,可以在项目的每个阶段进行变更;2以笑得分段来构建大型系统,使成本计算变得简单容易;3客户始终参与每个阶段的开发,保证项目不偏离正确的方向一击项目的可控性;4随着项目的推进,客户始终掌握项目的最新信息,从而他能够和管理层有效地交互;缺点:1采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标示风险,势必造成重大损失;2过多的迭代次数会增加开发成本,延迟提交时间;喷泉模型:喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各阶段可以相互重叠和多次反复,而且项目的整个生存期中还可以嵌入子生存期;就像水喷上去又可以落下来,可以落在中间,还可以落在底部;6.了解可行性研究中的任务和过程;用最小的代价在尽可能短的时间内确定问题是否能够解决;不是解决问题,而是确定问题是否值得去解决;可行性研究的根本任务:对以后的行动方案提出建议;实质:一次大大压缩简化了的系统分析和设计;任务:1.初步确定项目的规模,目标,约束和限制;2.在澄清了问题定义之后,分析员应该导出系统的逻辑模型;3.从系统逻辑模型出发,探索若干种可供选择的主要解法即系统实现方案;4.对每种解决方法都要研究它的可行性;技术可行性、经济可行性、操作可行性过程:1.复查系统规模和目标访问关键人员,描述目标系统的限制和约束;2.研究目前正在使用的系统:现有系统的问题;3.导出新系统的高层逻辑模型;4.进一步定义问题;5.导出和评价供选择的解法;6.推荐行动方针;7.草拟开发计划;8.书写文档提交审查;7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图p388.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图P409.掌握数据字典的内容、方法、用户和实现p47内容:数据字典由4类元素定义组成;1数据流;2数据流分量即数据元素;3数据存储;4处理;定义数据的方法:数据字典中的定义就是对数据自顶向下的分解;由数据元素组成数据的方式只有下述3种基本类型:顺序选择重复用途:作为分析阶段的工具;实现:P4910.了解成本/效益分析方法p50货币的时间价值投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间纯收入:整个生存周期之内的累计经济效益折成现在值-投资;投资回收率:现在的投资额P和估算出的将来每年的收益Fn,假设系统的使用寿命为n年;11.了解需求分析过程中任务是什么.p471.确定对系统的综合要求功能需求;指定系统必须提供的服务性能需求;指定系统必须满足的定时约束或容量约束可靠性和可用性需求;应定量指定出错处理需求;指环境错误,非系统本身的错误;2.分析系统的数据要求接口需求;常见的接口需求有:用户接口需求、硬件接口需求、软件接口需求、通信接口需求; 约束;常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台;逆向需求;说明软件系统不应该做什么;将来可能提出的要求;3.导出系统的逻辑模型;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;4.修正系统开发计划;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;12.理解面向数据流自顶向下逐步求精的方法和意义;p59结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法;通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级;方法:为了达到这个目标,通常从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出,输出数据决定了系统必须具有的最基本的组成元素;意义:1对数据流图细化之后得到一组新的数据流图,不同的系统元素之间的关系变得更清楚了; 2对这组新数据流图的分析追踪可能产生新的问题,这些问题的答案可能又在数据字典中增加一些新条目,并且可能导致新的或精化的算法描述;3随着分析过程的进展,经过提问和解答的反复循环,分析员越来越深入具体地定义目标系统,最终得到对系统数据和功能要求的满意了解;13.理解分析及建模的意义,需求分析中应该建立哪三种模型有哪些工具来帮助建立这些模型14.需求分析需要建立三种模型:1.数据模型:实体-联系图E-R数据对象即实体之间的关系2.功能模型:数据流图DFD系统对数据进行变换的功能3.行为模型:状态转换图系统的各种状态行为模式及状态之间的转换15.掌握实体关系E-R图的概念,内容和实现方法,能结合具体实例建立实体关系图;P6216.掌握状态图的概念,内容,实现方法和作用;p6517.掌握层次方框图、warnier图、IPO图的概念,内容和作用p6818.有穷状态机的概念和内容;Petri的概念;P77有穷状态机:状态集、输入集、转换函数、初始态、终态集Petri:P8219.总体设计是做什么总体设计的过程是怎样的P9120.总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求;总体设计通常由两个过程组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;典型的设计过程包括:1.设想选择的方案2.选取理想的方案3.推荐最佳方案4.功能分解5.设计软件结构6.设计数据库7.制定测试计划8.书写文档9.省查和复审21.掌握软件设计的几个设计原理,理解他们的内容和意义;p941模块化就是把程序划分成独立命名且可独立访问的;2抽象;3逐步求精;4信息隐藏和局部化;5模块独立;它有两个定性标准度量:内聚和耦合;22.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;耦合:耦合是对一个软件结构内不同模块之间互连程度;内聚:内聚标志着一个模块内各个元素彼此结合的紧密;耦合是影响软件复杂程度的一个重要因素;设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度并且降低模块间的耦合程度,从而获得较高的模块独立性;23.耦合包含了哪些类型每个类型的具体内容是什么由低到高24.1非直接耦合:就是没有耦合;2数据耦合:就是参数传递耦合,它属于低级别耦合;3标记耦合:标记耦合指两个模块之间传递的是数据结构;4控制耦合:它属于中级别耦合,比如调度程序与进程之间的耦合,就是控制耦合;5外部耦合:属于高级别耦合6公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合;7内容耦合:属于最高级别耦合,例如,一个模块利用分支或跳转技术,转入到另一个模块中去执行,就是内容耦合;25.启发性规则的内容及部分概念;1.改进软件结构提高模块独立性2.模块规模应该适中3.深度、宽度、扇出和扇入都应适当4.模块的作用域应该在控制域之内5.力争降低模块接口的复杂程度6.设计单入口单出口的模块7.模块功能应该可以预测26.层次图、HIPO图和结构图的内容;p10227.掌握面向数据流的设计方法,怎样用变换分析法基于数据流图设计出软件总体结构了解其中涉及到的概念,结合例子理解具体是怎么做的;p104概念:面向数据流的设计方法把信息流映射成软件结构,信息流决定了映射的方法,信息流有两种类型:1、信息沿输入通路进入系统,同时由外部形式变换成内部,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统;当数据流图具有这些特征时,这种信息流就叫做变换流;2、数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行;这类数据流应该划为一类特殊的数据流,称为事务流;28.详细设计是做什么p117详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,即经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某些程序设计语言书写的程序;29.什么是结构程序设计p117结构程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句;30.人机界面设计问题包含哪些p1221、系统响应时间;2、用户帮助设施;3、出错信息处理;4、命令交互31.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD图的概念和内容;掌握判定表的概念和内容;要结合实例来掌握它们;P12432.结合Jackson图来掌握面向数据结构的设计方法;p13033.如何度量程序算法的复杂性p13634.掌握几种测试:单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术;掌握它们的概念,内容和方法;P14635.理解软件维护的定义、特点和维护过程;P189定义:在软件已交付使用之后,为了改正错误或满足新的需要而修改软件的过程;特点:1结构化维护与非结构化维护差别巨大2维护的代价高昂3维护的问题很多维护过程:1、维护组织2、维护报告3、维护的事件流4、保存维护记录5、评价维护活动;36.掌握面向对象方法学的要点,理解面向对象方法学的优点;P203四个要点:对象、类、继承、消息优点:1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好6、掌握面向对象的概念;37.掌握面向对象的概念;P209对象对象的形象表示,对象的定义,对象的特点其他概念类,实例,消息,方法,属性,封装,继承,多态性,重载38.面向对象建模是建立哪三个模型它们的具体内容是什么P21539.1、描述系统数据结构的对象模型类图:表示静态的、结构化的系统的“数据”性质;它是对模拟客观世界实体的对象彼此间的关系的映射,描述了系统的静态结构;2、描述系统控制结构的动态模型状态转换图:动态模型表示瞬时的,行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;3、描述系统功能的功能模型用例图,数据流图:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求;40.建立对象模型的内容是什么P235建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则;也就是说,需要用适当的建模语言来表达模型,建模语言由记号即模型中使用的符号和使用记号的规则语义、语法和语用组成;41.掌握用UML提供的类图来建立对象模型的方法;理解类图的定义、基本符号和具体内容;类图建立对象模型的方法:1、定义类2、定义属性3、定义服务4、定义类与类之间的各种关系关联、泛化、依赖和细化;类图的定义:类图描述类与类之间的静态关系;类图是一种静态模型,它是创建其他UML图的基础;基本符号:UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域下面两个区域可省略3个区域分别放类的名字、属性和服务;42.能结合实例掌握类图中类与类之间的关系:关联、泛化继承、依赖和细化;能根据实例情况正确判断出类与类之间的具体关系类型;关联:关联表示两个类的对象之间存在某种语义上的联系;泛化继承:UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系;具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息;泛化关系指出类与类之间存在“一般-特殊”关系;泛化可进一步分成普通泛化和受限泛化;依赖:描述两个模型元素类、用例等之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它是依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素;细化:当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系;43.动态模型的概念、内容;P223概念:动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;内容:动态模型是基于事件共享而互相关联的一组状态图的集合;44.功能模型的概念、内容和建立功能模型的方法;P224概念:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此直接地反应用户对目标系统的需求;内容:功能模型由一组数据流图组成;用例图也是进行需求分析和建立功能模型的强有力工具;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;45.掌握用例图的概念、内容和方法;P224概念:用例图包括模型元素有系统、行为者、用例和用例之间的关系;内容:系统、用例、行为者、用例之间的关系;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;46.掌握面向对象分析的基本过程:三个子模型与5个层次;P232三个子模型:静态结构对象模型交互次序动态模型数据变换功能模型复杂问题大型系统的对象模型通常由5个层次组成:主题层、类与对象层、结构层、属性层和服务层;47.结合实例来掌握面向对象分析过程中建立对象模型的方法包含哪些步骤;P231 1.首先,系统分析员要对需求文档进行分析;发现和改正需求文档中的歧义性、不一致性,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、更准确;2.然后,是需求建模;系统分析员根据提取的用户需求,即用面向对象观点建立对象模型、动态模型和功能模型;3.最后,是需求评审;通过用户、领域专家、系统分析员和系统设计人员的评审,并进行反复修改后,确定需求规格说明;48.结合实例来掌握面向对象分析过程中建立动态模型的方法包含哪些步骤;P24749.结合实例来掌握面向对象分析过程中建立功能模型的方法包含哪些步骤;P25350.能结合实例画事件跟踪图P24951.能结合实例画类的状态图P25052.能结合实例画出0层数据流图与功能级数据流图;P42。

[VIP专享]软件工程期末复习知识点整理

复习整理一、绪论 1.软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档)

2.软件工程的定义是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正确的管理技术和最好技术综合运用到软件开发中;研究经济地开发出高质量的软件方法和技术;研究有效维护软件的方法和技术。

3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。产生原因:⑴ 软件规模越来越大,结构越来越复杂⑵ 软件开发管理困难而复杂。⑶ 软件开发费用不断增加。⑷ 软件开发技术落后。⑸ 生产方式落后,仍采用手工方式。⑹ 开发工具落后,生产率提高缓慢。

4.三种编程范型的特点(1) 过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2) 面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3) 基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大

二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)

2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:软件定义:问题定义、可行性研究;软件开发:需求分析、概要设计、详细设计、编码、测试;软件运行:软件维护

软件工程复习

软件工程复习一、引言软件工程是一门涵盖软件开发全过程的学科,它研究如何通过系统化的方法去开发、维护和管理软件。

在软件工程的学习和实践中,掌握相关知识和技能是必不可少的。

本文将系统回顾软件工程的重要知识点,以帮助读者全面复习和巩固相关内容。

二、软件开发生命周期1. 需求分析阶段在软件开发过程中,需求分析阶段是至关重要的。

它主要包括对用户需求进行调研、需求澄清和需求规格说明书编写等工作。

需求分析的准确性和完整性直接影响后续开发工作的顺利进行。

2. 系统设计阶段系统设计是指根据需求分析结果,制定软件的整体架构和模块设计。

在设计阶段,需考虑软件的可扩展性、可维护性和可重用性等因素,以确保软件的高质量和可靠性。

3. 编码与单元测试阶段在编码阶段,开发人员需要根据系统设计的要求,使用特定的编程语言来实现软件功能。

为了保证代码的质量,单元测试是必不可少的环节,它用于测试各个模块的功能是否正常,以及处理异常情况的正确性。

4. 集成与测试阶段在集成和测试阶段,开发人员需要将各个模块进行整合,并对整个系统进行全面的测试。

测试的目的是发现和解决潜在的缺陷和问题,以确保整个系统的稳定性和可靠性。

5. 部署与维护阶段当软件开发完成后,需要将其部署到目标环境中,并进行后续的维护工作。

维护阶段包括对软件功能的修复、更新和性能的优化等,以适应用户需求的变化。

三、软件工程方法与模型1. 瀑布模型瀑布模型是软件工程中最经典的开发模型之一,它以阶段性的方式进行软件开发,每个阶段的输出作为下一个阶段的输入。

瀑布模型适用于需求稳定和开发周期长的项目。

2. 敏捷开发敏捷开发是一种迭代增量的开发方法,强调与客户的密切合作和快速响应变化。

敏捷开发适用于需求不确定和开发周期短的项目。

3. 原型模型原型模型是一种通过迅速构建原型来收集用户反馈和需求的方法。

它适用于需求不明确或需求难以获取的项目。

4. V模型V模型是一种与瀑布模型相对应的测试和验证模型,它强调开发和测试的同步进行。

软件工程复习

软件工程复习软件工程是计算机科学的一个分支,旨在开发和维护高质量的软件系统。

在软件工程的学习过程中,我们需要掌握各种概念、原理和方法,以便能够设计、开发和管理软件项目。

本文将对软件工程的基本概念和重要内容进行复习总结。

一、概述软件工程是一门涉及软件开发生命周期的学科,它涵盖了需求分析、设计、编码、测试、维护等步骤。

其目标是通过系统化的过程和方法来提高软件开发的效率和质量。

二、软件开发生命周期1. 需求分析:确定软件系统的功能需求和性能需求,为后续开发提供基础。

2. 设计:根据需求分析的结果,进行系统架构设计和模块设计,确定软件的整体结构和各个模块的功能。

3. 编码:根据设计文档进行具体编码工作,实现软件功能。

4. 测试:对编码完成的软件进行功能测试、性能测试和安全性测试,确保软件的质量。

5. 维护:在软件发布后,对其进行修复漏洞、改进功能等维护工作,使软件能够持续发挥价值。

三、软件需求工程1. 需求获取:通过与用户和相关利益相关者的沟通,收集软件系统的需求信息。

2. 需求分析与规格说明:对需求进行分析,明确需求的优先级和约束条件,撰写需求规格说明文档。

3. 需求验证:通过需求验证技术和方法,确认需求规格说明文档的正确性和完整性。

四、软件设计原则与模式1. 单一职责原则(SRP):一个类或模块应该有且只有一个责任。

2. 开放封闭原则(OCP):一个软件实体应该对扩展是开放的,对修改是封闭的。

3. 里氏替换原则(LSP):所有使用基类对象的地方,都可以用其子类对象来替换。

4. 依赖倒置原则(DIP):高层模块不应该依赖底层模块,二者都应该依赖其抽象。

5. 接口隔离原则(ISP):使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。

6. 迪米特法则(LoD):一个对象应该对其他对象保持最少的了解。

五、软件质量与测试1. 功能测试:验证软件是否满足用户需求。

2. 性能测试:验证软件在预期负载下的性能表现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

广东工业大学计算机学院
13
软件维护
软件维护 软件可维护性相关因素 提高软件可维护性方法 软件维护分类
2019/9/28
广东工业大学计算机学院
14
项目管理
如何进行有效的项目管理
2019/9/28
广东工业大学计算机学院
15
软件工程
Software Engineering
2019/9/28
广东工业大学计算机学院
1
绪论
软件危机 原因、表现、解决方法
软件生命周期模型: (优缺点、适用的开发场景) 迭代模型、瀑布模型、原型模型、增量模型、螺
旋模型、喷泉模型。
2019/9/28
广东工业大学计算机学院
2
可行性研究、需求分析
2. 图书馆管理员处理借书、还书 的用例图
3. 系统管理员进行系统维护的用例 图
面向对象分析
事件跟踪图(时序图、顺序图) 编写脚本 画事件跟踪图
2019/9/28
广东工业大学计算机学院
11
洗衣机事件跟踪图
2019/9/28
广东工业大学计算机学院
12
ATM系统 事件跟踪图
2019/9/28
需求分析 难点,解决方法
数据流图的绘制
源点、终点、数据流、处理
实体联系图
数据对象、属性、联系
2019/9/28
广东工业大学计算机学院
3
软件测试(测试用例设计)
白盒测试 条件覆盖、判断覆盖、条件组合覆盖
黑盒测试 等价类划分,边界值分析
2019/9/28
广东工业大学计算机学院
4
面向对象分析
对象模ห้องสมุดไป่ตู้ 类图
2019/9/28
广东工业大学计算机学院
5
先看清有哪 些类,然后 看看类之间 存在的关系 ,并结合多 重性来理解 类图的结构 特点以及各 个属性和方 法的含义
面向对象分析
用例图 寻找行为者 寻找用例
2019/9/28
广东工业大学计算机学院
7
1. 借阅者请求服务的用例图
相关文档
最新文档