收藏 分销(赏)

软件工程复习提纲.doc

上传人:丰**** 文档编号:3583407 上传时间:2024-07-10 格式:DOC 页数:12 大小:125.50KB 下载积分:8 金币
下载 相关 举报
软件工程复习提纲.doc_第1页
第1页 / 共12页
软件工程复习提纲.doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
《软件工程》课程要点 l 每章教学课件中的“本章小结”列出了需要掌握的内容 l 教学过程中的例题和习题也是课程重点 一、软件工程与软件过程概述 1.概念: (1)软件的概念(组成成分、作用); 答:计算机软件是程序、数据和相关文档的集合;用于实现计算机系统所需要的逻辑方法和控制过程 (2)软件危机的含义、表现、产生原因(客观、主观) 答:计算机软件开发和维护过程中遇到的一系列严重问题。 软件危机的表现: ①对软件开发成本和进度的估计很不准确 ②已完成的软件不能满足用户需求 ③软件质量差 ④软件不可维护 ⑤软件没有开发文档 ⑥软件成本在计算机系统总成本中所占的比例逐年上升 ⑦软件生产率跟不上硬件的发展和计算机迅速普及的趋势 与软件的特点有关(客观原因): ①软件是计算机系统中的逻辑部件,缺乏“可见性”, 管理和控制软件开发过程相当困难 ②软件在使用期间不存在机械磨损和老化问题,一旦 发现错误,通常意味着修改原来的设计,因此软件 难维护 ③软件规模庞大,程序复杂性增加,需多人分工合作(不 能保证每个人完成的工作合在一起构成一个高质量的大 型软件系统) 与软件开发和维护的方法不正确有关(主观原因): ① 开发无计划 ② 忽视软件需求分析的重要性 ③ 轻视软件维护 ④ 无过硬评测手段 ⑤ 缺乏有力的开发方法和工具 ⑥ 不重视开发文档等软件配置 (3)软件工程学科包括的内容(三要素)、解决的主要问题 答:(1)软件工程定义: 1) 软件工程是指导计算机软件开发和维护的工程学科 2) 采用工程化的概念、原理、技术和方法来开发和维护软件3)将经过时间考验而证明正确的管理技术和开发技术结合起来,以较经济的手段开发出高质量的软件并有效维护它 2)软件工程方法学的三要素: ①方法:完成软件开发各项任务的技术方法 ②工具:为方法的高效运用,而提供的自动或半自动的软件支撑环境 ③过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤 (4)软件生命周期的含义、组成阶段及各阶段主要任务 答:软件生命周期: 一个软件从定义、开发、运行维护 ,直到最终被废弃要经历一个漫长的时期,这个时期称为软件生命周期。 (1)问题定义阶段: 通过调研,提出关于问题的性质、工程目标和工程规模的书面报告,并且需要得到客户的确认。 ●回答“要解决的问题是什么?” ●文档:问题定义报告 (2)可行性研究阶段: 用最小的代价在尽可能短的时间内确定问题是否能够解决。 ① 进一步了解用户需求 ② 提出若干种可能的系统实现方案 ③ 分析每种方案的技术、经济、社会可行性 ④ 最终确定这项工程的可行性 ●回答“是否有行得通的解决方法?” ●文档:可行性研究报告,项目开发计划 (3)需求分析阶段: 对目标系统提出完整、准确、清晰、具体的要求。 ① 得出经过用户确认的系统需求 ② 用正式文档(需求规格说明)准确表达系统需求 回答 “系统必须做什么?” 文档:需求规格说明书 (4)概要设计阶段: ①设计系统实现方案 ②设计程序的体系结构,即确定程序由哪些模块 组成以及模块间的关系。 概括地回答“怎样实现目标系统?”  文档:概要设计说明书 5)详细设计阶段:设计实现每个模块功能所需要的算 法和数据结构 回答“应该怎样具体地实现这个系统?” 文档:详细设计说明书 (6)编码和单元测试: 写出正确的、易理解、易维护的程序模块代码; 测试编写出的每一个模块 文档:经过测试的程序源代码、 程序开发记录(模块开发卷宗) (7)综合测试阶段:通过各种类型的测试(及相应的调试) 使软件达到预定的要求。 ①集成测试(组装测试)。 ②验收测试 测试文档: 测试计划、详细测试方案、实际测试结果 (8)软件维护阶段: 通过各种必要的维护活动使系统持久地满足 用户的需要。 四类维护活动: 改正性维护、适应性维护、完善性维护、 预防性维护 文档:软件维护申请、软件修改报告 2.需理解的问题: (1)软件与程序的区别和联系? 答:计算机软件是程序、数据和相关文档的集合; 程序:能够完成特定功能和性能的可执行的指令序列 (2)开发一个软件项目包括哪些基本的步骤?每一步骤完成哪些工作? 答: (3)主要的软件过程模型(生命周期模型)有哪些?各自有什么特点? 答:软件生命周期模型也称为软件过程模型,它直观地描述了把软件生命周期划分成哪些阶段及各个阶段 的执行顺序 主要有:瀑布模型、增量模型、螺旋模型、喷泉模型、统一软件过程。 (2)瀑布模型的特点 ①阶段间具有顺序性和依赖性 ②推迟实现的观点 ③阶段质量保证观点(文档驱动) 瀑布模型的优点:强迫采用规范方法开发软件;严格规定了各阶段提交的文档;各阶段结束前必须经过技术审查和管理复审。 瀑布模型缺点:分析和设计阶段只考虑逻辑模型;过分依赖文档,可能导致最终的软件产品不能完全满足用户需求 瀑布模型适用的软件项目:规模小、需求明确、无须维护 2)快速原型模型的优点: 通过原型获得准确的用户需求;通过原型积累了开发经验,软件开发时期的各阶段基本上是线性顺序过程、提高了总开发效率。 快速原型模型适用的软件项目:规模小、需求不够明确、无须维护  3)增量模型的优点: ①便于并行完成开发工作;②逐步提交软件产品; ③软件的可维护性和可扩充性较好 增量模型适用的软件项目:强调开发进度、可维护性要求高、可扩充性要求高 螺旋模型是一个演化的软件过程模型,是在每个阶段之 前都增加了风险分析过程的快速原型模型。 在螺旋模型中,螺旋线的每个周期对应一个软件生命周 期的开发阶段。每个阶段包括四个方面的活动: ①制定计划-确定目标,选定方案,设定约束条件 ②风险评估-评估所选方案,识别风险,考虑如何消除风险 ③实施工程 ④评估工程-评价开发工作,提出修正建议。 使用螺旋模型需要丰富的风险评估经验和专门知识; 螺旋模型适用于内部开发的大型软件项目 1、喷泉模型也称为面向对象的生命周期模型 2、软件开发过程阶段之间是迭代的、无间隙的 对象概念贯穿整个开发过程,只用对象类及其关系表达分析、设计、实现等活动 在分析、设计和编码等开发活动之间并不存在明显的边界,开发各阶段同步进行、可以提高开发效率 3、各开发阶段重叠、可能随时增加新的需求和各种信息, 因此喷泉模型要求严格管理文档,审核难度加大,对项目管理要求较高。 RUP首先建立整个项目的不同时间阶段,体现开发过程的动态结构,包括:初始阶段、细化阶段、构造阶段、移交阶段。 同时以内容来组织项目的活动,体现开发过程的静态结构。 RUP融入了瀑布模型的线性结构和演化模型的增量及迭代思想 (3)有哪些主流的软件工程方法? 答:①传统方法学(生命周期方法、结构化方法): ●从时间角度对软件问题进行分解,将软件开发维护过程划分成若干阶段。 ②面向对象方法学: 面向对象方法学的出发点和基本原则:尽量模拟人类习惯的思维方式,使开发软件的方法与 过程尽可能接近人类认识世界解决问题的方法与过程,使问题空间与实现空间在结构上尽可能一致。 (4)如何消除软件危机(如何解决软件危机?) 一、概念:软件过程,软件生命周期,软件生命周期模型 6、具体说明:针对不同的软件项目,应该如何选择软件生 命周期模型 7、你如何理解RUP的特点 8、敏捷过程的主要特点和优势 1.什么是软件生命周期,分哪几个阶段、各阶段的任务是 什么? 2.常用的软件生命周期模型有哪些?总结它们的特点。 3.谈谈下列三者之间的区别和联系: 软件工程、软件过程、软件生命周期模型 二、结构化分析-面向数据流的分析方法 1.什么是软件需求?需求分析过程(步骤)? 答:软件需求:软件系统必须符合的条件和具备的功能 需求分析的任务(过程): 1.准确了解用户情况和需要解决的问题: ◆与用户沟通的途径:访谈、参考类似系统、快速原型技术 2.对需求反复求精和细化,得出对目标系统完整、准确 和具体的要求 3.需求建模:对获得的需求做出抽象、即进行无歧义描述。 ◆模型是为了理解事物而对事物做出的一种抽象,是对事物的一种 无歧义的书面描述。 4.编制需求规格说明书 5.进行需求分析的评审 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、什么是软件需求?软件需求如何分类? 2、需求分析的作用和重要性 3、需求分析阶段需要完成的工作 4、结构化分析模型的内容 5、E-R图的内容和作用;数据流图的内容和作用; 状态转换图的内容和作用;数据字典的内容和作用 二、掌握以下建模技术和工具: 1、使用E-R图建立软件系统的数据模型 2、使用分层数据流图建立软件系统的功能模型 3、使用状态转换图建立软件系统的行为模型 4、使用数据字典定义结构化分析模型中的数据对象 1、某高校选课系统的功能包括:教师提交开课申请,系统根据开课计划审核教师的开课申请,审核通过后向教师下发开课通知。学生可以通过系统进行选课,首先提交选课单,系统进行审核通过后,告知学生选课结果。教师可以查询本人任教课程的选课名单。 请使用分层数据流图描述选课系统的功能。 2、某运动会管理系统的功能为:接受来自运动员的报名单,生成运动员号码单发送给运动员,产生参赛人员报表发送给裁判。接受来自裁判的比赛项目及成绩,产生比赛结果发送给发布台。 请用分层数据流图表示上述系统的功能。 四、软件测试 1.软件测试基础 (1) 软件测试的含义和目的? (2) 测试用例的内容(输入数据、预期输出结果)? (3) 主要测试方法(黑盒测试、白盒测试)的含义? 2.主要的白盒测试技术及应用-------逻辑覆盖法?基本路径测试方法? 3.主要的黑盒测试技术及应用-------等价类法? 边界值分析法? 4.软件测试的过程? (1)单元测试(采用的测试方法;测试内容) (2)集成测试(采用的测试方法;测试内容;模块组装策略) (3)确认测试(采用的测试方法;测试内容;α测试与β测试?) (4)辅助模块的含义及作用(驱动模块、存根模块?) 一、理解以下概念: 1、模块、模块化、抽象、信息隐藏; 2、模块独立性、耦合、内聚; 二、理解以下问题: 1、软件设计阶段的任务? 2、概要设计和详细设计的区别和联系? 3、结构化分析为结构化设计提供了哪些信息? 4、指导软件设计的基本原理和启发规则有哪些?理解这些原理的具体含义和作用。 二、理解以下问题: 5、软件设计中,如何合理划分模块才能保证软件的开发成本达到最小? 6、什么是模块独立性?如何度量和设计模块独立性? 7、软件设计中应该如何设计耦合性?如何设计内聚性? 8、表示软件结构的工具有哪些? 能够正确使用以下工具:H图、IPO图、软件结构图 9、理解变换型数据流图和事务型数据流图的特点。 10、使用面向数据流方法设计软件结构的过程是什么? 、理解以下问题: 11、结合实例,掌握变换分析设计方法的步骤 12、结合实例,掌握事务分析设计方法的步骤 13、结构化程序的基本特征是什么? 14、表示结构化程序逻辑的工具有哪些? 能够正确使用以下工具 :程序流程图、N-S图、PAD图、 PDL、判定表、判定树 1、什么是模块独立性?如何度量和设计模块独立性? 2、根据下面变换型的数据流图,设计出对应的初始软件结构图并简述相应的设计步骤。 五、面向对象方法学基础 1. 基本概念: (1)对象的含义及特点? (2)类的含义?类与对象的关系? (3)消息及消息传递的含义及作用? (4)继承的含义?多态性机制? 2.面向对象建模技术中的三种模型及各自作用? 3.对象模型及描述(类图):对象(类)的图形表示;关系(关联、聚集、继承)的图形表示; 4.事件追踪图、状态图、用例图的作用 、理解以下概念: 软件测试、 测试用例、 黑盒测试、 白盒测试、 单元测试、 集成测试、 确认测试、 系统测试、 驱动模块、存根模块、等价类、 边界值分析测试、 调试 二、理解以下问题: 1、软件测试的含义及目标? 2、软件测试的过程(步骤)? 3、测试方案包含的内容? 4、白盒测试的含义及作用?黑盒测试的含义及作用? 5、各种逻辑覆盖测试的含义及使用? 二、理解以下问题: 6、基本路径测试法的使用? 7、等价划分法的含义、测试步骤? 8、软件测试各阶段与前期的哪些文档相关? 9、软件测试过程如何体现“测试应该从小规模开始, 并逐步进行大规模测试”的测试准则? 10、如何进行单元测试、集成测试、确认测试? 各阶段重点测试的内容? 12、测试和调试的区别和联系? ◆第5章 习题 1.什么是软件测试? 2.什么是测试用例?设计测试用例时,应该考虑哪些因素? 3.阐述单元测试、集成测试、有效性测试之间的区别。 4.下列伪码程序的功能是“输入三角形的三个边长,判断 构成何种三角形”。 (1)使用条件覆盖法,为上述程序设计白盒测试用例。 (2)使用等价类划分法,为上述程序设计黑盒测试用例 START READ (A,B,C) IF (A≤0) OR (B≤0) OR (C≤0) THEN WRITE (“三角形边长不能为零”) ELSE IF (A+B≤C) OR (A+C≤B) OR (B+C≤A) THEN WRITE (“不能构成三角形”) ELSE IF (A=B) AND (B=C) THEN WRITE (“等边三角形”) ELSE IF (A=B) OR (B=C) OR (A=C) THEN WRITE(“等腰三角形”) ELSE WRITE(“一般三角形”) STOP 六、面向对象分析与设计过程 1.面向对象分析(OOA)的任务?OOA的基本过程? 2.面向对象设计(OOD)的主要任务?OOD与OOA的区别和联系? 3.OOD模型的组成(四部分)及内容? 一、理解下列基本概念: 1、对象的含义及特点? 2、类的含义?类与对象的关系? 3、消息及消息传递的含义及作用? 4、继承的含义?多态性机制? 5、面向对象软件开发方法的要点 6、UML的含义及用途? 二、需要掌握的内容: 1、面向对象建模的主要工作?三种面向对象模型(对象模型、动态模型、功能模型)之间的关系? 2、对象模型的含义及其表示(类图);对象之间的关系? 类之间的关系? 3、动态模型的含义及其表示(事件追踪图、状态图) 4、功能模型的含义及其表示(数据流图、用例图) ◆第6章 习题 1.解释以下概念并通过一个例子加以说明: 对象;类;关联;继承;聚集 2.为什么面向对象方法要从多个侧面(对象模型、动态模型、功能 模型)建立系统模型。 3.建立符合下列陈述的对象模型 某图书馆有许多名职员为之工作,职员又进一步划分为馆长 和管理员两类;馆长可对图书借阅工作进行管理,每名管理员可 管理多本图书,每本图书可由多名管理员管理;图书拥有许多读 者,借书证号惟一地确定一个读者;读者又可分为教师和学生两 类,每名教师或学生可以借阅数本图书,每一种图书可供多名教 师或学生借阅。 七、软件维护 1. 软件维护的含义及类型? 2. 软件维护过程? 3. ◆需要掌握的内容: 4. 1、面向对象分析(OOA)的任务? 5. 面向对象分析(OOA)过程中包括哪些活动? 6. 2、三种面向对象模型各自表示的内容? 7. 3、对象模型的表示工具?动态模型的表示工具?功能模型的表示工具? 8. 4、结合软件开发实例,理解三种面向对象模型之间的关系 9. 以及面向对象分析环节完成的主要工作。 10. 11. ----------------------------------------------------------------------------- l 课堂练习题目 一、填空题 1.软件主要包括程序、 和 三部分内容。 2.软件可行性研究的任务是从技术、 和 三个方面分析软件项目的可行性。 3.软件测试的目的是 ;通常把软件测试方法分为 和 两大类。 4.结构化分析方法中,功能模型用 描述;数据模型用 描述。 5.在类的继承结构中,不同层次的类共享同一个行为名称,但各个类可以按照自己的需要为同名行为设计不同的算法,此性质称为类的__。 二、选择题 1.产生软件危机的主要原因有( C )。 ①软件本身的特点 ②用户使用不当 ③硬件可靠性差 ④程序员水平 ⑤缺乏好的开发方法和管理手段 A. ③④ B. ①②④ C. ①⑤ D. ①③ 2.需求分析阶段,开发人员需从用户那里获得的最重要信息是( C ) 。 A.用户能接受的开发费用 B.用户能接受的开发周期 C.用户要让软件做什么 D.软件应具有何种结构 3.数据流图中的每个处理至少有( B )。 A.一个输入流或一个输出流 B.一个输入流和一个输出流 C.一个输入流 D.一个输出流 4.在面向数据流的设计方法中,一般把数据流图划分为( C )两种类型。    A.数据流和事务流 B.变换流和数据流 C.变换流和事务流 D.控制流和事务流 5.数据流图所描述的是实际系统的( A )。 A.逻辑模型 B.物理模型 C.程序流程 D.数据结构 6.由变换型数据流图转换成模块结构图,其中包括变换模块,则( B )。 A.变换模块就是主模块 B.变换模块的功能是将逻辑输入变换为逻辑输出 C.变换模块没有下层模块 D.变换模块只能有一个输入量、一个输出量 7.为了提高软件测试的效率,应该( C )。 A、在完成编码以后制定软件的测试计划 B、取一切可能的数据作为测试数据 C、选择发现错误可能性大的数据作为测试用例 D、随机地选取测试数据 8.有一个计算程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例: -1.001,-1.0,1.0,1.001。设计这组测试用例的方法是( C ) A、条件覆盖法 B、等价分类法 C、边界值分析法 D、错误推测法 9.关于单元测试,正确的是( C ) 。 A.单元测试的依据是概要设计说明书 B.单元测试中不需要使用白盒测试法   C.单元测试包括模块接口测试 D.单元测试时不需要辅助模块 10.有关集成测试的叙述中,( A )是正确的。 A.测试底层模块时不需要桩模块 B.自底向上测试方法有利于提前预计测试结果 C.驱动模块的作用是模拟被调模块 D.自顶向下测试方法易于设计测试用例 11.( D) 表示了类之间的“一般__特殊”关系。    A.聚集    B.关联    C.消息传递   D.继承 12.OOA模型规定了一组对象如何协同才能完成软件系统所指定的工作。这种协同在模型中是以表明对象通信方式的一组( A )连接来实现的。 A.消息 B.记录 C.数据 D.属性 13.面向对象开发方法定义了三种模型来描述系统,( B )可以用数据流图来表示 A.对象模型   B.功能模型   C.动态模型   D.数据模型 14.面向对象分析(OOA)的主要活动不包括( D )。 A.确定对象 B.确定属性 C.确定关联 D.确定方式 15.软件开发中,阶段评审是非常重要的环节,其主要目的和作用是( B )。 A.减少测试工作量 B.避免后期付出高代价 C.保证软件质量 D.缩短软件开发周期 三、概念解释 1.软件危机 2.软件生命周期 3 .需求分析 4.概要设计 5.内聚 6、多态性 7、软件测试 8、驱动模块 四、简答题 1.什么是软件危机?如何消除软件危机? 2.作为某软件公司的工程师,你将采用结构化方法开发一套适用于住宅小区的智能家庭保安系统。 简述开发步骤和每个步骤完成的主要任务。 3.什么是需求分析?简述需求分析的基本任务。 4.什么是模块独立性?如何度量和设计模块独立性? 5.简述变换分析设计方法的步骤。 6.简述对象和类的概念,二者关系如何? 7.什么是等价类划分测试法?该方法设计测试用例的主要步骤是什么? 8.软件测试要经过哪几个阶段?各阶段完成哪些主要工作? 五、应用题 1..某商品进销存管理系统的部分功能如下: (1)仓库管理员负责输入商品的入/出库清单、维护商品库存信息;定时统计、打印商品库存的月报表给商品销售经理。 (2)销售员负责输入商品销售、退换信息,并打印购货清单给客户; 商品销售的相关信息要存 入相应文件。 请画出描述上述功能的分层数据流图。(画出顶层、1层和2层数据流图) 2.设有下列语句序列: read(x,y); if (x>1) and (y<=5) then z=x*y else z=x+y; if z=12 then z=2*z; write(z). 分别使用语句覆盖、判定覆盖、条件覆盖方法设计测试用例 3、使用PAD图描述下列算法逻辑: 4.建立描述下列信息的对象模型: 一所高校包括若干个系和若干名学生;每个系由若干名教师组成;学生分为研究生和本科生两类;每个系开设若干门课程、任何一门课程只能由一个系开出;每个教师可以讲授的课程不超过三门、每门课程允许一到两个教师讲授。 ————————————————————————————————————
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服