第7章_实现(第六版)(张海潘编著)

合集下载

软件工程导论张海藩课后习题答案(完整版)

软件工程导论张海藩课后习题答案(完整版)
作业及解答
作业一 基本概念(第1-2章) 作业二 需求分析(第3章) 作业三 系统设计(第5章) 作业四 详细设计(第6章) 作业五 系统实现(第7章) 作业六 系统维护(第8章) 作业七 面向对象方法学引论(第9章) 作业八 面向对象分析(第10章) 作业九 面向对象设计(第11章) 作业十 面向对象实现(第12章) 作业十一 软件项目管理(第13章)
M40e0 8.2(0 8 191 99 5)60 7,357,677(字 9) 408e09.8
如果字长为32位,则这个存储器的价格是:
P0.00 33 20.71291 99 5 77 4 35777,16 27(7 美9 元)
如果一条指令为一个字长,则为使存储器装满程序共需 73,577,679条指令。
E2 病人
F2生理信号
E3 时钟
F3日前、时间
F5安全范围 D2患者安全范围
P2 分析信号
危及病人信息
P3 产生警告信息
F2生理信号
F4警告信息
P1 接收信号
F2生理信号
E1 护士
P4 定时取样 生理信号
定时的生理信号 F6日志
P5 更新日志
D1患者日志
E1 护士
F6日志 F1要求报告
P6 产生病情报告
2-4目前住院病人主要由护士护理,这样做不仅需要大量护 士,而且由于不能随时观察危重病人的病情变化,还会延 误抢救时机。某医院打算开发一个以计算机为中心的患者 监护系统,请分层次地画出描述本系统功能的数据流图。
医院对患者监护系统的基本要求是随时接收每个病人的生 理信号(脉搏、体温、血压、心电图等),定时记录病人情 况以形成患者日志,当某个病人的生理信号超出医生规定 的安全范围时向值班护士发出警告信息,此外,护士在需 要时还可以要求系统印出某个指定病人的病情报告。

(完整版)软件工程导论(第六版)张海藩课后习题部分答案

(完整版)软件工程导论(第六版)张海藩课后习题部分答案

第一章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什么是软件危机?是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

1-3什么是软件工程?是指导计算机软件开发和维护的一门工程学科。

1-4简述结构化范型和面向对象范型的要点,并分析它们的优缺点。

目前使用得最广泛的软件工程方法学(2种):1.传统方法学:也称为生命周期方法学或结构化范型。

优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。

缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。

2.面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。

1-6什么是软件过程?它与软件工程方法学有何关系?z软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型1-7什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。

软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。

生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。

瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。

适用中小型项目。

快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。

软件工程导论(第六版)张海藩 牟永敏课后习题答案.

软件工程导论(第六版)张海藩 牟永敏课后习题答案.

第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。

它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。

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

常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。

而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。

这些都降低了开发商的信誉,引起用户不满。

(2) 用户对已完成的软件不满意的现象时有发生。

(3) 软件产品的质量往往是靠不住的。

(4) 软件常常是不可维护的。

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

文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。

(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。

软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。

(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。

(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。

二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。

计算机操作系统原理张海云版第7章

计算机操作系统原理张海云版第7章

第7章 文件系统
7.1 文件和文件系统
2.文件与文件系统的概念
2.1)文件的定义 文件是指由创建者所定义的、具有文 件名的一组相关元素的集合,可分为有结 构文件和无结构文件两种。
一个文件是一组逻辑上具有完整意义的信息 集合,并赋以一个文件名 文件名由用户给定,它是一个字母数字串
第7章 文件系统
7.1文件和文件系统
7.2.5 文件的存取方法
第7章 文件系统
7.1文件和文件系统 2.3文件的分类
按信息流向可把文件分为: 输入文件 输出文件 输入/ 输出文件等。
第7章 文件系统
7.1文件和文件系统 2.3文件的分类
按文件的保护级别又可分为: 只读文件 读写文件 可执行文件 不保护文件等。
第7章 文件系统
2.4) 7.1文件和文件系统 文件系统
第7章 文件系统
7.2.4 索引顺序文件
第7章 文件系统
7.2.4 索引顺序文件
检索过程:首先也是利用用户(程序)所提供 的关键字以及某种查找算法去检索索引表, 找到该记录所在记录组中第一个记录的表项, 从中得到该记录组第一个记录在主文件中的 位置;然后,再利用顺序查找法去查找主文 件,从中找到所要求的记录。
第7章 文件系统
7.1文件和文件系统
1. 文件系统的引入
早期的计算机系统的局限 需要人工干预 文件系统的出现 把相应的程序和数据看作文件,并 把它们存放在磁盘等大容量存储介质上, 从而实现了对程序和数据的透明存取

第7章 文件系统
7.1 文件和文件系统
1. 文件系统的引入
透明存取 是指不必了解文件存放的物理结 构和查找方法等与存取介质有关的部 分,只需给定一个代表某段程序或数 据的文件名,文件系统就会自动地完 成对与给定文件名相对应文件的有关 操作。

张海藩《软件工程导论》(第6版)(课后习题 第7章 实现)【圣才出品】

张海藩《软件工程导论》(第6版)(课后习题 第7章 实现)【圣才出品】

第7章实现1.下面给出的伪码中有一个错误。

仔细阅读这段伪码,说明该伪码的语法特点,找出并改正伪码中的错误。

字频统计程序的伪码如下:答:(1)错误:INSERT the extracted word into the table在这个后面,没有给这个word的occurrence count赋值为1。

(2)语法特点:该伪代码在循环结构中嵌套循环结构,并且在嵌套的循环结构中又嵌套了IF ELSE结构。

2.研究下面给出的伪码程序,要求:(1)画出它的程序流程图。

(2)它是结构化的还是非结构化的?说明理由。

(3)若是非结构化的,则:a.把它改造成仅用3种控制结构的结构化程序;b.写出这个结构化设计的伪码;c.用盒图表示这个结构化程序。

(4)找出并改正程序逻辑中的错误。

答:(1)程序流程图,如图7-8所示。

图7-8程序流程图(2)此程序是非结构化的,它有一个GOTO语句,并且是从一个循环体内转到循环体外的一条件语句内部。

(3)①修改后的伪码,如图7-9所示。

图7-9修改后的伪码②修改后程序的盒图,如图7-10所示。

图7-10修改后程序的盒图(4)程序中的错误:①语句“IF WORD=KEYWORD”里的变量“WORD”没有预先赋值。

②程序中没有预先输入T的值。

③“N=0”应该是“MATCH=0”。

3.在第2题的设计中若输入的N值或KEYWORD不合理,会发生问题。

(1)给出这些变量的不合理值的例子。

(2)将这些不合理值输入程序会有什么后果?(3)怎样在程序中加入防错措施,以防止出现这些问题?答:(1)N=1,KEYWORD=#。

(2)不合理的值输入程序后无法打印出任何信息。

(3)可以通过加入循环来防止出现这些错误的问题。

4.回答下列问题。

(1)什么是模块测试和集成测试?它们各有什么特点?(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?为什么?(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例:答:(1)①模块测试时对每个单独的模块,分别用黑盒和白盒测试技术,测试它地功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。

软件工程导论(第六版)张海藩-牟永敏课后习题答案

软件工程导论(第六版)张海藩-牟永敏课后习题答案

第一章、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、 使用与维护过程中遇到的一系列严重问题和难题。

它包括两方 面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。

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

常常出现实际成本比估算成本高出一个数量 级、实际进度比计划进度拖延几个月甚至几年的现象。

而为了赶进度和节约成本所采取的一些权宜之 计又往往损害了软件产品的质量。

这些都降低了开发商的信誉,引起用户不满。

(2) 用户对已完成的软件不满意的现象时有发生。

(3) 软件产品的质量往往是靠不住的。

(4) 软件常常是不可维护的。

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

文档资料不全或不合格, 必将给软件开发和维护工作带来许 多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。

(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。

软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。

(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。

(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。

二、假设自己是一家软件公司的总工程师,当把图 时发现并改正错误的重要性时, 有人不同意这个观点, 现实的,并举例说:“如果一个故障是编码错误造成的, 应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的, 在早期引入变动, 涉及的面较少, 因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的 配置成分都做相应的修改,不仅工作量大, 而且逻辑上也更复杂, 因此付出的代价剧增; 在软件“已经完成” 是在引入变动, 当然付出的代价更高。

软件工程导论(第六版)张海藩 牟永敏课后习题答案.

软件工程导论(第六版)张海藩 牟永敏课后习题答案.

第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。

它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。

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

常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。

而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。

这些都降低了开发商的信誉,引起用户不满。

(2) 用户对已完成的软件不满意的现象时有发生。

(3) 软件产品的质量往往是靠不住的。

(4) 软件常常是不可维护的。

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

文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。

(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。

软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。

(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。

(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。

二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。

软件工程_张海蕃

软件工程_张海蕃

应该推广使用在实践中总结出来的开发软件的成功 的技术和方法,并且研究探索更好更有效的技术和 方法,尽快消除在计算机系统早期发展阶段形成的 一些错误概念和做法。 应该开发和使用更好的软件工具。正如机械工具可 以“放大”人类的体力一样,软件工具可以“放大” 人类的智力。在软件开发的每个阶段都有许多繁琐 重复的工作需要做,在适当的软件工具辅助下,开 发人员可以把这类工作做得既快又好。如果把各个 阶段使用的软件工具有机地集合成一个整体,支持 软件开发的全过程,则称为软件工程支撑环境。
与软件开发和维护有关的许多错误认识和作法的形 成,可以归因于在计算机系统发展的早期阶段软件 开发的个体化特点。错误的认识和作法主要表现为 忽视软件需求分析的重要性,认为软件开发就是写 程序并设法使之运行,轻视软件维护等。
事实上,对用户要求没有完整准确的认识就匆忙着 手编写程序是许多软件开发工程失败的主要原因之 一。只有用户才真正了解他们自己的需要,但是许 多用户在开始时并不能准确具体地叙述他们的需要, 软件开发人员需要做大量深入细致的调查研究工作, 反复多次地和用户交流信息,才能真正全面、准确、 具体地了解用户的要求。对问题和目标的正确认识 是解决任何问题的前提和出发点,软件开发同样也 不例外。急于求成,仓促上阵,对用户要求没有正 确认识就匆忙着手编写程序,这就如同不打好地基 就盖高楼一样,最终必然垮台。事实上,越早开始 写程序,完成它所需要用的时间往往越长。
另一方面还必须认识到程序只是完整的软件产品的 一个组成部分,在上述软件生命周期的每个阶段都 要得出最终产品的一个或几个组成部分(这些组成 部分通常以文档资料的形式存在)。也就是说,一 个软件产品必须由一个完整的配置组成,软件配置 主要包括程序、文档和数据等成分。必须清除只重 视程序而忽视软件配置其余成分的糊涂观念。 作好软件定义时期的工作,是降低软件成本提高软 件质量的关键。如果软件开发人员在定义时期没有 正确全面地理解用户需求,直到测试阶段或软件交 付使用后才发现“已完成的”软件不完全符合用户 的需要,这时再修改就为时已晚了。

软件工程导论(第六版)张海藩课后习题部分答案

软件工程导论(第六版)张海藩课后习题部分答案

第一章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-8章)

软件工程导论(第六版)张海藩课后习题答案(1-8章)

第一章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 什么是软件危机 ? 是指在计算机软件的开发和维护过程中所遇到的⼀系列严重问题。

1-3 什么是软件⼯程 ? 是指导计算机软件开发和维护的⼀门⼯程学科。

1-4 简述结构化范型和⾯向对象范型的要点,并分析它们的优缺点。

⽬前使⽤得最⼴泛的软件⼯程⽅法学( 2 种):1. 传统⽅法学:也称为⽣命周期⽅法学或结构化范型。

优点:把软件⽣命周期划分成基⼲个阶段,每个阶段的任务相对独⽴,⽽且⽐较简单,便于不同⼈员分⼯协作,从⽽降低了整个软件开发过程的困难程度。

缺点:当软件规模庞⼤时,或者对软件的需求是模糊的或会承受时间⽽变化的时候,开发出的软件往往不成功;⽽且维护起来仍然很困难。

2. ⾯向对象⽅法学:优点:降低了软件产品的复杂性;提⾼了软件的可理解性;简化了软件的开发和维护⼯作;促进了软件重⽤。

1-6 什么是软件过程 ?它与软件⼯程⽅法学有何关系 ?z 软件过程:是为了获得⾼质量软件所需要完成的⼀系列任务的框架,它规定了完成各项任务的⼯作步骤 z 软件⼯程⽅法学:通常把在软件⽣命周期全过程中使⽤的⼀整套技术⽅法的集合称为⽅法学,也称范型1-7 什么是软件⽣命周期模型,试⽐较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适⽤范围。

软件⽣命周期由软件定义、软件开发和运⾏维护 3 个时期组成,每个时期⼜进⼀步划分成若⼲个阶段。

⽣命周期模型规定了把⽣命周期划分成哪些阶段及各个阶段的执⾏顺序,因此,也称为过程模型。

瀑布模型的优点: 1. 可强迫开发⼈员采⽤规范的⽅法; 2. 严格规定了每个阶段必须提交的⽂档;3. 要求每个阶段交出的所有产品都必须经过质量保证⼩组的仔细验证。

瀑布模型的缺点: 1.在软件开发初期,指明⽤户全部需求是困难的; 2.需求确定后,经过⼀段时间才得到软件最初版本; 3. 完全依赖规格说明,导致不能满⾜⽤户需求。

适⽤中⼩型项⽬。

软件工程导论[第六版]张海藩牟永敏课后习题答案解析

软件工程导论[第六版]张海藩牟永敏课后习题答案解析

第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。

它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。

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

常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。

而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。

这些都降低了开发商的信誉,引起用户不满。

(2) 用户对已完成的软件不满意的现象时有发生。

(3) 软件产品的质量往往是靠不住的。

(4) 软件常常是不可维护的。

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

文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。

(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。

软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。

(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。

(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。

二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。

(2021年整理)软件工程导论(第六版)张海藩牟永敏课后习题答案

(2021年整理)软件工程导论(第六版)张海藩牟永敏课后习题答案

(完整版)软件工程导论(第六版)张海藩牟永敏课后习题答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整版)软件工程导论(第六版)张海藩牟永敏课后习题答案)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整版)软件工程导论(第六版)张海藩牟永敏课后习题答案的全部内容。

(完整版)软件工程导论(第六版)张海藩牟永敏课后习题答案编辑整理:张嬗雒老师尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布到文库,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是我们任然希望 (完整版)软件工程导论(第六版)张海藩牟永敏课后习题答案这篇文档能够给您的工作和学习带来便利.同时我们也真诚的希望收到您的建议和反馈到下面的留言区,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请下载收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为〈(完整版)软件工程导论(第六版)张海藩牟永敏课后习题答案> 这篇文档的全部内容。

第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题.它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。

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

常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。

而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。

这些都降低了开发商的信誉,引起用户不满。

[全]张海藩《软件工程导论》第6版配套考研真题详解

[全]张海藩《软件工程导论》第6版配套考研真题详解

张海藩《软件工程导论》第6版配套考研真题详解1软件工程是采用()的概念、原理、技术方法指导计算机程序设计的工程学科。

[中国传媒大学2014研]A.工程B.系统工程C.体系结构D.结构化设计【答案】A查看答案【解析】软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,从而经济地开发出高质量的软件,并且进行有效的维护。

2随着开发小组人数的(),因交流开发进展情况和讨论遇到的问题而造成的通信开销也急剧增加。

[中国传媒大学2014研]A.增加B.降低C.稳定D.不稳定【答案】A查看答案【解析】当开发小组变得更大时,即开发小组人数增加时,每个人需要用更多时间与组内其他成员讨论问题、协调工作,因此,通信开销也随之增加。

3软件质量必须在()加以保证。

[中国传媒大学2014研]A.开发之前B.开发之后C.可行性研究过程中D.分析、设计与实现过程中【答案】D查看答案【解析】保证软件质量的措施包括基于非执行的测试、基于执行的测试、程序正确性证明,这些措施贯穿于软件开发的分析、设计和实现的过程中。

4包含风险分析的软件工程模型是()。

[中国传媒大学2014研]A.螺旋模型B.瀑布模型C.增量模型D.喷泉模型【答案】A查看答案【解析】螺旋模型的基本思想是使用原型及其他方法来尽量降低风险。

可以把它看作在每个阶段之前都增加了风险分析过程的快速原型模型,它是风险驱动的软件工程模型。

5模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的()。

[中国传媒大学2014研]A.抽象和信息隐藏B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法【答案】C查看答案【解析】开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。

模块的独立性的度量标准是模块的耦合性和内聚性,内聚性越高模块独立性越强,耦合性越低模块独立性越下,因此,在设计软件时,应尽量做到高内聚、低耦合。

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

有时间就多测一些,来不及就少测一些
例:
Windows2000有5000万行代码, 3000多个工程师,几百个小团队。 Windows2000开发人员结构 Windows2000 项目经理 开发人员 测试人员 约250人 约1700人 约3200人
把证明程序无错当作测试目的不仅是不正确的, 完全做不到的,而且对做好测试没有任何益处 ,甚至是十分有害的. 软件测试要设法使软件发生故障,暴露软件错误。 测试的“成功”与“失败”
INTEGER cost,length,price,size,width
3. 语句构造

不要为了节省空间而把多个语句写在同一行; 尽量避免复杂的条件测试; 尽量减少对“非”条件的测试;


避免大量使用循环嵌套和条件嵌套;
利用括号使逻辑表达式或算术表达式的运算次序
清晰直观。
例5:一行一条语句
/* ADD MONTHLY-SALES TO ANNUAL-TOTAL */ TOTAL = AMOUNT+TOTAL
例2:视觉组织——空格
(A<-17)ANDNOT(B<=49)ORC
(A<-17) AND NOT (B<=49) OR C
例3:视觉组织——移行
IF (…) THEN IF (…) THEN …… ELSE …… ENDIF …… ELSE …… ENDIF
例10:少用否定条件
if ( !(char < ‟0‟ || char > ‟9‟) )
ห้องสมุดไป่ตู้
if (char >= „0‟ && char <= „9‟)
4. 输入输出

对所有输入数据都进行检验; 检查输入项重要组合的合法性; 保持输入格式简单;


使用数据结束标记,不要要求用户指定数据的数目;
能够发现错误的测试是成功的测试 否则是失败的测试。
“测试的目的是说明程序正确地执行它应有
的功能” 这种说法正确吗?

例:程序Triangle,输入三个整数,表示一个三 角形的三个边长,该程序产生一个结果,指出 该三角形是等边三角形、等腰三角形还是不等 边三角形。 为说明其能正确执行它的功能,可使用“测试 用例”(3,4,5),(5,5,6),(6,6,6),
选择语言的理想标准:

为了使程序容易测试和维护以减少软件的总成本,
所选用的高级语言应该有理想的模块化机制,以
及可读性好的控制结构和数据结构;

为了便于调试和提高软件可靠性,语言特点应该
使编译程序能够尽可能多地发现程序中的错误; 为了降低软件开发和维护的成本,选用的高级语 言应该有良好的独立编译机制。
程序的效率和程序的简单程度是一致的,不要
牺牲程序的清晰性和可读性来不必要地提高效
率。
效率问题:

程序运行时间
存储器效率
输入输出的效率
(1) 程序运行时间

写程序之前先简化算术的和逻辑的表达式; 仔细研究嵌套的循环,以确定是否有语句可以从内层 往外移;

尽量避免使用多维数组;
2. 数据说明

数据说明的次序应该标准化。 当多个变量名在一个语句中说明时,应该按字 母顺序排列这些变量。

如果设计时使用了一个复杂的数据结构,则应
该用注解说明用程序设计语言实现这个数据结
构的方法和特点。
例4:数据说明标准化
INTEGER size,length,width,cost,price


把Pareto原理应用到软件测试中;
应该从“小规模”测试开始,并逐步进行 “大规模”测试; 穷举测试是不可能的; 为了达到最佳的测试效果,应该由独立的第 三方从事测试工作。

7.2.3 测试方法
黑盒测试(功能测试):


程序都能给出正确结果,是否就可认为程序是 正确的?
但是,发现错误并不是最终目的
仅就测试而言,它的目标是发现软件中的错误。
软件工程的根本目标是开发出高质量的完全符合用
户需要的软件,因此,通过测试发现错误之后还必 须诊断并改正错误,这就是调试的目的。
调试是测试阶段最困难的工作。
在对测试结果进行收集和评价的时候,软件所达到 的可靠性也开始明朗了。
第7章 实现
7.1 编码 7.2 软件测试基础 7.3 单元测试 7.4 集成测试
7.5 确认测试
7.6 白盒测试技术 7.7 黑盒测试技术 7.8 调试 7.9 软件可靠性

通常把编码和测试统称为实现。 所谓编码就是把软件设计结果翻译成用某种程序设计 语言书写的程序。 软件测试在软件生命周期中横跨两个阶段。
在开发大型软件系统的漫长过程中,面对着极其错
综复杂的问题,人的主观认识不可能完全符合客观
现实,与工程密切相关的各类人员之间的通信和配
合也不可能完美无缺,
因此,在软件生命周期的每个阶 段都不可避免地会产生差错。
我们力求在每个阶段结束之前通过严格的技术审查 ,尽可能早地发现并纠正差错;但是,经验表明审 查并不能发现所有差错,此外在编码过程中还不可
则应选用有紧缩存储器特性的编译程序,在非 常必要时可以使用汇编语言。 提高执行效率的技术通常也能提高存储器效率。 提高存储器效率的关键同样是“简单”。

(3) 输入输出的效率

如果用户为了给计算机提供输入信息或为了理解
计算机输出的信息,所需花费的脑力劳动是经济 简单清晰同样是提高人机通信效率的关键。

主要的实用标准:

系统用户的要求


可以使用的编译程序
可以得到的软件工具


工程规模
程序员的知识
软件可移植性要求
软件的应用领域
7.1.2 编码风格
1. 程序内部的文档

恰当的标识符 适当的注解 程序的视觉组织
例1:注释
/* ADD AMOUNT TO TOTAL */ TOTAL = AMOUNT+TOTAL

通常把编码和测试统称为实现。 所谓编码就是把软件设计结果翻译成用某种程序 设计语言书写的程序。
作为软件工程过程的一个阶段,编码是对设计的 进一步具体化,因此,程序的质量主要取决于软 件设计的质量。
但是,所选用的程序设计语言的特点及 编码风格也将对程序的可靠性、可读性、 可测试性和可维护性产生深远的影响。
明确提示交互式输入的请求,详细说明可用的选择或 边界数值; 当程序设计语言对格式有严格要求时,应保持输入格 式一致;


设计良好的输出报表;
给所有输出数据加标志。
5. 效率

效率主要指处理机时间和存储器容量两个方面。
效率是性能要求,因此应该在需求分析阶段确
定效率方面的要求。

效率是靠好设计来提高的。
例9:避免使用空ELSE和IF…THEN IF…语句
if (char>=‟a‟) if (char<=‟z‟) cout << “This is a letter.”; else cout << “This is not a letter.”;
if (char>=‟a‟ && char<=‟z‟) cout << “This is a letter.”; else cout << “This is not a letter.”;
尽量避免使用指针和复杂的表; 使用执行时间短的算术运算; 不要混合使用不同的数据类型; 尽量使用整数运算和布尔表达式。 在效率是决定性因素的应用领域,尽量使用有良好优 化特性的编译程序,以自动生成高效目标代码。
(2) 存储器效率

使用能保持功能域的结构化控制结构,是提高
效率的好方法。

在微处理机中如果要求使用最少的存储单元,
FOR I:=1 TO N-1 DO BEGIN T:=I; FOR J:=I+1 TO N DO
IF A[J]<A[T] THEN T:=J; IF T<>I
THEN BEGIN WORK:=A[T]; A[T]:=A[I]; A[I]:=WORK; END END;
FOR I:=1 TO N-1 DO BEGIN T:=I; FOR J:=I+1 TO N DO IF A[J]<A[T] THEN T:=J; IF T<>I THEN BEGIN WORK:=A[T]; A[T]:=A[I]; A[I]:=WORK; END END;
避免地会引入新的错误。
如果在软件投入生产性运行之前,没有发现并纠正
软件中的大部分差错,则这些差错迟早会在生产过
程中暴露出来。
那时不仅改正这些错误的代价更高, 而且往往会造成很恶劣的后果。
测试的目的就是在软件投入生产性运行之前,尽可 能多地发现软件中的错误。
目前软件测试仍然是保证软件质量的关键步骤,它是 对软件规格说明、设计和编码的最后复审。
例8:避免不必要的转移
IF (X<Y) GOTO 30 IF (Y<Z) GOTO 50 SMALL=Z GOTO 70 IF (X<Z) GOTO 60 SMALL=Z GOTO 70 SMALL=Y GOTO 70 SMALL=X CONTINUE
30
50 60 70
SMALL=X; IF (Y<SMALL) SMALL=Y; IF (Z<SMALL) SMALL=Z;


通常在编写出每个模块之后就对它做单元测试。
在这个阶段结束之后,对软件系统还应该进行各种综合测试, 通常由专门的测试人员承担这项工作。
相关文档
最新文档