软件工程教程课后参考答案
软件工程实用教程吕云翔-课后答案

软件工程实用教程吕云翔-课后答案1练习题1)1.软件的特点有哪些?软件是一种逻辑实体,具有抽象性。
硬件是有形的设备,而软件不像硬件那样具有明显的可见性。
人们可以把软件记录在介质上,但是却无法直观地观察到它的形态,而必须通过在计算机上实际地运行才能了解它的功能、性能及其他特性。
软件的生产与硬件的制造不同。
它更多地渗透了人类的智能活动,是人类智力劳动的产物。
软件是被开发或设计的,而不是传统意义上被制造的。
软件成本集中于开发上,这意味着软件项目不能像制造项目那样管理。
软件在运行使用过程中,不会磨损。
在软件的运行和使用期间,它不会产生像硬件那样的磨损和老化现象,然而却存在着缺陷维护和技术更新的问题。
软件不会磨损,但是它会退化,而软件的退化是由于修改。
因此,软件维护比硬件维护要复杂得多。
软件的开发至今尚未完全摆脱手工艺的开发方式。
在硬件世界,构件复用是工程过程的自然的一部分,而在软件世界,它是刚刚开始起步的事物。
虽然软件产业正在向基于构件的组装前进,但大多数软件仍是定制的。
软件的开发和运行必须依附于特定的计算机系统环境。
它不像有些设备一样,能够独立地工作,而是受到了物理硬件、网络配置、支撑软件等因素的制约。
由此引发了软件的可移植性问题。
软件危机是如何产生的?有哪些表现?原因:在20世纪60年代中期,随着软件规模的扩大,复杂性的增加,功能的增强,使得高质量的软件开发变得越来越困难。
表现:1.开发出来的软件产品不能满足用户的需求,即产品的功能或特性与需求不符。
这主要是由于开发人员与用户之间不能充分有效的交流造成的,使得开发人员对用户需求的理解存在着差异;2.相比越来越廉价的硬件,软件代价过高;3.软件质量难以得到保证,且难以发挥硬件潜能。
开发团队缺少完善的软件质量评审体系以及科学的软件测试规程,使得最终的软件产品存在着诸多缺陷;4.难以准确估计软件开发、维护的费用以及开发周期。
往往软件产品不能在预算范围之内,按照计划完成开发。
软件工程 课后习题答案

第一章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. 软件工程的目标是什么?软件工程的目标是开发高质量的软件,以满足用户的需求。
具体目标包括:•可靠性:软件应该能够正常运行并处理各种输入情况,不会崩溃或导致系统故障。
•可维护性:软件应该易于理解和修改,以适应用户需求的变化和修复软件中的错误。
•可扩展性:软件应该能够在不改变其基本架构的情况下,方便地添加新的功能模块。
•可重用性:软件应该能够被多个项目和团队复用,以提高开发效率。
•可测试性:软件应该易于测试,以确保其功能和性能符合预期。
3. 软件开发生命周期有哪几个阶段?软件开发生命周期通常包括以下几个阶段:1.需求分析和定义阶段:在这个阶段,软件工程师与用户沟通,了解用户的需求和期望。
然后,设计师将这些需求转化为软件规格说明。
2.软件设计阶段:在这个阶段,设计师根据需求规格说明书设计软件的架构和模块,并确定模块之间的关系和功能。
3.编码阶段:在这个阶段,开发人员根据设计文档编写代码,实现软件的功能。
4.测试阶段:在这个阶段,测试人员使用不同的测试方法和技术对软件进行验证,以确保软件的质量和可靠性。
5.部署和维护阶段:在这个阶段,软件工程师将软件部署到实际的运行环境中,并根据用户的反馈进行改进和修复。
4. 什么是软件需求?软件需求是对系统或软件功能和性能的描述,它描述了用户的需求和期望。
软件需求通常包括以下几个方面:•功能需求:描述软件应该具有的功能,以及这些功能如何满足用户的需求。
软件工程课后题答案大全(详细)

软件工程课后题答案大全(详细) 软件工程习题解答 第一章概述 3.什么是软件危机?其产生的原因是什么? 软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。一些复杂的、大型的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。 在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。主要表现在以下几个方面: a.经费预算经常突破,完成时间一再拖延。 b.开发的软件不通满足用户要求。 c.开发的软件可维护性差。 d. 开发的软件可靠性差。 软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的: a.软件的规模越来越大,结构越来越复杂。 b.软件开发管理困难而复杂。 c.软件开发费用不断增加。 d.软件开发技术落后。 e.生产方式落后。 f.开发工具落后,生产率提高缓慢。 4.什么是软件工程?它的目标和内容是什么? 软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。 软件工程的目标是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标: a.付出较低的开发成本; b.面到要求的软件功能; c.取得较好的软件性能; d.开发的软件易于移植; e.需要较低的维护费用; f.能按时完成开发任务,及时交付使用; g.开发的软件可靠性高; 软件工程的内容: 1)软件开发技术:软件开发方法、软件开发过程、软件开发工具和环境。 2)软件开发管理:软件管理学、软件经济学、软件心理学。 6.什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。 软件生存周期包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等. 7.什么是软件生存周期模型?有哪些主要模型? 软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。(模型:是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式、一个规划、一个程式。) 软件生存周期主要模型:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型等 第三章需求分析 1.什么是需求分析?需求分析阶段的基本任务是什么? 需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。 需求分析阶段的基本任务是: (1) 问题识别:双方对问题的综合需求:a.功能需求b.性能需求c.环境需求d.用户界面需求. (2) 分析与综合,导出软件的逻辑模型. (3) 编写文档 4.什么是数据流图?其作用是什么?其中的基本符号各表示什么含义? 数据流图:简称DFD,是SA(结构化分析)方法中用于表示系统逻辑模型的一种工具,是一种功能模型。 作用:它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能. 基本符号有四种: →,箭头,表示数据流; ○,圆或椭圆,表示加工; =,双杠,表示数据存储;□,方框,表示数据的源点或终点. 5.画数据流图应该注意什么事项? 画数据流图注意事项: a.命名.不论是数据流\数据存储还是加工,合适的命名使人们易于理解基含义. b.画数据流而不是控制流. c.一般不画物质流. d.每个加工到少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果. e.编号. f.父图与子图的平衡. g.局部数据存储. h.提高数据流图的易理解性. 7.描述加工逻辑有哪些工具? a,结构化语言b,判定表c.判定树 10.某银行的计算机储蓄系统功能是:将储户填写的存款单或取款单输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并打印出存款单给储户;如果是取款,系统计算清单储户。请用DFD和IDEF0描绘该功能的需求,并建立相应的数据字典。 (1)数据流条目: 数据流名称:存款单 别名:无 简述:储户存款时填写的项目 来源:储户 去向:记帐 数据流量:未知 组成:姓名+住址+存款类型+存款日期+利率 数据流名称:取款单 别名:无 简述:储户取款时填写的项目 来源:储户 去向:统计 数据流量:未知 组成:姓名+住址+取款类型+取款日期+利率 数据流名称:清单 别名:无 简述:储户取款后得到的项目 来源:记录 去向:储户 数据流量:未知 组成:姓名+住址+取款类型+取款日期+利率+余额 (2)数据存储条目: 数据存储名称:账单 别名:无 简述:存放储户信息及其账目 组成:姓名+住址+余额+存款类型+最后修改日期+利率 组织方式:未知 查询要求:能立即查询 (3)数据项条目: 未知 (4)加工条目: 加工名:分类检查 编号:无 激发条件:接收到存/取款单 优先级:优先 输入:存/取款单 输出:存/取款单 加工逻辑:IF 存款单THEN 把存款单输出到统计 ELSE 把取款单输出到统计 ENDIF 加工名:统计 编号:无 激发条件:取款单 优先级:无 输入:取款单 输出:清单 加工逻辑:根据账单检查此储户是否存在,不存在输出错误{ IF 取款数现金到储户 ELSE 输出错误清单到储户 ENDIF } 加工名:记录 编号:无 激发条件:存款单 优先级:无 输入:存款单 输出:存款单 加工逻辑:根据账单检查此储户是否存在,不存在则建立此储户{ 余额=余额+存款数 输出存款单到储户 } 11.某图书管理系统工程有以下功能:(1)借书:输入读者借书证。系统首先检查借书证是否有效,对于第一次借书的读者,在借书文件建立档案。否则,查阅借书文件,检查该读者所借图书是否超过10本,若已达10本,拒借,未达10本,办理借书(检查库存、修改库存目录并将读者借书情况登入借书文件). (2)还书:从借书文件中读出与读者有关的记录,查阅所借日期,如果超期(3个月)作罚款处理。否则,修改库存目录与借书文件。(3)查询:可通过借书文件、库存目录文件查询读者情况、图书借阅情况及库存情况,打印各种统计表。请就以上系统功能画出分层的DFD 图,并建立重要条目的数据字典。 12.某厂对部分职工重新分配工作的政策是:年龄在伙岁以下者,初中文化程度脱产学习。高中文化程度当电工;年龄在20岁到40岁之间者,中学中学文化程度男性当钳工,女性当车工,大学文化程度都当技术员。年龄在40岁以上者,中学文化程度当材料员,大学文化程序当技术员。请用结构化语言、判定表或判定树描述上述问题的加工逻辑。 (1)结构化语言: 根据职工年龄和文化程序: REPEAT If 年龄<=20 If 初中文化 Then 脱产学习 endif else if 高中文化 Then 电工 endif endif If 20If 中学文化 If 男性 Then 钳工 Else 车工 Endif else if 大学文化 Then 技术员 endif endif endif If 年龄>=40 If 中学文化 Then 材料员 else if 大学文化 Then 技术员 endif endif endif 储户分类并检查储户 记录 统计 存款单 取款单 存款单 取款单清单 帐单存单 表单处理 1 处理存款 2 处理取款 3 存款单 取款单 储户表单 Until 没有剩余未分配员工 判定表 1 2 3 4 5 6 7 8 9 10 11 年龄 C C D D D D D E E E 文化 G H H G G H I G H I 性别 -- -- M M F F -- -- -- -- 脱产学习 √ 电工 √ 钳工 √ √ 车工 √ √ 技术员 √ √ 材料员 √ √ 条件取值表 条件名 取值 符号 取值数 年龄 <=20 C M1=3 >20,<40 D >=40 E 文化程度 中学 G M2=3 高中 H 大学 I 性别 男 M M3=2 女 F 附加题:1、自学考试报名过程中有个“记录报名单”的加工。该加工主要是根据报名表(姓名、 性别、身份证号、课程名)和开考课程(课程名、开考时间)、经校核,编号、填写、输出准考证给报名者,同时记录到考生名册中(准考证号、姓名、课程)。请绘制该加工的DFD 图,并写出数据词典中的数据流条目。 答:
软件工程课后习题答案

软件⼯程课后习题答案习题答案习题⼀答案⼀、选择题1. 软件的主要特性是(A B C)。
A) ⽆形 B) ⾼成本C) 包括程序和⽂档D) 可独⽴构成计算机系统2. 软件⼯程三要素是(C D)。
A) 技术、⽅法和⼯具B) ⽅法、⼯具和过程C) ⽅法、对象和类D) 过程、模型、⽅法3. 包含风险分析的软件⼯程模型是(A)。
A) 螺旋模型 B) 瀑布模型C) 增量模型 D) 喷泉模型4. 软件⼯程的主要⽬标是(C)。
A) 软件需求B) 软件设计C) 风险分析D) 软件实现5. 下列属于⾯向对象开发⽅法的是(A B C D)。
A) Booch B) UML C) Coad D) OMT6. 软件危机的主要表现是(B D)。
A) 软件成本太⾼B) 软件产品的质量低劣C) 软件开发⼈员明显不⾜D) 软件⽣产率低下7. 软件开发⽅法的主要⼯作模型有(A B C)A) 螺旋模型B) 循环模型C) 瀑布模型D) 专家模型8. 软件⼯程的⽬标有(A B C)。
A) 易于维护B) 低的开发成本C) ⾼性能D) 短的开发期9. 软件⼯程学的⽬的和意义是( )。
A) 应⽤科学的⽅法和⼯程化的规范管理来指导软件开发B) 克服软件危机C) 作好软件开发的培训⼯作D) 以较低的成本开发出⾼质量的软件⼆、判断题1. 软件就是程序,编写软件就是编写程序。
(×)2. 瀑布模型的最⼤优点是将软件开发的各个阶段划分得⼗分清晰。
(×)3. 结构化⽅法的⼯作模型是使⽤螺旋模型进⾏开发。
(×)4. 结构化⽅法和JSP⽅法都不适合于⼤型软件的开发。
(√)5. 原型化开发⽅法包括⽣成原型和实现原型两个步骤。
(×)6. ⾯向对象的开发⽅法包括⾯向对象的分析、⾯向对象的设计和⾯向对象的程序设计。
( √)7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。
(×)8. 软件⼯具的作⽤是为了延长软件产品的寿命。
(完整版)软件工程课后答案

《软件工程》作业及答案1-1 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机典型表现:对软件开发成本和进度的估计常常很不准确。
用户对“已完成的”软件系统不满意的现象经常发生。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
管理和控制软件开发过程相当困难。
软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。
1-2 假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?答:软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
软件工程本质特性:1、软件工程关注于大型程序的构造;2、软件工程的中心课题是控制复杂性;3、软件经常变化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程第三版答案

软件工程第三版答案【篇一软件工程课后答案】1.1什么是计算机软件软件的特点是什么答计算机软件指计算机系统中的程序及其文档。
软件的特点是a软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确得估算;b软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大;c软件的使用没有硬件那样的机械磨损和老化问题。
1.2简述软件的分类,并举例说明。
答在计算机科学技术百科全书中,将软件分为系统软件、支撑软件和应用软件3类。
a系统软件系统软件居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。
系统软件与具体的应用领域无关。
例如编译程序、操作系统等。
b支撑软件支撑软件是支撑软件的开发和维护的软件。
例如数据库管理系统、网络软件、软件工具、软件开发环境等。
c应用软件应用软件是特定应用领域专用的软件。
例如工程/科学计算软件、嵌入式软件、产品线软件、web 应用软件、人工智能软件。
1.4什么是软件工程答在计算机科学技术百科全书中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。
1.5简述软件工程的基本原则。
答软件工程原则包括围绕工程设计、工程支持和工程管理提出的以下4条基本原则第一条围绕适宜的开发模型;第二条采用合适的设计方法;第三条提供高质量的工程支撑;第四条重视软件工程的管理。
1.6软件生存周期分哪几个阶段分别简述各个阶段的任务。
答软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。
a计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。
b需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约。
软件工程课后习题答案

第一章习题参考答案1﹑软件产品的特性是什么?答:软件产品特性:⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的⑸开发软件的费用不断增加,致使生产成本相当昂贵。
2﹑软件生产有几个阶段?各有何特征?答:⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。
3﹑什么是软件危机?产生原因是什么?答:软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂。
⑵软件开发管理困难而复杂。
⑶软件包开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4﹑什么是软件工程?它目标和内容是什么?答:软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。
软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程内容:研究内容包括开发技术和开发管理两个方面。
开发技术主要研究:软件开发方法,开发过程,开发工具和环境。
开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?答:软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程教程课后参考答案第1章一、选择题(1)D (2)B (3)C (4)D (5)D (6)A (7)D二、简答题(1)什么是软件危机?软件危机表现在哪些方面?答:具体来说,软件危机出现的原因可以概括如下。
①忽视软件开发前期的需求分析。
②开发过程缺乏统一的、规范化的方法论指导。
③文档资料不齐全或不准确。
④忽视与用户之间、开发组成员之间的交流。
⑤忽视测试的重要性。
⑥不重视维护或由于上述原因造成维护工作的困难。
⑦从事软件开发的专业人员对这个产业的认识不充分,缺乏经验。
⑧没有完善的质量保证体系。
具体地说,软件危机的表现形式可以概括如下。
①软件开发费用和进度失控。
②软件系统实现的功能与实际需求不符。
③软件的可靠性差。
④软件难以维护。
⑤软件通常没有适当的文档资料。
⑥软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。
⑦软件生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
(2)简述软件和软件工程的定义以及软件工程的形成过程。
答:软件是计算机系统中与硬件相对应的另一部分,是一系列程序、数据及其相关的文档集合。
在这里,程序是按照特定顺序组织的计算机数据和指令的集合;数据是使程序能正常执行的数据结构;文档是是开发、使用和维护程序所需要的图文资料。
软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或进行研究的学科。
软件工程的发展经历了以下四个阶段。
① 20世纪70年代。
为了解决软件项目失败率高、错误率高以及软件维护任务重等问题,人们提出了软件生产工程化的思想,希望使软件生产走上正规化的道路,并努力克服软件危机。
人们发现将传统工程学的原理、技术和方法应用于软件开发,可以起到使软件生产规范化的作用。
② 20世纪80年代。
面向对象的方法与技术受到了广泛的重视,maltalk-80的出现标志着面向对象的程序设计进入了实用和成熟阶段。
20世纪80年代末,逐步发展起来的面向对象的分析与设计方法,已经形成了完整的面向对象技术体系,使系统的生存周期更长,适应更大规模、更广泛的应用。
③ 20世纪90年代末。
出现了许多的敏捷方法,如自适应软件开发、水晶项目开发、动态系统开发、极限编程、特征驱动开发和Scrum等。
这些主要的敏捷方法的创始人在2001年聚集一堂,并发表了敏捷开发宣言。
④ 21世纪。
对快速应用开发(Rapid Application Development,RAD)追求的趋势仍在继续,在信息技术、组织、竞争对策及环境等方面的变革步伐也正在加快。
云计算、大数据、物联网、人工智能和机器学习、移动互联网、三维打印、可穿戴式技术、虚拟现实、增强现实、社交媒体、无人驾驶汽车和飞机等技术不断涌现。
“大规模计算”、“自治和生化计算机”、“模型驱动体系结构”和“构件化软件开发”等新领域都可能成为接下来软件工程发展的主要方向。
(3)软件工程的目标是什么?如何解决多目标之间的矛盾?答:软件工程要达到的基本目标包括以下六方面。
①达到要求的软件功能。
②取得较好的软件性能。
③开发出高质量的软件。
④付出较低的开发成本。
⑤需要较低的维护费用。
⑥能按时完成开发工作,及时交付使用。
软件工程的首要问题是软件质量。
软件工程的目的就是在以上目标的冲突之间取得一定程度的平衡。
因此,在涉及平衡软件工程目标这个问题的时候,软件的质量应该摆在最重要的位置加以考虑。
软件质量可用功能性、可靠性、可用性、效率、可维护性和可移植性等六个特性来评价。
(4)什么是软件生存周期?它分为几个时期?几个阶段?答:软件生存周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用,以及产品版本的不断更新,到该产品最终被市场淘汰的全过程。
软件生存周期由软件定义、软件开发和运行维护三个时期组成,划分为问题定义、可行性研究、需求分析、概要设计、详细设计、软件实现和单元测试、综合测试和运行维护八个阶段。
(5)什么是软件生存周期模型?有哪些主要软件过程模型?答:软件生存期模型也称为软件过程模型,是从软件项目需求定义直至软件运行维护为止,跨越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架。
典型的包括瀑布模型、快速原型模型、增量模型、螺旋模型、统一过程、敏捷过程等。
(6)在软件工程知识体系中,将软件工程划分为哪些知识域?答:SWEBOK将软件工程知识体系划分为10个知识域,包含在两类过程中。
一类过程是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类过程是支持过程,包括软件配置管理、软件工程管理,软件工程过程、软件工程工具写方法、软件质量。
每个知识域还可进一步分解为若干个论题,在论题描述中引用有关知识的参考文献,形成一个多级层次结构,以此确定软件工程知识体系的内容和边界。
第2章一、填空题(1)用最小的代价在尽可能短的时间内确定问题是否能够解决(2)投资效益分析(3)值得去开发(4)需求分析,设计(5)开发成本、比较和权衡(6)经济角度(7)编写可行性分析报告(8)技术可行性、经济可行性、社会可行因素方面的可行性、操作可行性(9)直接成本、间接成本、有形收益、无形收益(10)因使用新系统而增加的收入、使用新系统可以节省的运行费用(11)货币的时间价值、投资回收期、纯收入(12)经济效益、投资(13)最初投资(14)软件的工作范围、估算开发所需要资源、估算软件成本费用和进度安排(15)软件系统的功能、软件系统的性能、接口、可靠性(16)泡泡图(17)同时出现,只取其一(18)输入,输出(19)加工,名字(20)数据存储二、选择题(1) A (2) C (3)C (4) B (5)D (6) C (7) B (8) A (9) D(10) D(11)B (12)B (13)D (14) D (15)A三、简答题(1)可行性研究主要研究哪些问题?试说明之。
解:可行性研究的任务是决定软件项目做还是不做。
对技术可行性、经济可行性、社会可行性、开发方案的可行性及运行可行性等方面进行分析。
(2)设计一个软件的开发成本为5万元,寿命为3年。
未来3年的每年收益预计为:2200元,24000元,26620元。
银行年利率为10%。
试对此项目进行成本-效益分析,以决定其经济可行性。
解:进行投入产出分析时,未来的收益和现在消耗的成本不能直接进行比较,必须在考虑货币的时间价值后,才能进行准确的投入、产出分析。
22 000/(1+ 10%)+24000/(1.1×1.1)+26 620/(1.1×1.1×1.1)-50 000=20 000+1983 4.71+ 20 000- 50 000= 9834.71经济可行性分析投资收益为: 9834.71元。
(3)某软件公司统计发现该公司研发部门每一万行C语言源代码形成的源文件(.c和.h文件)约为250K。
某项目的源文件大小为3.75M。
①问该项目的规模是多少KLOC(源代码行数)?该公司研发部门的生产率是0.625KLOC/人月,人工价是10000元/人月。
②问工作量和总成本是多少?③每行代码的价值是多少?解:①3.75M/250K=15万行=150KLOC②工作量=规模/生产率=150KLOC/0.625KLOC=240人月成本=工作量×人工价=240人月*10000元/人月=240万元③240万元/15万行=16元/行(4) 某计算机系统投入使用后,每年可节约人民币20000元,假设软件生存期为4年,系统投资额为50000元,若年利率为5%,试计算效益。
解:表面上看,4年共节约20000*4=80000元,扣除投资55000元可产生纯收入25000元。
其实不然,因为投资在前,效益产生有一个时间过程,所以需要把4年内每年预计节约的钱折合成当前价值才能比较。
若按年利率5%计算,折合到当前值的数目如表1所示:表1每年效益折算的当前值年效益(元) 利率(1+0.05)n 当前值(元)预计当前值(元)1 20000 1.05 19047 190472 20000 1.1025 18140 371873 20000 1.1576 17277 544644 20000 1.2155 16454 70918根据表1可计算出以下经济指标:纯收入=4年累计的当前值-系统投资=70918-55000=15918(元)投资回收期≈3+ (55000-54464)/16454-3.033年(5)某旅馆的电话号码服务如下:可以拨分机号和外线号码。
分机号是从7201~7299。
外线号码先拨9,然后是市话号码或长话号码。
长话号码是以区号和市话号码组成。
区号是从100~300中任意的数字串。
市话号码是以局号和分句号组成。
局号可以是455、466、888、552中任意一个号码。
分局号是是任意长度为4的数字串。
要求:写出在数据字典中,电话号码的数据条目的定义(即组成)解:电话号码= 分机号| 外线号码分机号= 7201 (7299)外线号码= 9+[市话号码| 长话号码]长话号码= 区号+市话号码区号= 100 (300)市话号码= 局号+分局号局号= [455|466|888|552]分局号= 4{数字}4(6)某工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。
对于每个需要再次订货的零件,应该列出下述数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。
零件入库或出库称为事务,通过存放在库房的CRT终端把事务报告给定货系统。
当零件库存量少于库存量临界值,决定再次订货,画出订货系统的数据流图。
解:问题分析:源点/终点,处理,数据存储,数据流1)源点/终点:系统之外的实体(人,物,系统)源点:仓库管理员终点:采购员2)处理:需要报表->产生报表处理日常事务->事务处理3)数据存储:订货信息库存清单4)数据流:订货报表:零件编号、名称、数量……事务:零件编号、事务类型、数量……Step1:顶层数据流图——系统级表1 订货系统顶层DFD图构成:基本系统模型+源点+终点一般采用自顶向下逐步细化的分层绘制方法Step2:进一步分解——功能级表2 订货系统0层DFD图Step3:进一步分解——功能级表3 订货系统1层DFD图(7)开发某工程中使用的CAD系统需要投资20万元,经估算在工程中用该CAD系统后将取代大部分人工设计工作,每年可节省9.6万元。
若该软件的生存期为5年,年利率按5%计算,试求该项目的净收入。
解:若按年利率5%计算,货币时间价值折合到当前值的数目如表2所示:表2 货币时间价值(万元)第3章一、选择题(1)B (2)D(3)B(4)B(5)B二、简答题(1)答:需求分析需要4个步骤,分别获取、建模、描述和验证。