搜档网
当前位置:搜档网 › 软件工程导论(第六版)课后习题答案

软件工程导论(第六版)课后习题答案

软件工程导论(第六版)课后习题答案
软件工程导论(第六版)课后习题答案

第一章

一、什么就是软件危机?它有哪些典型表现?为什么会出现软件危机?

软件危机就是指在计算机软件开发、使用与维护过程中遇到得一系列严重问题与难题。它包括两方面:如何开发软件,已满足对软件日益增长得需求;如何维护数量不断增长得已有软件。

软件危机得典型表现:

(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、面向对象方法学:优点:降低了软件产品得复杂性;提高了软件得可理解性;简化了软件得开发与维护工作; 促进了软件重用。

五、15 根据历史数据可以做出如下得假设 :

对计算机存储容量得需求大致按下面公式描述得趋势逐年增加:M=4080e0、28(Y1960)

存储器得价格按下面公式描述得趋势逐年下降:P1=0、3×0、72Y1974(美分/位)

如果计算机字长为16位,则存储器价格下降得趋势为:P2=0、048×0、72Y1974(美元/字)

在上列公式中Y代表年份,M就是存储容量(字数),P1与P2代表价格。

基于上述假设可以比较计算机硬件与软件成本得变化趋势。要求计算:

(1) 在1985年对计算机存储容量得需求估计就是多少?如果字长为16位,这个存储器得价格就是多少?

存储容量需求M=4080e0、28(19851960)=4474263(字)

存储器价格P=0、048*0、72(19851974)*4474263=5789美元

(2) 假设在1985年一名程序员每天可开发出10条指令,程序员得平均工资就是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用得成本。

需要工作量4474263/200=22371(人/月)

指令成本22371*4000=89484000美元

(3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员得月平均工资为6000美元,重复(1)、(2)题。

需求估计M=4080e0、28(19951960)=73577679字

存储器价格0、003*32*0、72(19951974)*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.目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时

观察危重病人得病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心得患者监护系统,试写出问题定义,并且分析开发这个系统得可行性可行性分析原系统分析:

(第

第三章

(1)、为什么要进行需求分析?通常对软件系统有哪些要求?

答: 1) 为了开发出真正满足用户需求得软件产品,首先必须知道用户得需求。对软件需求得深入理解就是软件开发工作获得成功得前提条件,不论我们把设计与编码工作做得如何出色,不能真正满足用户需求得程序只会令用户失望,给开发者带来烦恼。

2)确定对系统得综合要求:1、功能需求;2、性能需求;3、可靠性与可用性需求;4、出错处理需求;5、接口需求;6、约束;7、逆向需求;8、将来可以提出得要求,分析系统得数据要求。 (2)怎样与用户有效地沟通以获取用户得真实需求? 答案 :

与用户沟通获取需求得方法:访谈;面向数据流自顶向下求精;简易得应用规格说明技术;快速建立软件原型

3 银行计算机储蓄系统得工作过程大致如下:储户填写得存款单或取款单由业务员键入系统,如果就是存款则系统记录存款人姓名、住址、身份证号码等存款信息,并打印出存款存单给储户;如果就是取款且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。 答案: 用ER 图描绘系统中得数据对象。

(5)

,装满纸后进入闲置状态,

1,举例说明形式化说明技术与欠形式化方法得优缺点。 答: 以一个简单得俄罗斯方块游戏系统规格说明为例,用自然语言描述如下:

游戏得每个状态对应一个游戏界面,开始状态下,但变量cd_start=1就是进入正常游戏得状态,cd_start=2时 进入读取游戏状态,cd_start=3

就是进入得分榜界面查瞧。在得分榜界面按任意键返回开始界面,在读取游戏界

面,当游戏数据读取完成后进入正常游戏状态,正常游戏状态下,

同时按下左键与右键进入储存游戏界面,数

据储存结束后返回正常游戏状态,在正常游戏状态下,如果变量game_res=0,则游戏结束,进入游戏结

束画面。 可见,用自然语言书写得系统规格说明书,罗嗦繁杂,并且可能存在矛盾,二义性,含糊性,不完整性及抽象

层次混乱等问题。

用有穷状态得描述如下:

状态机J:{开始,正常游戏(游戏进行中),得分榜,读取游戏,储存游戏,游戏结束}

输入集K:{按键UP,按键DOWN,按键LEFT,按键RIGHT,寄存器变量cd_start ,寄存器变量game_res} 转换函数T:如图4、1所示 初始态S:{开始} 终态集F:{游戏结束}

可见用形式化语言描述,更加简洁,准确,无歧义。

2,在什么情况下应该使用形式化说明技术?使用形式化说明技术应遵守哪些规则? 答:

在用非形式化得方式描述时,存在矛盾,二义性,含糊性,不完整性级抽象层次混乱等问题时用形式化说明技术。 应用形式化方法得准则: A,应该选用适当得表示方法;

B,应该形式化,但不要过分形式化;

C, 应该估算成本;

D, 应该有形式化得方法顾问随时提供咨询; E, 不应该放弃传统得开发方式; F,应该建立详尽得文档; G ,不应该放弃质量标准; H,不应该盲目依赖形式化方法; I,应该测试,测试再测试; J,应该重用。

3,一个浮点二进制数得构成就是:一个可选得符号(+或),后跟一个或多个二进制位,再跟上一个字符E,再加上另一个可选符号(+或)及一个或多

个二进制位。例如,下列得字符串都就是浮点二进制数: 110101E101 100111E11101 +1E0

更形式化地,浮点二进制数定义如下: 〈floating

point binary 〉∷=[〈sign 〉]〈bitstring 〉E [〈sign 〉]〈bitstring 〉

〈sign 〉∷=+|

〈bitstring 〉∷=〈bit 〉[〈bitstring 〉] 〈bit 〉∷=0|1 其中,

符号∷=表示定义为; 符号[、、、]表示可选项; 符号a |b 表示a 或b 。

假设有这样一个有穷状态机:以一串字符为输入,判断字符串中就是否含有合法得浮点二进制数。试对这个有穷状态机进行规格说明。

4,考虑下述得自动化图书馆流通系统:每本书都有一个条形码,每个人都有一个带条形码得卡片。但一个借阅人想借一本书时,图书管理员扫描书上得条形码与借阅人卡片得条形码,然后在计算机终端上输入C;当归还一本书时,图书管理员将再次扫描,并输入R 。图书管理员可以把一些书加到(+)图书集合中,也可以删除(—)它们。借阅人可以再终端上查找到某个作者所有得书(输入“A=”与作者名字),或具有指定标题得所有书籍(输入“T=”与标题),或属于特定主题范围内得所有图书(输入“S=”加主题范围)。最后,如果借阅人想借得书已被别人借走,图书管理员将给这本书设置一个预约,以便书归还时把书留给预约得借阅人(输入“H=”加书号)。 试用有穷状态机说明上述得图书流通系统

答:图书馆流通系统得有穷状态机描述如下:

一)图书状态得有穷状态机描述

状态机J :{书在图书馆S1,书被借出S2,书被预约S3}

输入集K :{书上条形码,借阅卡条形码,终端输入各种命令}

转换函数T :如图4、4、1所示

初始态S :{书在图书馆S1,书被借出S2}

终态集F :{书被借出S2,书被预约S3}

EEPROM 写

入完成后

LEFT&RIGHT

Game_res=0

EEPROM 读取完成后

Cd_start=1 Cd_start=2 按任意键 Cd_start=3

得分榜

游戏结束

开始

储存中

读取游戏

游戏进行中

图4、1游戏状态转换图 在终端输入“H=”

扫描两个条形码,

二)图书馆终端管理员模式得有穷状态机描述

状态机J:{管理员设置状态,书入库,书出库(删除),预约} 输入集K:{终端输入管理员命令,书得各种状态(S1,S2,S3} 转换函数T:如图4、4、2所示

初始态S:{管理员设置状态}

终态集

二)

状态机

输入集

初始态

终态集

第五章

5、1为每种类型得模块耦合举一个具体得例子。

答:耦合式对一个软件结构内不同模块之间互联程度得度量。耦合强弱取决于接口得复杂度,进入或访问某一模块得点,以及通过接口得数据。一般模块之间得可能得连接方式有七种,构成耦合得七种类型,它们得关系为:

低 耦合性 高

强 独立性 弱 下面举例说明以上耦合:

A . 非直接耦合:两个模块没有直接得关系(模块1与模块2),独立性最强

B 、数据耦合:即一个模块访问另一个模块得时候,彼此之间就是通过数据参数来交换输入、输出信息得,这种耦合为数据耦合。这种耦合较为松散,模块间独立性较强。

G、内容耦合:如果出现以下情况之一,两个模块就发生了内容耦合

①一个模块访问另一个模块得内部数据。

②一个模块不通过正常入口儿转到另一个模块得内部

③两个模块有一部分程序代码重叠(只可能发生在汇编程序中)

④一个模块有多个入口(这意味着一个模块有几种功能)

Sub AA(…、)

有顺序内聚性。

B.功能内聚:如果模块内所有得元素属于一个整体完成一个单一得功能,则成为功能内聚。功能内聚得例子:一个程序中所有得操作都就是为了算出一个人得年龄

5、3用面向数据流得方法设计下列系统得软件结构

①储蓄系统

②机票预订系统

③患者监护系统

5、4 美国某大学有 200 名教师,校方与教师工会刚刚签订一项协议。按照协议, 所有年工资超过$26000(含$26000 )得教师工资将保持不变,年工资少于$26000

得教师将增加工资,所增加工资数额按下述方法计算:给每位教师所赡养得人(包

括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助¥50,但就是,增

加后得年工资总额不能多于$26000。

教师工资档案存储在行政办公室得磁带上,档案中有目前得年工资、赡养得人

数、雇佣日期等信息。需要写一个程序计算并印出每名教师得原工资与调整后得新工资。

要求:(1)画出此系统得数据流图;(2)写出需求说明;

(3)设计上述得工资调整程序(要求用 HIPO 图描绘设计结果),设计时分别采

用两种算法,并比较两种算法得优缺点:

(a)搜索工资档案数据,找出年工资少于$26000 得人,计算新工资,校核就是

否超过$26000,存储新工资,印出新旧工资对照表;

(b)把工资档案数据按工资从最低到最高得次序排序,当工资数额超过$26000

时即停止排序,计算新工资,校核就是否超过限额,存储新工资,印出结果。

(4)您所画出得数据流图适应用那种算法?

解:(1)数据流图:

分解后:

(2)需求说明:

1、功能需求:可以输入调资得标准,输入教师档案,经调资给出新得教师档案, 需要存储档案

2. 性能需求:软件得响应时间应小于0、5s,更新处理要快

3. 灵活需求:当需求发生某些变化时,该软件应该能够适应这些变化

4. 故障处理要求:出现错误时,应给予警告或提示

(3)

A.

(a)比较耗时,因为它要检索所有得档案,(b)从速度上瞧比较快,但就是(b)

需要排序算法,比较复杂,(a)对于设计来讲比较简单、

(4)画出得数据流图比较适合(A)得算法

5、5下面将给出两个人玩得扑克牌游戏得一种玩法,试设计一个模拟程序,它得基本功能就是:

(1)发两手牌(利用随机数产生器)。

(2)确定赢者与赢牌得类型。

(3)模拟N次游戏,计算每种类型牌赢或平局得概率。要求用HIPO图描绘设计结果并且画出高层控制流程图。扑克牌游戏规则如下:

(1)有两个人玩分别为A与B。

(2)一副扑克牌有52张牌,4种花色(黑桃、红桃、梅花、方块),每种花色得牌得点数按升序排列有2,3, 4,、、、、、、、、、,10,J,Q,K,A等13种。

(3)给每个人发三张牌,牌面向上,赢者立即可以确定。

(4)最高等级得一手牌成为同花,即3张牌均为同一种花色,最大得同花就是同一种花色得Q,K,A。

(6)第三等级得牌就是同点,即点数相同得三张牌,最大得同点就是AAA。

(7)第四等级得牌就是对子,即3张牌中有两张点数相同,最大得对子就是A,A,K。

(8)第五等级得牌就是杂牌,即除去上列4等之外得任何一手牌,最大得杂牌就是不同花色得A、K,J。

(9)若两个人得牌类型不同,则等级高者胜;若等级相同,则点数高者胜;若点数也相同,则为平局。

程序:#include "stdio、h"

int rabl(int a,int b,int *r)

{

int l,k,m,i,p;

k=ba+1;

l=2;

while(i<=1)

{

k=k+k+k+k+k;

k=k%m;

l=k/4+a;

if(l<=b) {p=l;i=i+1;}

}

*r=k;

return(p);

}

int max(int T[10][10])

{

int t=0;

if(T[0][0]>T[1][0])

t=T[0][0];

else t=T[1][0];

if(t

t=T[2][0];

return t;

}

int E1(int T[10][10])

{

if(T[0][1]==T[1][1]&&T[1][1]==T[2][1])

return 1;

else return 0;

}

int E2(int T[10][10])

{

int q=0;

if(((max(T[10][10])1)==T[0][0]||(max(T[10][10])1)==T[1][0]||(max(T[10][10])

1)==T[2][0])&&((max(T[10][10])2)==T[0][0]||(max(T[10][10])2)==T[1][0]||

(max(T[10][10])2)==T[2][0])) // if(q=max(T[][10]))

return 1;

else

return 0;

}

int E3(int T[10][10])

{

if(T[0][0]==T[1][0]==T[2][0])

return 1;

else return 0;

}

int E4(int T[10][10])

{

if(T[0][0]==T[1][0]&&T[0][0]!=T[2][0])

return 1;

else if(T[0][0]==T[2][0]&&T[0][0]!=T[1][0])

return 1;

else if(T[1][0]==T[2][0]&&T[1][0]!=T[0][0])

return 1;

else return 0;

}

void main

{

int times=0,e1=0,e2=0,e3=0,e4=0,e5=0;

int A[10][10],B[10][10];

int r1=2,r2=3;

printf("请输入游戏得次数\n");

scanf("%d",×);

for(int j=0;j

{

for(int i=0;i<3;i++)

{

A[i][0]=rabl(1,13,&r1);

A[i][1]=rabl(14,17,&r2);

B[i][0]=rabl(1,13,&r1);

B[i][1]=rabl(14,17,&r2);

}

if(E1(A[][10])>E1(B[][10])){

e1++;

printf("A赢,同花顺\n");

}

else if(E1(A[][10])

{

e1++;

printf("B赢,同花顺\n");

}

else if(E1(A[][10])==E1(B[][10])&&E1(B[][10])==1) {

e1++;

if(max(A[][10])>max(B[][10]))

printf("A赢,同花顺\n");

else

printf("B赢,同花顺\n");

}

else if(E2(A[][10])>E2(B[][10]))

{

e2++;

printf("A赢,顺子\n");

}

else if(E2(A[][10])

{

e2++;

printf("B赢,顺子\n");

}

else if(E2(A[][10])==E2(B[][10])&&E2(B[][10])==1) {

e2++;

if(max(A[][10])>max(B[][10]))

printf("A赢,顺子\n");

else

printf("B赢,顺子\n");

}

else if(E3(A[][10])>E3(B[][10]))

{

e3++;

printf("A赢,同点\n");

}

else if(E3(A[][10])

{

e3++;

printf("B赢,同点\n");

}

else if(E3(A[][10])==E3(B[][10])&&E3(B[][10])==1) {

e3++;

if(max(A[][10])>max(B[][10]))

printf("A赢,同点\n");

else

printf("B赢,同点\n");

}

else if(E4(A[][10])>E4(B[][10])) {

e4++;

printf("A赢,对子\n");

}

else if(E4(A[][10])>E4(B[][10]))

{

e4++;

printf("B赢,对子\n");

}

else if(E4(A[][10])==E4(B[][10])&&E4(B[][10])==1) ;

{

e4++;

if(max(A[][10])>max(B[][10]))

printf("A赢,对子\n");

else

printf("B赢,对子\n");

}

else

{

if(max(A[][10])>max(B[][10]))

printf("A赢,杂牌\n");

else

printf("B赢,杂牌\n");

}

}

printf("同花顺赢牌概率为%d,顺子赢牌概率为%d,同点赢牌概率为%d,对子赢牌概率为%d,杂牌赢牌概率为%d",e1/times,e2/times,e3/times,e4/times,e5/times);

}

控制流程图:

软件工程导论(第5版)课后习题答案

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)题。 ●(1)在1985年对计算机存储容量的需求,估计是 M=4080e0.28(1985-1960)=4474263(字) ●如果字长为16位,则这个存储器的价格是 ●P=0.048*0.72 1985-1974*4474263=$5789 ●(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。 ●在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人 每月可开发出10×20条指令。 ●为了开发出4474263条指令以装满存储器,需要的工作量是: 4474263/200=22371(人月) ●程序员的月平均工资是4000美元,开发出4474263条指令的成本是 22371*4000=¥89484000 ●(3)在1995年对存储容量的需求估计为: M=4080E0。28(1995-1960)=73577679(字)=4080E9.8 ●如果字长为32位,则这个存储器的价格是: P=0.003*32*0.72(1995-1974)*73577679=$7127 ●如果一条指令为一个字长,则为使存储器装满程序共需73,577,679条指令。 ●在1995年一名程序员每天可开发出30条指令,每月可开发出600条指令,为了开 发出可装满整个存储器的程序,需要的工作量为 73577679/600=122629(人月) ●开发上述程序的成本为: 122629*6000=$735776790 1-6 什么是软件过程?它与软件工程方法学有何关系?

软件工程导论期末考试试题和答案

1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 3.A、软件开发工作的基础B、软件生存周期的开始 4.C、由系统分析员单独完成的D、由用户自己单独完成的 5.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 6.A、明确的需求定义B、完整的生命周期 7.C、较长的开发时间D、熟练的开发人员 8.软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归 测试过程称为( A )。 9.A、改正性维护B、适应性维护 10.C、完善性维护D、预防性维护 11.一般说来,投入运行的软件系统中有错误(A )。

软件工程导论期末考试题

一、单项选择题 1.适合于面向对象方法学的软件生存周期模型是( B ) A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 2.从实用角度看,数据规范化程度在大多数场合选用第( C )范式。 A. 1 B.2 C.3 D.5 3. 可行性分析研究的目的是( A )。 A.项目值得开发否 B.争取项目 C.开发项目 D.规划项目 4. 模块的内聚性最高的是 ( D ) A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚 5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( B ) A. 软件工程 B. 软件危机 C. 软件周期 D. 软件产生 6. 需求分析阶段的任务是确定( D ) A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能 7. 完整的软件结构通常用( B )图来表示。 A. IPO 图 B. HIPO 图 C.PAD 图 D.DFD 图 8. 在白盒法技术测试用例的设计中( A )是最弱的覆盖标准。 A.语句 B.路径 C.条件组合 D.判定 9?对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 10. 在数据流图中,圆代表( C )。 A.源点 B.终点 C.加工 D.模块 11. 模块内聚度越高,说明模块内各成分彼此结合的程度越( B )。 A.松散 B.紧密 C.无法判断 D.相等 12. 软件测试方法中,黑盒、白盒测试法是常用的方法,其中黑盒测试主要用于测试( B )。 A.结构合理性 B.软件外部功能 C.程序正确性 D.程序内部逻辑 13. 面向对象开发方法中, ( C )是占主导地位的标准建模语言。 A.Booch 方法 B.Coad 方法 C.UML 语言 D.OMT 方法 14. 软件需求分析的主要任务是准确地定义出要开发的软件系统是( C ) A.如何做 B.怎么做 C.做什么 D.对谁做 15. 结构化程序设计的一种基本方法是( C ) A.筛选法 B.迭代法 C.逐步求精法 D.递归法 二、填空题 1. 目前使用最广泛的软件工 程学方法分别是传统方法学和(面向对象方法学 ) )和事务流。 文档 ) 。 ( 重复 )三种结构。 自顶向下 的集成测试方法,对软件结构中下层使 6. 软件维护包括 ( 改正性维护 )、适应性维护、完善性维护、预防性维护。 7. 面向对象方法学建模得到的三个基本子模型是 (对象建模 ) .动态模型、功能模型。 8. 复杂大型问题的对象模型通常由主题 2. 数据流图中信息流的类型有(变换流 3. 软件的定义是:软件 =程序+数据+ 4. 经典结构程序设计包括顺序、选择和 5. 集成测试时对软件结构中上层使用 用 ( 自底向上 ) 的集成测试方法。

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

《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 “软件危机”包含两方面的问题: (1)如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的原因 (1)开发人员与客户认识之间的矛盾 (2)开发人员能力与开发目标之间的矛盾 (3)预估与实际工作量之间的矛盾 (4)客户认识的提高与软件维护之间的矛盾 (5)遗产系统与实施软件之间的矛盾 2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成” 是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机? 软件工程是知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够

2019最新软件工程导论期末考试题库及答案

2019最新软件工程导论期末考试题库及答案 1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM 公司发展完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符 号表达了系统中各种元素之间的_____信息流动_____情况。4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集 成测试)、__确认测试__和_____系统测试(集成测试)____ 6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。 8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。 9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合” 的原则,提高模块的_独立性。 11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。

软件工程导论》期末考试试题与答案

《软件工程导论》期末考试-试题与答案 一、填空题 1.软件工程中的结构化分析 SA 是一种面向________的分析方法。 2.软件模块独立性的两个定性度量标准是_________________。 3.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个________的过程。 4. ________和数据字典共同构成了系统的逻辑模型 5. ___________是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。二、单选 题 1.在软件危机中表现出来的软件质量差的问题,其原因是_______。A.软件 研发人员素质太差B.用户经常干预软件系统的研发工作C.没有软件质量标 准 D.软件开发人员不遵守软件质量标准2.在软件质量因素中,软件在异常条件下仍能运 行的能力成为软件的_____。A.安全性B.健壮性C.可用性D.可靠性 3.在下列测试技术中,______不属于黑盒测试技术。A.等价 划分B.边界值分析C.错误推测D.逻辑覆盖 4.软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法主要是指______。A.原型化方法B.结构化方法C.功能化方法D.面向对象方法 5. ______是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是 隐蔽的,外界只能通过有限的接口与对象发生联系。A.多态 B.继承C.封装D.消息 6. Jackson 方法是在软件开发过程中常用的方法,使用 Jackson 方法时可以实现______。A.从数据结构导出程序结构B.从数据流图导出初始结构图C.从模块结构导出数据结构D.从模块结构导出程序结构 7.软件测试时为了________而执行程序的过程。A.纠正 错误B.发现错误 C.避免错误 D.证明错误 8.在软件系统中,一个模块应具有什么样的功能,这是由_____决定的。A.总体 设计B.需求分析C.详细设计D.程序设计 9.面向对象分析是对系统进行_________的一种方法。A.需求 分析B.程序设计C.设计评审D.测试验收 10.软件文档是软件工程实施中的重要部分,它不仅是软件开发各阶段的重要依据,而 且影响软件的_______。A.可理解 性B.可维护性C.可扩展性D.可 移植

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

第一章 1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3 什么是软件工程? 是指导计算机软件开发和维护的一门工程学科。 1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 目前使用得最广泛的软件工程方法学(2 种): 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 1-6 什么是软件过程?它与软件工程方法学有何关系? z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型 1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。 软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。 瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。适用中小型项目。 快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。 增量模型的优点:1短期内可以交付满足部分用户需求的功能产品;2逐步增加功能可以让用户去适应新产品;3开放式的软件可维护性比较好;4开始第一构件前,已经完成需求说明。 增量模型的缺点:1对现有产品功能造成破坏;2意义上的矛盾适用于中型软件的开发 螺旋模型的优点:1集成了瀑布模型、快速原型模型、增量模型的优点;2支持用户需求动态变化;3需求分析与软件实现紧密联系相互依赖;4原型作为刑式的可执行的需求规格说明,即利用用户和开发人员共同理解,又可作为后续开发的基础;5为用户参与决策提供方便;6提高目标软件的适应能力;7降低风险;8在大型软件开发过程中充分发挥优势。螺旋模型的缺点:1迭代次数影响开发成本,延迟提价时间;2找不到关键改进点,人才、物力、财力时间引起无谓消耗;3成于风险分析,败于风险分析。适用于内部开发的大规模软件项目。 1-8:为什么说喷泉模型叫好的体现了面向对象软件开发过程无缝和迭代的特性?

《软件工程导论》第五版-张海藩-编著-总结

《软件工程导论》第五版张海藩编著总结 分类:Computer System2011-01-04 10:14 6417人阅读评论(10) 收藏举报 测试数据结构工具任务文档软件测试 总结重点: ?Unit1 ?软件危机包含两方面の问题:一是如何开发软件,怎样满足人们对软件日益增长の需求?二是如何维护软件,使它们持久地满足人们の要求。 ?软件工程学定义:把软件当作一种工业产品,采用工程学の原理来管理和组织软件の开发和维护,称为软件工程。 ?软件是指程序、数据和文档三者共同构成の配置。 ?包含与数据处理系统操作有关の程序、规程、规则以及相关文档の智力创作称为软件。文档是描述程序开发过程の,是智力创作の真实记录,是创作活动の历史档案和结晶。 ?软件の描述性定义:软件由计算机程序,数据结构和文档组成。 ?软件质量定义为“与软件产品满足规定の和隐含の需求能力有关の特征和特性の全体” 具体来说: 1)软件产品中能满足给定需求の性质和特性の总体; 2)软件具有所期望の各种属性の组合程度。 ?将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户の观点——面向管理の观点,且是定性描述の。 ?软件质量度量体系:内部度量可用于开发阶段の非执行软件产品,外部度量只能在生存周期过程中の测试阶段和任何运行阶段使用。 ?软件工程项目の基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。 ?软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。 ?软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。 ?结构程序设计是进行以模块功能和处理过程设计为主の详细设计の基本原则。它の主要观点是采用自顶向下、逐步求精の程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。 ?用来辅助软件开发、运行、维护、管理、支持等过程中活动の软件称为软件工具(CASE)。 ?软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用の整个过程。各阶段の任务彼此间尽可能の相对独立,同一阶段内各项任务の性质尽可能の相同。软件の开发就是“按软件顺时间发展の过程分阶段进行”の。 ?软件生存周期模型: 瀑布模型(阶段间具有顺序型和依赖性,清楚地区分逻辑设计与物理设计、尽可能推迟程序の物理实现,是文档驱动模型,遵循结构化设计);

软件工程导论-期末题库(完整版)

1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM公司发展完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符号表达了系统中各种元素之间的_____信息流动_____情况。 4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。 5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集成测试)、__确认测试__和_____系统测试(集成测试)____ 6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。 8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合”的原则,提高模块的_独立性。11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。 14.软件工程三要素包括_方法_、__工具___和__过程___,其中, _过程_支持软件开发的各个环节的控制和管理。 15.类构件的重用方式有_实力重用__、__继承重用______和_ 多态重用__三种。16.能力成熟度模型分为5个等级:初始级、____可重复____级、__已定义___级、____已管理__级和__优化____级。 2.判断题 1. 向滞后的项目中增加人手会使得项目更加滞后。(T)

软件工程导论第五章课后答案

软件工程导论第五章课后 答案 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

第五章习题答案 1、为每种类型的模块耦合举一个具体例子。 答:耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问某一模块的点,以及通过接口的数据,一般模块之间可能的连接方式有7种,构成耦合的7种类型,它们之间的关系为: 下面举例说明以上各种耦合: a.非直接耦合(Nondirect Coupling)在这种情况下,两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。例如在实数的运算中,有两个模块分别完成几个实数的求和,求乘积功能,这两个模块之间没有直接联系,只有在主模块调用中有执行的前后顺序而已,这个例子即属于非直接耦合。 b.数据耦合(Data Coupling)即一个模块访问另一个模块时,彼此之间是通过数据参数来交换输入,输出信息的,这种耦合为数据输入,输出信息的这种耦合为数据耦合。如有两个模块,其中A完成两个烽的比较,求出其中最大的并返回该值,模块B是完成了个数的比较,求出其中最大的并返回该最大值,为完成四个数的比较,模块B调用模块A即可完成,在这种调用关系中,模块A的运算结

果作为一个参烽参加B的运算,这两个模块之间即发生数据耦合。数据耦合是松散的耦合,模块间的独立性比较强。 c.标记耦合(Stamp Coupling),即一组模块通过参数传递记录信息,这就是标记耦合。事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。 d.控制耦合(Control Coupling)即一个模块通过开关标志,名字等控制住处明显的控制,选择另一模块的功能,这就是控制耦合,如下图所示,这一种耦合实质是在单一接口上实现选择多功能模块中的某项功能,如程序设计中用到多路选择结构即是最好的例子。e.外部耦合(External Coupling)即一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递全局数据结构,而且不是通过参数表传递全局变量的信息。如C语言中都访问被说明为extern类型的外部变量的各个模块之间即发生外部耦合。外部耦合引起的问题类似于下面要介绍的公共耦合,区别在于外部耦合中不存在依赖于一个数据结构内部各项的物理安排。f.公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就是公共耦合。公共的数据环境可以是全局的数据结构,共享的通信区,内存的公共覆盖区等。如几个模块对同一个数据库的查询就属于这种耦合。公共耦合可以分为松散的公共耦合和紧密的公共耦合,其中松散的公共耦合是单向操作,如两个或多个模块对同一个文件的读操作;而紧密的公共耦合是双

软件工程导论期末考试简答题

简答题 1、什么是软件工程?它目标和内容是什么? 软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:包括开发技术和开发管理两个方面。 2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发? 软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。 其中喷泉模型、统一软件过程适用于面向对象的软件开发。 3、什么是结构分析方法?该方法使用什么描述工具? 结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。 4、什么是软件概要设计?该阶段的基本任务是什么? 把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。 基本任务:⑴设计软件系统结构⑵进行数据结构及数据库的设计⑶编写概要设计的文档⑷评审 5、软件维护有哪些内容? (1)校正性维护。在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。 (2)适应性维护。为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护。 (3)完善性维护。为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。 (4)预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。 6、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系? 软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。 单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。 集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。 确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。 系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。 7、什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。 包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。 8、衡量模块独立性的两个标准是什么?各表示什么含义? 内聚和耦合。内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。 耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。 9、什么是结构分析方法?结构化分析方法通过哪些步骤来实现? 结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。实现的步骤:⑴了解当前系统的工作流程,获得当前系统的物理模型。⑵抽象出当前系统的逻辑模型。⑶建立目标系统的逻辑模型。⑷作进一步补充和优化。

软件工程导论试题和答案2

一、判断题:每小题1分,共15分,在正确打上√,错误打 上X 1.快速原型模型可以有效地适应用户需求的动态变化。 () 2.数据字典是对数据流图中的数据流,处理过程、数据存储、数据的源和终点进行详细定义。() 3.统一的建模语言,是一种软件工程设计语言。() 4.模块化使程序设计比较方便,但比较难以维护。() 5.一个模块实际上就是一个进程。() 6.过程描述语言可以用于描述软件的系统结构。() 7.编程语言应该在软件概要设计时选择。() 8.如果通过软件测试没有发现错误,则说明软件是正确的。() 9.在进行概要设计时应加强模块间联系。() 10.一般人为,软件开发阶段是由设计、编码和测试三个基本活动组成() 11.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。()12.为了提高程序的易读性,尽可能使用高级语言或4GL编写程序。 () 13.为了加强软件维护作业的进度,应尽可能增加维护人员的数目。 () 14.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。() 15.确认测试计划应该在可行性研究阶段制定。()1、√2、√3、×4、×5、×6、×7、×8、×9、×10、×11、×12、√13、×14、√15、× 二、单选题:每题1分,共15分 1、以下哪一项不是软件危机的表现形式()

A、软件成本高 B、软件产率低 C、计算机技术发展快 D、软件质量得不到保证 2、软件工程由方法、工具和()三部分组成 A、算法 B、技术 C、文档 D、过程 3、软件生命周期终止的最典型原因是() A、错误太多 B、利润过低 C、可维护性过差 D、效率不高 4、软件在需要它投入使用时能实现其制定功能的概率称为软件的() A、兼容性 B、可靠性 C、坚固性 D、可用性 5、软件项目计划一般不包括以下哪项内容() A、培训计划 B、人员安排 C、进度安排 D、软件开发标准的选择和制定 6、计算机系统工程包含硬件、软件、人机及()工程 A、数据库 B、软件 C、CASE D、开发方法 7、SA法中,DFD图的某个处理过程分解后,一般不超过()处理过程 A、10 B、7 C、5 D、12 8、下列需求陈述中一致的是() A、所有命令响应时间应小于0.1s;BUILD命令的响应时间应小于5s B、所有命令响应时间应小于5s;BUILD命令的响应时间应小于1s C、BUILD命令的响应时间应小于5s;BUILD命令的响应时间应小于1s D、所有命令响应时间必须等于2s;BUILD命令的响应时间应小于3s

软件工程导论作业答案

学号_31009210** 姓名_朱某某班级_软件10* 作业一 1.什么是软件危机?它有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 “软件危机”包含两方面的问题: (1)如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产速率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的原因 (1)开发人员与客户认识之间的矛盾 (2)开发人员能力与开发目标之间的矛盾 (3)预估与实际工作量之间的矛盾 (4)客户认识的提高与软件维护之间的矛盾 (5)遗产系统与实施软件之间的矛盾 2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面比较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价俱增。在软件“已经完成”时再引入变动,当然付出的代价更高。一个故障时代码错误造成的,有时这种错误时不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?他有哪些本质特征?怎样用软件工程消除软件危机? 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。 本质特征: 软件工程关注于大型软件的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐地合作是开发软件的关键 软件必须有效支持它用户

软件工程导论第五版复习重点(必考题)

(最后部分为每年必考题) 第一章 1. .软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的. 2. 软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。 3. 产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 4. 面向对象方法学的四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件 2.把所有对象都划分成类3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。4.对象彼此间仅能通过发送消息互相联系。 5. 软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要) 6. 瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。 7. 微软过程把软件生命周期划分为成5个阶段:规划阶段,设计阶段,开发阶段,稳定阶段,发布阶段。 第二章 1.可行性包括:技术可行性,经济可行性,操作可行性。 2. 系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形势描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。4. 书库流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只描绘数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示。 5. 用系统流程图描绘一个系统时,系统的功能和实现每个功能的具体方案是混在一起的。有数据元素组成的数据的方式只有下述3种基本类型:顺序(即以确定次序连接两个或多个分量)。选择即从两个或多个可能的元素中选取一个重复即把指定的分量重复零次或多次

软件工程导论期末试题A(带答案)

评阅教师得分四川大学期末考试试题(闭卷)(2014~2015学年第1学期) 课程号: 311078040 课程名称:软件工程导论(A卷)任课教师:洪玫,刘东权,李旭伟等 适用专业年级:软件工程 2013级学号:姓名: 2. 请将答案全部填写在本试题纸上; 3. 考试结束,请将试题纸、添卷纸和草稿纸一并交给监考老师。 ????????????????????????????? 一、单项选择题(本大题共20小题,每小题1分,共20分) 提示:在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在 下表中。错选、多选或未选均无分。 1. Software is the collection of ( ). (A) Programs (B) Data (C) Documents (D) All of above 2.Which of the items listed below is not one of the software engineering layers? ( ) (A) Process (B) Methods (C) Tools (D) Manufacturing 3.The prototyping model of software development is ( ). (A) A reasonable approach when requirements are well defined. (B) The best approach to use for projects with large development teams. 注:试题字迹务必清晰,书写工整。本题共11页,本页为第1页

软件工程导论课后题

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)软件产品的质量往往靠不住。(3)一般软件很难维护。(4)软件生产效率很低。(5)软件开发成本越来越大。(6)软件成本与开发进度难以估计。(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机? (1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 3.怎样克服软件危机? (1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。(2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 5-1。(1)在1985年对计算机存储容量的需求,估计是 如果字长为16位,则这个存储器的价格是 ● ●(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。 ●在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人每月可开发出10×20条指令。 ●为了开发出4474263条指令以装满存储器,需要的工作量是: ●程序员的月平均工资是4000美元,开发出4474263条指令的成本是 ●(3)在1995年对存储容量的需求估计为: ● 7 4080e =4472.0048.01974 1985??=-P )19601995(28.04080-=e M

(完整版)软件工程导论(第5版)习题二答案

P53 习题二 4.目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于 不能随时观察病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并且分析开发这个系统的可行性。 医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏体温血压心电图等)定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围试向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。 答: 问题定义:某医院打算开发一个以计算机为中心的患者监护系统是为了更好地让医生监护病人的生理信号(脉搏、血压、心电图等)的变化,定时记录病人情况以形成患者日志,防止没能及时发现危重病人的病情恶化而耽误抢救时机的现象出现;当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。 可行性研究: (1)技术可行性:开发系统的计算机硬件已经非常普及,现在的计算机各方面的技术都非常成熟,相对来说开发此系统的技术也要求比较简单,因此在技术方面是可行的;同时医院还必须有一定量的系统管理和维护的专业人员。医院的患者监护系统由三部分构成:监护中心、护士监听部分和 Internet医疗网站。监护中心通过Internet与护士监护部分、Internet连接、把监听到的患者声音、视频信息以及影像资料通过通讯网络实时传送到护士监听部分(便于护士随时掌握患者的生理状况)和Internet医疗中心(有利于实现生理数据的共享)。 因此技术上分析是可行的。 (2)经济可行性:随着经济越来越发达,人们可以支付的治疗疾病的花费也挺高了,因此其开发具有广阔的市场。目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察病人的病情变化,还可能会延误抢救时机。当前的社区医疗保健系统还不够完善,大多数据收集工作主要采取手工方式;并且信息不利于共享,采集的资料存在一台计算机里,社区中心与居民之间不能建立起随时访问和被采访的关系。 (3)操作可行性:计算机的普及使人们对以计算机为中心的患者监护系 统的使用做了铺垫,系统的操作人员需要经过专业的人员指导以及培训。 (4)法律可行性:医院想要使用患者监护系统需要购买正版的软件,机 器设置也需要通过正当途径购买。 5.北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成, 第1位数字不是零;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本地电话再接着拨8位数字(第一位不是0),若是外地电话则拨3位区码再拨8位电话号码(第一位不是0)。 用2.5.2小节讲诉的数据定义的方法,定义上述电话号码。 答:电话号码=[校内电话号码|校外电话号码]

相关主题