软件工程概述课程作业.docx
- 文档编号:1943847
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:23
- 大小:84.72KB
软件工程概述课程作业.docx
《软件工程概述课程作业.docx》由会员分享,可在线阅读,更多相关《软件工程概述课程作业.docx(23页珍藏版)》请在冰点文库上搜索。
软件工程概述课程作业
软件工程作业与解答
第一章软件工程概述
1.简述软件的发展过程。
答:
计算机软件的发展经历了三个阶段:
(1)程序设计阶段,约50至60年代;
(2)程序系统阶段,约60至70年代;(3)软件工程阶段,约70年代以后。
各个时期软件开发的特点见课本第7页表1.3。
2.简述软件的定义及特点。
答:
软件是计算机系统中与硬件相互依存的另一部份,它是包括程序、数据及其相关文档的完整集合。
特点见课本第1页至第3页。
3.简述软件的种类。
答:
见课本第3页至第6页。
4.什么叫软件危机?
答:
在软件发展的第二阶段,随着计算机硬件技术的进步,计算机的容量、速度和可靠性有了明显的提高,生产硬件的成本降低了。
计算机价格的下跌为它的广泛应用创造了极好的条件。
在这一形式下,要求软件能与之相适应。
然而软件技术的进步一直未能满足形式发展提出的要求。
在软件开发中遇到的问题找不到解决的办法,致使问题积累起来,形成日益尖锐的矛盾。
软件开发时期所面临的这种状态就是所谓的软件危机。
5.软件危机主要有哪几种表现?
答:
见课本第8页
(1)、
(2)、(3)、(4)。
6.什么叫软件工程?
答:
开发、运行、维护和修复软件的系统方法。
7.什么叫软件生存周期?
答:
软件从孕育、诞生、成长、成熟到衰亡的过程叫软件生存周期。
它包括制定计划、需求分析、设计、程序编码、测试及运行维护。
8.简单介绍软件开发的瀑布型模型和螺线型模型。
答:
见课本第11页至第14页。
第二章系统分析
1.简述系统分析的目标
(1)识别用户要求;
(2)评价系统的可行性;
(3)进行经济分析和技术分析;
(4)把功能分配给硬件、软件、人、数据库和其它系统元素;
(5)建立成本和进度限制;
(6)生成系统规格说明,形成所有后续工程的基础。
2.系统分析过程的第一步就是识别用户要求。
要求的识别是系统开发的起点。
为此,分析员必须回答哪些问题,才能完成这一步骤?
(1)所期望的功能和性能是什么
(2)可靠性和质量问题是哪些
(3)总的系统目标是什么
(4)成本与进度限制如何
(5)制造的需求是什么
(6)市场与竞争情况怎样
(7)有效的技术有哪些
(8)将来可能有哪些扩充
3.软件项目的可行性研究主要集中在哪个方面?
(1)经济可行性。
(2)技术可行性。
(3)法律可行性。
(4)抉择。
4.填空
在成本-效益分析中,有形的效益可以用(货币的时间价值、投资回收期、纯收入 )等指标进行度量。
第三章软件需求分析课程作业
一、简述与问答
1.简述软件需求分析的任务。
需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求。
分析员通过需求分析,逐步细化对软件的要求,描述软件要处理的数据域,并给软件开发提供一种可转化为数据设计、结构设计和过程设计的数据与功能表示。
在软件完成后,制定的软件需求规格说明还要为评价软件质量提供依据。
2.软件的需求分析就是解决所开发软件做什么,做到什么程度的问题。
它包括诸多需求,这些需求有那些?
功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。
3.简述需求分析评审的主要内容。
a.系统定义的目标是否与用户的要求一致;b.系统需求分析阶段提供的文档资料是否齐全;c.文档中的所有描述是否完整、清晰、准确反映用户要求;d.与所有其他系统成分的重要接口是否都已经描述;e.所开发项目的数据流与数据结构是否足够确定;f.所有图表是否清楚,在不补充说明时能否理解;g.主要功能是否已包括在规定的软件范围之内,是否都已充分说明;h.设计的约束条件或限制条件是否符合实际;i.开发的技术风险是什么;j.是否考虑过软件需求的其他方案;k.是否考虑过将来可能会提出的软件需求;l.是否详细制定了检验标准,它们能否对系统定义是否成功进行确认;m.有没有遗漏、重复或不一致的地方;n.用户是否审查了初步的用户手册;o.软件开发计划中的估算是否受到了影响。
4.软件需求分析的基本原则是什么?
(1)必须能够表达和理解问题的数据域和功能域。
(2)必须按自顶向下、逐层分解的方式对问题进行分解和不断细化。
(3)要给出系统的逻辑视图和物理视图。
5.什么是结构化分析方法?
结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。
6.数据词典的任务什么?
.对于数据流图中出现的所有被命名的图形元素在数据词典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。
数据词典中所有的定义应是严密的、精确的,不可有半点含混,不可有二义性。
二、填空
1.在软件开发的原型化方法中,原型是指(软件的一个早期可运行的版本,它反映最终系统的部分重要特性)。
2.软件原型化方法是在研究分析阶段的方法和技术中产生的,由于软件项目的特点和运行原型的目的不同,原型主要有(
(1)探索型
(2)实验型。
(3)进化型。
(4)修正和改进)三种不同的作用类型。
3.结构化分析方法主要使用了(数据流图、数据词典、结构化英语、判定表和判定树。
)几个工具。
4.需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。
其实现步骤包括(
(1)获得当前系统的物理模型。
(2)抽象出当前系统的逻辑模型。
(3)建立目标系统的逻辑模型。
(4)为了对目标系统做完整的描述,还需要对得到的逻辑模型做一些补充。
)
5.需求分析阶段的工作,可以分成(问题的识别、分析与综合、制定规格说明和评审)四个方面。
第四章软件设计课程作业
1.一旦确定了软件需求之后,就进入开发阶段。
开发阶段由三个互相关联的步骤组成:
( .设计、实现(编码)和测试)。
2.性能主要是指( 周转时间 响应时间 吞吐量 精度)四个指标。
3.概要设计阶段完成时应编写的文档包括( 概要设计说明书 数据库设计说明书 用户手册 制定初步的测试计划)。
4.概要设计评审的内容主要包括( 可追溯性 接口 风险 实用性 技术清晰度 可维护性 质量 各种选择方案 限制)。
5.软件的结构包括两部分。
其一为( 程序模块的层次结构 ),其二为(数据的结构 )。
6.在软件系统的分层模块结构图中,上级模块调用( 下级模块)。
它们之间存在主从关系,即自上而下“主宰”,自下而上“从属”。
而同一层的模块之间没有这种主从关系。
7.多扇出意味着需要控制和协调许多( 下属模块 )。
而多扇入的模块通常是( 公用模块)。
8.数据结构设计应确定数据的( 组织、存取方式、相关程度、以及信息的不同处理方法)。
9.软件过程着重描述( 各个模块的处理细节 )。
软件过程必须提供精确的处理说明,包括事件的顺序、正确的判定点、重复的操作直至数据的组织和结构等等。
10.如果模块是相互独立的,当模块变得越小,每个模块的内部结构就变得越(简单 ),花费的工作量也越低。
11.模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。
一般采用两个准则度量模块独立性。
即( 模块间的耦合)和( 模块的内聚)。
12.在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。
表达过程规格说明的工具可以分为以下三类:
( .图形工具)、( 表格工具)、(语言工具 )。
二、简答题
1.为什么软件设计在开发阶段中的具有重要意义?
除了维护阶段以外,开发阶段占软件工程总成本的75%以上。
开发阶段的决策将最终影响软件实现的成败,影响软件维护的难易程度。
软件设计是软件开发阶段最重要的步骤。
它是软件开发中质量得以保证的关键步骤。
设计提供了软件的表示,使得软件的质量评价成为可能。
软件设计又是将用户要求准确地转化成为最终的软件产品的唯一途径。
2.在概要设计过程中需要完成的工作具体有哪些?
(1)制定规范:
在进入软件开发阶段之初,首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作。
(2)软件系统结构的总体设计:
在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,使每一部分完成简单的功能且各个部分之间又保持一定的联系,这就是功能设计。
在设计阶段,基于这个功能的层次结构把各个部分组合起来成为系统。
(3)处理方式设计:
确定为实现软件系统的功能需求所必需的算法,评估算法的性能。
确定为满足软件系统的性能需求所必需的算法和模块间的控制方式(性能设计)。
确定外部信号的接收发送形式。
3.简述数据结构设计的内容
确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计。
它包括:
1)确定输入、输出文件的详细的数据结构。
2)结合算法设计,确定算法所必需的逻辑数据结构及其操作。
3)确定对逻辑数据结构所必需的那些操作的程序模块(软件包)。
限制和确定各个数据设计决策的影响范围。
4)若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则。
5)数据的保护性设计
4.在详细设计过程中需要完成的工作有哪些?
(1)确定软件各个组成部分内的算法以及各部分的内部数据组织。
(2)选定某种过程的表达形式来描述各种算法。
(3)进行详细设计的评审
5.软件设计的最终目标是要取得最佳方案。
“最佳”的含义是指什么?
是指在所有候选方案中,就节省开发费用,降低资源消耗,缩短开发时间的条件,选择能够赢得较高的生产率、较高的可靠性和可维护性的方案。
在整个设计的过程中,各个时期的设计结果需要经过一系列的设计质量的评审,以便及时发现和及时解决在软件设计中出现的问题,防止把问题遗留到开发的后期阶段,造成后患。
在评审以后,必须针对评审中发现的问题,对设计的结果进行必要的修改。
6.模块具有哪些基本属性?
(1)功能:
即指该模块实现什么功能。
(2)逻辑:
即描述模块内部怎么做。
(3)状态:
即该模块使用时的环境和条件。
7.简述数据设计的原则。
(1)用于软件的系统化方法也适用于数据。
(2)要确定所有的数据结构和在每种数据结构上施加的操作。
(3)应当建立一个数据词典并用它来定义数据和软件的设计。
(4)低层数据设计的决策应推迟到设计过程的后期进行。
(5)数据结构的表示只限于那些必须直接使用该数据结构内数据的模块才能知道。
(6)应当建立一个存放有效数据结构及相关操作的库。
(7)软件设计和程序设计语言应当支持抽象数据类型的定义和实现。
8.程序流程图有哪几种基本控制结构?
(1)顺序型
(2)选择型(3)先判定(while)型循环(4)后判定(until)型循环(5)多情况(case)型选择。
三、名词解释
1.结构图的深度
在多层次的结构图中,其模块结构的层次数称为结构图的深度。
结构图的深度在一定意义上反映了程序结构的规模和复杂程度。
2.结构图的宽度
结构图中同一层模块的最大模块数称为结构图的宽度
3.模块的扇入和扇出
扇出表示一个模块直接调用(或控制)的其他模块数目。
扇入则定义为调用(或控制)一个给定模块的模块个数。
4.模块
软件系统的层次结构是模块化的具体体现。
将整个软件划分成若干单独命名和可编址的部分,称之为模块。
可以将这些模块组装起来以满足整个问题的需求。
5.信息隐蔽
信息隐蔽是指,每个模块的实现细节对于其他模块来说是隐蔽的。
即模块中所包含的信息(包括数据和过程)不允许其他不需要这些信息的模块使用。
四、选择一种将三个数从小到大排序的算法,分别用
(1)流程图,
(2)N-S图,(3)PAD图描述其详细过程。
设数为a,b,c,其详细过程如下:
(1)流程图
(2)N-S图
(3)PAD图
第五章Jackson系统开发方法
一、问答
1.JSD的系统模型是互相通信的一组进程的集合。
进程间的通信可采用哪几种方式?
(1)进程活动同步发生。
(2)通过数据流通道发送/接收活动发生。
(3)访问公用存储信息。
2.JSD方法是支持软件分析与设计的一组连续的技术步骤,它们包括哪些方面?
(1)实体动作分析:
从问题的描述中,提取软件系统要产生和运用的实体(人、物或组织),以及现实世界作用于实体上的动作(事件)。
(2)实体结构分析:
把作用于实体的动作或由实体执行的动作,按时间发生的先后次序排序,构成进程,并用一个层状的Jackson结构图表示。
(3)定义初始模型:
把实体和动作表示成一个进程模型,定义模型与现实世界的联系。
(4)功能描述:
说明与已定义的动作相对应的功能,为已定义的动作加入功能函数。
(5)决定系统时间特性:
对进程加入时间因素,对进程调度特性进行评价和说明。
(6)实现:
设计组成系统的硬件和软件,实现系统的原型。
3.在Jackson系统开发方法中定义了哪几种功能?
(1)嵌入功能:
把操作分配(或写入)到模型进程的结构正文内。
(2)强制功能:
检查模型进程的状态向量,并给出输出结果。
(3)交互功能:
检查模型进程的状态向量,写入一个施加于模型进程活动的数据流,或引入一个写出结果的操作。
二、填空
1.JSD方法的前三步属于( 需求分析)阶段,后三步属于( 设计)阶段。
2.分析实体的动作,需要从一段用简单的自然语言给出的问题描述(通常是一个段落)入手。
当选定了实体和动作的时候,实际上已经把要开发系统的( 范围)划定了。
第六章用户界面设计课程作业
一、填空
1.用户界面作为软件的重要组成部分,应当具备(可使用性 灵活性 复杂性和可靠性 )三方面的特性。
2.用户类型通常可以分为( 外行型 初学型 熟练型 专家型)种类型。
3.按照显示的形象或样式来分类菜单可分为(正文菜单 图标菜单 正文和图标混合的菜单 )。
4.按屏幕位置和操作风格来分类菜单可分为( 固定位置菜单 浮动位置菜单 下拉式菜单 嵌入式菜单)。
5.常用的二维图形显示包括( 直方图 饼图 折线图 散布图)等几种。
二、问答题
1.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。
它包括哪些内容?
(1)使用的简单性
(2)用户界面中所用术语的标准化和一致性(3)拥有HELP帮助功能(4)快速的系统响应和低的系统成本(5)用户界面应具有容错能力
2.怎样理解用户界面的复杂性?
用户界面的规模和组织的复杂程度就是界面的复杂性。
在完成预定功能的前提下,应当使得用户界面越简单越好。
但也不是把所有功能和界面安排成线性序列就一定简单。
3.用户界面设计的任务分析应与软件系统的需求分析同步进行。
它包括用那几个步骤?
用户特性分析、用户工作分析、记录用户有关系统的概念和术语、确定界面类型等4个步骤。
4.用户特性的度量的主要衡量标准是什么?
1)用户使用的频度2)用户需要自由选用界面的情况3)用户对计算机的熟悉程度4)用户知识5)用户思维能力6)用户的生理能力和技能
5.如果从用户与计算机交互的角度来看,用户界面设计的类型主要有哪些?
问题描述语言、数据表格、图形与图标、菜单、对话、以及窗口等等。
每一种类型都有不同的特点和性能。
6.对话框有哪几种对话形式?
(1)必须回答式
(2)无需回答式(3)警告式。
7.问题描述语言是一种结构化的语言,它可以分为哪几层?
(1)任务层
(2)语义层(3)语法层(4)交互层。
8.数据输入对话设计的一般规则是什么?
(1)确认输入
(2)交互动作(3)明确取消(4)确认删除(5)提供反馈(6)允许编辑(7)提供复原(Undo)(8)自动格式化(9)提示输入的范围
第七章程序编码
一、填空
1.( 程序编码)阶段的工作是把软件的详细设计变换成用某一种程序设计语言编写的可实现的源程序。
2.结构化程序设计中,应注意数据结构的合理化问题,即数据结构访问的规范化,标准化问题。
对于数据结构中常使用的数组、指针等数据类型,一般可用(栈 )和( 队列)去代替。
3.源程序文档化包括( 选择标识符的名字)、( 安排注释 )以及程序的( 视觉组织 )等。
二、问答
1.结构化程序设计的主要的原则有哪些?
(1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。
(2)选用的控制结构只准许有一个入口和一个出口。
(3)程序语句组成容易识别的块(Block),每块只有一个入口和一个出口。
(4)复杂结构应该用基本控制结构进行组合嵌套来实现。
(5)语言中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中应前后一致。
(6)严格控制GOTO语句,仅在下列情形才可使用:
a.用一个非结构化的程序设计语言去实现一个结构化的构造。
b.在某种可以改善而不是损害程序可读性的情况下。
2.自顶向下逐步求精方法的优点是什么?
(1)自顶向下,逐步求精方法符合人们解决复杂问题的普遍规律。
可提高软件开发的成功率和生产率;
(2)用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,因此程序容易阅读和理解;(3)程序自顶向下,逐步细化,分解成一个树形结构,在同一层的节点上做细化工作,相互之间没有关系,因此它们之间的细化工作相互独立;在任何一步发生错误,一般只影响它下层的节点,同一层其他节点不受影响。
在以后的测试中,也可以先独立地一个节点一个节点地做,最后再集成。
(4)程序清晰和模块化,使得在修改和重新设计一个软件时,可复用的代码量最大;
第八章软件测试课程作业
一、填空
1.软件测试在软件生存期中横跨两个阶段:
( 单元测试 )和(综合测试 )。
2.确认(Validation)是一系列的活动和过程,其目的是想证实在一个给定的外部环境中软件的( 逻辑正确性)。
它包括需求规格说明的确认和程序的确认,而程序的确认又分为( 静态确认 )与(动态确认 )。
3.( 验证)则试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。
4.测试过程至少需要三类输入,即( 软件配置 )、( 测试配置)、( 测试工具)。
5.( 排错的过程)是测试过程中最不可预知的部分,正是因为如此,才使得人们很难定出可靠的测试进度。
6.( 软件的黑盒 )测试意味着测试要在软件的接口处进行,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
7.( 软件的白盒测)试是对软件的过程性细节做细致的检查。
这一方法允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
8.逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计技术,属( 白盒测试 )。
9.基本路径测试就是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行( 路径集合 ),从而设计测试用例。
10.等价类划分是一种典型的( 黑盒 )测试方法,也是一种非常实用的重要测试方法。
使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。
11.测试过程一般按4个步骤进行,即( 单元测试 ) 、( 组装(集成)测试 )、( 确认测试 )、(系统测试 )。
二、问答
1.什么是软件测试?
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
如果给软件测试下定义,可以这样讲:
软件测试是为了发现错误而执行程序的过程。
或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果,并利用这些测试用例去运行程序,以发现程序错误的过程。
2.软件测试目的是什么?
测试的目标是想以最少的时间和人力找出软件中潜在的各种错误和缺陷。
如果成功地实施了测试,就能够发现软件中的错误。
测试的附带收获是,它能够证明软件的功能和性能与需求说明相符。
此外,实施测试收集到的测试结果数据为可靠性分析提供了依据。
3.软件测试的原则是什么?
(1)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。
(2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。
(3)程序员应避免检查自己的程序。
(4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
(5)充分注意测试中的群集现象。
(6)严格执行测试计划,排除测试的随意性。
(7)应当对每一个测试结果做全面检查。
(8)妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
4.黑盒测试主要是为了发现以下那些错误?
(1)是否有不正确或遗漏了的功能?
(2)在接口上,输入能否正确地接受?
能否输出正确的结果?
(3)是否有数据结构错误或外部信息(例如数据文件)访问错误?
(4)性能上是否能够满足要求?
(5)是否有初始化或终止性错误?
5.白盒测试主要对程序模块进行那些检查?
(1)对程序模块的所有独立的执行路径至少测试一次;
(2)对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测试一次;(3)在循环的边界和运行界限内执行循环体;(4)测试内部数据结构的有效性等。
三、判断
1.软件开发过程是一个自顶向下,逐步细化的过程,软件测试过程也是如此。
错误 软件开发过程是一个自顶向下,逐步细化的过程,首先在软件计划阶段定义了软件的作用域,然后进行软件需求分析,建立软件的数据域、功能和性能需求、约束和一些有效性准则。
接着进入软件开发,首先是软件设计,然后再把设计用某种程序设计语言转换成程序代码。
而测试过程则是依相反的顺序安排的自底向上,逐步集成的过程。
低一级测试为上一级测试准备条件。
当然不排除两者平行地进行测试。
2.在软件测试中,若发现错误则说明程序有问题,软件需要修改;若未发现错误,则说明程序是正确的,软件可以交付使用。
错误 软件测试有一个致命的缺陷,即测试的不完全、不彻底性。
由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在发现错误时能说明程序有问题;但在未发现错误时,不能说明程序中没有错误,不能说明程序中没有问题。
第九章面向对象技术课程作业
一、填空
1.根据Coad和Yourdon的定义,面向对象的概念可表示为:
“面向对象=( 对象)+( 类)+( 继承 )+( 通信 )”。
2.对象是面向对象开发模式的基本成分。
每个对象可用其一组( 属性 )和它可以执行的一组( 操作)来定义。
3.类是一组具有相同数据结构和相同操作的对象的集合。
在一个类中,每个对象都是类的( 实例 ),它们都可使用类中提供的函数。
4.面向对象分析是软件开发过程中的( 问题定义 )阶段。
这一阶段最后得到的是对问题论域的清晰、精确的定义。
5.对象模型技术,即三视点技术,它把分析时收集的信息构造在三类模型中,即( 对象模型 )、( 功能模型 )和( 动态模型 )。
6.高层设计阶段开发系统的结构,即用来构造应用的总的( 模型)。
7.利用现存类来设计新类,有4种方式:
( 选择 )、( 分解 )、( 配置 )和( 演变 )。
8.Coad与Yourdon的方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 概述 课程 作业
![提示](https://static.bingdoc.com/images/bang_tan.gif)