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

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

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

1年。软件开发的本质简介

A:软件开发的本质是实现问题空间和处理逻辑概念到解决空间和处理逻辑概念的映射P19 2。简要描述实现软件开发的基本方法

答:实现软件开发的基本方法是系统建模所谓的系统建模是指利用知识,通过抽象,给出系统的结构——系统模型P19

3。简要描述什么是模型以及软件开发中涉及的模型

答:模型是抽象的这种抽象是在由意图决定的抽象的角度和层次上对物理系统的描述,描述组件和组件之间的特定语义关系,还包括对系统边界的描述

软件开发中涉及的模型可以分为两类,一类是概念模型,它描述了什么是系统;另一种叫做软件模型,它描述了实现概念模型的软件解决方案。4.简要描述软件开发中涉及的两种主要技术

A:软件开发涉及的两大类技术是:一是解决软件开发逻辑,二是解决软件开发手段5.简述需求的基本性质和需求规定性

a:要求的基本性质:1)必要。用户需要这个要求2)不含糊,需求只能用一种方式来解释。3)可测量,这一要求可以测试4)可追溯性,这个需求可以从一个开发阶段追溯到另一个阶段5)可测量,需求是可测量的需求规格说明的基本性质:1)重要性和稳定性程度:根据需求的重要性和稳定性,对需求进行分级2)可修改:单个需求可以很容易地修改,而不会对其他需求产生太大影响。3)完成:没有遗漏任何要求4)一致:没有相互排斥的要求

6,软件需求分类简述

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

功能需求1功能需求2功能需求3 7,说明了功能需求和非功能需求之间的基本关系

A:非功能性需求可以应用于一个或多个功能性需求,例如,非功能性需求可以应用于一个或多个功能性需求

非功能性需求1非功能性需求2

,其中非功能性需求1作用于功能性需求1和功能性需求3,等等。;非功能性需求2作用于功能性需求2,等等。P24 8,什么是一些常见的初始需求发现技术?

A:有5种常见的需求发现技术:自悟、对话、观察、小组会议和提炼P26 9。简述需求规约的三种基本形式

(1)非正式需求规范非形式需求规范意味着用自然语言表达需求规范,就像用自然语言写文章一样(2)半形式化需求规范半形式需求规范是指需求规范以半形式符号系统(包括术语表、标准化表达格式等)来表达。)(3)形式需求规格说明形式化需求规格说明是一个基于结构良好的数学概念来编译需求规格说明的符号系统,通常由解释性注释来支持P29 10。简要描述软件需求规范的内容和功能

A:软件需求规范的内容包括:介绍、概述、具体需求、附录和索引。P28

需求规格说明的功能可以概括如下:1)需求规格说明是软件开发组织和用户之间事实上的技术契约,是产品功能及其环境的体现2)对于项目的大部分剩余部分,需求规范是一个管理控制点3)需求规格说明是产品/系统设计的正式和受控的起点。4)需求规格是创建产品验收测试计划和用户指南的基础P311。简要描述需求规格说明在项目开发中的基本功能

a:需求规格说明的功能可以概括如下:1)需求规格说明是软件开发组织和用户之间事实上的技术合同,是产品功能及其环境的体现2)对于项目的大部分剩余部分,需求规范是一个管理控制点3)需求规格说明是产品/系统设计的正式和受控的起点。4)需求规格是创建产品验收测试计划和用户指南的基础P31 12。简要描述需求规范和项目需求之间的区别

A:需求规格说明和项目需求是两个不同的概念需求规范是软件开发组织和用户之间事实上的技术合同,它关注产品需求并回答“交付给客户的产品/系统是什么”;项目需求是客户和开发人员之间对技术合同-产品/系统需求的理解,应记录在工作说明书或其他项目文件中,即关注项目工作和管理并回答“开发团队应该做什么”P30

13,什么是模块耦合?简要描述模块耦合的类型

答:耦合是不同模块之间相互依赖的程序的度量

内容耦合:当一个模块直接修改或操作另一个模块的数据,或者一个模块在没有正常输入的情况下转移到另一个模块;

公共耦合:两个或多个模块共同引用一个全局数据项;

控制耦合的一个模块通过传输向另一个模块传输控制消息,接收信号的模块根据信号值执行适当的动作;标签耦合:如果模块A通过接口将一个公共参数传递给两个模块B和C;数据耦合:模块通过参数传递数据14.什么是模块内聚力?简要描述模块衔接的类型

A:模块内组件之间相关程度的度量偶然内聚:模块的组件之间基本上没有关系;逻辑衔接:几个逻辑上相关的功能被放入同一个模块;时间内聚性:由一个模块完成的功能必须同时执行,但是由于时间因素,这些功能只能链接在一起;过程内聚性:模块中的处理组件是相关的,必须以特定的顺序执行。通信内聚性:模块的所有组件在相同的数据集上操作或生成相同的数据集;

序列内聚性:一个模块的每个组件都与同一个功能紧密相关,一个组件的输出作为另一个组件的输入;

功能内聚性:最理想的内聚性,模块的所有组件都是完成单一功能的基础具有内聚功能的模块是完成其功能所必需的。

15,模块的控制域和范围是什么?举例说明

a:控制域:模块本身和所有直接或间接从属于它的模块范围:受本模块中决策影响的所有模块的影响

16结构化方法给出了什么基本概念来表达系统功能模型?他们说了什么?它的基本功能是什么?使用时应该注意什么?

A:给出的基本概念:数据流、处理、数据存储、数据源和数据池表示:(注:表示方法均为图形,请根据文字提示绘制)数据流表示方法:向右箭头;加工的表示方法:椭圆;数据存储表示法:两条平行线;数据

源表示:矩形;数据源和数据池的表示:两个平行的矩形角色:数据流:用于表示分析中使用的信号,用于表示“对象”处理:用于表示分析中使用的信号,用于表示“处理”数据存储:用于表示分析中使用的信号,以表示“结构化对象”数据源和数据池:指示系统的环境。它们和相关的数据流可以用来定义系统的边界,并表达系统/产品的“边界”信息。用结构化方法建立的

17系统功能模型的组成部分是什么?每个部分的基本功能是什么?答:组件:数据流、处理、数据存储、数据源和数据池基本功能:(与上面第一项中的“功能”相同)18解释结构符号“+”、“|”和“{}”的含义,并举例说明

A:序列结构是指数据A依次由数据B和数据C组成,并标记为“+”示例:学生成绩=姓名+姓名+性别+学生人数+科目+成绩选择结构由数据A或数据B0或数据C0定义,即数据B不能同时为B0 C0,并标记为“|”示例:性别=男性|女性重复结构是指数据A由多个重复数据B 组成,并标记为“{}”示例:学生成绩表= {学生成绩}

19系统功能模型和特定系统的系统模型之间的主要区别是什么?答:区别:系统功能模型分为四个部分:数据流、处理、数据存储、数据源和数据池系统模型分为两种类型:一种叫做概念模型,描述系统是什么;另一种类型的系统称为软件模型,它描述了实现概念模型的软件解决方案。简要描述结构化方法总体设计的任务和目标任务:在需求分析的基础上定义满足需求所需的结构目的:建立系统的模块结构简要描述结构化方法详细设计的任务和目标

a:任务:具体描述模块结构图中的每个模块,即给出实现模块功能的实现机制,包括一组例程和数据结构,从而准确定义满足要求的指定结构目的:将总体设计阶段产生的系统的高层结构映射到澳大利亚大学的低层结构,这也是系统的最终结构。22简要描述转换设计和事务设计之间的区别

A:差异:转换设计的目标是将转换数据流图映射到模块结构图,而事务设计的目标是将事务数据流图映射到模块结构图

23启发式规则基本原理简介

A:启发式规则“基于高内聚力和低耦合的原则,采用一些经验启发式规则来细化初始模块结构图,以形成最终的模块结构图。”启发式规则包括:1)改进软件结构和模块独立性2)争取适度的模块规模3)争取适度的深度、宽度、扇出和扇入4)尽力使模块的范围在其控制范围内5)尽最大努力降低模块接口的复杂性6)争取可预测的模块功能

24简要描述了将系统的DFD转换为MSD的基本思想

A:基于DFD的分类以及自顶向下和功能分解的设计原则,结构化设计方法定义了两种不同的“映射”,即转换设计和事务设计。基本步骤如下:首先,将系统的DFD图转化为初始模块结构图,然后基于“高内聚、低耦合”的软件设计原则,通过模块化将初始模块结构图转化为最终模块结构图(MSD)进行详细设计

25为什么结构分析和结构设计之间存在“差距”?

答:从软件方法论研究的角度来看,结构化方法论仍然存在一些问题。最重要的问题是它没有“摆脱”冯·诺依曼建筑的影响。捕获的“功

能(过程)”和“数据”正是客观错误的可变性。这样建立的系统结构与客观实际系统的结构很不一致。

26。举例说明了结构化方法给出的控制复杂性机制。

A: 1上层数据流可以打包。案例研究的数据流查询要求是以*作为特殊标记的打包数据。上层和下层数据流之间的对应关系由数据字典描述。为了便于理解,图片中图形元素的数量应尽可能控制在7±2以内。3.检查与每个处理相关的输入/输出数据流是否过多,并找到一种划分数据流的方法,以降低处理接口的复杂性4分析数据内容,以确定是否所有的输入信息都用于生成输出信息,以及由过程生成的所有相应信息是否都可以从进入过程的信息中导出

27。试析结构化方法在构建系统模型中的问题

答:主要问题是系统结构没有摆脱冯·诺依曼系统结构的影响。捕获的功能过程和数据正是客观事物的可变性。这样建立的系统结构很难与客观实际系统的结构保持一致。从某种意义上说,正是这些问题促使了面向对象方法的出现和发展。

28。说明转换设计的步骤

A:第一步是准备设计、审查和完善系统模型。第二步是确定输入、转换和输出之间的边界第三步,第一级分解,系统模块结构图顶层和第一级设计第四步,第二级分解,自上而下,逐步细化29.说明交易设计的步骤

A:第一步是准备设计、审查和完善系统模型。第二步是确定交易中心第三步,第一级分解,是系统模块结构图的顶层和第一级设计,基

于数据流图,按照自上而下逐渐细化的原则进行。第二级分解是从上到下逐步细化的30.软件开发方法的基本组成部分是什么?

A:包括结构化方法、结构化设计方法、结构化编程方法31。UML 给表达客观事物的基本术语是什么?为了支持抽象分析和设计,UML给出了8个基本术语,即类、接口、协作、用例、活动类、组件、产品、节点,并给出了这些基本术语的一些变体

32。为了表达客观事物之间的关系,UML给出了哪些基本术语?这些术语之间有什么关系?

a:关联、一般化、细化和依赖,及其一些变体33.物体的构成和表现是什么?并解释类

是一组具有相同属性、操作、关系和语义的对象的描述对象是类34的实例。类图的组成部分是什么?类图是可视化表达系统声明性结构模型的工具,通常是接口、关联、概括和依赖。状态图的组成部分是什么?

a:指定状态时,主要涉及

(1)名称(2)。进入/退出效应。(3)。做活动。(4)。延迟事件。36.序列图的组成部分是什么?

A:序列图是一个交互图,它由一组对象和按照时间顺序组织的对象之间的关系组成。它还提供在这些对象

37之间发送的消息。如何描述对象之间的关联语义?

a:关联是目录之间的结构关系,是一组相同结构和链接的描述链是对象之间有特定语义关系的抽象。实现后的链接通常被称为对象之间

的链接。38.用例之间有什么样的关系?

a:一个用例图通常包含6个模型元素,它们是主题、用例、参与者、关联、概括、依赖39。在什么情况下应该建立状态图?

a:状态图可用于创建系统(或系统组件)的行为生命周期模型,表达关系旋转(或系统组件)的动态结构,并给出关于系统(或系统组件)的哪些阶段存在、每个阶段可执行的活动以及呈现给外部世界的特征的信息。在类的描述中同时引入“操作”和“方法”的目的是什么?

A:表示建模包之间的关系41。为什么使用包?如何划分包

回答:包的最初来源是用例,包划分的最初来源是用例模型。用例包可以通过根据功能对用例进行分组来获得用例包可以自然地对应于分析阶段的分析包,并且在分析阶段也可以找到其他分析包,例如相对低级的服务(例如,用于表示持久性机制的包)

分析包通常对应于设计阶段的应用子系统。此外,还有其他设计子系统,如Corba服务子系统,它负责封装通信机制

42。从什么角度可以用UML来描述系统的行为?为什么?

静态和动态

43。在描述客观事物时,从面向对象和结构化方法中提取信息的不同角度是什么?他们各自的角度对正在构建的系统模型有什么影响?

答:结构化方法基于观察客观世界的基本观点,即所有信息系统都是由信息流组成的,每个信息流都有自己的起点——数据源、自己的目的地——数据池,以及驱动信息流的处理。所谓的信息处理主要表现

在信息流上结构化方法作为一种特定的软件开发方法,是系统分析和软件设计的思想工具。

面向对象方法认为世界是由对象组成的,对象有自己的属性和活动规律,对象之间的相互依赖和相互作用构成世界的各种系统。因此,我们应该充分利用人类认识客观世界和解决实际问题的思维方式和方法。睡眠效能目标法是根据目标之间的关系建立系统模型的系统方法。44.比较面向对象和结构化方法引入的控制信息组织复杂性的机制?

A:结构化方法主要体现在三个方面首先,从上到下,逐步完善:程序作为一个渐进的进化过程把一个系统和程序想象成一次一层。例如,户籍管理系统可以分为几个子系统:户籍迁入和迁出、人员迁入和迁出、户籍注销、人员注销等。,每个子系统分为接收用户信息、实现处理、提供返回信息等第二,模块化:将几个系统分成几个模块,每个模块实现特定的功能,最后整个系统由这些模块组成信息通过接口在模块之间传输。模块最重要的特征是独立性。上层和下层之间也有关系。上层模块调用下层模块实现一些功能。第三,句子结构:顺序结构、分支结构和循环结构是常用的句子结构

面向对象的方法主要包括:第一,客观世界中的一切都是对象,对象之间有一定的关系,复杂的对象是由简单的对象组成的第二,具有相同属性和操作的对象属于一个类,并且该对象是该类的实例第三,类之间可以有层次,也就是说,类可以有子类,子类继承父类的所有属性和操作,子类有自己的属性和操作第四,类具有封装性,将属性和

一些操作隐藏在类中。只有公共活动对外可见。对象只能通过消息请求其他对象的操作或它们自己的操作五、强调充分利用人们在日常逻辑思维中经常使用的思维方法和原则例如:抽象、分类、继承、聚合、封装、关联等例如

45类和对象之间的关系?

A:类是一组具有相同书籍、操作、关系和语义的对象的描述。对象是类的实例一个类可以有多个属性或者没有属性一个类的对象应该为它所属的类的每个属性都有一个特定的值46.关联与链的关系,试说明

A:关联是一种结构关系的范畴,是对一个具有相同结构和相同链的群体的描述。链是对象之间特定语义关系的抽象。实现后,该链通常被称为对象之间的连接。关联由连接两个类别的线段表示,可以命名为47。物体的状态是什么,如何描述物体的状态?试着举例说明A:一个状态是一个类别实例存在的条件或情况,在此期间电源满足这个条件,执行一个活动或等待一个消息;在统一建模语言中,一个状态通常被表示为一个带有圆角的矩形,它被分为一个名称列和一个内部转换列,主要包括:名称,它是一个将状态表示为状态名的文本字符串;进入/退出效果:为了有效地提取对象的状态并控制状态提取的复杂性,UML在指定状态时引入了进入/退出效果。内部状态转换是指不会导致状态改变的内部转换。Do动作或活动是指处于已执行但未完成状态的动作或活动,当动作或活动完成时,可能会生成完成事件,从而导致状态的转换。48.什么是组合状态?举例给出的

答案:包含子状态的状态称为组合状态。组合状态包括两种类型的字状态机,即顺序子状态和并发子状态机49。什么是非正交子状态机,以及调入和调出

的简要描述答案:非正交子状态机是顺序子状态机

50。什么是正交子状态机,另外,简单描述正交子状态机

的转入和转出。答:正交子状态是并发子状态机

51。什么是事件?信号事件和呼叫事件之间的比较

:事件是指在特定时间和空间内有意义的协议信号。事件指的是消息的类别和消息类型。调用事件指的是接收操作请求的对象。信号事件是异步事件。信号通常由状态处理器处理。呼叫事件通常是同步事件,即在操作执行期间,发送方和接收方都处于收敛点。发送者的控制流程被暂停,直到操作的执行完成52。序列图中的控制运算符是什么?为了控制交互行为描述的复杂性,更清晰地表达序列图中的复杂控制,UML给出了4种最常用的控制算子。例如,选择一个执行操作符:控制操作符被指定为“Opr”,由两部分组成。条件执行运算符被指定为“alt”。控制体被指定为通过水平线的“回路”。每个部分代表一个条件分支。每个分支都有一个监控条件。并发执行运算符被指定为“par”。控制操作员的身体被指定为“PAR”。控制操作符通过水平线分成多个部分。迭代执行操作符被指定为“LOOP”。一个监控条件出现在控制体中生命线的顶部53。序列图是什么意思试着举个例子

A:为了控制交互行为描述的复杂性,更清楚地表达序列图中的复杂控制,给出了每个控制算子、选择算子、条件算子、并发算子和迭代

算子

54。进化模型与“RUP增量和迭代开发”

A的关系:RUP迭代和增量开发是进化模型的一种变体,它规定了“大量”的迭代——4个阶段,并规定了每次迭代的目标初始阶段:获得独立于特定腹部和平台的系统架构大纲,从而确定产品功能范围;准备实际的商业案例,从商业角度指出项目的价值,降低项目的主要错误风险;本质阶段:通过捕获和描述系统的大部分需求,建立系统架构基线的第一个版本,主要包括使用模型和分析模型,以减少二次错误风险。在此阶段,可以估算成本和进度,并详细规划施工阶段。构建阶段:通过演进,形成最终的系统架构基线,并开发完整的系统,以确保产品能够交付给客户,即具有初始运行能力;移交阶段:确保向用户群发布真实的产品在此期间,用户将接受如何使用软件的培训。

55。RUP和UML

A之间的关系:RUP和UML是一对“姐妹”,它们构成了软件开发的特定方法其中,UML作为一种可视化建模语言,给出了表达事物之间关系的基本术语,并给出了各种模型的表达工具。RUP用这些术语定义了需求获取层、系统分析层、设计层和实现层,并给出了实现各层模型之间映射的基本活动和相关指导。什么是特征?例如,你如何描述它

A:从客户、用户、规划者和开发者的想法和愿望中搜索特征,以形成特征表该功能是一个新的项目,其简要说明“根据不同科目计算平

均分数”来计算平均分数:根据所学的不同科目计算每个学生期末考试的平均分数,给出分数段并描述其状态(如建议、批准、合并和验证等)。),实施成本和风险,重要程度和对其他功能的影响等。这些特性可以作为需求使用并转换成其他产品。58.需求获取模型的基本组件

A:使用诸如用例、参与者和依赖关系的UML术语来抽象客观的实际问题,并形成系统需求获取模型59。用于构建系统需求获取模型的活动和任务,以及每个活动的输入和输出

A:查找和描述参与者和用例,输入:业务模型或领域模型,补充需求和特性表;输出:使用模式[概述),术语表优先使用:输入:使用模式[概述),补充要求,术语表;输出:架构描述[用例模型视角];

基本用法:输入:用法模型[概述],补充要求,术语表;输出:用例[精化]构建人机界面原型:输入:用例[本质],用例模型[概述],补充需求,术语表;输出:人机界面原理;

用例模型结构:输入:用例[本质],用例模型[概述],补充需求,术语表;输出:使用模型[细化]60.你如何描述系统的参与者和用法?例如,回答:参与者:发现参与者和描述参与者:1)以前已经有一个业务用例模型,可以根据业务模型直接发现一些候选参与者;2)没有业务用例模型。即使存在领域模型,系统分析师和客户也需要一起识别系统参与者。用法是一个功能块,系统向其参与者提供结果(值),表示参与者使用系统的方式,因此用法可以用来指定系统可以执行的动作序列,并与参与者进行交互,包括一些可选的动作序列,并且用法也有

其自己的属性61.需求分析层和相关概念

a:基于系统使用模型,从分析模型的角度创建系统分析模型和架构描述。系统分析模型是系统的概念模型,它解决了系统使用模型中存在的模糊和不一致问题,并以系统的形式准确地表达了用户的需求62。需求分析模型

A的基本组成:RUP分析类似于结构化分析。它的目标之一是在特定的抽象层上建立系统分析模型出于这个原因,RUP首先给出了三个术语:分析包、分析类和用例精化,它们用来表达需求中“大粒度”的概念。开发人员可以使用这些术语来指定系统

软件工程课后作业

第1次作业 路松峰20140062 2018-07-29 10:32:40

软件产品的开发基本上是线性顺序进行的。 2、什么是模型? 模型是认识客观事物时,用文字、符号或者图表等进行简化问题描述的一种方式。 二、判断题 1、在软件开发中采用原型系统策略的主要困难是成本问题。 正确 2、软件过程改进也是软件工程的范畴。 正确 三、选择题 1、包含风险分析的软件工程模型是( D )。 A.喷泉模型 B.瀑布模型 C.增量模型 D.螺旋模型 2、软件过程是(C )。 A.特定的开发模型 B. —种软件求解的计算逻辑 C.软件开发活动的集合 D.软件生命周期模型 3、CMM模型将软件过程的成熟度分为5个等级。在(B )使用定量分析来不断地改进和管理软件过程。 A.管理级 B.优化级 C.定义级 D.可重复级 第3次作业 路松峰_20140062 2018-07-29 10:34:34 一、简答题 1、需求分析有哪三种方法? 面向功能分析、面向数据分析、面向对象分析 2、什么是面向数据结构方法? 面向数据结构方法是一类侧重从数据结构方面去分析和表达软件需求,进行软件设计的开发方法。该方法从数据结构入手,分析信息结构,并用数据结构图来表示,再在此基础上进行需求分析,进而导岀软件的结构。

二、判断题 1、需求评审人员主要由开发人员组成,一般不包括用户。 错误 2、非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的要求。正确 三、选择题 1、增量模型本质上是一种( C )。 A.线性顺序模型 B.整体开发模型 C.非整体开发模型 D.螺旋模型 2、需求工程的主要目的是( C )。 A.系统开发的具体方案 B.进一步确定用户的需求 C.解决系统是“做什么的问题” D.解决系统是“如何做的问题” 3、在E-R模型中,包含以下基本成分(D )。 A.数据、对象、实体 B.控制、关系、对象 C.实体、关系、控制 D.实体、属性、关系 第4次作业 路松峰_20140062 2018-07-29 10:35:04 一、简答题 1、面向对象分析模型的五个层次是什么? 五个层次:类与对象层,属性层,服务层,结构层,主题层 2、对象的五个特点是什么?

软件工程概论课后答案解析

第1章软件与软件工程的概念 1、1 举出您所知道的应用软件的例子。 办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。 1、2 认为“软件就就是程序,软件开发就就是编程序。”这种观点就是否正确?为什么? 认为“软件就就是程序,软件开发就就是编程序。”这种观点就是错误的。 首先,软件就是计算机系统中与硬件相互依存的另一部分,它就是包括程序,数据及其相关文档的完整集合,程序只就是软件的组成部分之一;其次,在软件开发中,编程只就是软件开发过程的一个阶段。 1、3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么? 可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。 1、4 什么就是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:软件危机就是指在计算机软件的开发与维护过程中所遇到的一系列严重问题。 典型表现: (1)对软件开发成本与进度的估计常常很不准确。 (2)用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。 (4)软件常常就是不可维护的。 (5)软件通常没有适当的文档资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅 速普及深入的趋势。 产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验与有关软件开发数据的积累,使得开发工作计划很难制定。 (2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。 (3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 (4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技 术问题,更重要的就是必须有科学严格的管理。 (5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。

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

1.简述软件开发的本质。 答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。P19 2.简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。P19 3.简述何谓模型以及软件开发中所涉及的模型。 答:模型是一个抽象。该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。 软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。 4.简述软件开发所涉及的两大类技术。 答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。 5、简述需求与需求规约的基本性质。 答:需求的基本性质:1) 必要的,该需求是用户所要求的。2)无歧义的,该需求只能用一种方式解释。3)可测的,该需求是可进行测试的。4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。5)可测量的,该需求是可测量的。 需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。2)可修改的:在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。 3)完整的:没有被遗漏的需求。4)一致的:不存在互斥的需求。 6、简述软件需求的分类。

答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可 7、举例说明功能需求和非功能需求之间的基本关系。 答: 非功能需求可作用于一个或多个功能需求,例如 非功能需求可作用于一个或多个功能需求 其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。P24 8、有哪几种常用的初始需求发现技术 答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。P26 9、简述需求规约的3种基本形式。 (1) 非形式化的需求规约。非形式化的需求规约即以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。(2) 半形式化的需求规约。半形式化的需求规约即以半形式化符号体系(包括术语表、标准化的表达格式等)来表达需求规约。(3)形式化的需求规约。形式化的需求规约即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性注释的支持。 P29 10、简述软件需求规约的内容和作用。 答:软件需求规约的内容有:引言、总体描述、特定需求、附录、索引。P28 需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。P31 11、简述需求规约在项目开发中的基本作用。 答:需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求

软件工程部分课后练习题答案

第一章 1.计算机系统是由计算机硬件系统和软件系统这两个密不可分的部分组成的。 2.计算机软件系统通过运行程序来实现各种不同应用,包括用户为自己的特定目的编写的程序、检查和诊断机器系统的程序、支持用户应用程序运行的系统程序、管理和控制机器系统资源的程序等。 3.在软件工程学中,软件开发技术包括软件开发方法学、软件工具和软件工程环境。 4.在软件工程层次结构中,包括工具层、方法层、过程、技术层和质量保证层。 5.在面向对象概念中,消息传递是其与外部世界相互关联的唯一途径。 第三章 1.软件需求分析,可以把软件功能和性能的总体概念描述为具体的软件需求规格说明,进而建立软件开发的基础。 2.软件需求工作基本上包括收集用户、市场等方面对项目的需要,经过分析建立解题模型,细化模型,抽取需求。 3.结构化分析方法的基本步骤是采用由顶向下对系统进行功能分解,画出分层数据流图;由后向前定义系统的数据和加工,绘制数据词典和加工说明;最终写出软件需求和规格说明书。 4.面向对象分析方法总是从理解系统的“使用实例”开始,基本步骤是:定义系统的用例,在领域分析的基础上建立问题域的类(对象模型),然后开始建立对象——关系和对象——行为模型。 5.需求分析评审过程由以下5个步骤组成:规划、准备、召开审查大会、修改缺陷、重审。 第四章 1.与软件需求分析一样,软件设计也有两种主要设计方法:以结构化设计为基础的结构化软件设计和面向对象方法指导的面向对象软件设计。 2.传统的软件设计任务通常分两个阶段完成。第一个阶段是概要设计,包括体系结构设计

和接口设计,并编写概要设计文档;第二阶段是详细设计,其任务是确定各个软件的数据结构和操作,产生描述各软件组件的详细设计文档。 3.结构化的软件设计方法是一种面向数据流的设计方法,在面向数据流的方法中,数据流是考虑一切问题的出发点。 4.在数据流图中所代表的结构化设计模型中,所有系统均可纳入两种典型的形式,因此系统结构图也有两种类型:变换型系统结构图,事务型系统结构图。 5.Jackson表示法包括图形描述(Jackson图)和文本描述(Jackson伪代码)两种形式。 第五章 1.与结构化设计一样,面向对象设计也是将分析阶段所建立的分析模型转变为软件设计模型,应用数据设计(对象属性设计)、接口设计(消息模型开发)以及过程设计(子系统级设计)。 2.当两个子系统相互通信时,可以建立客户机/服务器连接或端对端连接。 3.系统设计不仅包括主要的业务需求子系统设计,还包括用户界面子系统设计、任务管理子系统设计、数据管理子系统设计。 4.对象设计强调从问题域的概念转换成计算机领域的概念,通过对象的描述、算法和数据结构设计、程序构件和接口,实现相关的类、关联、属性和操作。 5.在面向对象设计中系统设计的主要目标是表示软件体系结构。对象设计着重于对象及其交互的描述 第八章 1.软件程序测试的目的是发现程序中的错误,其主要任务是通过在计算机上执行程序,暴露

软件工程课后作业

路松峰_ 2018-07-29 10:32:40 一、简答题 1.什么是软件工程 软件工程是关于软件生产的各个方面的工程学科。 二、判断题 1、软件危机的主要表现是软件需求增加,软件价格上升。 / 正确 2、软件就是程序,编写软件就是编写程序。 错误 三、选择题 1、用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为( A )工具。 A. CASE C. CAM D. CAD 2、在下列选项中,( C )不是软件的特征。 A.系统性与复制性 B.可靠性与一致性 C.有形性与可控性 D.抽象性与智能性 ) 3、软件工程的三要素是( B ) A.技术、方法和工具 B.方法、工具和过程 C. 方法、对象和类 D.过程、模型和方法

第2次作业 路松峰_ 2018-07-29 10:33:32 一、简答题 … 1、快速原型模型的主要优点是什么 软件产品的开发基本上是线性顺序进行的。 2、什么是模型 模型是认识客观事物时,用文字、符号或者图表等进行简化问题描述的一种方式。 二、判断题 1、在软件开发中采用原型系统策略的主要困难是成本问题。 正确 2、软件过程改进也是软件工程的范畴。 · 正确 三、选择题 1、包含风险分析的软件工程模型是( D )。 A.喷泉模型 B.瀑布模型 C.增量模型 D.螺旋模型 2、软件过程是( C )。 A.特定的开发模型 B.一种软件求解的计算逻辑 C.软件开发活动的集合 D.软件生命周期模型 3、CMM模型将软件过程的成熟度分为5个等级。在(B )使用定量分析来不断地改进和管理软件过程。

… 第3次作业 路松峰_ 2018-07-29 10:34:34 一、简答题 1、需求分析有哪三种方法 面向功能分析、面向数据分析、面向对象分析 ) 2、什么是面向数据结构方法 面向数据结构方法是一类侧重从数据结构方面去分析和表达软件需求,进行软件设计的开发方法。该方法从数据结构入手,分析信息结构,并用数据结构图来表示,再在此基础上进行需求分析,进而导出软件的结构。 二、判断题 1、需求评审人员主要由开发人员组成,一般不包括用户。 错误 2、非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的要求。正确 三、选择题 ;

软件工程导论课后习题答案

第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。(4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 三、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机? 1993年IEEE的定义:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。 软件工程的本质特征: (1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经 常变化的,开发过程中必须考虑软件将来可能的变化 (4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户 (7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序) (2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具 四、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 五、1-5 根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=×(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为:P2=×(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。

软件工程课后题答案

附加题: 1、对下列子程序进行调试: procedure example(y,z: real; var x: real) begin if (y>1) and (z=0) then x:=x/y; if (y=2) or (x=l) then x:=x+l; end. 该子程序接受x, y, z的值,并将计算结果x的值返回给调用程序。答题要求: (1)画出流程图。 (2)用白盒法设计测试用例,并写出它所满足的是何种覆盖标准、预期结果以及路径。 答:(1)流程图 (2)用白盒法中条件组合覆盖设计测试用例: ①y=2, z=0, x=4; ②y=2, z=1, x=1; ③y=1, z=0, x=2; ④y=1, z=1, x=1. 2、某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。现要求用黑盒测试法中的边界值法写出测试用例。 答: 输入条件测试用例说明测试数据 报表日期的1个数字字符 5 类型及长度5个数字字符20035 7个数字字符2003005 有1个非数字字符2003.5 全部是非数字字符MAY--- 6个数字字符200305 日期范围在有效范围200301 边界上选取200812 数据200300

200813 月份范围月份为1月200301 月份为12月200312 月份<1 200300 月份>12 200313 3、对以下程序进行测试: PROCEDURE EX(A,B:REAL;VAR X:REAL); BEGIN IF(A=3)OR(B> 1)THEN X:=A×B IF(A>2)AND(B=0)THEN X:=A-3 END 先画出程序流程图。再按不同逻辑覆盖法设计一种(写出名称)测试数据。 答: 语句覆盖A=3 B=0 4、程序功能说明书指出,某程序的输入条件为:每个学生可以选修1至3门课程,试用黑盒法设计测试用例。 (1)按等价分类法设计测试用例(要求列出设计过程) (2)按边缘值分析法设计测试用例。 答: 1)合理等价类 选修1门 选修2门 选修3门 不合理等价类 没选课 选3门以上 测试用例 选修=2

软件工程课后习题(含答案)

第一章练习题 一、填空题 1、软件工程三要素是:方法、工具、过程。 2、软件开发方法是指软件开发过程中所应遵循的方法和步骤。 二、名词(术语)解释: 1、可靠性---是指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软件质量的一个重要目标。 2、可理解性---指系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。 三、问答题 1、面向对象方法的优点是什么? 答:(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。 (2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。 2、可视化开发方法的优点有哪些? 答:(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。 (2)软件开发简单,易学、易上手。 (3)专业或非专业人员都能参与软件开发活动。 第二章练习题 一、填空题: 1、软件工程过程是:为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工 程活动。 2、一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程经历的生存过程称为软件生存期或叫生命期。 3、软件生命周期的阶段划分为3个时期是:定义时期、开发时期、维护时期。 4、软件工程标准的5个层次是:国际标准、国家标准、行业标准、企业规范、项目规范。 二、简答题: 1、瀑布模型的优点有哪些? 答:1、强迫开发人员采用规范的技术方法; 2、严格地规定了每个阶段必须提交的文档; 3、每个阶段结束前必须正式进行严格的技术审查和管理复审。 2、瀑布模型的缺点是什么? 答:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。 2、在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。 3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很 难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。

软件工程导论课后题

1-5、根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=4080e0.28(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降:P1=0.3×0.72Y-1974(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为:P2=0.048×0.72Y-1974(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。 基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算: (1) 在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少? (2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。(3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。

2-4 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请分层次地画出描述本系统功能的数据流图。 医院对患者8监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。 从问题陈述可知,本系统数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。 从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。 系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。 此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。 为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存储。

软件工程习题答案参考

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

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

软件工程概述习题及答案

第一章软件工程概述 一. 填空题 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.系统软件 系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。例如:编译软件、操作系统。 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.1举出至少5个例子来说明“意外效应法则”在计算机软件方面的应用。 答:典型的例子包括使用“数字汽车仪表板”的软件,赋予高科技,高品质的图像的软件;如广泛的消费类电子产品的软件;个人电脑,工业仪器仪表和机器的软件。软件分化出的在电子商务方面的应用。 1.2举例说明软件对社会的影响(包括正面影响和负面影响)。 答:这是一个很好的课堂讨论问题(如果时间允许),而不是专注于老生常谈的(但很重要)隐私问题,生活质量等问题。您可能想要讨论关于”技术恐惧“方面的问题,软件也许会使它恶化但也可能减少”技术恐惧“。另一个有趣的方面是使用诺依曼的“风险”列在SEN中做重点讨论。你也可以考虑基于软件的“现金”经济,新模式的互动娱乐,虚拟现实,电子商务等方面来思考软件对社会的影响。 1.3针对1.1节提出的5个问题,请给出你的答案,并与同学讨论。 答:软件需要如此长的开发时间: a)设施不上线 b)开发工具并不如预期般运作 c)客户提出的新要求,需要重新设计和返工 d)产品依赖于政府的规定,被意外更改。 e)严格的要求,与现有系统的兼容性需要超过预期更多的测试,设计和实现。 f)多个操作系统下运行的任务需求比预期需要更长的时间。 g)软件项目风险管理比预期需要更多的时间。 h)依赖的技术仍处于开发阶段,从而延长日程安排。 开发成本高: a)比当时预期低得令人无法接受的质量,需要进行更多的测试,设计和实施工作。 b)制定了错误的软件功能需要重新设计和实施。 c)开发错误的用户界面,而导致重新设计和实施。 d)开发了不需要的额外的软件功能而延长了开发日程安排。 在将软件交付顾客使用之前,我们无法找到所有错误: a)产品依赖于政府监管,意外而改变。 b)产品技术标准草案,会意外更改。 c)有时会在项目后期添加新的开发人员。 d)因为团队内的冲突有时会导致沟通不畅,而产生糟糕的设计。 e)破坏高效调度产生的项目管理成果和无效的规划 f)有时装备部件质量差,导致额外的测试,设计和集成工作和管理额外的客户关系。 软件开发和维护的过程仍旧难以度量: a)有时该项目的目的是不明确。 b)有大量的业务所涉及的风险。 c)如果产品内置没有装好。 d)我们需要不断检讨我们的工作。 e)进行维护检查的时间。 f)在整个软件开发过程中要彻底组织项目团队。 1.4在交付最终用户之前,或者首个版本投入使用之后,许多应用程序都会有频繁的变更。

软件工程概论课后习题答案

软件工程概论郑人杰等版 第1章软件与软件工程的概念 1.1 举出你所知道的应用软件的例子。 办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。 1.2 认为“软件就是程序,软件开发就是编程序。”这种观点是否正确?为什么? 认为“软件就是程序,软件开发就是编程序。”这种观点是错误的。 首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。 1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么? 可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。 1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现: (1)对软件开发成本和进度的估计常常很不准确。 (2)用户对“已完成的”软件系统不满意的现象经常发生。 (3)软件产品的质量往往靠不住。 (4)软件常常是不可维护的。 (5)软件通常没有适当的文档资料。 (6)软件成本在计算机系统总成本中所占的比例逐年上升。 (7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用 迅速普及深入的趋势。 产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面: (1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。 (2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。 (3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。 (4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及 技术问题,更重要的是必须有科学严格的管理。

软件工程课后习题答案

软件工程课后习题答案 第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

软件工程课后习题答案

软件工程课后习题答案 习题1 略。 习题2 略。 习题3 略。 习题4 2.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则? 人们在理解用自然语言描述的规格说明时,容易产生二义性。为了克服非形式化方法的缺点,人们把数学引入软件开发工程,创造了基于数学的形式化说明技术。 应用形式化方法的准则: (1)应该选用释放的表示方法; (2)应该形式化,但不要过分形式化; (3)应该估算成本; (4)应该有形式化方法顾问随时提供咨询; (5)不应该放弃传统的开发方法; (6)应该建立详尽的文档; (7)不应该放弃质量标准; (8)不应该盲目依赖形式化方法; (9)应该测试、测试再测试; (10)应该重用。 4.用有穷状态机说明自动化图书馆流通系统

习题5 略。 习题6 略。 习题7 略。 习题8 略。 习题9 1.什么是面向对象方法学?它有哪些优点? 面向对象方法学,是尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程,从而使得实现解法的解空间(也称为求解域)与描述问题的问题空间(也称为问题域)在结构上尽可能一致。 优点:

1.与人类习惯的思维方法一致; 2.稳定性好; 3.可重用性好; 4.较易开发大型软件产品; 5.可维护性好 10.建立订货系统的用例模型。 分析如下:从对这个订货系统的需求可以知道,仓库管理员通过放在仓库中的终端把零件入库/出库市事务报告给订货系统,系统接受到事务信息之后应该处理事务;采购员需要使用订货系统提供的产生报表功能,以获取订货报表。综上所述,用例如下: 习题10 1.用面向对象方法分析研究本书习题2第2题中描述的储蓄系统,试建立它的对象模型、

软件工程课后习题答案第五版

软件工程课后习题答案第五版 《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面: (1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。 (4)软件生产效率很低。 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计。

(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机? (1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 3.怎样克服软件危机? (1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。 (3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 4.构成软件项目的最终产品: 应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期? 软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 6.软件生存周期为什么划分成阶段? (1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。

软件工程课后作业

第一章 1.1 答:软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 1.2 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

相关文档
最新文档