软件工程方法与实践课后答案.docx
- 文档编号:14617800
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:24
- 大小:34.35KB
软件工程方法与实践课后答案.docx
《软件工程方法与实践课后答案.docx》由会员分享,可在线阅读,更多相关《软件工程方法与实践课后答案.docx(24页珍藏版)》请在冰点文库上搜索。
软件工程方法与实践课后答案
软件工程方法与实践课后答案
【篇一:
软件工程课后习题答案】
软件危机?
它有哪些典型表现?
为什么会出现软件危机?
软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:
如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:
(1)对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2)用户对已完成的软件不满意的现象时有发生。
(3)软件产品的质量往往是靠不住的。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6)软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7)开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:
(1)来自软件自身的特点:
是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2)软件开发与维护的方法不当:
忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3)供求矛盾将是一个永恒的主题:
面对日益增长的软件需求,人们显得力不从心。
二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:
“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?
”应该怎么反驳他?
答:
在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,
不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是
整体构架的错误。
三、什么是软件工程?
它有哪些本质特征?
怎样用软件工程消除软件危机?
1993年ieee的定义:
软件工程是:
①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
软件工程的本质特征:
(1)软件工程关注于大型程序(软件系统)的构造
(2)软件工程的中心课题是分解问题,控制复杂性(3)软件是经常变化的,开发过程中必须考虑软件将来可能的变化
(4)开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具
(5)和谐地合作是开发软件的关键(6)软件必须有效地支持它的用户
(7)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径:
(1)对计算机软件有一个正确的认识(软件≠程序)
(2)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目
(3)推广使用在实践中总结出来的开发软件的成功技术和方法
(4)开发和使用更好的软件工具
四、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。
1.传统方法学:
也称为生命周期方法学或结构化范型。
优点:
把软件生命周期划分成基干个阶段,
每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:
当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。
2.面向对象方法学:
优点:
降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
五、1-5根据历史数据可以做出如下的假设:
对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:
m=4080e0.28(y-1960)
基于上述假设可以比较计算机硬件和软件成本的变化趋势。
要求计算:
(1)在1985年对计算机存储容量的需求估计是多少?
如果字长为16位,这个存储器的价格是多少?
存储容量需求m=4080e0.28(1985-1960)=4474263(字)
存储器价格p=0.048*0.72(1985-1974)*4474263=5789美元
(2)假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。
如果一条指令为一个字长,计算使存储器装满程序所需用的成本。
需要工作量4474263/200=22371(人/月)
指令成本22371*4000=89484000美元
(3)假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复
(1)、
(2)题。
需求估计m=4080e0.28(1995-1960)=73577679字
存储器价格0.003*32*0.72(1995-1974)*73577679=7127美元
工作量73577679/600=122629(人/月)
成本122629*6000=735776790美元
六、什么是软件过程?
它与软件工程方法学有何关系?
软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件工程方法学:
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。
软件过程是软件工程方法学的3个重要组成部分之一。
七、什么是软件生命周期模型?
试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。
软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
瀑布模型优点:
它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
虽然有不少缺陷但比在软件开发中随意的状态要好得多。
缺点:
(1)实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。
(2)经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
(3)客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。
快速原型模型
优点:
使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。
缺点:
产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作。
增量模型
优点:
(1)人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。
(2)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。
缺点:
(1)至始至终开发者和客户纠缠在一起,直到完全版本出来。
(2)适合于软件需求不明确、设计方案有一定风险的软件项目。
该模型具有一定的市场。
螺旋模型
优点:
对于大型系统及软件的开发,这种模型是一个很好的方法。
开发者和客户能够较好地对待和理解每一个演化级别上的风险。
缺点:
(1)需要相当的风险分析评估的专门技术,且成功依赖于这种技术。
(2)很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化的方法失去控制。
(3)这种模型相对比较新,应用不广泛,其功效需要进一步的验证。
该模型适合于大型软件的开发
八、为什么说喷泉模型较好的体现了面向对象软件开发过程无缝和迭代的特性?
因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号,因此,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性。
九、试讨论rational统一过程的优缺点。
优点:
提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础。
它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。
缺点:
rup只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。
十.rational统一过程主要适用于何种项目?
大型的需求不断变化的复杂软件系统项目
十一.说明敏捷过程的适用范围
适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束
十二.说明微软过程的适用范围
适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式
第二章
1.在软件开发的早期阶段为什么要进行可行性研究?
应该从哪些方面研究目标系统的可行性?
答:
(1)开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。
可行性研究的实质是要进行一次大大压缩简化了的系统分析和设计过程,就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
(2)一般说来,至少应该从以下三个方面研究每种解法的可行性:
a.技术可行性。
对要开发项目的功能、性能和限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现,这些即为技术可行性研究的内容。
这里的资源包括已有的或可以搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。
b.经济可行性。
进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开
发,这些即为经济可行性研究的内容对于大多数系统,一般衡量经济上是否合算,应考虑一个“底线”,经济可行性研究范围较广,包括成本—效益分析,长期公司经营策略,开发所需的成本和资源,潜在的市场前景。
c.操作可行性。
有时还要研究社会可行性问题,研究要开发的项目是否存在任何侵犯、妨碍等责任问题。
社会可行性所涉及的范围也比较广,它包括合同、责任、侵权和其他一些技术人员常常不了解的陷阱等。
必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。
2.为方便储户,某银行拟开发计算机储蓄系统。
储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。
请写出问题定义并分析此系统的可行性。
数据流程图:
取票图:
航空订票系统技术在目前是一个技术上成熟的系统,并且在航空公司内部准备采取有力措施保证资金和人员配置等。
因此,分阶段开发“航空订票系统”的构想是可行的。
为了使航空公司适应现代化市场竞争的需求,促进机票预订管理信息化,不断满足旅客预订机票的要求,争取更好的经济效益,可立即着手系统的开发与完善。
3、为方便旅客,某航空公司拟开发一个机票预定系统。
旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进入该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。
写出问题定义并分析系统的可行性。
1目标:
在一个月内建立一个高效率,无差错的航空公司机票预定系统
2存在的主要问题:
人工不易管理,手续繁琐
3建立新系统
①
经济可行性成本效益分析
成本估算:
打印机一台(2000元)+开发费(3500元)=5500元
可承担
效益估算:
该系统有很好的社会效益,提高了航空公司售票效率,方便了旅客,售
票方便化,科学化
②技术可行性
经过调查分析,得到目前航空公司机票预定系统流程图如下:
4.目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时
【篇二:
软件工程复习题及答案(完整)】
档是软件产品的一部分,没有文档的软件就不称其为软件。
对
2、在需求分析过程中,分析员要从用户那里解决的最重要的问题是给该软件提供哪些信息。
错
3、需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。
错
4、建立用例模型的步骤包括确定角色、确定用例和绘制用例图。
错
5、数据流图建立系统的功能模型,它由数据流、加工和数据存贮组成。
错
6、软件配置管理是一组标识、组织和控制修改源程序的活动。
错
7、uml是一种直观化、明确化、构建和文档化软件产物的通用语言。
错
8、好的测试是用少量的测试用例运行程序,发现被测程序尽可能多的错误。
对
9、边界值分析方法是取输入/输出等价类的边界值作为测试用例。
对
10、面向对象的分析是面向计算机系统建立软件系统的对象模型。
错
11、(d)是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
a软件过程b软件测试c软件生存周期d软件工程
12、iso9000是由iso/tc176制定的关于(b)和质量保证的国际标准。
a质量控制b质量管理c质量策划d质量改进
13、cmm提供了一个框架,将软件过程改进的进化步骤组织成5个成熟度等级。
除第1级外,每个等级都包含了实现该成熟度等级目标的若干
(b)。
a关键实践b关键过程域c软件过程能力d软件过程
14、在软件开发的各种资源中,(d)是最重要的资源。
a开发工具b方法c硬件环境d人员
15、软件的复杂性是(a),它引起人员通信困难、开发费用超支、开发时间超时等问题。
a固有的b人为的c可消除的d不可降低的
16、在各种不同的软件需求中,(d)描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明。
a业务需求b功能需求c非功能需求d用户需求
17、原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于(a)系统。
a需求不确定的b需求确定的c管理信息d决策支持
18、(a)意味着一个操作在不同的类中可以有不同的实现方式。
a多态性b多继承c类的可复用d信息隐蔽
19、时序图反映对象之间发送消息的时间顺序,它与(d)是同构的。
a用例图b类图c活动图d协作图
20、单元测试的测试用例主要根据(d)的结果来设计。
a需求分析b源程序c概要设计d详细设计
二、填空题
1、在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是
2、类a的一个操作调用类b的一个操作,且这两个类之间不存在其他关系,那么类a和类b之间是依赖关系。
3、用例及其协作之间是实现关系。
4、接口及其实现类或构件之间是
5、动物与老虎之间是
三、问答题
1、软件复用的范围不仅仅涉及源程序代码,请至少列出5种可能复用的软件元素。
可复用的软件元素包括(选5种):
项目计划、成本估计、体系结构、需求模型和规格说明、设计、用户文档和技术文档、用户界面、数据结构、测试用例。
2、传统瀑布模型的主要缺陷是什么?
试说明造成缺陷的原因。
传统瀑布模型的主要缺陷及其原因:
在项目的早期,用户常常很难清楚地给出所有需求,瀑布模型却要求如此。
由于瀑布模型的特点,早期的错误直到开发晚期才能被发现,开发的风险较大。
3、某学校需要开发一个学生成绩管理系统,教务人员可以通过该系统维护学生信息、课程信息和成绩信息,学生可以随时查询自己的成绩单,该系统的实体关系图如下所示:
请问图中是否应该增加教务人员?
试说明理由。
不应该增加教务人员,因为教务人员只是该系统的一个使用者,系统不处理其属性信息。
4、下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。
intgetmax(intn,intdatalist[]){intk=0;
for(intj=1;jn;j++)
if(datalist[j]datalist[k])k=j;
returnk;}
(1)画出该程序的控制流图,并计算其mccabe环路复杂性。
控制流图如下,mccabe环路复杂性为3。
(2)用基本路径覆盖法给出测试路径。
测试路径:
path1:
①→③path2:
①→②→④→⑥→?
path3:
①→②→⑤→⑥→?
(3)为各测试路径设计测试用例。
测试用例:
path1:
取n=1,datalist[0]=1,预期结果:
k=0
path2:
取n=2,datalist[0]=1,datalist[1]=0,预期结果:
k=0
path3:
取n=2,datalist[0]=0,datalist[1]=1,预期结果:
k=1
5、下图显示了某个学校课程管理系统的部分类图,其中一个学生(student)可以知道所有注册课程的教师(instructor),一个教师也可以知道所有注册课程的学生。
现在提出一个新的需求:
一个教师也可以是某些课程的学生,那么下面设计a-c中哪一个是最好的?
为什么?
设计b是最好的。
学生和教员均可以从candidate类继承而来;抽象出role类,使candidate类与role类之间形成多对多的关联关系,实现了一个人既是教师又是某门课的学生这个需求。
设计a:
设计b:
设计c:
6、所谓分层体系结构是按层组织软件的一种软件体系结构,其中每层软件建立在低一层的软件层上,下图显示了一种分层体系结构。
请选择正确的答案,将其对应的序号填入图中的()。
供选择的答案:
①高效性②通用性③保密性④专用性⑤系统软件⑥中间件⑦应用软件⑧支撑软件⑨特定业务⑩子系统
一、选择
1、(a)是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、软件确认、软件改进等活动组成。
a软件过程b软件工具c质量保证d软件工程
2、(d)是以追求更高的效益和效率为目标的持续性活动。
a质量策划b质量控制c质量保证d质量改进
3、cmm提供了一个框架,将软件过程改进的进化步骤组织成5个成熟度等级。
除第1级外,每一级都包含了实现这一级目标的若干关键过程域,每一个关键过程域又包含若干(a)。
a关键实践b软件过程性能c软件过程能力d软件过程
4、在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,(c)是从各个角度对系
统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
a业务需求b功能要求c非功能需求d用户需求
5、(a)意味着一个操作在不同的类中可以有不同的实现方式。
a多态性b多继承c类的复用d封装
6、在面向对象的系统中,系统责任的良好分配原则是(b)。
a在类之间均匀分配b集中分配在少数控制类中c根据交互图的消息进行分配d根据个人喜好进行分配
7、软件配置项是软件配置管理的对象,即软件工程过程中产生的(c)。
a接口b软件环境c信息项d版本
8、软件测试计划开始于需求分析阶段,完成于(b)阶段。
a需求分析b软件设计c软件实现d软件测试
二、问答题
改正:
在软件开发的过程中,一个错误修复和改正得越晚,为此所花费的代价就会越高。
(2).(√)在需求分析中,分析员要从用户那里解决的最重要的问题是明确软件做什么。
改正:
软件可行性分析应在需求分析之前,因此,软件需求规格说明书不应成为软件可行性分析的依据。
(4).(√)模型是对现实的简化,建模是为了更好地理解所开发的系统。
改正:
uml语言支持面向对象的概念,并独立于具体的开发过程。
(6).(√)用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。
改正:
好的测试用例在于能发现至今未发现的错误。
(8).(√)白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能要求。
(9).(√)当软件开发项目的进度有可能拖延时,增加开发人员并不能加快进度。
改正:
软件技术复审是由软件开发人员实施的一种质量保证活动。
2、你认为一个好的软件开发人员应具备哪些基本素质?
答:
(1)牢固掌握计算机软件的基本知识和技能;
(2)善于分析和综合问题,具有严密的逻辑思维能力;(3)工作踏实细致,遵循标准和规范,具有严格的科学作风;(4)工作有耐心、有毅力、有责任心;(5)善于听取别人的意见,善于与周围人员团结协作,建立良好的人际关系;(6)具有良好的书面和口头表达能力。
3、需求工程包括哪些基本活动?
每一项活动的主要任务是什么?
答:
(1)需求获取(问题识别):
采集、识别和提取用户的需求,对问题和需求形成文档化的描述,使各种人员达成一致的理解和认可。
(2)需求分析:
分析和综合所采集的信息,建立系统的详细逻辑模型。
(3)需求规格说明:
编写软件需求规格说明书,明确、完整和准确地描述已确定的需求。
(4)需求验证:
评审软件需求规格说明,以保证其正确性、一致性、完备性、准确性和清晰性。
(5)需求管理:
定义需求基线,在整个项目过程中跟踪需求状态及其变更情况。
4、为什么软件需要维护?
简述软件维护的过程。
答:
在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运行,就需要对软件进行维护。
软件维护的过程:
(1)确认维护要求。
(2)对于改正性维护申请,评价错误的严重性。
对于严重的错误,立即安排人员,分析问题原因,进行救火性的紧急维护;对于不严重的错误,根据任务情况和轻重缓急进行统一安排。
(3)对于适应性和完善性维护申请,需要确定申请的优先级,然后安排维护工作。
并不是所有的完善性维护申请都必须承担,需要考虑商业需要、现有资源、未来发展方向等进行决定。
5、根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。
一个程序读入3个整数,它们分别代表一个三角形的3个边长。
该程序判断所输入的整数是否构成一个三角形,以及该三角形是一般的、等腰的或等边的,并将结果打印出来。
要求:
设三角形的3条边分别为a、b、c,并且
(2)设计测试用例,格式如下:
用例n:
输入【a,b,c】覆盖等价类?
?
(列出等价类序号),输出结果为?
?
。
用例1:
输入【3,4,5】覆盖等价类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 方法 实践 课后 答案