当前位置:文档之家› 软件工程过程模型及其选择

软件工程过程模型及其选择

软件工程过程模型及其选择
软件工程过程模型及其选择

软件工程过程模型及其选择

摘要:软件工程过程是开发或维护软件及其相关产品的一系列活动。它包括四个基本过程活动软件规格说明软件开发软件确认软件严谨。在一个良好的软件过程中, 还应该包括软件项目的跟踪监控、技术审核、配里管理、质保证与测试、风险管理等。本文就目前市场的主要应用软件工程模型及其选择做一些探讨。

在一个具体的实际工程活动中, 软件工程师必须设计、提炼出一个工程开发策略, 用以渡盖软件过程中的基本阶段, 确定所设计的过程、方法、工具。这种策略常被称为软件工程模型。对于模型的选择应当是根据组织定义的标准软件过程, 参考具体工程项目的特点和资源状况裁剪来进行的。

在软件工程实践中, 有许多专家致力于过程模型的研究。像瀑布模型、原型模型、快速应用开发模型、螺旋模型、敏捷过程模型、开发模型等。下面谈谈几种主要过程模型布模型每一个阶段都不应该重叠, 而应该是在评审通过, 相关

产出物都已经基线后才能够进人到下一个阶段。

瀑布模型/改进的瀑布模型

虽然瀑布模型仍然存在很多的问题有待解决,但爆布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型。瀑布模型要求软件开发严格按照需求->分析->设计->编码->测试的阶段进行, 每一个阶段都可以定义明确的

产出物和验证准则。瀑布模型在每一个阶段完成后都可以组织相关的评审和验证, 只有在评审通过后才能够进人到下一个阶段。

由于需要对每一个阶段进行验证, 添布模型要求每一个阶段都有明确的文

档产出, 对于严格的瀑瀑布模型的优点仍然是可以保证整个软件产品较高的质量, 保证缺陷能够提前的被发现和解决。

采用澡布模型可以保证系统在整体上的充分把握,使系统具备良好的扩展性和可维护性。但对于前期需求不明确, 而又很难短时间明确清楚的项目则很难很好地利用瀑布模型。另外对于中小型的项目,需求设计和开发人员往往在项目开始后就会全部投入到项目中, 而不是分阶段投人, 因此采用爆布模型会导致项

目人力资源过多的闲置的情况, 这也是必须要考虑的问题。

很多人往往会以进度约束而不选择澡布模型,这往往是一个错误的观点。导致这种情况的一个关键因素往往是概念需求阶段人力不足。因此在概念需求阶段人力能够得到充分保证的情况下, 爆布模型和迭代模型在开发周期上并不会存在太大的差别。反而是很多项目对于迭代或敏捷模型用不好,为了赶进度在前期需求不明确, 没有经过一个总体的架构设计情况下就开始编码, 后期出现大量

的返工而严重影响进度。

架构设计是软件开发中一个重要的关注点。因此在中也提及软件开发要以架构为核心。因此在架构设计完成后系统会被分为相关的子系统和功能模块。每个功能模块间的接口都可以定义清楚。在这种情况下, 当模块的详细设计做完成后往往就没有必要等到其他模块的详细设计都要完全作完才开始编码, 因此在

架构设计完成后可以将系统分为多个模块并行开发, 每个模块仍然遵循先设计

和编码测试的瀑布模型思路。这是瀑布模型的一种最重要的改进思路, 也可以说这是一种增量开发的模型。

当一个新系统的开发存在多个完全不相关的独立需求的功能开发的时候, 这个时候也可以选择将整个开发过程按独立的需求来分为多个小瀑布进行操作。这种方式的最大问题就是没有一个完全总体的设计, 架构设计人员无法在洞悉了所有需求后从系统的可扩展性, 复用等方面总体规划。

在项目管理中有一种压缩进度的方法叫赶工,因此添布模型的另外改进处就在适当的重叠各个阶段过程, 达到资源的有效利用。比如我们通过讨论, 会议确定的实现方式就可以开始执导下一个阶段的工作而不一定完全等到相关的交付物文档化出来。

螺旋模型

首先螺旋模型是遵从澡布模型的。即需求一架构一设计一开发一测试的路线。螺旋模型最大的价值在于整个开发过程是迭代和风险驱动的。通过将瀑布模型的多个阶段转化到多个迭代过程中, 以减少项目的风险。

螺旋模型的每一次迭代都包含了以下六个步骤正确性。

1. 决定目标, 替代方案和约束。

2.识别和解决项目的风险。

3.评估技术方案和替代解决方案。

4.开发本次迭代的交付物和验证迭代产出的正确性。

5.计划下一次迭代。

6.提交下一次迭代的步骤和方案。

螺旋模型实现了随着项目成本投人不断增加,风险逐渐减小。以帮我们加强项目的管理和跟踪,在每次迭代结束后都需要对产出物进行评估和验证, 当发现无法继续进行下去时可以及早地终止项目。

螺旋模型复杂的地方在于尽责、专心和知识渊博的管理。因为对于每一次迭代我们要制定出清晰的目标, 分析出相关的关键风险和计划中可以验证和测试的交付物并不是一件容易的事情。

螺旋模型的每一次迭代只包含了瀑布模型的某一个或两个阶段。如第二次迭代重点是需求, 第三次迭代是总体设计和后续设计开发计划等。因此这是和RUP 提倡的迭代模型是有区别的,RUP的每一次迭代都会包含需求、设计、开发和测试等各个阶段的活动。迭代的目的在于逐步求精而不是仅仅完成解布模型某一阶段的工作。原型法增童和迭代模型增量迭代是RUP统一过程常采用的软件开发生命周期模型。增和迭代有区别但两者又经常一起使用。所以这里要先解释增和迭代的概念。假设现在要开发A,B,C,D 四个大的业务功能, 每个功能都需要开发两周的时间。则对于增量方法而言可以将四个功能分两次增量来完成第一个增量完成A,B 功能, 第二次增量完成C,D 功能而对于迭代开发来讲则是分两次迭代来开发, 第一次迭代完成A,B,C ,D 四个基本业务功能但不含复杂的业务逻辑, 而第二个功能再逐渐细化补充完整相关的业务逻辑。在第一个月过去后采用增量开始时候, 全部开发完成而, 还一点都没有动而采用迭代开发的时候

A,B,C,D四个的基础功能都已经完成。

强调的每次迭代都包含了需求、设计和开发、侧试等各个过程, 而且每次迭代完成后都是一个可以交付的原型。迭代不是并行, 在每次迭代过程中仍然要遵循需求->设计->开发的澡布过程。迭代周期的长度跟项目的周期和规模有很大的关系。小型项目可以一周一次迭代, 而对于大型项目则可以2-4周一次迭代。如果项目没有一个很好的架构师, 很难规划出每次迭代的内容和要到达的目标, 验证相关的交付和产出。因此迭代模型虽然能够很好的满足与用户的交付, 需求

的变化, 但确是一个很难真正用好的模型。

就对风险的消除上, 增量和迭代模型都能够很好地控制前期的风险并解决。。迭代模型更多的可以从总体方面去系统地思考问题, 从最早就可以给出相对完善的框架或原型, 后期的每次迭代都是针对上次迭代的逐步精化。

业界比较标准的增量模型往往要求在软件需求规格说明书全部出来后后续

的设计开发再进行增量。同时每个增量也可以是独立发布的小版本。由于系统的总体设计往往对一个系统的架构和可扩展性有重大的影响, 因此我们推荐的增量最好是在架构设计完成后再开始进行增量, 这样可以更好地保证系统的健壮

性和可扩展性。

原型法

原型一般都不是单独采用的一种生命周期模型, 往往会结合澡布和增迭代

等方法一起使用。对于螺旋模型就可以理解为澡布迭代原型风险的一种生命周期模型。对于迭代开发来讲, 每一个迭代周期的产出都可以着做是下个阶段要精化的原型。而对于澡布模型开发来讲, 我们在需求阶段也可以进行界面和操作建模, 形成RUP后和用户做进一部的需求沟通和确认。

当你的用户没有信息系统的使用经验, 你的系统分析员也没有过多的需求

分析和挖掘经验的时候, 需求分析和调研过程则更需要是一个启发式的过程。而原型则是这种很好的启发式方法, 可以快速地挖掘用户需求并达成需求理解上

的一致。否则即使双方都签字认可的需求往往仍然不是客户真正想要的东西。

原型可以分为抛弃型的和不抛弃型的。如果原型仅仅是需求阶段方面和用户沟通画的DEMO, 则这种原型一般都建议抛弃掉。而对于迭代开发来将, 每次迭

代的产出都是可以独立运行和包含基础功能的系统, 是后续细化的基础, 这类

原型一般都不建议抛弃, 后期的设计开发也要基于该原型逐渐地进行完善。

快速和敏捷开发

我们一般将快速和敏捷开发做为方法论, 而很少将其做为一种软件开发生

命周期模型。敏捷的目的是减少萦重和不必要的工件的输出, 提高效率。而不是要我们去挑阶段或过程, 不是分析设计都还没有做就去做开发。因此对于添布, 增量迭代或原型我们都可以借鉴敏捷方法论中的一些好的实践,这些实践都是对传统的生命周期模型很好的补充。对于敏捷方法论在此不再做过多的叙述。

结束语

通过以上分析, 对于软件工程过程模型的选择, 得出以下总结

1. 在前期需求明确的情况下, 尽量采用浮布模型或改进型的澡布模型在用户无信息系统使用经验, 需求分析人员技能不足情况下, 一定要借助原型在不

确定性因素很多, 很多东西前面无法计划情况下, 尽量采用增量迭代和螺旋模

型在需求不稳定情况下, 尽量采用增量迭代模型。

2. 在资金和成本无法一次到位情况下, 可以采用增量模型, 软件产品分多个版本进行发布, 对于完全多个独立功能开发可以在需求阶段就分功能并行,

但每个功能内都应该遵循添布模型, 对于全新系统的开发必须在总体设计完成

后再开始增量或并行。

3. 对于编码人员经验较少情况下, 建议不要采用敏捷或迭代等生命周期模型。

4. 增量、迭代和原型可以综合使用, 但每一次增量或迭代都必须有明确的交付和出口准则。

软件、软件工程的基本概念和特点

2017-2018 学年第一学期第四次作业 专业:计算机科学与技术班级:17级3班学号:1701110140姓名:任亚磊 作业内容: 简述软件、软件工程的基本概念和特点 软件: 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操作信息的数据结构;文档是与程序开发,维护和使用有关的图文资料。 软件的特点: 1.软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性 2.软件的生产和硬件不同,在它的开发过程中没有明显的制造过程、没有磨损 3.在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。 4.软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同的依懒性 5.软件的开发至今尚未完成摆脱手工艺的开发方式,没有实现自动化 6.软件本身是复杂的、实际问题的复杂性、程序逻辑结构的复杂性 7.软件的成本相当昂贵。 8.相当多的软件工作涉及社会因素。 软件的分类: 1.系统软件:操作系统、数据库管理系统、设备驱动程序、通信处理程序 2.应用软件:商业数据处理软件、工程和科学计算软件、系统仿真软件 软件的其他角度分类: a.按规模划分:微型软件、小型、中型、大型、甚大型、极大型 b.按工作方式划分:实时处理软件、分时软件、交互式软件、批处理软件

c.按软件服务对象的范围划分:项目软件、产品软件 软件生产的发展: 1 程序设计时代:这个阶段生产方式是个体劳动,生产工具是机器语言,汇编语言。(1946-1956年) 2 程序系统时代:这个阶段生产方式是小集团合作生产,生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。(1956-1968年) 3 软件工程时代:这个阶段生产方式是工程化的生产,使用数据库,开发工具,开发环境,网络,分布式面向对象技术来开发软件。(1968年至今) 软件工程: 软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。主要包括三个方面的内容:软件开发方法,软件过程和软件工具。 软件工程的原则: 1.抽象2.信息隐蔽3.模块化4.局部化5.确定性6.一致性7.完备性8.可验证性。

软件工程课后参考答案

第一章课后参考答案 1.什么是软件危机它们有哪些典型表现为什么会出现软件危机 “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的主要原因 (1)与软件本身的特点有关 (2)与软件开发和维护过程中使用的方法不正确有关

2.假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢”应该怎么反驳他 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程它有哪些本质特征怎么用软件工程消除软件危机 软件工程是指导知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 本质特征: (1)软件工程关注于大型软件的构造 (2)软件工程的中心课题是控制复杂性 (3)软件经常变化

软件工程模拟试卷和答案

北京语言大学网络教育学院 《软件工程》模拟试卷一 注意: 1.试卷保密,考生不得将试卷带出考场或撕页,否则成绩作废。请监考老师负责监督。 2.请各位考生注意考试纪律,考试作弊全部成绩以零分计算。 3.本试卷满分100分,答题时间为90分钟。 4.本试卷分为试题卷和答题卷,所有答案必须答在答题卷上,答在试题卷上不给分。 一、【单项选择题】(本大题共15小题,每小题2分,共30分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在答题卷相应题号处。 1、在软件开发领域中,“描述了实现概念模型的软件解决方案”的系统模型被称为()。 [A] 设计模型[B] 软件模型[C] 实现模型[D] 部署模型 2、一般来说,整个需求的主体是()。 [A] 功能需求[B] 性能需求 [C] 外部接口需求[D] 设计约束 3、总体设计的第二阶段是()。 [A] 初始设计[B] 详细设计[C] 复审阶段[D] 精化设计 4、在模块内聚类型中,常常通过研究流程图确定模块的划分,得到的是()。 [A] 逻辑内敛[B] 顺序内敛[C] 功能内敛[D] 过程内敛 5、一个模块直接控制(调用)的下层模块的数目称为模块的()。 [A] 扇入[B] 扇出[C] 深度[D] 宽度 6、UML术语中,限定符常被用在()。 [A] 依赖关系[B] 泛化关系[C] 关联关系[D] 细化关系 7、UML提供的13种图形化工具中,用于概念模型和软件模型静态结构的是() [A] 用况图[B] 状态图[C] 类图[D] 活动图 8、RUP的迭代、增量式开发规定的4个阶段不包括()。 [A] 评审阶段[B] 构造阶段[C] 移交阶段[D] 精化阶段 9、根据RUP实现的活动,输入为设计类,活动为实现类,则输出为()。 [A] 用况[B] 子系统[C] 接口[D] 构件 10、软件评估可分为静态评估和动态评估,其中属于动态评估技术的是()。 [A] 评审[B] 走查[C] 形式化证明[D] 软件测试 11、黑盒测试技术,又称为()。 [A] 功能测试[B] 结构测试[C] 系统测试[D] 集成测试

软件工程实践者的研究方法(中文版第七版)课后习题答案

作业答案。 2.1 a.设计者对于用户要问的问题: 项目的目标是什么?做到什么程度就成功了?谁会对项目的成功做最后的评判?项目的使用者包括那些? b. 用户对设计者应该问的问题: 目前问题有哪些解决方案,项目完成有哪些难点,在时间范围内能否完成? c. 软件问题用户自问? 还有其他解决方案吗?哪些功能是必须的?乙方资质和能力够吗? d. 软件过程问题自问? 用敏捷还是用瀑布?质量检查点分别有哪些?有几个MileStone? 2.2 为沟通活动设计一系列动作,选定其一并设计任务集。 (批作业的时候,以合理为目标,不一定要一样) 需求获取、需求规范说明(建模)、需求协商、需求确认等。 例如,书上page 23。 2.7 详细描述三个适合用于瀑布模型的软件项目。 (要求学生不仅仅列出项目的名称,而要说明为什么适合) 瀑布模型适合于项目开发而不是产品开发。信息管理系统一般适合于用瀑布模型。因为这类系统业务功能较为明确,架构比较单一,技术难点较少。图书馆系统、销售管理系统都是。 3.11 重构:已经写好的正确的代码,不断修正,使得代码更加精简并易读。 结对编程:两个人同时编写一段代码,一般一个人负责实现,一个人负责检查代码质量。 3.16 利用FDD,为“Web浏览器”定义一系列特征集合与特征。 特征集合模板: an 如:出售一件商品 特征定义模板: the a(n) 特征集合:展示Web页面内容。 特征: 1)本地解析HTML页面 2)展示HTML页面 3)从网络上下载页面相关图片 4)在浏览器上展示图片 附加:统一过程模型的图。 (要求有图有说明)

软件工程(习题与参考答案)

第1章概述(习题与参考答案) [判断题] 1. 由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。(×) 2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。(×) 3. 购买大多数计算机系统所需的硬件比软件更昂贵。(×) 4. 大多数软件产品在其生命周期中不需要增强功能。(×) 5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。(√) 6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。(×) [选择题] 1. ()因素促使计算机系统越来越复杂。(D) A. 计算机内存和存储容量上的巨大增长 B. 外部输入/输出选项的更加多样性 C. 计算机体系结构方面的深刻变化 D. 以上所有选项 2. 下面的()不再是现代软件工程师关注的问题。(A) A. 为什么计算机硬件的成本这么高? B. 为什么软件需要很长时间才能完成? C. 为什么开发一个软件的成本这么高? D. 为什么不能在产品发布前去除软件错误? 3. 软件会逐渐退化而不会磨损,其原因在于()。(C) A. 软件通常暴露在恶劣的环境下 B. 软件错误通常发生在使用之后 C. 不断的变更使组件接口之间引起错误 D. 软件备件很难订购 4. 大多数软件仍然是定制开发的,其原因在于()。(C) A. 软件组件重用是十分普遍的 B. 可重用的组件太昂贵而无法使用 C. 软件在不使用其他组件的情况下很容易构造出来 D. 商业组件在很多应用领域中可以得到 5. 下面的()说法是正确的。(C) A. 软件危机在20世纪70年代末期全面爆发

B. 当前先进的软件工程方法已经解决了软件危机的问题 C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题 D. 软件危机是指在软件产品中存在一系列的质量问题 6. 软件工程的基本目标是()。(B) A. 消除软件固有的复杂性 B. 开发高质量的软件 C. 努力发挥开发人员的创造性潜能 D. 更好地维护正在使用的软件产品 7. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方 法、工具和过程三个要素。(D) A. 软件产品 B. 软件过程 C. 软件测试 D. 软件工程 8. 软件工程的基本要素包括方法、工具和()。(C) A. 软件系统 B. 硬件环境 C. 过程 D. 人员 9. 软件工程师在从事软件工作时应使用下面的()准则。(E) A. 从来不为个人获利而窃取数据 B. 从来不散布或出售项目中自己工作的信息 C. 从来不故意毁坏或修改别人的程序、文件或数据 D. 从来不侵犯个人、小组或组织的隐私 E. 以上所有选项 第2章软件过程(习题与参考答案) [选择题] 1. ()是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、 软件确认、软件改进等活动组成。(A) A. 软件过程 B. 软件工具 C. 软件产品 D. 软件工程 2. 软件过程的基本活动是()。(A) A. 分析、设计、实现、测试、演化 B. 沟通、计划、建模、构造、部署 C. 计划、分析、设计、实现、调试 D. 沟通、风险管理、度量、产品化、评审 3. ()软件需求规格说明书在软件开发过程中具有重要的作用,它是软件可行性分析的依据。(B) A. 真 B. 假

软件工程试题与答案 (6)

第一章软件工程概述 一. 填空题 1. 软件的发展过程 , , , . 2. 基于软件的工作方式,软件可以划分为 , , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境 . 4. 在计算机系统中,软件是 , 而硬件是 . 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,, . 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤 , , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型 , , , , , . 14. 软件工程面临的问题有 , , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和 . 16.基于软件的功能划分可以把软件划分为 , ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则: , ,和 , 。 20.原型模型是从需求分析开始。软件开发者和用户在一起定义,说明需求,并规划出定义的区域。然后快速设计软件中对用户/客户可见部分的表示。快速设计导致了原形的建造,原形由用户/客户评估,并进一步求精。

软件工程作业第一章

1-1什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现:软件总是超出预算、落后于进度表,而且产品质量不可靠、维护困难等。 危机原因: 1、软件受其自身特点的影响,生产过程不象硬件那样规范,受人的因素和外界影响很大,在软件生产的各阶段都会引入不同程度的错误,造成不能预期完成任务,致使成本上升,甚至导致软件失败。 2、主客观不相适应。 ●客观上:软件规模增大、功能要求越来越复杂,需求不断变化等; ●主观上:传统的个体化开发观念和方法的影响,无开发过程指导,无开发过程管理;由于主客观矛盾,必然产生软件质量差、开发超期、超预算、维护困难等现象。 1-3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机? ?基本思想:是强调在软件开发过程中应用工程化原则,解决软件的整体质量较低、最后期限和费用没有保证等问题。 ?软件工程定义:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它. ?软件工程的根本在于提高软件的质量与生产率,最终实现软件的工业化生产。 本质特性:P6 消除软件危机:软件工程基本原理7条。 1-6 什么是软件过程?它与软件工程方法学有何关系? ?软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任

务的工作步骤。

?过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。 关系:是软件工程方法学包含3个要素(方法、工具和过程)之一。 1-7 什么是软件生命周期模型?试比较瀑布模型、(快速)原型模型、增量模型和螺旋模型、喷泉模型的优缺点,说明每种模型的适用范围。 生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。 瀑布模型:它将软件生命周期划分为需求分析、软件设计、程序编写、软件测试和运行维护等基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。优点:文档驱动。 强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。遵守瀑布模型的文档约束,将使软件维护变得比较容易一些。 缺点:系统可能不满足需求,用户仅仅通过写在纸上的静态的规格说明,很难全面正确地认识动态的软件产品 适用范围:软件需求明确。 原型模型:在初步调查了解的基础上,提供快速的软件建造工具,开发出一个功能并不十分完善的可实际运行的系统,即原型。需求分析入手快速、表达直观、容易交流。重点解决瀑布模型需求分析入手难的问题。 优点:关注满足需求。

软件工程课后参考答案

第一章课后参考答案 1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的主要原因 (1)与软件本身的特点有关 (2)与软件开发和维护过程中使用的方法不正确有关

2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机? 软件工程是指导知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 本质特征: (1)软件工程关注于大型软件的构造 (2)软件工程的中心课题是控制复杂性 (3)软件经常变化

软件工程方法与实训

软件工程方法与实训 习题答案 2011-9-22

习题一 ............................................................................................................ 错误!未定义书签。 1 软件是什么?软件有那些特点?................................................................. 错误!未定义书签。 2 按照功能层次,软件可分为那些层次的软件?......................................... 错误!未定义书签。 3 按照服务对象,软件可分为用户定制软件通用商业软件.举例说明两类软件的区别错误!未定义书签。 4 什么是软件工程,其对软件产业化发展有什么积极意义?..................... 错误!未定义书签。 5 软件工程涉及工程,方法,工具三个方面的技术问题.这三个方面存在着什么相互关系? 试举例说明它们之间的联系............................................................................. 错误!未定义书签。 6 软件工程管理主要体现在四个p上,简述各个管理,并谈谈自己的认识错误!未定义书签。7对工程目标进行优先级排序...................................................................... 错误!未定义书签。 8 结构化方法有什么特点?........................................................................... 错误!未定义书签。9操作Microsoft Visio 谈谈你自己的感受........................................... 错误!未定义书签。习题二 ............................................................................................................ 错误!未定义书签。 1 软件开发期的目标任务是什么?概要设计需要完成什么任务?............. 错误!未定义书签。2瀑布模型的一大特点是里程碑管理机制,对此,你有什么认识?............ 错误!未定义书签。3为什么瀑布模型不能很好的适应用户需求变更?.................................... 错误!未定义书签。 4 试说明抛弃型原型与进化型模型的异同................................................. 错误!未定义书签。5一般认为,原型进化模式不能适应较大型软件项目的开发,原因是什么?错误!未定义书签。6增量模式可体现出那些方面的优越性?.................................................... 错误!未定义书签。7开发一个”综合信息管理系统”,选择一个比较合适的过程模式,说明理由.错误!未定义书签。 习题三 ............................................................................................................ 错误!未定义书签。 1 软件开发机构内都设有质量控制部,并将其防灾开发部服务部之上,对此,你什么看法 ... 错误!未定义书签。 2 通常认为,项目负责人不一定是技术专家,但必须是管理专家,对此,你有什么看法?错误!未定义书签。 3 你将如何管理项目小组,以使其具有较高的工作热情?......................... 错误!未定义书签。4是比较民主分权制与住程序员负责制的优劣?为什么?.......................... 错误!未定义书签。 5 需要开发一个学生管理系统,对该项目作出比较合理的任务及进度安排.错误!未定义书签。 6 用c语言开发一个矩阵运算程序,计算工期和人力成本....................... 错误!未定义书签。 7 开发一个设备监控程序,并计算人力成本............................................... 错误!未定义书签。 8 软件项目中主要有那些技术文档,管理文档和用户文档....................... 错误!未定义书签。 9 为什么软件开发需要有配置管理,其主要包括那些方面的管理? ......... 错误!未定义书签。 10 为什么配置管理中需要有开发库,基线库和产品库这三个配置库? ... 错误!未定义书签。 11 什么是质量标准?..................................................................................... 错误!未定义书签。习题四 ............................................................................................................ 错误!未定义书签。 1 计算机系统有哪些元素组成?特征是什么?............................................. 错误!未定义书签。 2 举例说明Client/Server 结构的系统扩充性........................................ 错误!未定义书签。 4 B/S结构有哪些特点?与C/S相比有哪些优势?...................................... 错误!未定义书签。

软件工程课后练习1

第一章 1、软件由计算机程序、数据和组成。 2、软件与硬件有很大的区别,它是一种抽象的实体。 3、软件的发展经历了三个时期:程序设计、程序系统和。 4、软件工程的三个基本要素包括、和。 5、瀑布模型是将软件生存周期的各个活动规定为以顺序连接的若干阶段的模型。它规定了各阶段的活动由前至后,相互衔接的固定次序。 6、原型模型是一种非整体开发模型。先开发一个软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意产品。 7、螺旋模型将开发过程分为若干个螺旋周期。在每个螺旋周期内分为四个工作步骤:制定计划、、实施工程、。 1、软件产品的生产过程主要是 ____。 A. 制造 B. 复制 C. 开发 2、是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护。 A. 软件过程 B. 软件生存周期 C. 软件工程 3、全面准确地描述“软件系统必须要做什么”是以下____阶段的主要任务。 A. 可行性研究 B. 需求分析 C. 软件设计 D. 程序编码 4、软件生存周期中持续时间最长的是____阶段。 A. 需求分析 B. 软件设计 C. 软件测试 D. 软件运行/维护 5、以下叙述中不属于软件危机的主要表现是____。

A. 软件成本太高 B. 软件产品无法满足用户需求 C. 软件开发人员明显不足 D. 软件开发效率低 6、在以下软件过程模型中,___适合于大型软件的开发,并引入了风险分析的概念。 A. 瀑布模型 B. 原型模型 C. 螺旋模型 D. 增量模型 7、为保证软件开发过程能够跟上技术的进步,必须不断地灵活地改进软件工程____。 A. 工具 B. 过程 C. 方法 8、软件工程中描述瀑布模型一般包括计划、____、设计、编码、测试、维护几个阶段。 A. 需求分析 B. 需求调查 C.问题定义 D. 可行性研究 1、什么是软件,有哪些特点。 2、软件危机的主要表现有哪些? 3、什么是软件工程,包括哪些基本要素,简要说明这些要素的作用。 4、什么是软件生存周期,通常划分为哪些阶段? 5、比较瀑布模型、增量模型、原型模型和螺旋模型各自的特点。 6、假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该软件将被抛弃。选用哪种软件过程模型比较合适?说明选择的理由。 7、假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了

-软件工程习题答案参考

软件工程 绪论 1.什么是软件危机?为什么会产生软件危机? 答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。 (2).软件生产技术进步缓慢 2.什么是软件生产工程化?工程化生产方法与早期的程序设计方法 主要差别在哪里? 答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。 3.分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管 理的相互关系。 答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。新方法在推行初期,总有人不愿接受和采用。若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。所以对于一

个理想的软件工程环境,应该同时具备技术和管理两个方面。 4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。 答:用C++开发一个软件,是校园一卡通的模块。首先,要在编辑程序支持下在计算机中输入源程序。然后编译程序,把源程序翻译成目标程序。如果发现错误,就重新调入编辑程序对源程序进行修改。编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。 5.什么是软件工程环境?谈谈你对环境重要性的认识。答:方法与工具相结合,再加上配套的软、硬件支持就形成环境。例如在批处理时代,用户开发的程序是分批送入计算机中心的计算机的,有了错误,就得下机修改。程序员对自己写的程序只能继续地跟踪,思路经常被迫中断,效率难于提高。分时系统的使用,使开发人员从此能在自己的终端上跟踪程序的开发,仅此一点,就明显提高了开发的效率。 6. 何谓面向对象软件工程?简述它与传统软件工程在各型软件开发中的作用。 答:以面向对象程序设计为基础。 7. 软件按规模大小可分成哪几类?简述软件工程中各型软件开发中的作用。 答:按规模分为极小、小、中、大、甚大、极大。(1)中小型软件:

软件工程模型

软件开发的V模型的优缺点? V模型是最广为人知的测试模型。 最典型的V模型版本一般会在其开始部分对软件开发过程进行描述 图1 V模型的各级开发阶段 这是古老的瀑布模型。作为开发模型, 在V模型中,测试过程被加在开发过程的后半部分,如下图所示: 图2 V模型示意图 单元测试所检测代码的开发是否符合详细设计的要求。集成测试所检测此前测试过的各组成部分是否能完好地结合到一起。系统测试所检测已集成在一起的产品是否符合系统规格说明书的要求。而验收测试则检测产品是否符合最终用户的需求。 预验收测试 可行性分析-------> 验收测试 ↘预系统测试↗ 需求分析-----> 系统测试 ↘预集成测试↗ 概要设计----> 集成测试 ↘预单元测试↗ 详细设计-> 单元测试 ↘↗ 编码 这就是软件测试的V模型 V模型的缺陷 仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段 忽视了测试对需求分析,系统设计的验证,一直到后期的验收测试才被发现。 W 模型: 上次说到V模型的局限性在于没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试”的原则。在V模型中增加软件各开发阶段应同步进行的测试,演化为W模型。在模型中不难看出,开发是“V”,测试是与此并行的“V”。基于“尽早地和不断地进行软件测试”的原则,在软件的需求和设计阶段的测试活动应遵循IEEE1012-1998《软件验证与确认(V&V)》的原则。 W模型由Evolutif公司提出,相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。 W模型也有局限性。W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整。 W模型也被称为双V模型,在每个开发阶段,测试都可以介入,并执行编写、评审、基线化的过程。双V模型的第一条线代表开发,第二条线代表测试准备,第三条线是测试执行。他的模型是这样的: SRS编写 STP编写 SRS评审STP评审 ST系统测试 SRS基线化 STP基线化HLD编写 ITP编写 HLD评审 ITP评审IT集成测试 HLD基线化 ITP基线化 LLD编写UTP编写 LLD评审 UTP评审 UT单元测试

软件工程基本概念、工具与研究热点

实验1 软件工程基本概念、工具与研究热点 1.1 软件工程的计算环境 1.实验目的 1)理解软件工程的基本概念,熟悉软件、软件生存周期、软件生存周期过程和软件生存周期 各阶段的定义和内容。 2)通过Internet搜索与浏览,了解网络环境中主流的软件工程技术网站,掌握通过专业网 站不断丰富软件工程最新知识的学习方法,尝试通过专业网站的辅导与支持来开展软件工程 应用实践。 3)通过Internet搜索与浏览,了解主流的软件工具和软件开发环境产品及发展和应用情况。 2.工具/准备工作 需要准备一台带有浏览器、能够访问因特网的计算机。 课内实验学时:2学时 3.实验内容与步骤 1)请查阅有关资料,给“软件”下一个权威性的定义:软件是一系列按照特定顺序组织的 计算机数据和指令的集合。 这个定义的来源是:百度百科(https://www.doczj.com/doc/cf2045105.html,/view/47193.html) 2)“软件生存周期”是软件工程技术的重要基础,是对软件的一种长远发展的看法,这 种看法把软件开始开发之前和软件交付使用之后的一切活动都包括在软件生命周期之内。 查阅有关资料,给出“软件生命周期”的定义:软件生命周期(SDLC,Systems Development Life Cycle,SDLC)是软件的产生直到报废的生命周期。 这个定义的来源是:百度百科(https://www.doczj.com/doc/cf2045105.html,/view/47193.html) 3)“软件生命周期过程”概念进一步完善了关于软件生命周期的定义,其主要内容是: 软件生命周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维 护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进, 每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。 这个定义内容的来源是:百度百科(https://www.doczj.com/doc/cf2045105.html,/view/47193.html) 4)由于工作对象和范围的不同以及经验不同,对软件生命周期过程中各阶段的划分也不 尽相同。但是,这些不同划分中有许多相似之处。相关的软件工程国家标准把软件生存周期 划分为8个阶段,分别是:系统定义,可行性研究,需求分析,总体设计,详细设计,编码和单元测 试,综合测试,运行维护 你认为把软件生存周期划分为不同阶段的意义何在:提高编辑软件的效率,有效缓解软 件危机,提高软件的质量及软件的科学、有效性。 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.采用合适的设计方法

软件工程理论与实践习题答案

习题答案 习题一答案 一、选择题 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) OMT 6. 软件危机的主要表现是(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. 软件工具的作用是为了延长软件产品的寿命。(×) 9. 软件工程过程应该以软件设计为中心,关键是编写程序。(×)

软件工程简答题

软件工程简答题 三、简答题(简要回答下列问题) 1、什么是软件工程?它目标和内容是什么? 软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。 软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。 软件工程内容:包括开发技术和开发管理两个方面。 2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发? 软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。 其中喷泉模型、统一软件过程适用于面向对象的软件开发。 3、什么是结构分析方法?该方法使用什么描述工具? 结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。 4、什么是软件概要设计?该阶段的基本任务是什么? 把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。 基本任务: ⑴设计软件系统结构 ⑵进行数据结构及数据库的设计 ⑶编写概要设计的文档 ⑷评审 5、软件维护有哪些内容? (1)校正性维护。在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴

露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。 (2)适应性维护。为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护。 (3)完善性维护。为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。 (4)预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。 6、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系? 软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。 单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。 集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。 确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。 系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。 7、什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。 包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。 8、衡量模块独立性的两个标准是什么?各表示什么含义? 内聚和耦合。 内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。 耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。

软件工程—理论与实践-课后答案(许家怡-白忠建-吴磊-著)-高等教...

习题一答案 一、选择题 1. 软件的主要特性是(A B C)。 A) 无形 B) 高成本 C) 包括程序和文档 D) 可独立构成计算机系统 2. 软件工程三要素是(B)。 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) OMT 6. 软件危机的主要表现是(B D)。 A) 软件成本太高 B) 软件产品的质量低劣 C) 软件开发人员明显不足 D) 软件生产率低下 7. 软件开发方法的主要工作模型有(A B C) A) 螺旋模型 B) 循环模型 C) 瀑布模型 D) 专家模型 8. 软件工程的目标有(A B C)。 A) 易于维护 B) 低的开发成本 C) 高性能 D) 短的开发期 9. 软件工程学的目的和意义是(A D)。 A) 应用科学的方法和工程化的规 范管理来指导软件开发 B) 克服软件危机 C) 作好软件开发的培训工作 D) 以较低的成本开发出高质量的 软件 二、判断题 1. 软件就是程序,编写软件就是编写程 序。(×) 2. 瀑布模型的最大优点是将软件开发的 各个阶段划分得十分清晰。(×) 3. 结构化方法的工作模型是使用螺旋模 型进行开发。(×) 4. 结构化方法和OO方法都是一种面向 过程的软件开发方法。(×) 5. 原型化开发方法包括生成原型和实现 原型两个步骤。(×) 6. 面向对象的开发方法包括面向对象的 分析、面向对象的设计和面向对象的程序 设计。( √) 7. 软件危机的主要表现是软件的需求量 迅速增加,软件价格上升。(×) 8. 软件工具的作用是为了延长软件产品 的寿命。(×) 9. 软件工程过程应该以软件设计为中 心,关键是编写程序。(×) 10. RCP法与RSP法的主要区别是前者采 用循环渐进的开发方式,原型将成为最终 的产品,而后者原型将被废弃。(√) 三、简答题 1. 软件产品的特性是什么? 答:●软件是一种逻辑产品,具有无形性; ●软件产品的生产主要是研制;主要 是脑力劳动; ●软件不存在磨损和老化问题,但存 在退化问题; ●软件产品的成本非常昂贵,其开发 方式目前尚未完全摆脱手工生产方式; ● 软件具有“复杂性”,其开发和运 行常受到计算机系统的限制。 2. 软件发展有几个阶段?各有何特 征? 答:①程序设计阶段。 硬件特征:价格贵、存储容量小、运行可靠性差。 软件特征:只有程序、程序设计概念,不重视程序设计方法。 ②程序系统阶段。 硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。 软件特征:程序员数量猛增,开发人员素质低。 ③软件工程阶段。 硬件特征:向超高速、大容量、微型化及网络化方向发展。 软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。 3. 什么是软件危机?其产生的原因是什么? 答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。软件危机主要表现在两个方面: (1) 软件产品质量低劣,甚至开发过程就夭折。 (2) 软件生产率低,不能满足需要。 4. 什么是软件过程?有哪些主要的软件过程模型?它们各有哪些特点? 答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。软件过程模型是对软件开发实际过程的抽象和简 1

文本预览