软件工程李爱萍作业参考答案-最终版修改

合集下载

《软件工程》各章课后习题答案

《软件工程》各章课后习题答案

《软件工程》各章课后习题答案软件工程是计算机科学与技术的一门重要学科,旨在研究和应用工程原则和方法来开发高质量的软件系统。

课程中的习题对于加深学生对软件工程理论和实践的理解至关重要。

下面是对《软件工程》各章课后习题的答案,希望能够帮助你更好地掌握软件工程的知识。

第一章:软件工程导论1. 软件工程的定义:答:软件工程是通过应用系统化、规范化和可量化的方法进行软件开发、运行和维护的学科。

2. 软件工程的目标:答:软件工程的目标是提高软件开发的质量、效率和可靠性,使得软件能够满足用户的需求和期望。

3. 软件生命周期模型:答:常见的软件生命周期模型包括瀑布模型、迭代模型、敏捷模型等。

每个模型都有其独特的特点和适用场景。

4. 软件过程模型:答:软件过程模型描述了软件开发过程中的一系列活动和阶段,常见的软件过程模型包括瀑布模型、迭代模型、敏捷模型等。

5. 软件工程的基本原则:答:常见的软件工程基本原则包括分阶段、逐步求精、持续集成、迭代开发、需求优先等。

第二章:软件项目管理1. 软件项目管理的定义:答:软件项目管理是指对软件开发过程中的资源、进度、质量等进行有效管理,以确保软件项目能够按时、按质地完成。

2. 软件项目管理的内容:答:软件项目管理包括项目计划、需求管理、项目进度管理、资源管理、风险管理等方面。

3. 软件项目管理的方法:答:常见的软件项目管理方法包括敏捷项目管理、水平项目管理、里程碑项目管理等。

4. 软件项目管理的工具:答:常用的软件项目管理工具包括甘特图、PERT/CPM网络图、项目管理软件等。

第三章:软件需求分析与规格说明1. 软件需求的定义:答:软件需求是指用户对软件系统的要求和期望,包括功能需求、性能需求、接口需求等方面。

2. 软件需求分析的方法:答:常用的软件需求分析方法包括面向对象分析法、数据流图法、用例分析法等。

3. 软件需求规格说明的格式:答:常见的软件需求规格说明的格式包括自然语言描述、结构化描述、图形描述等。

(完整版)《软件工程》作业及答案.

(完整版)《软件工程》作业及答案.

《软件工程》作业及答案1-1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

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

软件危机典型表现:对软件开发成本和进度的估计常常很不准确。

用户对“已完成的”软件系统不满意的现象经常发生。

软件产品的质量往往靠不住。

软件常常是不可维护的。

软件通常没有适当的文档资料。

软件成本在计算机系统总成本中所占的比例逐年上升。

软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。

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

管理和控制软件开发过程相当困难。

软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。

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

1-2 假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?答:软件工程是指导计算机软件开发和维护的一门工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

软件工程本质特性:1、软件工程关注于大型程序的构造;2、软件工程的中心课题是控制复杂性;3、软件经常变化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。

软件工程习题及参考答案

软件工程习题及参考答案

软件工程习题及参考答案软件工程习题及部分参考答案判断题软件也会磨损与老化。

(X)完善性维护就是提高或完善软件得性能。

(√)数据字典就是对数据流图中得数据流,加工、数据存储、数据得源与终点进行详细定义。

(X)软件就是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写得程序,软件开发实际上就就是编写程序代码。

(X)软件模块之间得耦合性越弱越好。

(√)如果通过软件测试没有发现错误,则说明软件就是正确得。

(X)快速原型模型可以有效地适应用户需求得动态变化。

(√)模块化,信息隐藏,抽象与逐步求精得软件设计原则有助于得到高内聚,低耦合度得软件产品。

(√)集成测试主要由用户来完成。

(X)确认测试计划应该在可行性研究阶段制定(X)白盒测试无需考虑模块内部得执行过程与程序结构,只要了解模块得功能即可。

(X)?软件概要设计包括软件系统结构设计以及数据结构与数据库设计。

(√)软件工程采用得生存周期方法就就是从时间角度对软件得开发与维护这个复杂问题进行分解,将软件生存得时期分为若干阶段。

(√)系统流程图表达得就是部件得信息流程,还表示对信息进行加工处理得控制过程。

(╳)模块越多,开发成本越小。

(╳)软件测试得目得就就是证明软件没有错。

( ╳)PAD图在设置了五种基本得控制结构后,还允许递归使用。

(√)在进行了可行性分析后,需求分析就只需要解决目标系统得设计方案。

(×)SA法就是面向数据流,建立在数据封闭原则上得需求分析方法。

(√)HIPO 法既就是需求分析方法,又就是软件设计方法。

(√)在面向对象得需求分析方法中,建立动态模型就是最主要得任务。

(×)加工小说明就是对系统流程图中得加工进行说明。

(×)判定表得优点就是容易转换为计算机实现,缺点就是不能够描述组合条件。

(×)需求分析得主要方法有SD 法、OOA 法及HIPO法等。

(×)分层得DFD图可以用于可行性分析阶段,描述系统得物理结构。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案软件工程课后习题参考答案1. 第一章规约与软件工程概述1.1 规约的定义规约是软件开发过程中明确要求的描述,包含了对软件需求、设计、实现、测试、部署和维护等各个阶段的要求和约束。

1.2 软件工程的概述软件工程是一门涉及对软件的开发、运行和维护的学科。

它通过应用工程原则和方法,以系统化、规范化、可靠化、经济化和高质量的方式来开发和维护软件。

2. 第二章软件需求规约2.1 软件需求规约的作用软件需求规约是对软件系统所需功能和性能的具体描述和说明,是软件开发的基础和依据。

它指导着开发团队的工作,确保软件的功能和性能符合用户的需求。

2.2 软件需求规约的要素软件需求规约包括功能需求、非功能需求和约束条件。

功能需求描述了软件系统应该具备的功能,非功能需求描述了软件系统的性能要求和质量特性,约束条件描述了软件系统所受限制的条件。

3. 第三章软件设计规约3.1 软件设计规约的目标软件设计规约是对软件系统进行结构化和模块化设计的过程,其目标是确保软件系统具备可靠性、可维护性、可扩展性和可重用性。

3.2 软件设计规约的方法软件设计规约采用面向对象设计、结构化设计和模块化设计等方法。

面向对象设计强调将问题领域的概念和对象转化为软件系统的类和对象,结构化设计强调将系统分解为模块,模块化设计强调模块间的接口和通信。

4. 第四章软件实现规约4.1 软件实现规约的目的软件实现规约是指将软件设计阶段得到的设计规约转化为计算机可执行的程序代码,其目的是确保软件系统的正确性、可靠性、可维护性和可测试性。

4.2 软件实现规约的技术软件实现规约采用编程语言、软件开发工具和软件开发环境等技术。

编程语言提供了描述算法和数据结构的语法和语义,软件开发工具提供了代码编辑、编译、调试和测试等功能,软件开发环境提供了开发的整体支持。

5. 第五章软件测试规约5.1 软件测试规约的目的软件测试规约是对软件系统进行功能、性能和质量等方面的验证和检测,其目的是找出软件系统的错误和缺陷,并修复和改进。

软件工程课后习题答案

软件工程课后习题答案

软件工程课后习题答案1. 什么是软件工程?软件工程是一种应用工程原理和方法的学科,目的是开发高质量的软件。

软件工程包括以下几个方面:•需求分析:确定用户的需求,并将其转化为可执行的软件功能。

•设计:设计软件的架构和模块,并确定各个模块的功能和关系。

•编码:实现软件的设计,将设计的模块通过编程语言编写成可执行的代码。

•测试:通过不同的测试方法和技术对软件进行验证,确保软件的质量和可靠性。

•维护:对软件进行改进和修复,以适应用户需求的变化和修复软件中的错误。

2. 软件工程的目标是什么?软件工程的目标是开发高质量的软件,以满足用户的需求。

具体目标包括:•可靠性:软件应该能够正常运行并处理各种输入情况,不会崩溃或导致系统故障。

•可维护性:软件应该易于理解和修改,以适应用户需求的变化和修复软件中的错误。

•可扩展性:软件应该能够在不改变其基本架构的情况下,方便地添加新的功能模块。

•可重用性:软件应该能够被多个项目和团队复用,以提高开发效率。

•可测试性:软件应该易于测试,以确保其功能和性能符合预期。

3. 软件开发生命周期有哪几个阶段?软件开发生命周期通常包括以下几个阶段:1.需求分析和定义阶段:在这个阶段,软件工程师与用户沟通,了解用户的需求和期望。

然后,设计师将这些需求转化为软件规格说明。

2.软件设计阶段:在这个阶段,设计师根据需求规格说明书设计软件的架构和模块,并确定模块之间的关系和功能。

3.编码阶段:在这个阶段,开发人员根据设计文档编写代码,实现软件的功能。

4.测试阶段:在这个阶段,测试人员使用不同的测试方法和技术对软件进行验证,以确保软件的质量和可靠性。

5.部署和维护阶段:在这个阶段,软件工程师将软件部署到实际的运行环境中,并根据用户的反馈进行改进和修复。

4. 什么是软件需求?软件需求是对系统或软件功能和性能的描述,它描述了用户的需求和期望。

软件需求通常包括以下几个方面:•功能需求:描述软件应该具有的功能,以及这些功能如何满足用户的需求。

《软件工程》作业及参考答案3

《软件工程》作业及参考答案3

软件工程作业及参考答案第五、六章一、填空题1.详细设计的工具有(图形工具)、表格工具和语言工具。

2.为使用流程图描述结构华程序,限制流程图有五种基本的控制结构(顺序型)、(选择型)、(while型循环)、until循环、多情况型选择。

3.HIPO图是由一组(IPO)图和一张(HC)图组成。

4.IPO图由(输入)、处理和(输出)三个框组成。

这个图的特点是能够直观的显示三者之间的关系。

5.面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。

面向对象方法是一种运用(对象)、(类)、(封装)、(聚合)、消息传送、多态性等概念来构造系统的软件开发方法。

6.面向对象的软件工程方法是面向对象方法在(软件工程)领域的全面应用。

7.UML的定义包括(UML语义)和(UML表示法)两个部分。

二、判断题1.详细设计是在概要设计之后进行的。

它利用概要设计的结果,对系统中的每个模块给出足够的过程性描述。

(√)2.程序设计语言中应绝对禁止使用GOTO语句。

(╳)3.PAD图在设置了五种基本的控制结构后,还允许递归调用。

(√)4.UML设定的目标之一是运用面向对象概念来构造系统模型。

(√)5.类是关于对象性质的描述,由方法和数据集成。

(√)三、简答题1.详细设计的任务是什么?参考答案:1.为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;2.确定每一模块使用的数据结构;3.确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。

4.要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。

2.根据伪码画出N-S图。

STARTIF A THENBLOCKBCEND BLOCKEND IFSTOP3.根据伪码画出N-S图。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案1.简述软件开发的本质。

答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。

P192.简述实施软件开发的基本途径。

答:实施软件开发的基本途径是系统建模。

所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。

P193.简述何谓模型以及软件开发中所涉及的模型。

答:模型是一个抽象。

该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。

软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。

4.简述软件开发所涉及的两大类技术。

答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。

5、简述需求与需求规约的基本性质。

答:需求的基本性质:1)必要的,该需求是用户所要求的。

2)无歧义的,该需求只能用一种方式解释。

3)可测的,该需求是可进行测试的。

4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。

5)可测量的,该需求是可测量的。

需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。

2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。

3)完整的:没有被遗漏的需求。

4)一致的:不存在互斥的需求。

6、简述软件需求的分类。

答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可分为性能需求,外部接口需求、设计约束和质量属性需求。

P237、举例说明功能需求和非功能需求之间的基本关系。

答:非功能需求可作用于一个或多个功能需求,例如非功能需求可作用于一个或多个功能需求其中,非功能需求1作用于功能需求1和功能需求38、有哪几种常用的初始需求发现技术?答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。

软件工程课后习题答案2-12章

软件工程课后习题答案2-12章

书状态为S2&终端 输入“H=”加书名 管理员设置状 态 管理员删除 管理员添加
预约
书出库(删除) 书入库
图4.4.2
(三)图书馆终端用户模式的有穷状态机描述 • 状态机J:{读者查询状态,查询结果} • 输入集K:{终端输入用户查询命令,书的各种 状态(S1,S2,S3)} • 转换函数T:如图4.4.3所示 • 初始态S:{读者查询状态} • 终态集F:{查询结果}
取票通知 账单 机票 账单
P3.1 核对取票凭证 顾客 取票通知 P3.2 交款 机票 P3.3 打印机票
机票预定系 统
信 息 通 知 单 机 票


信息
机票

预定信息处 理
信息






取票凭证处 理
通知 账单 单
账单
信 息 定 预 航班信

机票预定子 系统
单 知
机票发放子 系统
效 通 知


取款单
P3.1输入取款 信息
取款信息 E1储 户 密码 P3.2 密码校验
P4 计算利息
利息 利息 P5 打印利息 清单
密码正确信息
E2业 务员
利率
P6设置利 率
利率
不能是两个分开的子系统,是相同的前台单个处理
银行储蓄系 统
存 款 单 款
率 利
利 存单 息清单
密 码
业务单据录 入
利 率
存款单


储蓄业务处理
(一)图书状态的有穷状态机描述 • 状态机J:{书在图书馆S1,书被借出S2, 书被预约S3} • 输入集K:{书上条形码,借阅卡条形码, 终端输入各种命令} • 转换函数T:如图4.4.1所示 • 初始态S:{书在图书馆S1,书被借出S2} • 终态集F:{书被借出S2,书被预约S3}

软件工程课后题答案大全(详细)

软件工程课后题答案大全(详细)

软件工程课后题答案大全(详细)软件工程课后题答案大全(详细)现代社会中,软件工程越来越重要,因为它在各个行业中扮演着关键的角色。

而在学习软件工程课程时,完成课后题是提高理解和掌握程度的重要途径。

本文将为您提供一份全面且详细的软件工程课后题答案大全,希望能够帮助您更好地学习与应用软件工程知识。

1. 什么是软件工程?软件工程是指应用系统化的、规范化的、可量化的方法来开发和维护软件的学科。

它涵盖了各种软件开发阶段,包括需求分析、设计、编码、测试和维护,并借鉴了工程学的原则和方法。

2. 软件工程的原则有哪些?软件工程遵循一系列原则来保证软件开发和维护的质量和效率,如下:- 需求管理原则:明确需求,确保项目目标的准确性和一致性。

- 分阶段原则:将软件开发过程划分为不同的阶段,有序进行。

- 风险管理原则:评估和管理项目中的风险,降低项目失败的可能性。

- 适应性原则:根据不同的项目需求和情况,选择合适的软件开发方法和工具。

- 团队合作原则:加强团队协作,促进良好的沟通和信息共享。

3. 软件生命周期有哪些阶段?软件生命周期包括需求分析、设计、编码、测试和维护等多个阶段。

- 需求分析:明确软件系统的功能和性能要求,了解用户需求。

- 设计:定义软件系统的整体结构和组件之间的关系,确定使用的技术和工具等。

- 编码:根据设计方案,将代码实现为可以执行的程序。

- 测试:验证软件系统的功能和性能是否满足需求,并进行错误修复。

- 维护:对软件进行修复和改进,确保系统的长期可用性。

4. 软件需求分析的方法有哪些?软件需求分析是保证软件项目成功的关键步骤,以下是几种常用的分析方法:- 面谈法:直接与用户沟通,了解他们的需求和期望。

- 文档分析法:研究和分析相关文档,如需求规格说明书、用户手册等。

- 原型法:创建一个初步的系统原型,供用户参观和测试,获取反馈。

- 视频录制法:录制用户正在进行的工作流程,以便更好地了解他们的需求。

5. 软件项目管理中的风险管理包括哪些步骤?风险管理是确保软件项目成功的重要环节,步骤如下:- 风险识别:识别和描述可能影响项目目标实现的风险。

软件工程课后答案完整版

软件工程课后答案完整版

软件工程课后答案完整版软件工程是一门涉及软件开发与管理的学科,它关注着如何有效地组织、设计、开发和维护软件系统。

作为一门实践性强的学科,课后答案对于学习软件工程的学生来说非常重要。

本文将以软件工程课后答案为主题,为您提供一份完整版的答案,旨在帮助您更好地理解和掌握软件工程的知识。

一、需求分析与规格说明1. 问题描述对于任何一门软件工程课程,需求分析和规格说明都是至关重要的环节。

通过合理地分析需求,可以明确软件系统的功能需求、性能需求和用户需求,从而为后续的设计和开发工作奠定基础。

在这一部分中,我们将详细讨论问题描述、需求规格说明以及软件需求规格说明的编写步骤和技巧。

2. 答案示例问题描述:某个公司需要开发一个在线购物系统,能够满足用户浏览商品、下单购买、支付、评价等功能。

需求规格说明:该系统需要具备以下功能需求:- 用户注册登录:用户可以通过注册登录系统,建立个人账号,用于后续购物操作。

- 商品浏览:用户可以浏览系统中的商品,包括商品图片、详细介绍、价格等信息。

- 购物车管理:用户可以将感兴趣的商品加入购物车,并对购物车进行管理,如增加、删除、修改商品数量等操作。

- 订单管理:用户可以在购物车中选择商品提交订单,并进行支付操作。

- 支付功能:系统需要集成常用的支付渠道,如支付宝、微信支付等,以便用户支付订单。

- 评价功能:用户在收到商品后可以对商品进行评价,并可以查看其他用户对商品的评价。

三、软件系统设计与实现1. 系统架构设计系统架构设计是软件工程中的核心环节之一,它关注着如何将系统划分为各个模块,并确定模块之间的接口和依赖关系。

在这一部分中,我们将着重讨论系统架构设计的原则、方法以及常用的架构模式。

2. 答案示例系统架构设计的主要目标是实现系统的可扩展性、灵活性和可维护性。

在本次项目中,我们采用了经典的三层架构模式,即用户界面层、业务逻辑层和数据访问层。

- 用户界面层:负责与用户进行交互操作,接收用户输入的请求,并向用户展示系统的响应结果。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案一、概述软件工程作为一门跨学科的学科,涉及到软件开发的各个方面,对培养软件工程师的能力具有重要意义。

课后习题是巩固和深化学生对课程知识的理解和应用的重要途径。

本文将为软件工程课后习题提供一些参考答案,供学生参考和自我评估。

二、需求分析与规格说明1. 什么是软件需求?软件需求分析的目的是什么?软件需求是对问题域中用户对软件所期望的功能和性能的描述。

软件需求分析的目的是识别、理解、规范和管理软件系统开发的需求。

2. 软件需求分析的基本步骤是什么?软件需求分析的基本步骤包括需求获取、需求建模、需求验证和需求管理。

3. 什么是功能需求?什么是非功能需求?功能需求描述的是软件系统应具备的具体功能和行为。

非功能需求则描述了软件系统的其他属性,例如性能、安全性、可靠性等。

4. 举例说明一些常见的软件需求验证方法。

常见的软件需求验证方法包括需求审查、原型验证、测试和模型检查等。

三、软件设计与架构1. 什么是软件架构?软件架构的重要性是什么?软件架构是软件系统的基础结构和组织方式,决定了软件系统的可扩展性、可维护性和可演化性。

软件架构的合理设计能够降低开发和维护的难度。

2. 请简要介绍常见的软件架构模式。

常见的软件架构模式包括分层架构、客户-服务器架构、面向对象架构和微服务架构等。

3. 什么是设计模式?列举几个常见的设计模式。

设计模式是针对软件设计中的常见问题所提出的解决方案。

常见的设计模式包括单例模式、观察者模式、工厂模式和策略模式等。

4. 请简要介绍面向对象设计的原则。

面向对象设计的原则包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则和接口隔离原则等。

四、软件测试与质量保证1. 软件测试的目的是什么?请简要介绍测试驱动开发(TDD)。

软件测试的目的是发现软件产品中的错误和缺陷。

测试驱动开发是先编写测试用例,再根据用例编写代码的开发模式。

2. 请简要介绍黑盒测试和白盒测试。

黑盒测试是基于软件外部行为和需求的测试,不考虑软件的内部实现。

(完整版)软件工程习题+答案(可编辑修改word版)

(完整版)软件工程习题+答案(可编辑修改word版)

一、选择题1.软件开发瀑布模型中的软件定义时期各个阶段依次是:(B)A)可行性研究,问题定义,需求分析。

B)问题定义,可行性研究,需求分析。

C)可行性研究,需求分析,问题定义。

D)以上顺序都不对。

(软件开发时期:概要设计、详细设计、软件实现、软件测试)2.可行性研究主要从以下几个方面进行研究:(A)A)技术可行性,经济可行性,操作可行性。

B)技术可行性,经济可行性,系统可行性。

C)经济可行性,系统可行性,操作可行性。

D)经济可行性,系统可行性,时间可行性。

3.耦合是对软件不同模块之间互连程度的度量。

各种耦合按从强到弱排列如下:(C)A)内容耦合,控制耦合,数据耦合,公共环境耦合。

B)内容耦合,控制耦合,公共环境耦合,数据耦合。

C)内容耦合,公共环境耦合,控制耦合,数据耦合。

(内容耦合、公共耦合、外部耦合、控制耦合、特征耦合、数据耦合)D)控制耦合,内容耦合,数据耦合,公共环境耦合。

4.在详细设计阶段所使用到的设计工具是:(C )A)程序流程图,PAD 图,N-S 图,HIPO 图,判定表,判定树.B)数据流程图,Yourdon 图,程序流程图,PAD 图,N-S 图,HIPO 图。

C)判定表,判定树,PDL,程序流程图,PAD 图,N-S 图。

D)判定表,判定树,数据流程图,系统流程图,程序流程图,层次图。

详细设计阶段工具:判定表、判定树、数据流程图、系统流程图、程序流程图、PAD 图、N-S 图、PDL在软件详细设计阶段,常用的图形描述工具有程序流程图,盒图(NS 图)和问题分析图(PAD) .常用的语言描述工具为 PDL(程序设计语言) ,常用的表格描述工具有判定表和判定树.DFD 数据流图:总体设计阶段5.按照软件工程的原则,模块的作用域和模块的控制域之间的关系是:(A)A)模块的作用域应在模块的控制域之内。

B)模块的控制域应在模块的作用域之内。

C)模块的控制域与模块的作用域互相独立。

D)以上说法都不对。

软件工程课后习题答案

软件工程课后习题答案

软件工程课后习题答案一、项目规划和管理1. 项目规划和管理的重要性在软件工程中,项目规划和管理是确保项目成功的关键因素。

它涉及到确定项目的目标、范围和需求,制定项目计划和时间表,分配资源,通过有效的沟通和协作来管理团队,以满足项目的要求和客户的期望。

良好的项目规划和管理可以提高项目的成功率,避免项目变更和延迟,保证项目在预算和时间范围内完成。

2. 项目规划的步骤和内容项目规划是项目管理的第一步,它包括以下步骤和内容:(1)确定项目目标和范围:明确项目的目标和范围,包括项目的可交付成果、所需功能和业务需求。

(2)需求分析和定义:详细收集和分析项目的需求,明确项目的功能和非功能性要求。

(3)制定项目计划:制定项目的时间表和里程碑,安排项目的活动和任务,确定资源需求和预算。

(4)风险评估和管理:评估项目的风险和不确定性,制定相应的风险管理策略。

(5)团队组建和管理:确定项目的团队成员,指定责任和职责,建立有效的沟通和协作机制。

(6)制定项目管理计划和报告:制定项目管理的具体计划和报告,包括项目的进度、成本和质量控制。

3. 项目管理的工具和技术项目管理涉及到各种工具和技术的应用,以支持项目规划和管理。

其中一些常用的工具和技术包括:(1)甘特图:可视化展示项目的时间表和活动,帮助团队成员了解任务的分配和完成情况。

(2)里程碑图:标记项目关键节点和重要事件的图表,用于跟踪项目进展和提醒项目重要里程碑的达成。

(3)网络图:图示项目活动之间的依赖关系和先后顺序,帮助确定活动的优先级和关键路径。

(4)资源分配和调度:根据项目需求和资源可用性,合理分配和调度团队成员和其他资源。

(5)决策分析:采用定性和定量的方法,评估项目决策的风险和效益,以支持决策过程。

(6)变更管理:制定变更管理程序和流程,确保变更的合理性和对项目的影响进行评估和控制。

二、软件需求分析与设计1. 软件需求分析的目的和方法软件需求分析是在指导下进行的,对于定义用户需求、开发软件系统和确保软件质量都非常重要。

软件工程教程课后参考答案

软件工程教程课后参考答案

软件工程教程课后参考答案软件工程是一个涉及软件开发生命周期的综合性学科,它包含了软件需求、设计、开发、测试和维护等多个环节。

本文将为大家提供软件工程教程的课后参考答案,帮助读者更好地理解和掌握软件工程的相关知识。

一、软件需求分析在软件开发过程中,需求分析是非常关键的一步。

它的目的是明确用户的需求,为后续的软件设计和开发提供依据。

需求分析主要包括以下几个步骤:1.1 需求搜集:通过与用户沟通、调研等方式收集用户需求,可以采用面谈、问卷调查等方法。

1.2 需求分析:对搜集到的需求进行整理和分析,明确用户的具体需求和优先级。

1.3 需求规格说明:将需求以文档形式进行规格化,包括用例图、用例描述、功能需求等。

1.4 验证需求:通过与用户的确认、需求评审等方式,确保需求的正确性和完整性。

二、软件设计软件设计是指根据需求分析的结果,对软件进行整体架构、模块划分等设计工作。

下面是软件设计的一般过程:2.1 系统架构设计:确定系统的整体结构,包括模块划分、模块之间的关系等。

2.2 模块设计:对系统中的每个模块进行详细设计,包括定义模块接口、数据结构等。

2.3 数据库设计:设计系统所需的数据库结构,包括数据表的设计、关系建立等。

2.4 用户界面设计:设计软件的用户界面,包括界面布局、交互方式等。

2.5 验证设计:对设计进行评审和验证,确保设计的合理性和可行性。

三、软件开发软件开发是指根据需求和设计的结果,进行编码、调试和测试等开发工作。

下面是软件开发的一般过程:3.1 编码实现:根据设计文档进行编码工作,将设计的结果转化为可执行的程序。

3.2 单元测试:对每个模块进行独立测试,确保模块的功能和接口正确。

3.3 组件测试:将多个模块组装在一起进行测试,确保各个模块之间的协同工作正常。

3.4 系统测试:对整个软件系统进行测试,包括功能测试、性能测试等。

3.5 调试和修复:在测试过程中发现问题,进行调试和修复,确保软件的稳定性和可靠性。

(完整版)软件工程课后习题答案

(完整版)软件工程课后习题答案

第一章1.1什么是计算机软件?软件的特点是什么?计算机软件是指计算机系统中的程序及其文档软件的特点:●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。

●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。

●软件的使用没有硬件那样的机械磨损和老化问题。

1.2简述软件的分类,并举例说明1.系统软件系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。

例如:编译软件、操作系统。

2.支撑软件支撑软件是支撑软件的开发和维护的软件。

例如:数据库管理系统、网络软件、软件工具、软件开发环境。

3.应用软件应用软件是特定应用领域专用的软件。

例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。

1.3简述软件语言的分类,并举例说明。

1.需求定义语言是用于书写软件需求定义的语言。

例如:PSL/PSA。

2.功能性语言是用于书写软件功能规约的语言,通常又称为功能规约语言。

例如:广谱语言、Z 语言。

3.设计性语言是用于书写软件设计规约的语言。

例如:PDL。

4.实现性语言也称为程序设计语言,是用于书写计算机程序的语言。

例如:C、java、PROLOG、FORTRAN、COBOL、Modula。

5.文档语言是用于书写软件文档的语言。

通常用自然语言或半形式化语言书写。

1.4什么是软件工程?软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。

软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。

1.5简述软件工程的基本原则。

软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。

1.选取适宜的开发模型必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。

2.采用合适的设计方法合适的设计方法有助于这些特征的实现,以达到软件工程的目标。

3.提供高质量的工程支撑软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。

软件工程部分参考答案

软件工程部分参考答案

软件工程部分参考答案软件工程部分参考答案1:引言本文档旨在详细介绍软件工程相关内容。

软件工程是一门关注软件开发过程的学科,它涉及到软件项目的规划、设计、开发、测试和维护等方面。

通过本文档,我们可以了解软件工程的基本概念、方法和工具,以及软件工程的开发生命周期和各阶段的工作内容。

2:软件工程基本概念2.1 软件工程定义软件工程是一门应用科学,它涉及到开发和维护软件所需的理论、方法和工具。

软件工程的目标是提高软件的质量、效率和可靠性,以满足用户的需求。

2.2 软件开发生命周期软件开发生命周期是指从软件项目开始到完成的全过程,通常包括需求分析、设计、编码、测试和维护等阶段。

2.3 软件工程方法和工具软件工程方法指的是一套规范和步骤,用来指导软件项目的开发过程。

常用的软件工程方法有结构化方法、面向对象方法和敏捷开发方法等。

软件工程工具是用来辅助软件开发和管理的工具,例如需求管理工具、版本控制工具和项目管理工具等。

3:软件需求分析3.1 需求获取需求获取是指通过与用户沟通、观察和文档分析等方式,获取软件系统的需求信息。

3.2 需求规格需求规格是将需求转化为可理解和可验证的形式。

常用的需求规格方法包括用例图、活动图和数据流图等。

3.3 需求验证需求验证是指通过评审、演示和测试等方式,验证需求的正确性和完整性。

4:软件设计4.1 结构设计结构设计是指将软件系统划分为模块,并定义模块之间的关系和接口。

4.2 对象设计对象设计是指定义软件系统中的各个对象,并确定每个对象的属性和操作。

4.3 数据库设计数据库设计是指设计软件系统中的数据库结构,包括表的定义、关系的建立和索引的创建等。

5:软件编码和测试5.1 编码规范编码规范是一套约定俗成的规则,用来指导程序员编写代码。

良好的编码规范可以提高代码的可读性和可维护性。

5.2 单元测试单元测试是指对软件系统中的最小可测试单元进行测试,以验证其功能的正确性。

5.3 集成测试集成测试是指将各个模块集成起来进行测试,以验证模块之间的协作是否正确。

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

第一章1.1什么是软件?软件和程序的区别是什么?答:⑴软件是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。

软件的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必须的数据。

⑵软件不是程序,程序是软件的一部分。

程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。

它是由软件开发人员设计和编码的。

程序执行时一般要输入一定的数据,也会输出运行的结果。

没有相关文档,仅有程序是不能称之为软件产品的。

1.2什么是软件生存周期?划分生存周期的主要原则是什么?答:(1)软件的生存周期是指某一软件项目被提出并着手实现开始,直到该软件报废或停止使用为止所经历的时间。

(2)主要原则:各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。

1.3什么是软件危机?它有哪些主要表现?为什么会产生软件危机?答:(1)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

(2)主要表现:对软件开发成本和研制进度的估计常常很不精确,导致经费预算经常突破,进度超时完成;由于开发人员常常对用户需求只有模糊的了解以及开发人员和用户又未能及时交换意见,导致已完成的软件不能满足用户的需要;软件产品质量差,可靠性得不到保证;软件产品可维护性差;软件成本在计算机系统总成本中所占的比例逐年上升,软件的发展跟不上硬件的发展;软件开发生产率提高的速度远远跟不上计算机应用速度普及深入趋势,软件发展跟不上用户的要求。

(3)产生软件危机的原因:造成软件危机的原因与软件自身的特点有关,也与软件开发人员在开发和维护时采用的生产方式、方法、技术有关。

软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。

给软件的开发和维护带来客观的困难;软件开发的管理困难。

由于软件规模大、结构复杂、又具有无形性,导致管理困难,进度控制困难,可靠性无法保证;软件开发费用不断增加,维护费用急剧上升,直接威胁计算机应用的扩大;软件开发技术落后;生产方式落后;开发工具落后,生产效率提高缓慢。

另外软件开发人员忽视需求分析的重要性,轻视软件维护也是造成软件危机的原因。

1.4什么是软件工程?怎样利用软件工程消除软件危机?答:(1)软件工程是指导计算机软件开发和维护的一门学科(2)首先应该对计算机软件有一个正确的认识,彻底清除“软件就是程序” 的错误观念;要使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法;要有良好的组织、严密的管理,各类人员要相互配合,共同完成任务,充分认识软件开发不是某种个体劳动的神秘技巧;应该开发和使用好的软件工具,从而有效提高软件生产率。

采用“工程化”的思想做指导来解决软件研究中面临的困难和混乱。

1.5何谓面向对象软件工程?简述它和传统软件工程的区别与联系?答:(1)以面向对象程序设计为基础的软件工程。

(2)传统软件工程是以结构化程序设计为基础,而面向对象软件工程是以面向对象程序设计为基础。

与面向过程的软件工程的开发思想相比,面向对象开发方法不再是以功能划分为导向,而是以对象作为整个问题分析的中心,围绕对象展开系统的分析与设计工作。

在开发过程方面,面向对象软件工程和传统软件工程一样也是把软件开发划分为分析、设计、编码和测试等几个阶段,但各个阶段的具体工作不同,除了在编码阶段使用的语言不同外,面向对象软件工程为待开发软件确定“类与对象”一般在需求分析阶段进行,设计阶段则主要完成对象内部的详细设计;而在传统软件工程中,将软件设计划分为“总体设计”和“详细设计”,分别完成软件的总体结构图的设计和各个模块内部算法的详细设计。

即:传统软件工程开发过程包括需求分析、总体设计、详细设计、面向过程的编码和测试;面向对象软件工程开发过程包括需求分析与对象抽取、对象详细设计、面向对象的编码和测试。

1.6什么是软件生存周期模型?试比较本章介绍的四种模型的优缺点,说明每种模型的使用范围答:(1)软件生存周期模型即为软件开发模型,是描述软件开发过程中各种活动如何执行的模型,是软件过程、活动、任务的结构框架。

2.1 在软件开发早期阶段为什么要进行可行性研究?可行性研究的任务是什么?应该从哪几个方面研究目标系统的可行性?答:(1)避免或者减轻项目开发后期可能出现的困境。

(2)其主要任务是,首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,必须分析几种可能解法的利弊,从而判定原定系统的目标和规模是否现实,系统完成后带来的效益是否大到值得投资开发这个系统的程度。

(3)经济可行性、技术可行性、操作可行性、法律可行性。

2.2成本—效益分析可用哪些指标进行度量?答:成本方面包括开发成本和运行维护成本;效益方面包括经济效益和社会效益,经济效益可以用货币的时间价值、投资回收期、纯收入来度量。

2.3有人认为,只懂技术的分析员不一定能圆满完成可行性研究的任务。

你同意这种看法吗?为什么?答:同意。

因为可行性研究的任务包括三个方面,除了技术可行性之外,还需要进行经济可行性、操作可行性、社会和法律方面的可行性研究,而只懂技术的分析员对其他方面的研究有可能不满足用户的要求,所以只懂技术的分析员不一定能圆满完成可行性研究的任务。

2.4在【例 2.2】中,把投资改为 6000 元,每年节约金额改为 2000 元,年利率为6%,试计算投资回收期和纯收入。

解:如下表8518.78-6000=2518.78(元)2.5为方便旅客,某航空公司拟开发一个飞机票预定系统。

旅游公司把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和账单,旅客在飞机起飞前的 3 天之内凭取票通知和账单交款取机票,系统校对无误即打印出飞机票给旅客。

请写出开发此系统的问题定义,并通过可行性研究分析此系统的可行性。

答:问题定义:飞机票预定系统主要实现以下功能:查询功能:把旅游时间、旅游目的地等输入进该系统,系统显示符合要求的航班。

预定机票:把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和账单,并更新记录。

校对并打印机票:旅客在飞机起飞前的 3 天之内凭取票通知和账单交款取机票,系统校对无误即打印出飞机票给旅客。

可行性研究应从经济可行性、技术可行性、操作和社会、法律的角度阐述其可行性,这部分省略……2.6 试为习题 2.5 写可行性研究报告的主要内容。

(本题略)第三章3.1 为什么要进行需求分析?需求分析要经过哪些步骤?答:(1)可行性研究阶段粗略了解了用户的需求,甚至还提出了一些可行的方案,但是可行性研究的基本目的是最小的代价在尽可能短的时间内确定问题是否存在可行的解法,因此许多细节都被忽略了,可行性研究并不能代替需求分析,它实际上并没有准确地回答“系统必须做什么”这个关键问题。

(2)步骤:1.需求获取:调查研究。

从分析当前系统包含的数据开始,分析当前信息处理的方法与存储的不足,用户希望改进的主要问题及其迫切性等。

2. 需求提炼:分析建模。

需求提炼的主要任务是建立分析模型。

把来自用户的信息加以分析,通过抽象建立起目标系统的分析模型。

3.需求描述:编写 SRS。

为了使需求描述具有统一的风格,可以采用已有的且可满足项目需要的模板,也可以根据项目特点和软件开发小组的特点,对标准进行适当的改动,形成自己的 SRS 模板。

4. 需求验证。

由分析员和用户一起对需求分析结果进行严格的审查、验证。

确保需求说明可作为软件设计和最终系统验收的依据。

3.2 需求分析阶段的基本任务是什么?怎样理解分析阶段的任务是决定“做什么”,而不是“怎样做”?答:(1)1.确定对系统的综合需求。

分析员和用户双方确定对软件系统的综合要求,具体有功能需求、性能需求、环境需求、接口要求、用户界面需求,另外还有可靠性、安全性、保密性、约束、可移植性和可维护性等方面的需求,这些需求通常可以通过双方交流、调查研究来获取,并达到共同的理解。

2.分析系统的数据需求。

因为绝大多数软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌。

3.建立软件的逻辑模型。

4.编写软件需求规格说明书。

目的是使用户和开发者能对未来软件有共同的理解,明确定义未来软件的需求、系统的构成及有关的接口。

需求说明相当于用户和开发者之间的一份技术合同,是测试验收阶段对软件进行确认和验收的基准,是软件开发的基础。

5.需求分析评审(2)需求分析实际上是调查、评价以至肯定用户对软件需求的过程,其目的在于精化软件的作用范围,也是分析和确认软件系统构成的过程,以确定未来系统的主要成分及它们之间的接口细节。

因此需求分析实际上是一个对用户意图不断进行揭示和判断的过程,它并不考虑系统的具体实现,而是完整地、严密地描述应当“做什么”的一种过程。

3.3 什么是结构化分析方法?该方法使用什么描述工具?答:(1)结构化分析方法是一种从问题空间到某种表示的映射方法,软件功能由数据流图表示,是结构化方法中重要的,被普遍采用的方法,它由数据流图和数据字典构成系统的逻辑模型。

(2)数据流图、数据字典、结构化语言、判定树和判定表。

3.4 什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?答:(1)数据流图是 SA 方法中用于表示系统逻辑模型的一种工具。

(2)它描述系统由哪几部分组成,各部分之间的联系等,以直观的图形清晰地描述了系统数据的流动和处理过程。

(3)→箭头,表示数据流;○圆或椭圆,表示变换数据的处理;□方框,表示数据的三原点或终点;= 双杠或单杠,表示数据存储(文件)。

除上述 4 种基本符号之外,有时也使用几种附加符号,星号(*)表示数据之间的关系(同时存在);加号(+)表示“或”关系,⊕号表示只能从中选一个(互斥的关系)。

3.5 画数据流图的步骤是什么?应该注意什么事项?答:(1)第一步,先找外部实体(可以是人、物或其他软件系统),找到了外部实体,则系统与外部世界的界面就得以确定,系统的源点和终点也就找到了;第二步,找出外部实体的输入和输出数据流;第三步,在图的边上画出系统的外部实体;第四步,从外部实体的输出流(源点)出发,按照系统的逻辑需要,逐步画出一系列变换数据的加工,直到找到外部实体处所需的输入流(终点),形成数据流的封闭;第五步,按照上述原则进行检查和修改。

最后按照上述步骤画出所有子图。

(2)①画数据流图时,只考虑数据流的静态关系,不考虑其动态关系(如启动、停止等与时间有关的问题),也不考虑出错处理问题。

相关文档
最新文档