软件工程导论复习(答案版)
- 格式:doc
- 大小:1.02 MB
- 文档页数:14
软件工程导论(第六版)部分课后习题-答案软件工程导论(第六版)部分课后习题-答案一、选择题1. 答案:B解析:选择题解析2. 答案:A解析:选择题解析二、判断题1. 答案:对解析:判断题解析2. 答案:错解析:判断题解析三、填空题1. 答案:软件工程解析:填空题解析2. 答案:开发、维护解析:填空题解析四、简答题1. 答案:软件需求分析是软件工程的第一步,它主要是通过对用户需求的调查和分析,确定软件系统需要具备的功能和性能以及相关约束条件。
解析:简答题解析2. 答案:软件开发过程中的质量保证主要包括软件测试和代码评审两个方面。
软件测试是通过运行和验证软件系统的过程,以确定其是否满足预期的需求和标准。
代码评审则是对软件代码进行审查和评估,在开发过程中发现和修复潜在的问题和错误。
解析:简答题解析五、计算题1. 答案:20解析:计算题解析2. 答案:1000解析:计算题解析六、案例分析题1. 答案:软件项目管理是指对软件项目进行规划、组织、分配和控制的过程。
它包括项目范围管理、时间管理、成本管理、质量管理、风险管理等方面。
在一个项目中,软件项目经理负责整体的项目管理工作,包括资源的分配、进度的控制、风险的管理等。
解析:案例分析题解析2. 答案:敏捷开发是一种迭代、逐步增量的软件开发方法。
它强调快速、灵活地响应用户需求的变化,通过频繁的迭代和持续的反馈来逐步完善软件系统。
敏捷开发方法注重团队合作、交流和高效的沟通,通过直接面对面的沟通取代冗长的文档和繁琐的流程,提高软件开发的效率和质量。
解析:案例分析题解析总结:本文主要针对《软件工程导论(第六版)》部分课后习题提供了答案和解析。
其中包括选择题、判断题、填空题、简答题、计算题和案例分析题等多个题型。
通过解答这些习题,读者可以进一步加深对软件工程的理解和掌握。
希望本文对读者有所帮助,谢谢阅读。
第一章1-1 什么是软件危机?是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1-3 什么是软件工程?是指导计算机软件开发和维护的一门工程学科。
1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
目前使用得最广泛的软件工程方法学(2种):1. 传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-6 什么是软件过程?它与软件工程方法学有何关系?z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。
软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。
适用中小型项目。
快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。
参考答案(范村长下载的)第1章一、选择题1. D2. C3. B4. D5. B6. A7. D二、填空题1. 程序文档数据2. 抽象模块化信息隐蔽局部化一致性完备性可验证性3. 问题定义可行性研究需求分析4. 软件生命周期模型顺序性依赖性5. 制定计划风险分析实施工程客户评价6. 结构化分析结构化设计结构化程序设计数据流自顶向下,逐步求精功能的分解与抽象三、思考题1. 答:软件产品是一种无形的逻辑产品,是人们脑力劳动的结晶。
软件产品只能以程序、数据和文档的形式出现。
其存储介质是磁盘、磁带或光盘。
通过计算机的执行才能体现出来。
与硬件产品的制造不同,软件产品的成本主要花在研制上,而产品的制造实质上是所开发产品的拷贝。
软件产品不会像硬件产品一样磨损,但仍然需要维护,而且维护的成本很高。
软件产品的开发主要靠脑力劳动,所以产品研制的成本很高,很难像硬件产品那样实现工业化生产。
2. 答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件的日益增长的需求;如何维护数量不断膨胀的软件。
具体来说,软件危机主要有以下一些典型表现。
对软件开发成本和进度的估计常常很不准确。
用户对所交付的软件系统不满意的现象时有发生。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件文档资料通常不完整、不合格。
软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上日益增长的软件需求。
3. 答:软件工程的基本目标是在给定的成本、进度等条件下,开发出满足用户需求的软件产品。
简单来说,也就是要成功地建造一个大型软件系统。
软件项目的成功主要是要达到以下几个目标:付出较低的软件开发成本;达到用户所要求的软件功能;取得较好的软件性能;所开发的软件易于移植、可重用性好;需要较低的软件维护费用;能按时完成开发任务,及时交付使用;软件工程面临的主要问题是:软件费用、软件可靠性、软件维护、软件生产率和软件重用等。
软件工程导论《软件工程》期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪项不是软件工程的基本目标?A. 提高软件的生产率B. 提高软件的可维护性C. 提高软件的性能D. 降低软件的开发成本答案:C2. 下列哪种方法不属于软件需求分析的方法?A. 数据流图(DFD)B. 实体-关系图(ER图)C. 状态转换图D. Petri网答案:D3. 软件设计中,模块的内聚性越高,表明模块的:A. 功能越单一B. 独立性越强C. 复用性越低D. 可维护性越低答案:A4. 在软件测试阶段,下列哪种测试方法不属于黑盒测试?A. 等价类划分B. 边界值分析C. 代码覆盖率分析D. 逻辑覆盖分析答案:D5. 软件项目管理中,项目经理的主要职责不包括以下哪项?A. 制定项目计划B. 管理项目进度C. 组织项目团队D. 编写代码答案:D二、填空题(每题2分,共20分)6. 软件生命周期可以分为______、需求分析、设计、编码、测试、维护等阶段。
答案:需求调研7. 软件工程的三要素是______、过程、方法。
答案:工具8. 在软件设计中,模块的独立性包括______和耦合性两个方面。
答案:内聚性9. 软件测试的目的不包括______。
答案:发现并修复所有错误10. 软件项目管理的主要目标是实现项目的______、质量和成本控制。
答案:进度三、简答题(每题10分,共30分)11. 简述软件工程的基本原则。
答案:软件工程的基本原则包括:(1)抽象:将复杂问题分解为更简单的子问题;(2)分解:将问题分解为多个部分,分别解决;(3)模块化:将软件划分为独立的模块,提高可维护性和复用性;(4)信息隐藏:隐藏模块内部的信息,只暴露必要的接口;(5)一致性:保持软件各部分的一致性,提高可读性;(6)可维护性:使软件易于修改和维护。
12. 简述软件需求分析的目的和任务。
答案:软件需求分析的目的在于明确用户对软件系统的功能、性能等方面的需求。
软件工程导论(第5版)课后习题答案(总21页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--1-5 根据历史数据可以做出如下的假设:对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=×(美分/位)如果计算机字长为16位,则存储器价格下降的趋势为:P2=×(美元/字)在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。
基于上述假设可以比较计算机硬件和软件成本的变化趋势。
要求计算:(1) 在1985年对计算机存储容量的需求估计是多少如果字长为16位,这个存储器的价格是多少(2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。
如果一条指令为一个字长,计算使存储器装满程序所需用的成本。
(3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。
(1)在1985年对计算机存储容量的需求,估计是M=(1985-1960)=4474263(字)如果字长为16位,则这个存储器的价格是P=* 1985-1974*4474263=$5789(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。
在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人每月可开发出10×20条指令。
为了开发出4474263条指令以装满存储器,需要的工作量是:4474263/200=22371(人月)程序员的月平均工资是4000美元,开发出4474263条指令的成本是22371*4000=¥(3)在1995年对存储容量的需求估计为:M=4080E0。
28(1995-1960)=(字)=如果字长为32位,则这个存储器的价格是:P=*32*(1995-1974)*=$7127如果一条指令为一个字长,则为使存储器装满程序共需73,577,679条指令。
2023软件工程导论期末考试题库及参考答案一、选择题(每题2分,共20分)1. 以下哪个不是软件工程的三个基本目标?A. 可维护性B. 可用性C. 可靠性D. 高效性参考答案:D2. 软件生命周期中,以下哪个阶段是软件开发过程的核心阶段?A. 需求分析B. 设计C. 编码D. 测试参考答案:C3. 以下哪种编程范式主要用于降低软件复杂性?A. 面向对象编程B. 过程式编程C. 函数式编程D. 逻辑编程参考答案:A4. 在软件工程中,以下哪个方法用于估算软件项目的成本和进度?A. COCOMOB. WBSC. SDLCD. CASE参考答案:A5. 以下哪个是软件工程中的一个重要原则?A. 分而治之B. 一次性编写C. 重用D. 模块化参考答案:D6. 以下哪个不是软件工程的基本活动?A. 软件规格B. 软件开发C. 软件验证D. 软件测试参考答案:C7. 以下哪个是软件工程中用于提高软件质量的技术?A. 设计模式B. 重构C. 代码审查D. 单元测试参考答案:C8. 以下哪个不是软件工程的五大基本过程?A. 软件规格B. 软件开发C. 软件维护D. 软件项目管理参考答案:D9. 以下哪个是软件工程中的一个重要概念,用于描述软件系统中的各个组件之间的关系?A. 耦合B. 内聚C. 模块化D. 重用参考答案:A10. 以下哪个是软件工程中的一个重要原则,用于指导软件开发过程?A. 迭代B. 增量C.螺旋D. 模型驱动参考答案:A二、填空题(每题2分,共20分)11. 软件工程的三要素是:方法、工具和______。
参考答案:过程12. 软件生命周期包括:需求分析、设计、编码、______和软件维护。
参考答案:测试13. 软件工程中的面向对象方法包括:封装、继承和______。
参考答案:多态14. 软件工程中的 CASE 工具主要用于支持______。
参考答案:软件设计和开发15. 软件工程中的敏捷开发方法强调______、可维护性和可扩展性。
软件工程导论课后习题答案1. 什么是软件工程?软件工程是将系统化、规范化的方法应用于软件的开发、运行和维护的一门学科。
它包括软件需求分析、软件设计、软件开发、软件测试、软件维护等工作,旨在提高软件开发过程的效率和质量。
2. 软件生命周期是什么?软件生命周期是指软件从概念到退役的整个过程。
它通常包括以下阶段:需求分析、软件设计、编码、测试、部署、运维和退役。
3. 软件需求分析的目的是什么?软件需求分析的目的是理解客户和用户的需求,明确软件系统应具备的功能和性能要求,并以此为基础,为后续的设计、开发和测试工作提供准确的需求规格说明。
4. 软件设计的原则有哪些?•模块化原则:将软件划分为多个模块,每个模块负责一个特定的功能,以实现代码的复用和可维护性的提高。
•高内聚低耦合原则:模块内部的元素之间高度相关,而模块之间的依赖关系要尽量降低。
•封装原则:隐藏实现细节,将内部数据和操作通过接口封装起来,提供对外的访问方式。
•可读性原则:代码要易于阅读和理解,一致的命名和简洁的代码结构能提高代码的可读性。
•可测试性原则:设计要有良好的可测试性,便于进行单元测试和集成测试。
5. 软件开发过程中的常用模型有哪些?•瀑布模型:按照线性流程顺序依次完成需求分析、设计、开发、测试和部署等阶段。
•敏捷开发模型:采用迭代和增量的方式进行开发,快速响应需求变化。
•喷泉模型:将软件生命周期看做是连续不断的循环,在每个循环内快速迭代开发、测试和部署。
6. 软件测试的目的是什么?软件测试的目的是为了发现软件中的缺陷和错误,并尽早地修复这些问题,以确保软件的质量和可靠性。
通过测试,可以评估软件的功能是否满足需求,并验证软件是否在各种工作环境中正常工作。
7. 软件维护的类型有哪些?•纠错性维护:修复软件中的错误和缺陷。
•适应性维护:适应环境的变化,如操作系统升级、硬件设备更换等。
•完善性维护:根据用户的反馈和需求对软件进行改进和增强。
•预防性维护:对软件进行优化和调整,以提高性能和可维护性。
.word 格式 ,在软件工程中 ,白盒测试法可用于测试程序的内部结构 。
此方法将程序看作是下述陈述中 , 哪一个不是软件健壮性的度量指标 ?A) 失败后重新启动所需的时间 B) 引起失败的时间所占的百分比D) 失败前的平均工作时间 D )在一次失败中数据恶化的概率b( 5) 对软件是否能达到用户所期望的要求的测试称为A) 集成测试 B) 有效性测试 C) 系统测试 D) 验收测试a(6) 在面向数据流的软件设计方法中 ,一般将信息流分为A) 变换流和事务流 B) 变换流和控制流C)事务流和控制流 D) 数据流和控制流d( 7)软件需求说明书是软件需求分析阶段的重要文件 , 下述哪个 (些 )是其应包含的内 I. 数据描述 Ⅲ. 模块描述II. 功能描述 Ⅳ. 性能描述A )ⅡB )Ⅲ和Ⅳ C) Ⅰ、 Ⅱ 和Ⅲ D )Ⅰ、Ⅱ 和Ⅳ1) 2) A) 路径的集合 在下述哪一种测试中 B) 循环的集合 C)目标的集合 ,测试程序的设计者必须接触到源程序D) 地址的集合I. 功能测试 Ⅱ . 结构测试A)均不须 B)只有Ⅰ C)只有 Ⅱ D) Ⅰ和Ⅱ3) 检查软件产品是否符合需求定义的过程称为A)确认测试 B)集成测试 C)验证测试 D) 验收测试4)(8)软件测试一般分为三类,即I. 静态测试Ⅱ.动态测试Ⅲ. 正确性测试设计测试用例对程序进行测试,应属于A)ⅠB)ⅡC)Ⅰ 和ⅡD)Ⅲ(9)模块独立性是由内聚性和耦合性来度量的 ___________________ ,其中内聚性是度量,耦合性是度量__ 。
A)模块间联系程度B)模块的功能强度C)信息隐蔽程度D)模块的复杂程度(10 )软件设计中一般将用到图形工具,下述哪种(些)工具可用作设计的图形工具I. 结构图Ⅱ. 实体关系图Ⅲ. IPO 图II. Ⅳ. 流程图Ⅴ.N-S 图A)Ⅰ和ⅡB)Ⅲ和ⅣC)Ⅰ、Ⅲ、Ⅳ 和ⅤD)全部A ( 2)C (3)A (4)C (5)B(6)A ( 7)D (8)B (10 )C(11 )试判断下列论述中哪个(些)是正确的I. 软件系统中所有的信息流都可以认为是变换流II.软件系统中所有的信息流都可以认为是事务流III.事务分析和变换分析的设计步骤基本类似A)ⅠB)ⅡC)ⅢD)Ⅰ 和Ⅲ(12 )软件的有效性测试是验证软件的运行是否达到用户的期望,用户的期望应体现于A)详细设计报告B)软件需求说明书C)总体设计报告D)有效性测试要求(13 )软件设计中的软件过程其主要描述的是A)模块间关系B)模块操作细节C)模块控制方法D)模块类型(14 )软件测试是软件件开发过程的重要阶段,是软件质量保证的重要手段,下列哪个(些)是软件测试的任务?I. 预防软件发生的错误Ⅱ. 发现改正程序错误Ⅲ . 提供诊断错误信息 A)只有Ⅰ均不须B)只有ⅡC)只有ⅢD)都是(15 )软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节?A)功能测试B)单元测试C)结构测试D)确认测试(16 )软件维护是软件运行期的重要任务,下列维护任务中哪一类维护是软件维护的主要部分?A)完善性维护B)适应性维护C)改正性维护D)预防性维护17 )软件开发中常采的结构化生命周期方法,由于其特征而一般称其为A)瀑布模型B)对象模型C)螺旋模型D)层次模型(18 )软件原型化开发方法有其基本步骤,下述I. 获取基本需求Ⅱ. 开发工作模型Ⅲ. 严格细部说明Ⅳ. 模型验证中,哪些(个)是实现原型化的最基本的步骤?A)全部都是B)Ⅰ,Ⅱ 和ⅣC)ⅣD)Ⅰ 和Ⅱ(19 )软件设计将涉及软件的结构、过程和模块的设计,其中软件过程是指A)模块间的关系B)模块的操作细节C)软件层次结构D)软件开发过程(20)软件需求分析和设计过程中,其分析与设计对象可归结为两个主要的对象,即数据和程序 , 按一般实施的原则 , 对二者的处理应该是A ) 先数据后程序B )先程序后数据C )与顺序无关D )可同时进行(11)D (12 )B (13)B (14)D (15 )B (16)A (17 )A (18)B (19 )B (20 )A(21)结构化分析 (SA )方法将欲开发的软件系统分解为若干基本加工 , 并对加工进行说明,下述I. 结构化语言 Ⅱ. 判定树 Ⅲ. 判定表是常用的说明工具 ,其中便于对加工出现的组合条件的说明工具是段,一般认为可能占用人员最多的阶段是24 )构建一个原型不支持下述哪种功能(26) 下列哪种描述是正确的 ?A )Ⅱ和ⅢB )Ⅰ、Ⅱ 和ⅢC )Ⅰ 和ⅢD )Ⅰ和Ⅱ22 )软件开发的瀑布模型 般都将开发过程划分为 分析 、设计 、编码和测试等阶A ) 分析阶段B )设计阶段C ) 编码阶段D ) 测试阶段23 )加工是对数据流图中不能再分解的基本加工的精确说明 ,下述哪个是加工的最核心 成分 ? A )加工顺序B )加工逻辑C ) 执行频率D ) 激发条件A )取代最终系统C )辅助估计工程B )辅助收集软件需求 25 )软件文档是软件的重要组成部分 , 也是软件开发阶段的基础 , 它还影响到软件的A ) 可复用性B ) 可维护性C )可扩展性D )可移植性A)定义阶段产生软件需求规划B)测试在软件生命周期中是可选的C)CASE 工具只能辅助软件生命周期的设计阶段D)后一阶段改变时,不需要更新以前所有阶段的文档(27 )黑盒测试法和白盒测试法经常用于软件测试阶段,其中白盒测试法主要用于测试软件的A)结构合理性B)程序正确性C)程序外部功能D)程序内部逻辑(28 )软件计划是软件开发的早期和重要阶段 ,此阶段要求交互和配合的是 A)设计人员和用户B) 分析人员和用户C)分析人员和设计人员 D ) 编码人员和用户(21)A (22)C (23 )B (24 )A (25 )B (26) A (27) D (28) B(29)C (30) A(29 )数据流图是用于软件需求分析的工具 ,下列元素I. 数据流Ⅱ. 加工Ⅲ. 数据存储Ⅳ . 外部实体 ( 源或潭 )哪些是其基本元素?A)Ⅰ,Ⅱ 和ⅢB)Ⅰ 和ⅢC)全部D)Ⅰ,Ⅲ 和Ⅳ(30)数据字典 (DD) 是定义哪一种系统描述工具中的数据的工具 ?A) 数据流程图 B) 系统流程图 C) 程序流程图 D) 软件结构图(31)软件需求分析一般应确定的是用户对软件的A) 功能需求 B) 非功能需求 C) 性能需求 D) 功能需求和非功能需求(32)软件设计包括总体设计和详细设计两部分,下列陈述中哪个是详细设计的内容 ?A) 软件结构 B) 数据库设计 C) 制定测试计划 D) 模块算法(33)数据字典是对数据定义信息的集合 ,它所定义的对象都包含于A) 数据流图 B) 程序框图 C) 软件结构 D) 方框图(34) 软件设计中 ,设计复审是和设计本身一样重要的环节 ,其主要目的和作用是能A) 减少测试工作量 B) 避免后期付出高代价C) 保证软件质量 D) 缩短软件开发周期(35) 程序设计语言的选择是顺利实施编程的重要基础 ,评价可用语言的因素甚多 ,而其首要的选择依据是C) 数据结构的复杂度 D) 算法的复杂度(36) 软件开发的原型化方法是一种动态定义软件需求的方法 ,下述条件 :哪个 (些)条件是实施原型化方法所必备的 ?A )Ⅰ 和ⅡB )Ⅱ 和ⅢC )Ⅰ,Ⅱ 和ⅢD )Ⅲ(37) 软件的可维护性度量可分解为对多种因素的度量 ,下述各种因素I. 可测试性 Ⅱ. 可理解性Ⅲ. 可修改性 Ⅳ. 可复用性 哪个 (些 )是可维护性度量的内容 ?A)全部 B )Ⅰ C )Ⅰ,Ⅱ 和Ⅲ D )Ⅰ 和Ⅱ(38) 软件测试是软件开发过程中重要和不可缺少的阶段过程的多种环节中基础的是A) 集成测试 B) 单元测试 C) 系统测试 D) 验收测试(39) 数据流图是用于表示软件模型的一种图示方法 ,在下列可采用的绘制方法中 ,那些是常采用的 ?A) 语言的应用领域B) 对语言的熟悉程度I. 成熟的原型化人员Ⅱ. 快速的成型工具 Ⅲ . 需求了解的准确性,其包含的内容和步骤甚多 ,而测试I. 自顶向下Ⅱ. 自底向上Ⅲ. 分层绘制Ⅳ . 逐步求精A) 全是B)Ⅰ,Ⅲ 和ⅣC)Ⅱ,Ⅲ和ⅣD)Ⅰ 和Ⅲ(31) D (32) D (33) A (34) B (35) A (36) A (37) C (38) B (39) B (40) B(40)结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的A) 控制流 B) 数据流C) 程序流D) 指令流(41)软件结构是软件模块间关系的表示 ,下列术语中哪一个不属于对模块间关系的描述A) 调用关系B) 从属关系C) 嵌套关系 D) 主次关系(42)原型化方法是一类动态定义需求的方法,下列叙述中 ,哪一个不具有原型化方法的特征?A) 提供严格定义的文档 B) 加强用户参与和决策 C) 简化项目管理 D) 加快需求的确定(43)评审是对软件进行静态测试的一种方法,下述结论中 ,哪个是与软件评审无关的内容A) 尽量发现错误 B) 检查软件文档 C) 根据评审标准 D) 依靠测试信息(44)软件维护是软件得以正常运行的重要环节,按照软件工程方法的理解 ,一般软件维护应该开始于A) 阅读设计文档 B) 理解程序代码 C) 分析软件结构 D) 查阅测试记录(45)软件工程哪个阶段产生软件需求定义 ?A) 定义阶段 B) 工程阶段 C) 维护阶段 D) 开发阶段(46)自顶向下绘制多层数据流程图时,必须考虑到父图与子图之间的平衡,此平衡通常由___来维护A) 输出数据 B) 数据字典 C) 处理序号D) 输入数据(47)下述哪种是内聚性最严格的形式A) 逻辑 B) 功能C)过程D) 一致性(48)下述哪个不是白盒测试法的概念 ?A) 应该执行边界条件下的所有循环 B) 应该执行边界条件下的所有接口B) 应该执行所有逻辑判断的真假情况 D) 应该至少执行一次模型中的所有独立路径(49)原型化方法是一个动态设计过程,它要求使用该方法的人员具有下述哪种能力A) 熟练的编程技能 B) 及时获得用户需求 C) 协作精神及有力管理 D) 巧妙使用工具(50)数据流程图 (DFD) 是用于描述结构化方法中哪一个工作阶段的工具 ?(41) D (42) A (43) D (44) C (45) A (46) B (47) B (48) B (49) B (50) BA) 可行性分析 B) 需求分析 C) 详细设计 D) 程序编码(51)判定树和判定表是用于描述结构化分析方法中哪一环节的工具 ?A) 功能说明B) 数据加工C) 流程描述D) 结构说明(52)在结构化方法中 ,软件功能分解应属于软件开发中的哪一阶段?A) 详细设计B) 需求分析C) 总体设计D) 编程调试(53)信息隐蔽的概念与下述哪一种概念直接相关 ?A) 软件结构定义B) 模块独立性C) 模块类型划分D) 模块耦合度(54)结构化程序流程图中一般包括三种基本结构,下述结构中哪一种不属于其基本结构?A) 顺序结构 B) 条件结构C) 选择结构D) 嵌套结构(55) 软件复审时其主要的复审对象是A) 软件结构 B) 软件文档C) 程序编码D) 文档标准(56) 软件需求规格说明书不应包含的内容是A) 系统输入 / 输出的描述B) 质量控制方案C) 数据字典 D) 用户界面需求描述E)系统可靠性要求描述 F) 测试方案 G) 需求分析阶段进度安排 H) 人员需求(51) B (52) C (53) B (54) D (55) B (56 ) F G H(57)将下面的 DFD 转换为初始化的模块结构图图中:左竖虚线表示此处为系统的逻辑输入57-2 )57-3 )(58)将下面的伪码转换为 PAD 和 N-S 图beginS1;If x>5 then S2 else S3;while y<0 do beginif z>3 then S4 else S5;while w>0 then S6; S7end;S8;If u>0 then S9;S10;End.(59)将下面的 PAD 转换为流程图(60)将下面给出的伪码,转换为 PAD 图和程序流程图 begin 为变量 X 赋值IF X>0 then S1Else S2; 为 Y 和 Z 赋值; while Y>0 do begin IF X>0 then S3;while Z>0 do begin S4; S5end end;S6 IF Z=0 then S7;End.S1S2A1B>0B<=0B1B2B3C1C2staA>0A<=0A2WhileB4C>0C<=0(61)问题陈述:某校学生管理科负责录入、修改(在授权时)学生成绩(姓名、学生、A 科成绩);医务科负责录入学生健康信息(姓名、学号、健康状况[优、良、一般、差]);房产科负责录入、修改、查询学生住宿情况(姓名、学号、楼号、房间号、现有人数);学籍科负责统计 A 科成绩及格率并按月统计学生健康状况百分比,请给出该学生管理信息系统的 DFD 及数据字典。
第一章1-1 什么是软件危机?是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1-3 什么是软件工程?是指导计算机软件开发和维护的一门工程学科。
1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
目前使用得最广泛的软件工程方法学(2种):1. 传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-6 什么是软件过程?它与软件工程方法学有何关系?z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。
软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。
适用中小型项目。
快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。
第1章 软件工程概述 1、什么是软件工程?为什么会出现软件工程? 软件工程是:① 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;② 研究①中提到的途径。 软件工作者在20世纪60年代后期开始认真研究消除软件危机的途径,从而逐渐形成了一门新兴的工程学科——计算机软件工程学(通常简称为软件工程)。 2、软件工程的主要目标是什么?基本目标是什么? 软件工程的目标:从管理和技术两个方面开发和维护计算机软件,用低成本,开发出达标、高性能、易于移植、可靠性高的软件。 软件工程的基本目标是:优质、高产。 3、什么是软件工程方法学?软件工程的3要素(软件工程方法学的3要素)是什么?分别包含什么内容? 软件工程方法学:软件生命周期全过程中使用的一整套技术方法的集合 软件工程方法学包含3个要素:方法、工具和过程。 方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题; 工具是为运用方法而提供的自动的或半自动的软件工程支撑环境; 过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。 4、什么是软件过程?什么是软件周期?常见软件生命周期模型(课件中的前5类)的特点有哪些? 软件过程:它是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 软件生命周期:由软件定义、软件开发和运行维护(也称之为软件维护)3个时期组成 ①瀑布模型 定义:传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。 瀑布模型的特点:1.阶段间具有顺序性和依赖性;2.推迟实现的观点;3.质量保证的观点。瀑布模型的成功在很大程序上是由于它基本上是一种文档驱动的模型。 瀑布模型的主要优点:a.可强迫开发人员采用规范的技术方法 ; b.严格地规定了每个阶段必须提交的文档 ; c.每个阶段结束前必须正式进行严格的技术审查和管理复审 。 瀑布模型的主要缺点 :在可运行的软件产品交付给用户之前,用户只能通过文档来了解未来的产品是什么样的。开发人员和用户之间缺乏有效的沟通,很可能导致最终开发出的软件产品不能真正满足用户的需求 。 ②快速原型模型 定义:所谓“快速原型”, 是快速建立起来的、可在计算机上运行的程序,它所能完成的功能往往是最终的软件产品所能完成的功能的子集。 原型是软件开发人员与用户沟通的强有力工具,因此有助于所开发出的软件产品满足用户的真实需求。 快速原型模型的主要优点是:A.使用这种软件过程开发出的软件产品通常能满足用户的真实需求; B.软件产品的开发过程基本上是线性顺序过程。 ③增量模型 定义:增量模型也称为渐增模型 增量模型的主要优点:A.能在较短时间内向用户提交可完成部分工作的产品 ; B.逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品,减少一个全新的软件给客户组织带来的冲击 。 ④螺旋模型 定义:螺旋模型的基本思想是, 使用原型及其他方法尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型 。 螺旋模型所描述的软件过程主要适用于内部开发的大型软件项目 。 使用螺旋模型开发软件,要求软件开发人员具有丰富的风险评估知识和经验 。 螺旋模型主要有下述优点 :A.有利于已有软件的重用 ; B.有助于把软件质量作为软件开发的一个重要目标 ; C.减少了过多测试或测试不足所带来的风险 ; D.软件维护与软件开发没有本质区别 。 ⑤喷泉模型 定义:迭代是软件开发过程中普遍存在的一种内在属性。在面向对象范型中,软件开发过程各阶段之间的迭代或同一阶段内各个工作步骤之间的迭代,比在结构化范型中更常见。 喷泉模型,是典型的面向对象生命周期模型,它充分体现了面向对象软件开发过程迭代和平滑过渡的特性。 5、在“快速原型”模型中软件原型的作用主要是什么?在哪类生命周期模型中引入了风险分析?哪类生命周期模型是典型的传统软件工程生命周期模型?哪类生命周期模型是典型的面向对象软件工程生命周期模型? 在“快速原型”模型中软件原型的作用主要是:软件开发人员与用户沟通的强有力工具,因此有助于所开发出的软件产品满足用户的真实需求。 螺旋模型中引入风险分析 瀑布模型是典型的传统软件工程生命周期模型 喷泉模型是典型的面向对象软件工程
第2章 可行性研究 1、可行性研究包括哪几方面(每方面解决什么问题),研究得到的文档和结论是什么? 技术可靠性:使用现有的技术能否实现这个系统吗? 经济可行性:这个系统的经济效益能否超过它的开发成本? 操作可行性:系统的操作方式在这个用户组织内是否行得通? 研究的结果:是一份可行性研究的各个步骤的工作结果的文档,它包含了工程是否能继续进行下去和分析员的推荐方案;
2、主要描述工具的概念和使用:
系统流程图:是什么,成份和基本符号,描述什么模型,画法; 数据流图:是什么,成份和基本符号,系统级和功能级、简单细化数据流图的区别,画法; 数据字典:是什么,内容、定义数据的方法。 (1)系统流程图的定义:是概括地描绘物理系统的传统工具。它用图形符号以黑盒子形式描绘组成系统的每个部件。 系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,是物理数据流图而不是程序流程图。
系统流程图的基本符号: (2)数据流图的定义:它是一种图形化技术,它描述信息和数据从输入移动到输出过程中所经历的变换。在数据流 图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。 数据流图的基本符号:正方形(或立方体) 表示数据的源点或终点; 圆角矩形(或圆形) 代表变换数据的处理; 开口矩形(或两条平行横线) 代表数据存储; 箭头线 表示数据流,即特定数据的流动方向。 (3)数据字典的定义:是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。 数据字典的内容:数据流、数据流分量、数据存储、处理 定义数据的方法:用被定义的事物的成分的某种组合表示这个事物,这些组成成分又由更低的成分组合来定义。 3、 数据字典和数据流图的关系。 数据流图和数据字典共同构成系统的逻辑模型。没有数据字典,数据流图就不严格,然而没有数据流图,数据字典也难于发挥作用。只有数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
第3章 需求分析 1、需求分析的任务是什么?分析得到的成果(文档)是什么?包含哪些内容? 1、需求分析的任务:(1)确定对系统的综合要求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求(2)分析系统的数据要求:(3)导出系统的逻辑模型(4)修正系统开发计划; 2、需求分析得到的结果:是通过需求分析得到的除了分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。 2、软件需求通常包括哪些方面?各类需求一般包含内容有哪些? (1)功能需求 :这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。 (2)性能需求:性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。 (3)可靠性和可用性需求:可靠性需求定量地指定系统的可靠性。可用性与可靠性密切相关,它量化了用户可以使用系统的程度。 (4)出错处理需求:这类需求说明系统对环境错误应该怎样响应。 (5)接口需求:接口需求描述应用系统与它的环境通信的格式。常见的接口需求有:用户接口需求;硬件接口需求;软件接口需求;通信接口需求。 (6)约束:设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。 (7)逆向需求:逆向需求说明软件系统不应该做什么。 (8)将来可能提出的要求:应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩充和修改。 3、追加的主要描述工具的概念和使用: E-R图:是什么,成份和基本符号,描述什么模型; 状态转换图:是什么,描述什么模型 (1)E-R图的定义:即实体--联系图,是表示数据对象及其之间关系的图形语言机制,是建立数据模型的图形工具。 E-R图的基本成份和使用的符号 :实体(即数据对象)----矩形框,关系----菱形框, 属性----椭圆形或圆角矩形。 E-R图描述的模型:用来建立数据模型,ER模型使用简单的图形符号表达系统分析员对问题域的理解 (2)状态转换图的定义:通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。 状态转换图的基本成份和使用的符号:基本成分是状态、事件、状态转换。 状态转换图描述的模型:用来建立系统的行为模型。 4、在结构化分析中,建模的核心是什么?3种模型分别是什么,分别用什么工具来描述? 建模的核心是数据字典,它描述了所有的在目标系统中使用的和生成的数据对象。 (1)、数据模型,用实体-联系图描述; (2)、功能模型,用数据流图描述; (3)、行为模型,用状态转换图描述。
第5章 总体设计 1、什么是总体设计? 将软件需求转化为软件的数据结构和系统结构,确定各组成成分(子系统或模块)之间的相互关系 2、模块化设计的原理包括什么?为了提高软件的可维护性,其中,模块独立性最重要的,是评价软件结构质量的首要标准。 模块化设计的原理包括:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立。为了提高软件的可维护性,其中,模块独立性最重要的,是评价软件结构质量的首要标准。 3、模块独立性度量(描述)的两个指标:内聚、耦合;什么是内聚,什么是耦合;耦合和内聚的具体分类及使用原则;在面向数据流的方法中,内聚、耦合各分为哪几级,每级的具体含义分别是什么?强度从弱到强如何排列?耦合和内聚两者关系? (1)耦合定义:它是对一个软件结构内不同模块之间互连程度的度量;
耦合分类: 耦合使用原则:尽量使用数据耦合,小用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合,最终降低模块间接口的复杂性。 (2)内聚定义:它标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。
内聚分类: 内聚使用原则:设计时力求高内聚,设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。 (3)耦合和内聚两者关系:耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。其中内聚更重要。内聚与耦合密切相关。同其它模块强耦合的模块意味着它自己是弱内聚的;强内聚模块意味着与其它模块间松散耦合。所以设计的目标应该是力争高内聚、低耦合。 4、软件总体结构描述工具的概念和使用:软件层次图、软件结构(SC)图、HIPO图:是什么,基本符号和表示的结构,画法。 (1)软件层次图的定义:是用来描绘软件层次结构的图形工具。一个矩形框代表一个模块,方框间的连线表示模