软件工程实用案例教程(梁洁、金兰)参考答案
- 格式:docx
- 大小:610.78 KB
- 文档页数:22
习题四参考答案
1. 选择题
DCABC ADDDB
2. 应用题
1、
E1:考试委员会;E2:教师;E3:学生;E4:教务处。
D1:学生信息文件;D2:课程信息文件;D3:班级信息文件;D4:课程成绩文件;D5:无效成绩文件。
2、
①上下文图
②0层数据流图
(1)这里有两个条件:
旅游时间t :t1{7-9,12};t2{1-6,10,11} 订票量a :a1{≤20};a2{>20}
(2)根据旅游时间、订票量的条件组合,以及折扣率画出判定表。
(3)根据旅游时间、订票量和折扣率画出判定树。
4、
电话号码 = [ 校内电话号码 | 校外电话号码 ] 校内电话号码 = 非零数字 + 3位数字 校外电话号码 = [ 本市号码 | 外地号码 ] 本市号码 = 0+ 8位数字
外地号码 = 0 + 3位数字 + 8位数字 非零数字 = [1|2|3|4|5|6|7|8|9] (1分) 3位数字 = 3{数字}3
8位数字 = 非零数字 + 7位数字 7位数字 = 7{数字}7
旅游优惠
旅游时间t1
旅游时间t2
订票量a1
订票量a2
折扣率=5%
折扣率=15%
折扣率=20%折扣率=30%
订票量a1订票量a2
工程项目
零件
供应商项目名称
项目编号
开工日期
供应商名称
供应商编号
地址
供应量
定购量
零件编号
零件名称
颜色重量
向...供应
向...定购
M
M N
N。
第一章1.下列所述不是软件特点的是(A)A.软件是有形的B.软件不存在磨损和消耗问题C.软件开发成本高D.软件没有明显的制作过程 C)2.软件工程的出现主要是由于(计算机的D.C.B.其他工程学科的影响软件危机的出现 A.程序设计方法学的影响发展)不是软件危机的表现形式3.以下(C开发的软件价格便宜C.A.开发的软件不满足用户的需要 B.开发的软件可维护性差D.开发的软件可靠性差4.软件工程的目的是(C)A.建造大型的软件系统B.开发的软件可维护性差C.软泥吉安质量的保证D.研究软件开发的远离)5.下列所述不是软件组成的是(D 文档界面 D. A.程序B.数据 C. 下列对“计算机软件”描述正确的是(A)6.是在计算机硬件设备生产过 C.是计算机系统的组成部分A. B.不能作为商品参加交易程中生产出来的 D.之存在语计算机系统工作时7.软件工程的方法的产生源于软件危机,下列(D)是产生软件危机的内在原因A.软件的复杂性B.软件维护困难 C软件成本太高. D.软件质量难保证8.软件工程方法的提出源于软件危机,其目的应该是最终解决软件的(D)问题A.软件危机B.质量保证C.开发效率D.生产工程化9.软件工程学中除重视软件开发的研究外,另以重要组成内容是软件的(A)和过程改进A.项目管理B.成本核算C.人员培训D.工具开发10.软件工程设计软件开发技术和项目管理等方面内容,下述内容中(D)不属于开发技术的范畴软件工程经济D. 软件工程环境C. 软件开发工具B. 软件开发方法A.二、填空题1.软件工程的目的是成功的建造大型的软件系统,主要内容是开打软件开发技术、软件项目管理和软件质量管理。
2.螺旋式开发模型主要是针对风险比较大的项目而设计的3.由于软件产生的复杂性和高成本,使大型软件产生出了很多问题,即出现软件危机,软件工程正是为了克服它而提出的一种概念及相关方法和技术。
4.增量模型假设需求可以分段,成为一系列增量产品,每一增量可以分别开发。
软件工程课后习题参考答案一、概述软件工程作为一门跨学科的学科,涉及到软件开发的各个方面,对培养软件工程师的能力具有重要意义。
课后习题是巩固和深化学生对课程知识的理解和应用的重要途径。
本文将为软件工程课后习题提供一些参考答案,供学生参考和自我评估。
二、需求分析与规格说明1. 什么是软件需求?软件需求分析的目的是什么?软件需求是对问题域中用户对软件所期望的功能和性能的描述。
软件需求分析的目的是识别、理解、规范和管理软件系统开发的需求。
2. 软件需求分析的基本步骤是什么?软件需求分析的基本步骤包括需求获取、需求建模、需求验证和需求管理。
3. 什么是功能需求?什么是非功能需求?功能需求描述的是软件系统应具备的具体功能和行为。
非功能需求则描述了软件系统的其他属性,例如性能、安全性、可靠性等。
4. 举例说明一些常见的软件需求验证方法。
常见的软件需求验证方法包括需求审查、原型验证、测试和模型检查等。
三、软件设计与架构1. 什么是软件架构?软件架构的重要性是什么?软件架构是软件系统的基础结构和组织方式,决定了软件系统的可扩展性、可维护性和可演化性。
软件架构的合理设计能够降低开发和维护的难度。
2. 请简要介绍常见的软件架构模式。
常见的软件架构模式包括分层架构、客户-服务器架构、面向对象架构和微服务架构等。
3. 什么是设计模式?列举几个常见的设计模式。
设计模式是针对软件设计中的常见问题所提出的解决方案。
常见的设计模式包括单例模式、观察者模式、工厂模式和策略模式等。
4. 请简要介绍面向对象设计的原则。
面向对象设计的原则包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则和接口隔离原则等。
四、软件测试与质量保证1. 软件测试的目的是什么?请简要介绍测试驱动开发(TDD)。
软件测试的目的是发现软件产品中的错误和缺陷。
测试驱动开发是先编写测试用例,再根据用例编写代码的开发模式。
2. 请简要介绍黑盒测试和白盒测试。
黑盒测试是基于软件外部行为和需求的测试,不考虑软件的内部实现。
软件工程课后习题参考答案软件工程课后习题参考答案1·软件工程概述1·1 软件工程的定义和特点软件工程是一门研究和应用如何以系统化、规范化、可量化的方法开发和维护软件的学科。
其特点包括软件开发的目标性、可度量性、可管理性和可预测性。
1·2 软件生命周期模型常见的软件生命周期模型包括瀑布模型、迭代模型、螺旋模型和敏捷模型等。
每个生命周期模型都有其适用的场景和优缺点。
2·软件需求工程2·1 软件需求获取软件需求获取方法包括面谈、问卷调查、用户场景模拟等。
需求获取的目的是明确软件系统的功能、性能和约束条件。
2·2 软件需求分析与规格说明软件需求分析的目标是识别和定义系统的需求,包括功能需求、非功能需求和约束条件。
规格说明是将需求转化为精确、清晰和易于验证的文档。
3·软件设计3·1 结构化设计结构化设计将系统分解为模块,确定模块之间的接口和关系,实现模块化、高内聚、低耦合的设计原则。
3·2 面向对象设计面向对象设计将系统抽象为对象,定义对象的属性和方法,并确定对象之间的关系。
常用的面向对象设计方法有UML(统一建模语言)。
4·软件测试4·1 测试基本概念软件测试是通过运行软件来发现错误和缺陷的过程。
测试的基本概念包括测试用例、测试套件、测试目标和测试覆盖度等。
4·2 测试方法和技术常见的软件测试方法和技术有黑盒测试、白盒测试、灰盒测试、单元测试、集成测试和系统测试等。
每种方法和技术都有其适用的场景和优缺点。
5·软件维护与配置管理5·1 软件维护软件维护是指对已有的软件进行修改、优化、修复错误和适应环境变化的过程。
维护活动包括需求分析、设计、实现、测试和文档更新等。
5·2 软件配置管理软件配置管理是指在软件开发和维护过程中,对软件配置项进行识别、控制、追踪和审查,确保软件可以按需发布、升级和回溯。
软件工程实用教程《软件工程实用教程》习题与参考答案第12章软件开发工具与环境1.什么是软件开发环境?它的基本分类是什么?答案要点:软件开发环境应是能支持整个软件生存期阶段的开发活动,并能支持各种处理模型的软件方法学,同时实现这些开发方法的自动化。
按解决的问题分类:程序设计级、系统合成级与项目管理级。
按现有软件开发环境的演化趋向分类:以语言为中心的环境、面向结构的环境、工具箱环境与基于方法的环境。
按集成化程度分类:分成三代。
2.什么是计算机辅助软件工程?答案要点:在软件工程活动中,软件工程师和管理员按照软件工程的方法和原则,借助于计算机及其软件工具的帮助,开发、维护、管理软件产品的过程,称为计算机辅助软件工程(Computer-Aided Software Engineering,简称CASE)。
3.列出常见的软件开发工具?根据本章的分类方法组织它们?答案要点:软件开发工具种类繁多,按功能可将软件开发工具分为8类:●业务系统规划工具:IBM Rational Rose是基于UML的可视化建模工具;Microsoft Visio。
●项目管理工具:Microsoft Office Project 2007、Visual SourceSafe●支持工具:IBM Rational Build Forge是对分布式开发环境进行自动构建和发布管理类工具;Microsoft V isual SourceSafe 、IBM Rational ClearCase 配置管理工具。
●分析和设计工具:Power designer、IBM Rational Rose可视化建模工具。
●编程工具:Delphi、Visual Basic、C++ Builder等编程语言的编辑器和代码生成器,解释器及调试器等。
●测试和分析工具:静态测试工具有:Telelogic公司的Logiscope软件;PR公司的PRQA软件。
态测试工具的代表有:Compuware公司的DevPartner软件;Rational公司的Purify系列等。
软件工程案例教程答案软件工程案例教程答案一、引言软件工程案例教程是为了帮助学习者更好地理解和应用软件工程的理论知识而编写的。
本文档将详细介绍一个软件工程案例的答案,包括项目计划、需求分析、设计、实施、测试、部署等各个阶段的具体内容。
二、项目计划2.1 项目背景在这一部分,我们将介绍该软件工程案例的背景,包括项目的目标、范围、参与人员等信息。
2.2 项目计划在这一部分,我们将详细描述项目计划的制定过程,包括里程碑、进度安排、资源分配等内容。
三、需求分析3.1 功能需求在这一部分,我们将列出该软件案例的功能需求清单,包括用户提交订单、管理员管理订单、支付功能等。
3.2 非功能需求在这一部分,我们将列出该软件案例的非功能需求,如性能要求、可用性要求等。
四、设计4.1 系统架构设计在这一部分,我们将详细描述系统的整体架构设计,包括前端与后端的交互方式、数据流等。
4.2 数据库设计在这一部分,我们将详细描述数据库的设计,包括表结构、关系等。
五、实施5.1 编码实现在这一部分,我们将详细描述编码实现的过程,包括选择开发工具、编码规范等。
5.2 单元测试在这一部分,我们将介绍单元测试的方法和步骤,以保证代码的质量。
5.3 集成测试在这一部分,我们将介绍集成测试的方法和步骤,以保证各个模块的正确集成。
六、测试6.1 功能测试在这一部分,我们将详细描述功能测试的内容和步骤,以确保软件功能的正确性。
6.2 性能测试在这一部分,我们将详细描述性能测试的内容和步骤,以评估软件的性能指标。
七、部署在这一部分,我们将介绍软件部署的步骤和流程,以确保软件能够正常运行。
八、附件本文档涉及的附件包括项目计划表、数据库设计文档、测试报告等,详见附件部分。
九、法律名词及注释9.1 法律名词1注释:相关解释和法规说明。
9.2 法律名词2注释:相关解释和法规说明。
软件工程教程课后参考答案软件工程是一个涉及软件开发生命周期的综合性学科,它包含了软件需求、设计、开发、测试和维护等多个环节。
本文将为大家提供软件工程教程的课后参考答案,帮助读者更好地理解和掌握软件工程的相关知识。
一、软件需求分析在软件开发过程中,需求分析是非常关键的一步。
它的目的是明确用户的需求,为后续的软件设计和开发提供依据。
需求分析主要包括以下几个步骤: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. 选择题DDBBA DBD2. 简答题(1) 通用软件产品开发和定制软件开发之间有什么不同?这在实际应用中对通用软件产品用户意味着什么?答:这两类产品的一个重要区别在于:在通用软件产品中,软件描述由开发人员自己完成,而在定制软件产品中,软件描述通常是由客户给出,开发人员必须按客户要求进行开发。
在实际应用中通用软件满足的是绝大部分用户的共同需求,而对于特殊的个人需求无法涉及到。
(2) 什么是软件危机?产生的原因有哪些?它和软件工程有什么关系?答:在软件开发中经常会出现时间延迟、预算超支、质量得不到保证、移植性差等问题,甚至有的项目在耗费了大量人力、财力后,由于离目标相差甚远而宣布失败。
这种现象称为“软件危机”。
产生的原因有:(1) 软件独有的特点给开发和维护带来困难。
(2) 软件人员的错误认识。
忽视软件需求分析的重要性,轻视文档的作用,轻视软件维护等。
(3) 软件开发工具自动化程度低。
此外,软件生产工程化管理程度低,致使软件项目管理混乱,难以保障软件项目成本、开发进度按计划执行。
由于软件危机的出现,人们一直在努力探索克服软件危机的途径。
因此提出“软件工程”的概念,试图用工程的方法和管理手段,将软件开发纳入工程化的轨道,以便开发出成本低、功能强、可靠性高的软件产品。
(3) 简述软件工程的定义和软件工程的目标?答:在NATO会议上,Fritz Bauer对于软件工程的定义是:“为了经济地获得可靠的、能在实际机器上高效运行的软件,而建立和使用的健全的工程原则。
”对于软件工程,美国电气与电子工程师学会(IEEE)给出了如下定义。
软件工程是:①将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护中,即将工程化方法应用于软件;②对于①中所述方法的研究。
软件工程的目标:①软件开发成本较低。
②软件功能能够满足用户的需求。
③软件性能较好。
④软件可靠性高。
⑤软件易于使用、维护和意志。
⑥能够按时完成开发任务,并及时交付使用。
(4)软件工程过程活动主要有哪些?解释每个活动的必要性。
答:①沟通。
在技术工作开始之前,和客户及其他利益相关者的沟通与协作是极其重要的,其目的是理解利益相关者的项目目标,并收集需求及定义软件特性和功能。
②策划。
如果有地图,任何复杂的旅程都可以变得简单。
软件项目好比一个复杂的旅程,策划活动就像是创建一个地图,以指导团队的项目旅程,这个地图称为软件项目计划,它定义和描述了软件工程工作,包括需要执行的技术任务、可能的风险、资源需求、工作产品和工作进度计划。
③建模。
无论你是庭院设计师、桥梁建造师、航空工程师、工匠还是建筑师,每天的工作都离不开模型。
你会画一张草图来辅助理解整个项目大的构想——体系结构、不同的构件如何结合,以及其他一些特性。
如果需要,可以把草图不断细化,以便更好地理解问题并找到解决方案。
软件工程师也是如此,需要利用模型来更好地理解软件需求,并完成符合这些需求的软件设计。
④构建。
必须要对所做的设计进行构建,包括编码(手写的或者自动生成的)和测试,后者用于发现编码中的错误。
⑤部署。
软件(全部或者部分增量)交付给用户,用户对其进行评测并给出反馈意见。
⑥进化。
软件随不同的客户和变化的市场需求而进行修改。
(5)解释Web的普遍使用是如何改变软件系统的?(6) 解释为什么软件工程的基本原则适用于所有的软件系统?(7) 对ACM/IEEE职业道德准则中的某项条款,举出一个恰当的例子加以说明。
(8) 分别列举一两个失败或成功的软件项目实例,试说明其失败或成功的原因。
习题二参考答案1. 选择题BCDBA BC2. 简答题(1) 说明为什么在需求工程过程中区分用户需求开发和系统需求开发是重要的?答:用户需求是从客户和最终用户角度对系统需求的抽象描述,是开发者和客户之间达成统一需求的定义;系统需求是对系统要提供的功能、性能、操作、数据等多方面的详尽描述,为系统开发者提供依据。
(2) 简述软件设计过程中的主要活动及这些活动的输出,并说明这些活动的输出之间可能存在的关系?答:软件设计过程中的主要活动有体系结构设计、接口设计、构件设计、数据库设计。
体系结构设计划分了系统的总体结构,系统由那些构件组成,如何分布,哪些构件可以复用,然后设计构件间的接口,定义好接口后,详细设计构件内容部的细节,以及数据库的设计(3) 说明原型模型的两种实现方案各有什么特点?各适用于那些情况?答:①抛弃式原型模型:快速建立一个反映用户主要需求的原型系统,反复修改获取用户真正需求后,原型将被抛弃,后再按线性流程进行实际项目的开发。
适用于小型、简单、处理过程比较明确、没有大量运算和逻辑处理过程的系统。
②进化式原型模型:针对有待开发的软件系统,先开发一个原型系统让用户使用,然后根据用户使用情况的意见反馈,对原型系统不断修改,使它逐步接近并最终达到开发目标。
特别适合于用户急需的软件产品开发。
它能够快速地向用户交付可以投入实际运行的软件成果,并能够很好地适应软件用户对需求规格的变更。
(4) 为什么说构件复用模型是一种有利于软件按工业流程生产的过程模型?答:由于构件具有一定的通用性,因此可以在不同的软件系统中被复用,在基于构件复用的软件开发中,软件由构件装配而成,这就如同标准零件装配汽车一样。
构件复用技术能带来更好的复用效果,并且具有工程特性,更能适应软件按照工业流程生产的需要。
(5) 解释为什么Boehm的螺旋模型是一个适应性模型,可以同时支持更新避免和变更容忍活动。
说明为什么在实践中这个模型还没有被广泛应用?答:但使用该模型需要丰富的风险评估经验和专门知识,对软件项目进行风险分析也需要费用,假如项目风险分析费用过高,甚至超过了项目的开发费用,显然就不合适了。
一般大型项目才有较高的风险,才有进行详细风险分析的必要。
因此,这种模型比较适合大型的软件项目。
(6) Rational统一过程和螺旋模型比较,优势有哪些?答:①RUP每次迭代包含9个核心工作流程,而螺旋模型只包含4方面的活动②RUP对每个阶段内若干次迭代过程完成后所交付增量的具体要求,而螺旋模型没有规定。
③RUP详细描述了不同阶段不同迭代过程在经历9个核心工作流程时活动内容的重点和强度,而螺旋模型没有规定。
RUP的二维迭代生命周期结构对“迭代”开发方式的体现比螺旋模型更深刻、具体、详尽和全面,用于指导需求不明确、不稳定的项目开发,具有更强的可操作性。
(7) 敏捷方法的价值观和原则与传统方法有哪些区别与联系?说明什么情况下不建议使用敏捷方法来开发软件?答:敏捷的价值观:个体和交互胜过过程和工具;可以工作的软件胜过面面俱到的文档;客户合作胜过合同谈判;响应变化胜过遵循计划。
而传统软件工程方法更注重计划与过程管理(文档管理),但也非常重视软件质量和对需求变更的及时反应。
从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如果系统有比较高的可靠性、安全性方面的要求,则可能不完全适合。
3. 应用题(1) 某企业计划开发一个“综合信息管理系统”,该系统涉及销售、供应、财务、生产、人力资源等多个部门的信息管理。
该企业的设想是按部门的优先级别逐个实现,边开发边应用。
对此需要采用一种比较合适的软件过程模型。
请对这个过程模型做出符合应用需求的选择,并说明选择理由。
答:选择RUP模型或螺旋模型。
①该系统是一个比较大型的项目,意味着风险较大。
②需求并不是固定的,因此需要迭代。
具有风险防范和迭代特征的模型只有RUP和螺旋模型,相比较而言,RUP模型比螺旋模型更深刻、具体、详尽和全面,用于指导需求不明确、不稳定的项目开发,具有更强的可操作性。
(2) 假设你要开发一个软件,它的功能是把73624.9385这个数开平方,所得到的结果应该精确到小数点后4位。
一旦实现并测试完之后,该产品将被抛弃。
你打算采用哪种软件过程模型?为什么?答:选择瀑布模型,因为该软件需求稳定,可以经过算法分析、设计、编码、调试,然后得到结果,便可以抛弃掉,用瀑布模型这种线性的开发过程比较合适。
(3) 假设你被任命为一家软件公司的负责人,你的工作是管理该公司已被广泛应用的文字处理软件的新版本开发。
由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。
你打算采用哪种软件过程模型?为什么?答:选择增量模型或者构件复用模型,因为需求稳定、开发时间有限,采用增量模型和构件复用模型都属于非整体性开发,可以提高开发效率。
(4) 公司计划采用新技术开发一款新的手机软件产品,希望尽快占领市场,假设你是项目经理,你会选择哪种软件过程模型?为什么?答:选择进化式原型,因为这种模型特别适合于用户急需的软件产品开发。
它能够快速地向用户交付可以投入实际运行的软件成果,并能够很好地适应软件用户对需求规格的变更。
习题三参考答案1. 选择题CDADB2. 简答题(1) 软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统?答:在早期阶段即判断系统是否“可行”,既避免了不必要的风险,又对系统的内部结构、功能、数据及所采用技术有了一个初步的把握。
可行性研究首先要弄清项目规模和目标,对现有系统或工作流程进行研究,导出目标系统的高层逻辑模型,然后分析目标系统的技术、经济、社会三方面领域是否可行。
(2) 软件可行性研究的工作步骤是哪些?简要地叙述各步骤的主要工作内容?答:①确定项目规模和目标,项目的规模和目标进行定义和确认,清晰地描述项目的一切限制和约束,确保系统分析员正在分析的问题确实是要解决的问题。
②研究目前正在使用的系统,需要研究现有系统的基本功能,存在什么问题,运行现有系统需要多少费用,对新系统有什么新的功能要求,新系统运行时能否减少使用费用等。
③建立新系统的高层逻辑模型,明确新系统的功能、处理流程,以及所受的约束,然后使用建立逻辑模型的工具——数据流图和数据字典来描述数据在系统中的流动和处理情况。
④导出和评价供选择的解法,⑤推荐行动方针,根据技术可行性、经济可行性和社会可行性对各种选择方案进行评估,去掉行不通的解法,即可得到可行的解法⑥草拟开发计划:制定工程进度表、估计对各类开发人员和各种资源的需要情况,指明什么时候使用及使用多长时间、估计系统生命周期每个阶段的成本,最后给出下一个阶段(需求分析)的详细进度表和成本估计。
⑦编写可行性研究报告,将可行性研究各个步骤的工作结果写成清晰的文档,请用户、客户组织的负责人及评审组审查,以决定是否继续这项工程及是否接受分析员推荐的方案。
(3) 度量经济效益的方式有哪几种?答:软件开发成本的计算,以及经济效益的计算,经济效益的计算需要考虑到货币的时间价值,通过成本/效益方法计算系统的投资回收期、纯收入、投资回报率,从而在经济效益方面度量该系统是否值得投资开发的结论。