软件工程复习的几个知识点和例题
《软件工程》经典考试例题题,重点的知识点(含答案)
1.某旅馆的电话服务如下:可以拨分机号和外线号码。
分机号是从7201至7299。
外线号码先拨9,然后是市话号码或长话号码。
长话号码是以区号和市话号码组成。
区号是从100到300中任意的数字串。
市话号码是以局号和分局号组成。
局号可以是455,466,888,552中任意一个号码。
分局号是任意长度为4的数字串。
要求:写出在数据字典中,电话号码的数据流条目的定义即组成。
电话号码=[分机号|外线号码]分机号=7201 (7299)外线号码=9+[市话号码|长话号码]长话号码=区号+市话号码区号=100 (300)市话号码=局号+分局号局号=[455|466|888|552]分局号=4{数字}4数字=[0|1|2|3|4|5|6|7|8|9]2.为以下程序流程图分别设计语句覆盖和判定覆盖测试用例,并标明程序执行路径。
(1)语句覆盖测试用例令x=2,y=0,z=4作为测试数据,程序执行路径为abcde。
(2)判定覆盖可以设计如下两组数据以满足判定覆盖:x=3,y=0,z=1(1分)(通过路径abce);x=2,y=1,z=2(1分)(通过路径acde)。
或者x=2,y=1,z=1;覆盖路径acdex=1,y=1,z=1;覆盖路径acex=3,y=0,z=1;覆盖路径abce(注意:本题也还可以有其他答案)3.请用判定表画出以下问题的行为逻辑。
人们往往根据天气情况决定出门时的行装。
天气可能下雨,也可能不下雨;下雨或不下雨天气可能变冷,也可能不变冷。
如果天气要下雨,出门时带上雨伞;如果天气变冷,出门时要穿上大衣。
4.对下列子程序进行调试:procedure example(y,z: real; var x: real)beginif (y>1)and (z=0) then x:=x/y;if (y=2) or (x>l) then x:=x+l;end.该子程序接受x, y, z的值,并将计算结果x的值返回给调用程序。
软件工程知识点汇总
软件工程知识点汇总软件工程知识点汇总
1、软件需求
1.1 需求概述
1.2 需求分类
1.3 需求获取与分析
1.4 需求规格说明
2、软件设计
2.1 面向对象设计
2.2 结构化设计
2.3 数据库设计
2.4 用户界面设计
2.5 系统架构设计
3、软件编码
3.1 编程语言选择与使用
3.2 编码规范
3.3 软件开发环境
3.4 编码工具和技术
3.5 调试和测试
4、软件测试
4.1 测试基础知识
4.2 测试方法与策略
4.3 白盒测试
4.4 黑盒测试
4.5 功能性测试
4.6 性能测试
4.7 集成测试
4.8系统测试
4.9用户验收测试
5、软件项目管理
5.1 项目计划与进度管理 5.2 风险管理
5.3 人员管理
5.4 项目质量管理
5.5 变更管理
5.6 项目交付与部署
6、软件维护与升级
6.1 软件维护分类
6.2 软件维护流程
6.3 软件升级策略
6.4 软件版本控制
7、软件安全
7.1 信息安全基础知识
7.2 软件安全需求与设计
7.3 安全测试与评估
7.4 安全漏洞修复与更新
附件:
法律名词及注释:
1、版权: 对一种表达形式的独特创造进行保护的法律概念。
2、商标: 表示和区分特定商品或服务来源的标识符。
3、专利: 对于新发明的独特权利,使得发明人可以禁止他人在专利权期限内使用该发明。
4、法律责任: 违反法律规定而应承担的法律后果。
软件工程复习资料
软件⼯程复习资料软件⼯程第⼀章⼀、什么是软件?软件(Software)是计算机系统中与硬件相互依存的另⼀部分,它是包括程序(Program),数据(Data)及其相关⽂档(Document)的完整集合。
程序是按事先设计的功能和性能要求执⾏的指令序列数据是使程序能正常操纵信息的数据结构⽂档是与程序开发,维护和使⽤有关的图⽂材料⼆、软件危机原因:与软件本⾝的特点有关(难于维护, 逻辑复杂)与软件开发与维护的⽅法不正确有关:软件≠程序急于求成=拔苗助长各⾃为阵⽆⽅法/学现象:1.成本⾼2.计算机软件和硬件费⽤⽐3.软件质量得不到保证4.由于软件质量问题导致失败的软件项⽬⾮常多5.进度难以控制6.维护⾮常困难办法:软件⼯程(学)三、软件⼯程软件⼯程是应⽤计算机科学、数学及管理科学等原理开发软件的⼯程。
它借鉴传统⼯程的原则、⽅法,以提⾼质量,降低成本为⽬的。
开发、运⾏和维护软件的系统⽅法四、软件⼯程三要素软件⼯程⽅法学包含3个要素:⽅法、⼯具和过程。
五、软件⽣命周期六、软件过程模型瀑布模型瀑布模型适合于⽤户需求明确、完整、⽆重⼤变化的软件项⽬开发。
瀑布模型的成功在很⼤程度上是由于它基本上是⼀种⽂档驱动的模型。
“瀑布模型是由⽂档驱动的”这个事实也是它的⼀个主要缺点。
在项⽬开始的时候,⽤户常常难以清楚地给出所有需求;⽤户与开发⼈员对需求理解存在差异。
实际的项⽬很少按照顺序模型进⾏。
⽤户必须有耐⼼,等到系统开发完成。
缺乏灵活性:因为瀑布模型确定了需求分析的绝对重要性,但是在实践中要想获得完善的需求说明是⾮常困难的,导致“阻塞状态”。
反馈信息慢,开发周期长。
虽然存在不少缺陷,瀑布模型经常被嘲笑为“旧式的”,但是在需求被很好地理解的情况下,仍然是⼀种合理的⽅法。
快速原型模型增量模型增量模型是迭代和演进的过程。
增量模型把软件产品分解成⼀系列的增量构件,在增量开发迭代中逐步加⼊。
每个构件由多个相互作⽤的模块构成,并且能够完成特定的功能。
软件工程复习提纲
软件工程复习提纲第一篇:软件工程复习提纲《软件工程》课程要点λ每章教学课件中的“本章小结”列出了需要掌握的内容λ教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);(2)软件危机的含义、表现、产生原因(客观、主观)(3)软件工程学科包括的内容、解决的主要问题(4)软件生命周期的含义、组成阶段及各阶段主要任务2.需理解的问题:(1)软件与程序的区别和联系?(2)开发一个软件项目包括哪些基本的步骤?每一步骤完成哪些工作?(3)主要的软件过程模型(生命周期模型)有哪些?各自有什么特点?二、结构化分析-面向数据流的分析方法1.什么是软件需求?需求分析过程(步骤)?2.需求分析模型:(1)功能模型(数据流图DFD)的含义、描述符号、画法步骤及规则(2)数据模型(E-R图)的作用(3)行为模型(状态转换图)的作用(4)数据字典的作用三、结构化设计1.软件设计的任务?结构化设计与结构化分析的区别和联系?2.软件设计遵循的基本原理及规则:(1)模块化的含义、如何划分模块(降低成本、提高独立性)?(2)抽象与逐步求精的含义、二者间关系如何?(3)信息隐藏的含义(4)如何完善软件结构(深度、宽度、扇入、扇出、作用域、控制域)? 3.模块独立性:(1)模块独立性含义?(2)模块独立性的度量标准:耦合的分类、含义及应用;内聚的分类、含义及应用。
4.概要设计(面向数据流的设计方法)(1)概要设计的任务?(2)数据流图的类型及特征(变换型、事务型)(3)变换分析设计方法的应用(步骤)(4)事务分析设计方法的应用(步骤)4.详细设计(过程设计)(1)详细设计的任务(2)结构化程序(设计)的特征(3)详细设计结果的描述工具:程序流程图、N-S图、PAD图、PDL、判定表四、软件测试1.软件测试基础(1)软件测试的含义和目的?(2)测试用例的内容(输入数据、预期输出结果)?(3)主要测试方法(黑盒测试、白盒测试)的含义?2.主要的白盒测试技术及应用-------逻辑覆盖法?基本路径测试方法? 3.主要的黑盒测试技术及应用-------等价类法? 边界值分析法?4.软件测试的过程?(1)单元测试(采用的测试方法;测试内容)(2)集成测试(采用的测试方法;测试内容;模块组装策略)(3)确认测试(采用的测试方法;测试内容;α测试与β测试?)(4)辅助模块的含义及作用(驱动模块、存根模块?)五、面向对象方法学基础 1.基本概念:(1)对象的含义及特点?(2)类的含义?类与对象的关系?(3)消息及消息传递的含义及作用?(4)继承的含义?多态性机制?2.面向对象建模技术中的三种模型及各自作用?3.对象模型及描述(类图):对象(类)的图形表示;关系(关联、聚集、继承)的图形表示; 4.事件追踪图、状态图、用例图的作用六、面向对象分析与设计过程1.面向对象分析(OOA)的任务?OOA的基本过程?2.面向对象设计(OOD)的主要任务?OOD与OOA的区别和联系?3.OOD模型的组成(四部分)及内容?七、软件维护1.软件维护的含义及类型? 2.软件维护过程?--------------- 课堂练习题目一、填空题1.软件主要包括程序、和三部分内容。
软件工程考点例题整理
软件工程考点例题整理1. 软件需求工程1.1 需求获取1.1.1 请简要介绍需求获取的主要方法。
需求获取是软件需求工程的第一步,其目标是收集、分析和验证用户和系统对软件的需求。
主要的需求获取方法包括:•面向用户的方法:例如面谈、问卷调查、观察、场景分析等。
•面向系统的方法:例如文档分析、数据分析、原型开发等。
•面向过程的方法:例如原型、模型、用例等。
1.1.2 请用一个例子说明需求获取方法的应用。
例如,在一个新的电商平台项目中,为了了解用户的需求,可以采用面谈的方法。
软件工程师可以与用户进行交流,了解他们对于电商平台的期望和需求。
通过面谈,工程师可以获得用户对于购物流程、支付方式、商品分类等方面的需求,进而将其作为软件开发的参考依据。
1.2 需求分析与建模1.2.1 什么是需求分析与建模?请简要描述其目的和步骤。
需求分析与建模是将需求进行详细分析并通过适当的模型进行描述的过程。
其目的是确定软件的功能、性能、约束等方面的需求,为软件设计与开发提供准确的参考。
需求分析与建模的步骤包括需求的可行性分析、需求的详细化、需求的验证以及需求的文档化。
1.2.2 请简要介绍几种常用的需求建模方法。
•用例图:用例图是描述系统功能和外部参与者之间交互的模型,用于表示系统的功能需求和参与者的角色与活动。
•静态建模:静态建模通过类图和对象图描述系统的静态结构,包括系统中的类、对象、关系等。
•行为建模:行为建模通过活动图、状态图、时序图等描述系统的动态行为,包括系统的业务流程、状态转换、消息传递等。
2. 软件设计2.1 面向对象设计2.1.1 什么是面向对象设计?请简要描述其基本原则。
面向对象设计是一种软件设计方法,将问题领域中的实体抽象成类,通过类之间的关系和交互来描述问题的解决方案。
面向对象设计的基本原则包括: - 单一职责原则:一个类应该只有一个变化的原因。
- 开放封闭原则:软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。
软件工程知识点总结
软件工程(简要知识点)软件生命周 期:软件定义 软件开发问题定义(确定题目) 可行性研究 需求分析 概要设计 系统设计 详细设计系统实现编码和单元测试 综合测试运行维护:主要任务是使软件持久地满足用户的需要一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。
2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点 2、处理 3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要 求。
2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
3、实体联系图:1、数据对象 2、属性 3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系 统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定 组成系统的每个程序结构。
2. 系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的 系统5. 内聚 (Cohesion): 一个模块内各元素结合的紧密程度6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计 工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译 成用某种程序设计语言书写的程序。
2.过程设计的工具(程序流程图、盒图、PAD 图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。
每个程序模块完成一个相对独立的子功能,所以 可以对该模块进行单独的测试。
由于每个模块都有清晰定义的功能,所以通常 比较容易设计相应的测试方案,以检验每个模块的正确性。
软件工程复习的几个知识点和例题
1.软件危机的概念,内容,原因及消除的途径;2.软件工程的定义,基本原理;3.软件工程方法学的基本概念、内容;4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个阶段。
5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;6.了解可行性研究中的任务和过程;7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图;8.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图;9.掌握数据字典的内容、方法、用途和实现;10.了解成本/效益分析方法;11.了解需求分析过程中任务是什么.12.理解面向数据流自顶向下逐步求精的方法和意义;13.理解分析及建模的意义,需求分析中应该建立哪三种逻辑模型?有哪些工具来帮助建立这些模型?14.掌握实体关系(E-R)图的概念,内容和实现方法,能结合具体实例建立实体关系图;15.掌握状态图的概念,内容,实现方法和作用;16.掌握层次方框图、warnier图、IPO图的概念,内容和作用;17.有穷状态机的概念和内容;18.总体设计是做什么?总体设计的过程是怎样的?总体结构设计的目的是什么?19.掌握几个设计原理,理解他们的内容和意义;20.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;21.耦合包含了哪些类型?每个类型的具体内容是什么?要求能通过程序代码识别出耦合类型。
内聚类型有哪些?具体内容?能识别应用。
22.启发性规则的内容及部分概念。
深度,宽度,扇入,扇出,模块的作用域,模块的控制域。
23.层次图、HIPO图和结构图的内容;24.掌握面向数据流的设计方法,了解其中涉及到的概念(变换流,事务流),结合例子理解变换分析的具体过程。
25.详细设计是做什么?26.什么是结构程序设计?27.人机界面设计问题包含哪些?28.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;N-S盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD 图的概念和内容;掌握判定表的概念和内容。
软件工程复习的几个知识点和例题
软件工程复习的几个知识点和例题1.2.3.4.软件危机的概念、内容、原因及解决方案;软件工程的定义和基本原理;软件工程方法学的基本概念、内容;软件生命周期的具体内容和每个阶段的任务是什么?结合具体工程实例,了解软件项目的主要阶段。
5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;6.了解可行性研究中的任务和过程;7.掌握系统流程图的概念和方法,能够从具体案例中抽象出系统流程图;8.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图;9.掌握数据字典的内容、方法、用户和实现;10.了解成本/效益分析方法;11.理解需求分析过程中的任务12.理解面向数据流自顶向下逐步求精的方法和意义;13.理解分析和建模的重要性。
在需求分析中应该建立哪三个模型?有哪些工具可以帮助构建这些功能模型?14.掌握实体关系(E-R)图的概念、内容和实施方法,并能结合具体实例建立实体关系图;15.掌握状态图的概念、内容、实现方法和功能;16.掌握层次方框图、warnier图、ipo图的概念,内容和作用;17.有穷状态机的概念和内容;18.总体设计是什么?整个设计过程是什么?整体结构设计的目的是什么?19.掌握若干设计原则,理解其内容和意义;20.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;21.包括哪些类型的联轴器?每种类型的具体内容是什么?需要通过程序代码识别联轴器类型。
22.启发式规则的内容和一些概念。
23.层次结构图、HIPO图和结构图的内容;24.掌握面向数据流的设计方法,了解其中涉及到的概念(变换流,事务流),结合例子理解决方案转换分析的具体过程。
25.详细设计的目的是什么?26.什么是结构性规划?27.人机界面设计问题包含哪些?28.掌握设计过程中使用的工具:程序流程图的概念、内容和方法;方框图的概念、内容和方法法;会结合实例使用这些工具;掌握pad图的概念和内容;掌握判定表的概念和内容。
软件工程复习要点
题型1、名词说明2、问答题3、应用题(看图题,分析题,计算题)学问点:1、什么是软件及软件特点,软件的分类软件是计算机系统中和硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合软件的特点(1)软件是一种逻辑实体。
(2)软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造。
(3)软件维护和硬件的修理有着本质的差别。
(4)软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依靠性。
(5)软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制。
(6)软件的开发是一个困难的过程。
(7)软件的成本特殊昂扬软件的分类1.基于软件功能的划分系统软应用软件支撑软件2.基于软件工作方式的划分实时处理软件分时软件交互式软件批处理软件2、什么是软件危机,起因一方面软件特殊困难,价格昂贵,供需差日益增大,另一方面软件开发时又常常受挫,质量差,指定的进度表和完成日期很少能按时实现,研制过程很难管理,即软件的研制往往失去限制。
我们称软件开发和维护过程中所中遇到的这一系列严峻问题为软件危机。
软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
3、什么是软件工程,它的基本目标,要素,原则(1)软件工程是指探讨软件生产的一门学科,也就是将完善的工程原理应用于经济地生产既牢靠又能在实际机器上有效运行的软件。
(2)软件工程学探讨的基本目标是:定义良好的方法学,面对支配,开发维护整个软件生存周期的方法学;确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹;可预料的结果,在生存周期中,每隔确定时间可以进行复审(3)软件工程的原则:分解;抽象和信息隐藏;一样性;确定性4、什么是软件生命周期,每个阶段的意义理解如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生命周期。
1.软件定义时期(1)问题定义:这是软件生存期的第一个阶段,主要任务是弄清用户要计算机解决的问题是什么。
软件工程总复习
分析过程
重构类图,构造整个系统的分析模型
41
面向对象设计(20%)
基本设计原则 经典设计模式 职责
26
UML
UML 5类9种图 类 图:类以及类之间的相互关系 对象图:对象以及对象之间相互关系 构件图:构件及其相互依赖关系 部署图:构件在各节点上的部署 顺序图:强调时间顺序的交互图 协作图:强调对象协作的交互图 状态图:类所经历的各种状态 活动图:对工作流建模 用例图:需求捕获,测试依据
44
面向对象设计
设计模式基本思想?
① 松耦合 ② 针对接口编程,而不是针对实现编程 ③ 继承、组合、委托、多态、参数化
如何应用设计模式
“任何问题都可以通过增加一个间接层次 来解决。”(抽象层) 这话不是严格的正确,但是经常是解决问 题的有效指导思想
45
面向对象设计
GoF 23种经典设计模式 创建型
4
软件工程概述
什么是软件?软件的特征 ?
(1) 能够完成预定功能和性能的可执行指令; (2) 使得程序能够适当地操作信息的数据结构; (3) 描述程序的操作和使用的文档。
Software = Program + Data + Document
软件的特征(与硬件相比)
① 软件是逻辑的,而不是物理的产品。 ② 软件是由开发或工程化而形成的,没有明显的制造过程。 ③ 软件在运行和使用期间,不存在硬件那样的磨损和老化问题, 但它存在退化问题,开发人员必须维护软件 …… 硬件与软件的最大区别
软件工程复习知识要点
1 软件和软件工程概念软件的组成部分之一;在软件开发中,编程只是软件开发过程的一个阶段。
2.在结构化程序设计时代,程序最小的单位是函数及子程序,程序和数据是分别的。
程序的最小单位是类。
3.软件的特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。
4.软件的分类:系统软件;应用软件;支撑软件;可复用软件。
5.什么是软件工程?(课后题)软件工程是指导计算机软件开发和维护的工程学科。
接受工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
6.可以用功能性、牢靠性、易用性、效率、可维护性和可移植性六个特性衡量软件的质量。
功能性是指软件所实现的功能达到它的设计规范和满意用户需求的程度。
可移植性是指软件从某一环境转移到另一环境时所作努力得程度。
7.软件生存期由软件定义、软件开发和运行维护三个时期组成。
开发时期通常由概要设计、详细设计、编码和测试四个阶段组成。
开发过程中的典型文档包括:项目支配、软件测试支配、软件设计说明书、用户手册。
8.需求分析的基本任务?(1)建立分析模型,了解系统的各种需求微小环节。
(2)基于分析结果,编写出软件需求规格说明或系统功能规格说明,确认测试支配和初步的系统用户手册,并提交管理机构进行分析评审。
2 软件工程方法和工具1.面对对象方法的动身点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类相识问题和解决问题的方法和过程,从而使描述问题的问题空间和其解空间在结构上尽可能一样。
2.形式化方法的主要特点是:(课后题)(1) 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;(2) 设计、实现和单元测试等开发过程由一个变换开发过程代替。
通过一系列变换将形式的规格说明细化成为程序。
3.面对对象 = 对象 + 类 + 继承 + 消息通信。
《软件工程》重点考试知识点,简答
第一章1、软件概念:由计算机程序,数据,软件文档组成软件的特点:无法直接观察它的物理形态,只能通过观察他的是实际运行情况来了解他的功能特性和质量等;人们在分析设计开发测试过程以及软件开发项目的管理过程中渗透了大量的人类的脑力劳动;不存在磨损和老化但存在缺陷维护和技术更新的问题;开发运行依赖一定的计算机系统环境;具有可复用性软件的分类:按功能分:系统支撑应用软件;按服务对象:通用定制软件;按规模:大中小型软件;按工作方式:实时分时交互式批处理2、软件危机:是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件的开发与维护过程中出现一系列严重问题的现象。
主要表现:●开发人员开发的软件产品不能完全满足用户的需求;●软件产品的质量难以得到保障;●开发周期开发经费和维护费用很难被准确估计从而给项目的管理带来很多麻烦;●随着技术的更新,用户的扩大,已有的软件产品不能灵活地适应环境的改变;●软件文档不完备并且存在文档内容与软件产品不符的情况。
原因:①软件开发是一项复杂的工程,需要用科学的工程化思想来组织和指导软件开发的各个阶段②没有完善的质量保证体系③软件文档的重要性没有得到软件开发人员和用户的足够重视④从事软件开发的专业人员对这个产业认识不够充分缺乏经验⑤软件独有的特点也给软件的开发和维护带来困难3、软件工程是指应用计算机科学与技术,数学和管理学的原理,运用工程学理论方法和技术,研究和指导软件开发和演化的一门交叉学科。
软件工程的目标:●使软件开发的成本控制在预计的合理范围内;●使软件产品的各项功能和性能能够满足用户需求;●提高软件产品的可靠性;●使生产出来的软件产品易于移植维护升级和使用;●使软件产品的开发周期能够控制在预计的合理时间范围内。
软件工程学科内容:●软件工程原理过程方法模型管理度量环境应用。
软件工程的基本原则:●将软件的生命周期划分为多个阶段,对各个阶段实施严格的项目管理;●坚持阶段评审制度已确保软件产品的质量;●实施严格的产品控制以适应软件规格的变更;●采用现代程序设计技术;开发出来的产品应该能够清楚地被审查;●合理地安排软件开发小组人员并且开发小组的人员要少而精;●不断改进软件工程的实践。
软件工程必考知识点(一)
软件工程必考知识点(一)软件工程必考知识点详解软件工程概述•软件工程定义:软件工程是一门研究和使用工程原理、方法和工具来进行软件开发和维护的学科。
•软件工程目标:提高软件的质量、降低开发成本、缩短开发周期。
•软件工程生命周期:软件需求分析、软件设计、软件编码、软件测试、软件维护。
软件需求工程•软件需求定义:需求是对软件产品或系统应具备的功能、性能、界面等方面的描述。
•软件需求分类:功能性需求、非功能性需求、用户需求、系统需求、设计约束等。
•需求获取方法:面谈、观察、问卷调查、原型法、场景法、用户故事等。
软件设计原理•软件设计定义:软件设计是根据需求分析的结果,对软件进行整体结构和模块的设计,并确保满足质量要求。
•软件设计原则:高内聚低耦合、开闭原则、单一职责原则、接口隔离原则、依赖倒置原则等。
•设计模式:单例模式、工厂模式、适配器模式、观察者模式、装饰器模式等。
软件开发方法•瀑布模型:线性的开发过程,依次进行需求分析、设计、编码、测试和维护。
•增量模型:将软件开发过程划分为多个增量,每个增量逐步完善软件功能。
•原型模型:快速创建原型,通过用户反馈进行迭代开发。
•敏捷开发:迭代开发,强调个体和团队的互动、合作和响应变化。
软件测试方法•软件测试定义:通过执行软件系统或组件,以评估其特性是否满足特定的需求。
•黑盒测试:只关注软件的输入和输出,不考虑内部实现。
•白盒测试:详细了解程序内部结构,设计测试用例。
•单元测试:测试最小的可测试单元,如函数或模块。
•集成测试:将各个单元进行组合测试,测试模块之间的接口。
•系统测试:测试整个系统的功能和性能是否满足需求。
•验收测试:由用户验证软件是否符合需求。
软件维护与项目管理•软件维护类型:改错维护、适应性维护、完善性维护、预防性维护。
•软件项目管理:计划、组织、控制和监督软件开发活动。
•软件项目管理知识体系:范围管理、时间管理、成本管理、质量管理、风险管理等。
以上是软件工程必考的主要知识点,通过深入了解和掌握这些知识,可以提高软件开发和维护的能力,实现更高质量、更高效率的软件工程实践。
软件工程期末复习知识点整理
复习整理一、绪论1.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。
(软件=程序+文档)2.软件工程的定义●是指导计算机软件开发和维护的一门工程学科;●采用工程化的原理与方法对软件进行计划、开发和维护;●把证明正确的管理技术和最好技术综合运用到软件开发中;●研究经济地开发出高质量的软件方法和技术;●研究有效维护软件的方法和技术。
3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。
⑶软件开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4.三种编程范型的特点(1) 过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2) 面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3) 基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。
●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。
软工各章复习知识点
第4 章
1.学会使用有穷状态机描述一个系统。
2.应用形式化方法的准则。
第5 章
1.总体设计主要完成哪两项任务?每项任务主要 完成什么?
3.什么是软件生命周期?划分为哪些几个阶段?
解:(1)软件生命周期有软件定义、软件开发和运行维护三个时期组成,每个时期又进一步划分成若干个阶段。 (2)阶段:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。 4.软件工程方法学的3个要素;目前使用最广泛的软件工程方法学是什么?有哪些特点? 解:(1)工具,方法和过程。(2)传统方法学和面向对象方法学(3)特点: 传统方法学也称为生命周期方法学或结构化范型。它采用结构化 技术(结构化分析、结构化设计、结构程序设计和结构化测试)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支
3.单元测试的重点(5个方面)
4.什么是存根程序?什么是驱动程序?什么是回归 测试?什么是α测试?什么是β测试? 5.什么是白盒测试技术?在白盒法中典型的技术有 哪些?在实际中要会熟练应用。
6.什么是黑盒测试技术?在黑盒法中典型的技术有
哪些?在实际中要会熟练应用。
第8 章
1.什么是软件维护?它包括哪四项活动?
持结构化技术的运用。面向对象方法学: 当软件规模较大,或者对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往
往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。 5.典型的生命周期模型(或软件开发模型、过程模型)有哪些?说明其优缺点及适用范围。
软件工程基础知识
软件工程基础知识考点指导考点1 :软件工程和项目管理基础★★★考点点拨:本考点考查软件工程和软件生成周期的概念,常用的软件开发模型,以及软件开发项目管理基础知识。
【试题1】软件工程三要素是______。
A)技术、方法和工具 B)方法、工具和过程C)方法、对象和类 D)过程、模型、方法答案:B分析:软件工程三要素:方法、工具和过程。
软件工程方法为软件开发提供了“如何做”的技术。
软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。
软件工程过程定义了:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理以及软件开发各个阶段完成的工作。
理论链接:软件工程概述1.软件危机软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题。
概括的说即为:能否满足对软件日益增长的需求能否维护数量日益增长的现有软件2.软件工程软件工程是一类求解软件的工程,它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量、降低成本的目的。
其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
软件工程是一门指导计算机软件开发和维护的工程学科。
软件工程准则可以概括为六条基本原理:(1)用分阶段的生存周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)应能清楚地审查结果;(6)合理安排软件开发小组的人员。
【试题2】软件开发的结构化生命周期方法将软件生命周期划分成______。
A)计划阶段、开发阶段、运行阶段 B)计划阶段、编程阶段、测试阶段 C)总体设计、详细设计、编程调试 D)需求分析、功能定义、系统设计答案:A【试题3】软件生命周期的最后的一个阶段是______。
A)书写软件文档 B)软件维护 C)稳定性测试 D)书写详细用户说明答案:B理论链接:软件生存(生命)周期软件生存周期:软件的产生直到报废的生命周期。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.软件危机的概念,内容,原因及消除的途径;2.软件工程的定义,基本原理;3.软降工程方法学的基本概念、内容;4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个阶段。
5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;6.了解可行性研究中的任务和过程;7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图;8.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图;9.掌握数据字典的内容、方法、用户和实现;10.了解成本/效益分析方法;11.了解需求分析过程中任务是什么.12.理解面向数据流自顶向下逐步求精的方法和意义;13.理解分析及建模的意义,需求分析中应该建立哪三种模型?有哪些工具来帮助建立这些模型?14.掌握实体关系(E-R)图的概念,内容和实现方法,能结合具体实例建立实体关系图;15.掌握状态图的概念,内容,实现方法和作用;16.掌握层次方框图、warnier图、IPO图的概念,内容和作用;17.有穷状态机的概念和内容;18.总体设计是做什么?总体设计的过程是怎样的?总体结构设计的目的是什么?19.掌握几个设计原理,理解他们的内容和意义;20.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;21.耦合包含了哪些类型?每个类型的具体内容是什么?要求能通过程序代码识别出耦合类型。
22.启发性规则的内容及部分概念。
23.层次图、HIPO图和结构图的内容;24.掌握面向数据流的设计方法,了解其中涉及到的概念(变换流,事务流),结合例子理解变换分析的具体过程。
25.详细设计是做什么?26.什么是结构程序设计?27.人机界面设计问题包含哪些?28.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD 图的概念和内容;掌握判定表的概念和内容。
要结合实例来掌握它们。
29.了解结合Jackson图来掌握面向数据结构的设计方法;会用Jackson程序设计方法对具体的实例进行设计。
30.掌握几种测试:单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术;掌握它们的概念,内容和方法;31.对每一种测试方法,理解其具体细节:比如理解什么是渐增式测试和非渐增式测试,什么是Alpha测试和Beta测试.....;32.结合G.J.Myers的观点理解软件测试的目的;(教材p150)33.掌握白盒测试的技术细节(比如:掌握逻辑覆盖中的8个覆盖点;掌握基本路径测试,会根据过程设计结果画出相应的流图;会计算流图的环形复杂度;会计算出线性独立路径的基本集合);掌握黑盒测试的技术细节;34.理解软件维护的定义、特点和维护过程;35.掌握面向对象方法学的要点,理解面向对象方法学的优点;36.掌握面向对象的概念;37.面向对象建模是建立哪三个模型?它们的具体内容是什么?38.建立对象模型的内容是什么?39.掌握用UML提供的类图来建立对象模型的方法。
理解类图的定义、基本符号和具体内容;40.能结合实例掌握类图中类与类之间的关系:关联、泛化(继承)、依赖和细化。
能根据实例情况正确判断出类与类之间的具体关系类型。
41.动态模型的概念、内容;42.功能模型的概念、内容和建立功能模型的方法;43.掌握用例图的概念、内容和方法;44.掌握面向对象分析的基本过程:三个子模型与5个层次;45.结合实例来掌握面向对象分析过程中建立对象模型的方法包含哪些步骤;46.结合实例来掌握面向对象分析过程中建立动态模型的方法包含哪些步骤;47.结合实例来掌握面向对象分析过程中建立功能模型的方法包含哪些步骤;48.能结合实例画事件跟踪图49.能结合实例画类的状态图50.能结合实例画出0层数据流图与功能级数据流图。
自测练习题:一、选择题1.瀑布模型的存在问题是()A.用户容易参与开发B.缺乏灵活性C.用户与开发者易沟通D.适用可变需求2.可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开发的决策依据,因必须给出()的回答。
A.确定B.行或不行C.正确D.无二义3.系统流程图是用来()A 描绘程序结构的B 描绘系统的逻辑模型C 表示信息层次结构的图形工具D 描绘物理系统的4.下列属于维护阶段的文档是( )A.软件规格说明B.用户操作手册C.软件问题报告D.软件测试分析报告5.软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为( )A.可用性B.可靠性C.正确性D.完整性6、快速原型模型的主要特点之一是( )A.开发完毕才见到产品B.及早提供全部完整的软件产品C.开发完毕后才见到工作软件D.及早提供工作软件7、软件需求分析的主要任务是准确地定义出要开发的软件系统是( )A.如何做B.怎么做C.做什么D.对谁做8.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。
设计这组测试用例的方法是( )A.条件覆盖法B.等价分类法C.边界值分析法D.错误推测法9.研究开发所需要的成本和资源是属于可行性研究中的研究的一方面。
( )A.技术可行性B.经济可行性C.社会可行性D.法律可行性10.模块的内聚性最高的是( )A.逻辑内聚B.时间内聚C.偶然内聚D.功能内聚12. ()是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A 多态性B 继承C 封装D 消息二、填空题1. 将数据流图映射为程序结构时, 所用映射方法涉及信息流的类型。
其信息流分为和两种类型。
2.为了便于对照检查,测试用例应由输入数据和预期的_ _____两部分组成。
3. 软件由程序、、组成。
4. 在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是关系。
5. 软件工程釆用层次化的方法,每个层次都包括、方法、三要素。
6.一个模块拥有的直属下级模块的个数称为,一个模块的直接上级模块的个数称为。
三、名词解释题1.内聚性2.软件危机3.完善性维护4. 数据字典5. 程序流图6. 驱动程序7. 数据耦合8. 类图9. Alpha测试与Beta测试10. 软件产品四、简答题1. 黑盒测试旨在测试软件是否满足功能要求,它主要诊断哪几类错误?2. 瀑布模型、增量模型的优缺点3. 程序流程图或者盒图的5种基本结构的画法4. 简述过程设计语言(PDL)的特点。
5. 根据特定的项目,你会考虑哪些因素来选择合适的程序设计语言。
6. (教材P141) 画出下列伪码程序的程序流程图和盒图STARTIF p THENWHILE q DOfEND DOELSEBLOCKgnEND BLOCKEND IFSTOP7. (教材P141)研究下面的PDL语言(过程设计语言,也称伪码程序):LOOP: Set I to (START + FINISH)/2If TABLE(I)=ITEM goto FOUNDIf TABLE(I)<ITEM Set START to (I+1)If TABLE(I)>ITEM Set FINISH to (I-1)If (FINISH - START) > 1 goto LOOPIf TABLE(START)=ITEM goto FOUNDIf TABLE(FINISH) = ITEM goto FOUNDSet FLAG to 0Goto DONEFOUND: Set FLAG to 1DONE:Exit1.画出程序流图和N-S盒图。
2.此程序的功能是什么?五、综合题(三题分别5,7,8分,共20分)1.某培训中心要研制一个计算机管理系统。
它的业务是:将学员发来的信件收集分类后,按几种不同的情况处理。
如果是报名的,则将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查该课程是否额满,然后在学生文件、课程文件上登记,并开出报告单交财务部门,财务人员开出发票给学生。
如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件和帐目文件上做相应的修改,并给学生注销单。
3)如果是付款的,则由财务人员在帐目文件上登记,也给学生一张收费收据。
要求:(1).对以上问题画出功能级数据流程图。
(2).画出该培训管理的软件结构图。
2.某旅馆的电话服务如下:可以拨分机号和外线号码。
分机号是从7201至7299。
外线号码先拨9,然后是市话号码或长话号码。
长话号码是以区号和市话号码组成。
区号是从100到300中任意的数字串。
市话号码是以局号和分局号组成。
局号可以是455,466,888,552中任意一个号码。
分局号是任意长度为4的数字串。
要求:写出在数据字典中,电话号码的数据条目的定义即组成。
3. 软件测试的过程包括哪些?黑盒测试与白盒测试的具体内容是什么?它们分别针对哪几类错误?一.集成测试中自顶向下集成和自底向上集成的优缺点?1、自顶向下集成优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。
缺点:柱的开发量大;底层验证被推迟;底层组件测试不充分。
适应于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。
2、自底向上集成优点:对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。
缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。
适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。
二.简述螺旋模型的基本开发过程。
正确答案(1)需求定义。
利用需求分析技术理解应用领域,获取初步的用户需求,制定项目开发计划。
(2)风险分析。
根据初始需求或改进意见评审可选用的方案,给出消除或减少风险的途径。
(3)工程实现。
利用快速原型构造方法针对已知的用户需求生成快速原型。
(4)评审。
将原型提交用户使用并征询用户改进意见。
上述过程将不断迭代,直至给出用户满意的目标软件产品。
三.一般而言,衡量某种程序语言是否适合于特定的项目,应考虑哪些因素?(1)应用领域; (2)算法和计算复杂性; (3)软件运行环境; (4)用户需求中关于性能方面的需要; (5)数据结构的复杂性; (6)软件开发人员的知识水平; (7)可用的编译器与交叉编译器。
四.名词解释:软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的和隐含特征相一致的程度。