软件工程李爱萍作业参考答案解析最终版修改.docx
- 文档编号:2837203
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:75
- 大小:720.44KB
软件工程李爱萍作业参考答案解析最终版修改.docx
《软件工程李爱萍作业参考答案解析最终版修改.docx》由会员分享,可在线阅读,更多相关《软件工程李爱萍作业参考答案解析最终版修改.docx(75页珍藏版)》请在冰点文库上搜索。
软件工程李爱萍作业参考答案解析最终版修改
第一章
1.1什么是软件?
软件和程序的区别是什么?
答:
⑴软件是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。
软件的定义是:
计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必须的数据。
⑵软件不是程序,程序是软件的一部分。
程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。
它是由软件开发人员设计和编码的。
程序执行时一般要输入一定的数据,也会输出运行的结果。
没有相关文档,仅有程序是不能称之为软件产品的。
1.2什么是软件生存周期?
划分生存周期的主要原则是什么?
答:
(1)软件的生存周期是指某一软件项目被提出并着手实现开始,直到该软件报废或停止使用为止所经历的时间。
(2)主要原则:
各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。
1.3什么是软件危机?
它有哪些主要表现?
为什么会产生软件危机?
答:
(1)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(2)主要表现:
对软件开发成本和研制进度的估计常常很不精确,导致经费预算经常突破,进度超时完成;由于开发人员常常对用户需求只有模糊的了解以及开发人员和用户又未能及时交换意见,导致已完成的软件不能满足用户的需要;软件产品质量差,可靠性得不到保证;软件产品可维护性差;软件成本在计算机系统总成本中所占的比例逐年上升,软件的发展跟不上硬件的发展;软件开发生产率提高的速度远远跟不上计算机应用速度普及深入趋势,软件发展跟不上用户的要求。
(3)产生软件危机的原因:
造成软件危机的原因与软件自身的特点有关,也与软件开发人员在开发和维护时采用的生产方式、方法、技术有关。
软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。
给软件的开发和维护带来客观的困难;软件开发的管理困难。
由于软件规模大、结构复杂、又具有无形性,导致管理困难,进度控制困难,可靠性无法保证;软件开发费用不断增加,维护费用急剧上升,直接威胁计算机应用的扩大;软件开发技术落后;生产方式落后;开发工具落后,生产效率提高缓慢。
另外软件开发人员忽视需求分析的重要性,轻视软件维护也是造成软件危机的原因。
1.4什么是软件工程?
怎样利用软件工程消除软件危机?
答:
(1)软件工程是指导计算机软件开发和维护的一门学科
(2)首先应该对计算机软件有一个正确的认识,彻底清除“软件就是程序”的错误观念;要使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法;要有良好的组织、严密的管理,各类人员要相互配合,共同完成任务,充分认识软件开发不是某种个体劳动的神秘技巧;应该开发和使用好的软件工具,从而有效提高软件生产率。
采用“工程化”的思想做指导来解决软件研究中面临的困难和混乱。
1.5何谓面向对象软件工程?
简述它和传统软件工程的区别与联系?
答:
(1)以面向对象程序设计为基础的软件工程。
(2)传统软件工程是以结构化程序设计为基础,而面向对象软件工程是以面向对象程序设计为基础。
与面向过程的软件工程的开发思想相比,面向对象开发方法不再是以功能划分为导向,而是以对象作为整个问题分析的中心,围绕对象展开系统的分析与设计工作。
在开发过程方面,面向对象软件工程和传统软件工程一样也是把软件开发划分为分析、设计、编码和测试等几个阶段,但各个阶段的具体工作不同,除了在编码阶段使用的语言不同外,面向对象软件工程为待开发软件确定“类与对象”一般在需求分析阶段进行,设计阶段则主要完成对象内部的详细设计;而在传统软件工程中,将软件设计划分为“总体设计”和“详细设计”,分别完成软件的总体结构图的设计和各个模块内部算法的详细设计。
即:
传统软件工程开发过程包括需求分析、总体设计、详细设计、面向过程的编码和测试;面向对象软件工程开发过程包括需求分析与对象抽取、对象详细设计、面向对象的编码和测试。
1.6什么是软件生存周期模型?
试比较本章介绍的四种模型的优缺点,说明每种模型的使用范围
答:
(1)软件生存周期模型即为软件开发模型,是描述软件开发过程中各种活动如何执行的模型,是软件过程、活动、任务的结构框架。
优点
缺点
适用范围
瀑布模型
能清晰直观地表达软件开发全过程,明确规定要完成的主要活动和任务,用来作为软件项目工作的基础。
只有当分析员能够做出准确的需求分析时,才能得到预期的正确结果。
它是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
适合于需求很明确的软件项目开发的模型,对于经常变化的项目而言,瀑布模型毫无价值。
快速原型模型
通过实践让用户了解未来目标系统的概貌,以便判断哪些功能是符合需要的,哪些方面需要改进。
反复改进,最终建立完全符合用户需求的新系统。
克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。
这种模型适合预先不能确切定义需求的软件系统的开发。
在实际中开发原型系统使用的语言效率有时会很低,所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。
适合于一些需求可变、模糊不定的软件系统的开发
增量模型
有较大的灵活性。
能够在较短的时间内向用户提交一些有用的工作产品。
开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。
整个系统是由一个个构件集成在一起的,当需求变更时只变更部分部件,而不必影响整个系统。
各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,冒所有构件集成不到一起的风险。
适合于软件要求不明确,设计方案有一定风险的软件项目。
螺旋模型
加入了瀑布模型与增量模型都忽略了的风险分析,使用原型及其他方法来尽量降低风险
该模型需要有相当丰富的风险评估经验和这方面的专门技术,这使该模型的应用受到一定限制。
将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
第二章
2.1在软件开发早期阶段为什么要进行可行性研究?
可行性研究的任务是什么?
应该从哪几个方面研究目标系统的可行性?
答:
(1)避免或者减轻项目开发后期可能出现的困境。
(2)其主要任务是,首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,必须分析几种可能解法的利弊,从而判定原定系统的目标和规模是否现实,系统完成后带来的效益是否大到值得投资开发这个系统的程度。
(3)经济可行性、技术可行性、操作可行性、法律可行性。
2.2成本—效益分析可用哪些指标进行度量?
答:
成本方面包括开发成本和运行维护成本;效益方面包括经济效益和社会效益,经济效益可以用货币的时间价值、投资回收期、纯收入来度量。
2.3有人认为,只懂技术的分析员不一定能圆满完成可行性研究的任务。
你同意这种看法吗?
为什么?
答:
同意。
因为可行性研究的任务包括三个方面,除了技术可行性之外,还需要进行经济可行性、操作可行性、社会和法律方面的可行性研究,而只懂技术的分析员对其他方面的研究有可能不满足用户的要求,所以只懂技术的分析员不一定能圆满完成可行性研究的任务。
2.4在【例2.2】中,把投资改为6000元,每年节约金额改为2000元,年利率为6%,试计算投资回收期和纯收入。
解:
如下表
年
将来值(元)
(1+n*I)
现在值(元)
累计的现在值
(元)
1
2
3
4
5
2000
2000
2000
2000
2000
1.06
1.12
1.18
1.24
1.30
1886.79
1785.71
1694.92
1612.90
1538.46
1886.79
3672.50
5367.42
6980.32
8518.78
投资回收期为(6000-5367.42)/1612.90+3=3.39(年)纯收入为8518.78-6000=2518.78(元)
2.5为方便旅客,某航空公司拟开发一个飞机票预定系统。
旅游公司把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和账单,旅客在飞机起飞前的3天之内凭取票通知和账单交款取机票,系统校对无误即打印出飞机票给旅客。
请写出开发此系统的问题定义,并通过可行性研究分析此系统的可行性。
答:
问题定义:
飞机票预定系统
主要实现以下功能:
查询功能:
把旅游时间、旅游目的地等输入进该系统,系统显示符合要求的航班。
预定机票:
把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和账单,并更新记录。
校对并打印机票:
旅客在飞机起飞前的3天之内凭取票通知和账单交款取机票,系统校对无误即打印出飞机票给旅客。
可行性研究应从经济可行性、技术可行性、操作和社会、法律的角度阐述其可行性,这部分省略……
2.6试为习题2.5写可行性研究报告的主要内容。
(本题略)
第三章
3.1为什么要进行需求分析?
需求分析要经过哪些步骤?
答:
(1)可行性研究阶段粗略了解了用户的需求,甚至还提出了一些可行的方案,但是可行性研究的基本目的是最小的代价在尽可能短的时间内确定问题是否存在可行的解法,因此许多细节都被忽略了,可行性研究并不能代替需求分析,
它实际上并没有准确地回答“系统必须做什么”这个关键问题。
(2)步骤:
1.需求获取:
调查研究。
从分析当前系统包含的数据开始,分析当前信息处
理的方法与存储的不足,用户希望改进的主要问题及其迫切性等。
2.需求提炼:
分析建模。
需求提炼的主要任务是建立分析模型。
把来自用户的信息加以分析,通过抽象建立起目标系统的分析模型。
3.需求描述:
编写SRS。
为了使需求描述具有统一的风格,可以采用已有的且可满足项目需要的模板,也可以根据项目特点和软件开发小组的特点,对标准进行适当的改动,形成自己的SRS模板。
4.需求验证。
由分析员和用户一起对需求分析结果进行严格的审查、验证。
确保需求说明可作为软件设计和最终系统验收的依据。
3.2需求分析阶段的基本任务是什么?
怎样理解分析阶段的任务是决定“做什么”,而不是“怎样做”?
答:
(1)1.确定对系统的综合需求。
分析员和用户双方确定对软件系统的综合要求,具体有功能需求、性能需求、环境需求、接口要求、用户界面需求,另外还有可靠性、安全性、保密性、约束、可移植性和可维护性等方面的需求,这些需求通常可以通过双方交流、调查研究来获取,并达到共同的理解。
2.分析系统的数据需求。
因为绝大多数软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌。
3.建立软件的逻辑模型。
4.编写软件需求规格说明书。
目的是使用户和开发者能对未来软件有共同的理解,明确定义未来软件的需求、系统的构成及有关的接口。
需求说明相当于用户和开发者之间的一份技术合同,是测试验收阶段对软件进行确认和验收的基准,是软件开发的基础。
5.需求分析评审
(2)需求分析实际上是调查、评价以至肯定用户对软件需求的过程,其目的在于精化软件的作用范围,也是分析和确认软件系统构成的过程,以确定未来系统的主要成分及它们之间的接口细节。
因此需求分析实际上是一个对用户意图不断进行揭示和判断的过程,它并不考虑系统的具体实现,而是完整地、严密地描述应当“做什么”的一种过程。
3.3什么是结构化分析方法?
该方法使用什么描述工具?
答:
(1)结构化分析方法是一种从问题空间到某种表示的映射方法,软件功能由数据流图表示,是结构化方法中重要的,被普遍采用的方法,它由数据流图和数据字典构成系统的逻辑模型。
(2)数据流图、数据字典、结构化语言、判定树和判定表。
3.4什么是数据流图?
其作用是什么?
其中的基本符号各表示什么含义?
答:
(1)数据流图是SA方法中用于表示系统逻辑模型的一种工具。
(2)它描述系统由哪几部分组成,各部分之间的联系等,以直观的图形清晰地描述了系统数据的流动和处理过程。
(3)→箭头,表示数据流;
○圆或椭圆,表示变换数据的处理;
□方框,表示数据的三原点或终点;
=双杠或单杠,表示数据存储(文件)。
除上述4种基本符号之外,有时也使用几种附加符号,星号(*)表示数据之间的关系(同时存在);加号(+)表示“或”关系,⊕号表示只能从中选一个(互斥的关系)。
3.5画数据流图的步骤是什么?
应该注意什么事项?
答:
(1)第一步,先找外部实体(可以是人、物或其他软件系统),找到了外部实体,则系统与外部世界的界面就得以确定,系统的源点和终点也就找到了;第二步,找出外部实体的输入和输出数据流;第三步,在图的边上画出系统的外部实体;
第四步,从外部实体的输出流(源点)出发,按照系统的逻辑需要,逐步画出一系列变换数据的加工,直到找到外部实体处所需的输入流(终点),形成数据流的封闭;第五步,按照上述原则进行检查和修改。
最后按照上述步骤画出所有子图。
(2)①画数据流图时,只考虑数据流的静态关系,不考虑其动态关系(如启动、停止等与时间有关的问题),也不考虑出错处理问题。
2画数据流图时,只考虑常规状态,不考虑异常状态,这两点一般留在设计阶段解决。
3画数据流图不是画程序流程图,二者有本质的区别。
数据流图只描述“做什么”,不描述“怎么做”和做的顺序,而程序流程图表示对数据进行加工的控制和细节。
4不能期望数据流图一次画成,而是要经过各项反复才能完成。
5描绘复杂系统的数据流图通常很大,对于画在几张纸上的图很难阅读和理解。
一个比较好的方法是分层的描绘这个系统。
在分层细画时,必须保持信息的连续性,父图和子图要平衡,每次只细画一个加工。
3.6什么是数据字典?
其作用是什么?
它有哪些条目?
答:
(1)数据字典是对数据流图中所包含元素的定义集合。
(2)数据字典的作用正是在软件分析和设计的过程中,给人提供数据描述,即对数据存储(文件)和加工(处理)等名字进行定义。
(3)数据流、数据流分量(数据基本项)、数据存储(文件)和加工(处理)。
3.7描述加工逻辑有几种工具?
各是什么?
写出其优缺点。
答:
(1)描述加工逻辑一般用结构化语言、判定表和判定树。
优点
缺点
结构化语言
既有结构化程序的清晰易读的优点,又有自然语言简单易懂的优点,又避免了自然语言不精确可能产生二义性的缺点。
只有顺序、循环、条件三种控制结构。
判定表
能清晰地表示复杂的条件组合与应做动作之间的关系。
不能描述循环的处理特征。
判定树
它比判定表更观,且易于理解和使用。
(同判定表)
3.8某高校计算机教材购销系统有以下功能。
学生购买书时,要先填写购书单,系统根据各班学生用表及售书登记表审查有效性,如果有效,系统根据教材库存量表进一步判断书库是否有书,如果有书,系统把领书单返回给学生,学生凭书单到书库领书,对短缺的教材,系统用缺书单的形式通知书库,新书购进书库后,也由书库将进书通知返回给系统。
请采用SA方法画出该系统的分层数据流图,并建立相应的数据字典。
答:
a)
数据字典
(1)数据流条目:
购书单=学院+专业+班级+购书种类+购书数量+价格
进书通知=书名+进书数量+书类型+作者名称+出版社+价格
领书单:
书名+作者名称+出版社+数量+学院+专业+班级+价格缺书单=书名+作者名称+出版社+剩余数量+再购进数量
(2)数据存储条目:
文件名:
库存清单
组成:
书名+书籍编号+价格+作者名称+出版社+类型+现有数量组成方式:
索引文件,以书籍编号为关键文件名:
售书登记表
组成:
书名+书籍编号+售出数量+价格组成方式:
索引文件,以书籍编号为关键文件名:
各班学生用表组成:
班级+人数+领书量
组成方式:
索引文件,以班级为关键
(3)数据项
(4)加工条目
加工名:
图书管理系统
编号:
无
输入:
购书单、进书通知、库存清单、售书登记表、各班学生用表
输出:
领书单、缺书单加工名:
录入存储处理编号:
1
输入:
进书通知
加工逻辑:
IF没有所输入的书籍记录
THEN建立新的书籍记录,存入该书籍的基本记录ELSE输入书籍记录
ENDIF加工名:
查询处理编号:
2
输入:
购书单
输出:
领书单、缺书单加工逻辑:
根据购书单、售书登记表、各班学生
用表及库存清单IF审查售书登记表及各班学生用表
有效
THENIF有库存
THEN输出领书单ELSE输出缺书单加工名:
审查、分类
编号:
1.1输入:
进书通知输出:
书籍信息加工逻辑:
根据进书通知将书审查、分类加工名:
审查有效性
编号:
2.1输入:
购书单输出:
有效加工逻辑:
根据购书单、售书登记表、各班学生用
表
IF审查售书登记表及各班学生用表
有效
THEN输出有效
加工名:
判断书库是否有书
编号:
2.2输入:
有效输出:
领书单、缺书单加工逻辑:
IF有库存
THEN输出领书单
ELSE输出缺书单
ENDIF
3.9某计算机公司为本科以上学历的人重新分配工作的政策是:
年龄在25岁以下者,学历是本科男性要求报考研究生,女性则担任行政工作;年龄在25岁至45岁之间者,学历本科,不分男女,任中层领导职务,学历是硕士,不分男女,任课题组组长;年龄在45岁以上者,学历本科,男性任研究人员,女性则担任资料员,学历是硕士,不分男女,任课题组组长。
请用结构化语言、判定表和判定树描述上述问题的加工逻辑。
答:
结构化语言:
if年龄<25thenif学历=本科thenif性别=男then报考研究生endifif性别=女then担任行政工作endif
endifendifif25<=年龄=<45then
if学历=本科then担任中层领导职务endifif学历=硕士then任课题组组长endif
endifif45<年龄thenif学历=本科thenif性别=男then任研究人员endifif性别=女then任资料员endifendif
if学历=硕士then任课题组组长endif
endif
判定表:
年龄
<25
25<=年龄<=45
45<
性别
男
女
男/女
男/女
男
女
男/女
学历
本科
本科
硕士
本科
硕士
报考研究生
√
担任行政工作
√
任中层领导职务
√
任课题组组长
√
√
担任研究人员
√
担任资料员
√
判定树
男性:
要求报考研究生
年龄<25本科
女性:
担任行政工作
本科:
任中层领导职务
重新分配工作25<年龄=<45
硕士:
任课题组组长
男性:
担任研究人员
45年龄女性:
担任资料员
硕士:
任课题组组长
3.10数据库内容的需求分析工作主要从哪几方面进行?
答:
(1)信息需求信息需求指用户需要从数据库中获得的信息的内容和性质,信息需求是软件数据需求中最基本的需求,主要是确定系统需要存储和使用哪些数据,用户需要从数据库中获得信息的内容和性质。
(2)处理需求
处理需求是用户要求软件系统完成的功能,以及对系统功能的处理时间、方式等方面的要求,如是要求批处理还是联机处理等。
(3)使用需求
使用需求包括:
使用数据库时在安全性、完整性和一致性等方面的限制;查询方式、输入/输出格式和多用户等方面的要求;响应速度、故障恢复等性能要求。
3.11建立全局E-R模型时,各分E-R模型之间可能出现的冲突有哪些?
应如何处理?
答:
(1)各局部E-R模型之间的冲突主要有3类:
属性冲突、命名冲突和结构冲突。
(2)属性冲突:
突理论上好解决,但实际上需要各部门讨论协商,解决起来也并非易事。
命名冲突:
处理方法与属性冲突的解决方法一样,也是通过讨论、协商等手段解决。
结构冲突:
使集成后的该实体取各局部E-R模型中属性的并集,再适当调整属性的次序;实体间的联系在各局部E-R模型中具有不同的类型,解决办法是根据应用的语义对实体之间联系的类型进行综合或调整。
第四章
4.1总体设计阶段的主要目的和任务是什么?
答:
总体设计阶段的基本目标就是回答“概括地说,系统应该如何实现?
”这个问题,因此总体设计又称为概要设计或初步设计。
通过这个阶段的工作,开发人员将划分出组成系统的物理元素,如程序、文件、数据库等。
但是这些物理元素还处于黑盒子的形式,具体的内部细节在详细设计阶段考虑。
总体设计的另一项任务是设计软件的总体结构,即确定系统中的每个程序是由哪些模块组成的,每个模块的功能及模块和模块之间的接口、调用关系等,但所有这些都不要求涉及模块内部过程的细节。
4.2为每种类型的模块耦合和模块内聚各举一个具体例子。
答:
无直接耦合
模块B和C模块D和E模块B和D
模块B和E
数据耦合
函数调用时的值传递
模块A:
完成两个数的输入。
模块B:
完成两个数的比较,求出最大并返回。
比较输入的两个数的大小。
标记耦合
模块A
控制耦合
控制信息
模块B
功能
1
功能
2
功能
3
。
。
。
功能n
公共环境耦合
模块A:
学生信息查询模块B:
选课查询模块C:
成绩查询数据结构:
学号+院系+课程
内容耦合
偶然内聚
moveatob;readdiskfile;movectod;
…
逻辑内聚
时间内聚
模块完成各种初始化工作,同时打开若干个文件,同时关闭若干个文件等。
通信内聚
模块A:
学生信息查询数据结构模块B:
选课查询及成绩查询数据结构:
学号+院系+课程模块B
顺序内聚、功能内聚
求一元
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 李爱萍 作业 参考答案 解析 最终版 修改