软件工程作业与解答
第一章 软件工程概述
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)确定对逻辑数据结构所必需的那些操作的程序模块(软