ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:1.62MB ,
资源ID:10561873      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10561873.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件工程导论作业第一章.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件工程导论作业第一章.docx

1、软件工程导论作业第一章第一章习题1. 什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括的说,软件危机包含以下两方面的问题:如何开发软件和如何维护数量不断膨胀的已有软件。 软件危机主要有以下一些典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的“软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

2、出现软件危机,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关(1)软件不同于硬件,缺乏“可见性“,规模庞大,而且程序复杂性随着程序规模的增加而指数上升,软件本身的特点确实给开发和维护带来一些客观问题;(2)人们在开发和维护,忽视软件需求分析的重要性,认为软件开发就是写程序并设法使之运行,轻视软件维护。3 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机? 软件工程是指导计算机软件开发和维护的一门工程学科。软件工程的本质特性:1软件工程关注于大型程序的构造。2软件工程的中心课题是控制复杂性。3软件经常变化。4开发软件的效率非常重要。5和谐的合作是开发软件的关键

3、。6软件必须有效的支持它的用户。7在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。用软件工程消除软件危机的7条定理:1.用分阶段的生命周期计划严格管理。2坚持进行阶段评审。3实行严格的产品控制。4采用现代程序设计技术。5结果应能清楚的审查。6开发小组的人员应该少而精。7承认不断改进软件工程实践的必要性。4.什么是软件过程?它与软件工程方法学有何关系?软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。5. 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。结构化范型采用了结构化技术来完成软件开发的各项任务,并使用适当的软件

4、工具或软件工程环境来支持结构化技术的运用。 优点:这种方法学为广大软件工程师所熟悉,在开发某些类型的软件时比较有效。面向对象范型有四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件结构。2.把所有对象都划分成了类。3.按照父类和子类的关系,把若干个相关类组成一个层次结构的系统。4.对象彼此间仅能通过发送信息互相联系。优点:降低了产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。还促进了软件的可重用性。6. 什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。软件生存周期是指从软件定义、开发、使用、维护到淘汰的全

5、过程。瀑布模型:优点:1.可强迫开发员采用规范的方法2.严格地规定了每个阶段必须提交的文件3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。缺点:传统的瀑布模型过于理想化,是由文档驱动的。快速原型模型:通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要。增量模型:优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。螺旋模型优点:对可选方案和约束条件的强调有利于已有软件的重用;减少了过多测试;维护只是螺旋模型中另一个周期。第

6、二章习题7.在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。从三个方面研究每种解法的可行性(1)技术可行性(2)经济可行性(3)操作可行性可行性研究过程的步骤1、复查系统规模和目标2、研究目前正在使用的系统3、导出新系统的高层逻辑模型4、进一步定义问题5、导出和评价供选择的解法6、推荐行动方针7、草拟开发计划8、书写文档提交审查8 北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0.校外电话又分为本市电话和外地电话两类。拨校外电话需要先拨0,若是本市电话则接着

7、拨8位数字(第一位不是0),若是外地电话则拨3位区码后再拨8位电话号码(第一位不是0)。用定义数据的方法,定义上述的电话号码。答:电话号码 校内电话号码校外电话号码校内电话号码 非零数字 位数字校外电话号码 本市号码外地号码本市号码 数字零 位数字外地号码 数字零 位数字 位数字非零数字 数字零 位数字 数字位数字 非零数字 位数字位数字 数字数字 其中, 意思是或,从校内电话号码或校外电话号码中选择一个; 表示重复,两边的数字表示重复次数的下限和上限;=意思是定义为;+意思是和,连接两个分量。第三章习题9为什么要进行需求分析?通常对软件系统有哪些需求?答:“需求分析”确定系统必须完成哪些工作

8、,也就是对目标系统提出完整、准确、具体的要求。为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求,只有深入理解了用户的需求,我们的工作才会有意义。对软件通常有以下需求:功能需求:指定系统必须提供的服务;性能需求:指定系统必须满足的定时约束或容量约束,通常包括速度、信息量速率、主存容量、磁盘容量、安全性等方面的需求;可靠性和可用性需求:指定系统的可靠性,可用性量化了用户可以使用系统的程度; 出错处理需求:说明系统对环境错误应该怎么响应;接口需求:描述应用系统与它的环境通信的格式;逆向需求:说明软件系统不应该做什么;将来可能提出的要求:应该明确列出那些虽然不属于当前系统开发范畴,但是据分

9、析将来很可能会提出来的要求。10怎样与用户有效地沟通以获取用户的真实需求?答: (1)初步需求获取,通过访谈与会议、问卷调查、观察用户工作流程等方法;(2)面向数据流,自顶向下求精(3)简易的应用规格说明(4)快速建立软件原型复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行11.复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。请用状态转换图

10、描绘复印机的行为。从问题陈述可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。引起状态转换的事件主要是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故障”。状态转换图如下:第五章习题5-1.为每种类型的模块耦合举一个具体的例子。(1)非直接耦合例如,两个模块没有直接关系(模块1和模块2),模块独立性最强。(2)数据耦合例如,下左图(3)特征耦合例如,上右图“住户情况”是一个数据结构,图中模块都与此数据结构有关。“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。(4)控制耦合-模块A通过传送开关、标志

11、、名字等控制信息,明显地控制选择模块B的功能,例如下图(5)外部耦合例如,下左图,模块A、B均需使用共享打印机(6)公共环境耦合例如,上右图,模块A、B、C共享全局变量数组(7)内容耦合例如,一个过程非正常地进入另一个过程SubAA()gotoLEndsubSubBB()L:Endsub为每种类型的模块耦合举一个具体的例子?另一种答法答:耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问某一模块的点,以及通过接口的数据,一般模块之间可能的连接方式有7种,构成耦合的7种类型,它们之间的关系为:下面举例说明以上各种耦合:a非直接耦合(Nondirect

12、Coupling)在这种情况下,两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。例如在实数的运算中,有两个模块分别完成几个实数的求和,求乘积功能,这两个模块之间没有直接联系,只有在主模块调用中有执行的前后顺序而已,这个例子即属于非直接耦合。b数据耦合(DataCoupling)即一个模块访问另一个模块时,彼此之间是通过数据参数来交换输入,输出信息的,这种耦合为数据输入,输出信息的这种耦合为数据耦合。如有两个模块,其中A完成两个烽的比较,求出其中最大的并返回该值,模块B是完成了个数的比较,求出其中最大的并返回该最大值,为完成四个数的比较,模块B调用

13、模块A即可完成,在这种调用关系中,模块A的运算结果作为一个参烽参加B的运算,这两个模块之间即发生数据耦合。数据耦合是松散的耦合,模块间的独立性比较强。c标记耦合(StampCoupling),即一组模块通过参数传递记录信息,这就是标记耦合。事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。d控制耦合(ControlCoupling)即一个模块通过开关标志,名字等控制住处明显的控制,选择另一模块的功能,这就是控制耦合,如下图所示,这一种耦合实质是在单一接口上实现选择多功能模块中的某项功能,如程序设计中用到多路选择结构即是最好的例子。e外部耦合(ExternalCoupli

14、ng)即一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递全局数据结构,而且不是通过参数表传递全局变量的信息。如C语言中都访问被说明为extern类型的外部变量的各个模块之间即发生外部耦合。外部耦合引起的问题类似于下面要介绍的公共耦合,区别在于外部耦合中不存在依赖于一个数据结构内部各项的物理安排。f公共耦合(CommonCoupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就是公共耦合。公共的数据环境可以是全局的数据结构,共享的通信区,内存的公共覆盖区等。如几个模块对同一个数据库的查询就属于这种耦合。公共耦合可以分为松散的公共耦合和紧密的公共耦合,其中

15、松散的公共耦合是单向操作,如两个或多个模块对同一个文件的读操作;而紧密的公共耦合是双向的操作,如两个或多个模块对同一文件的读写操作。下面用图表示松散的和紧密的公共耦合。g内容耦合。即有下列情况时即出现内容耦合。(1)一个模块访问另一个模块数据;(2)一个模块不通过正常入口而转到另一个模块的内部;(3)两个模块有一部分代码重叠;(4)一个模块有多个入口。2、为每种类型的模块内聚举一个具体例子。答:内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化的自然扩展,一般模块的内聚性分为7种,它们的关系如下图示:下面举例说明各种内聚的情况a偶然内聚。即模块内各部分之间没有联系,或者即使有联

16、系也很松散,这种即为偶然内聚,它是内聚程度最低的模块。如一些没有任何联系的语句可能在许多模块中重复多次,程序员为了节省存储,把它们抽出来组成一个新的模块,这个模块就是偶然内聚模块,例如C语言中的defineTRYODBCCb.逻辑内聚(LogicalCohesion)即这种模块把几种功能组合在一起,每次调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。如根据输入的控制信息,或从文件中读入一个记录,或向文件写出一个记录。c时间内聚(ClassicalCohesion)这种模块大多数为多功能模块,但模块的各人功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行,例如初始化模块和终

17、止模块。d过程内聚(ProceduralCohesion)即一个模块内的处理是相关的,而且必须以特定次序执行,则这个模块称为过程内聚模块。例如我们把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。e通信内聚(CommunicationCohesion)如果一个模块内部各功能部分都使用可相同的数据输入,或产生了可相同的数据输入,或产生了可相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。f顺序内聚,即一个模块内处理元素和同一功能紧密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据据作为下一处理元素的输入数据)如在对员工加工

18、资的数据库操作中,读取数据和更新数据即具有顺序内聚的关系。g功能内聚(FunctionalCohesion)即模块内部所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚,功能内聚是最高程度的内聚。第六章习题1假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作?答:转化如下:K=1DOWHILE(条件.AND.K.EQ.1)程序块1K=K+1ENDDODOWHILE((.NOT.条件).AND.K.EQ.1)程序块2K=K+1ENDDO2假设允许使用SEQUENCE和IF_THEN_ELSE两种控制结构,怎样利用它们完成DO_WHILE

19、操作?答:转化如下;label:IF(条件)THEN程序块GOTOlabelELSE程序块ENDIF3画出下列伪码程序的程序流程图和盒图:STARTIFpTHENWHILEqDO fENDDOELSEBLOCKgnENDBLOCKENDIFSTOP答:(1)流程图如图6-1所示:7.某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额

20、的4%加上134元。当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。要求:(1)用判定表表示手续费的计算方法;(2)用判定树表示手续费的计算方法判定表的每一列是一条计算规则。例如,第1列(规则l)规定,当交易总金额P少于1,000元,且每股售

21、价Q低于l4元,且交易的股数n是l00的倍数时,给经纪人的手续费为:(1+005)0084P第16列(规则l6)表明,当交易总金额P超过l0,000元,且每股售价Q在14元到25元之间,且交易的股数n不是l00的倍数时,手续费为:(1+006)X(004P+134)图6-7判定树8画出下列伪码程序的流图,计算它的环形复杂度。你觉得这个程序的逻辑有什么问题吗?CEXAMPLELOOP:DOWHILEX0A=B+1IFA10THENX=AELSEY=ZENDIFIFY0THENPRINTGELSEPRINTKENDIFSTOP环形复杂度V(G)=流图中的区域数=流图中判定结点数目+1=6+1=7=

22、节点数E-弧数n+2=19-12+1=7(2)该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没有任何有可能该变Z的语句。因此,该段代码中的WHILE循环部分代码要么不会执行,要么可能出现死循环。第七章习题7-4什么是模块测试和集成测试?它们各有什么特点?答:模块测试是对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。其特点是:主要应用白盒测试的技术,对多个模块的测试可以并发的进行。集成测试是把模块装配在一起形成完整的软件包,在装配的同时进行测试。特点是:可能发生接口问题。为什么有了白盒测试还要有黑盒测试

23、? 白盒测试发现程序的隐患,内存泄漏,误差累计问题,黑盒测试在这方面存在严重的不足。黑盒测试只有测试软件外部的表现,即使软件的输入、输出都是正确的,都不能说明软件是正确的,因为程序有可能用错误的运算方式得出正确的结果。白盒测试优点:(1)可构成测试数据使特定程序部分得到测试。(2)有一定的充分性度量手段(3)可获得较多工具支持。 缺点:(1)不易生成测试数据(2)无法对未实现规格说明的部分进行测试(3)工作量大,通常只用于单元测试,有应用局限。黑盒测试优点: (1)适用于各阶段测试(2)从产品功能角度测试(3)容易入手生成测试数据。 缺点:(1)某些代码得不到测试(2)如果规则说明有误则无法发

24、现(3)不易进行充分性测试。78.对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。要求:(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间的关系曲线。在画这条曲线时做了什么假设?(2)为做到MTTF=100h,必须进行多长时间的集成测试?(3)当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?解答:(1)因为平均无故障时间MTTF与测试时间之间存在线性关系,即MTTF=a+b,由于:10=a+b,15=a+2b,

25、得到:a=5,b=5故:平均无故障时间MTTF与测试时间之间存在线性关系为:MTTF=5+5(2)为做到MTTF=100h,有方程:100=5+5,故=19即必须进行19个月的集成测试。(3)由于经验:平均无故障时间与单位长度程序中剩余的错误数成反比,故有:MTTF=10000/(K*(ET-EC()由于:10=10000/(K*(ET-15),15=10000/(K*(ET-25)得到:ET=45,K=33.33当集成测试结束时,MTTF=100h,有:100=10000/(33.33*(45-EC(19)故:EC(19)=42,即当集成测试结束时总共改正了42个错误,还有45-42=3个错

26、误潜伏在程序中。7-9如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据:(a)7月1日:集成测试开始,没有发现错误。(b)8月2日:总共改正100个错误,此时MTTF=0.4h(c)9月1日:总共改正300个错误,此时,MTTF=2h根据上列数据完成下列各题:(1)估计程序中的错误总数;(2)为使MTTF达到10h,必须测试和调试这个程序多长时间?(3)画出MTTF和测试时间之间的函数关系线。(1)据估算平均无故障时间MTTF的公式有:1/K(Et/100000-100/100000)=0.41/K(Et/100000-300/100000)=2得:K1000,Et=35

27、0即程序中的错误总数达350。(2)当MTTF10h时,有1/K(350/100000-Ec/100000)=10得:Ec=340.按七八月分测试改错进度估算,还需进行2个月的集成测试。(3)MTTF和测试时间之间的函数关系曲线如下:710.在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。与此同时,乙发现24个错误,其中6个甲也发现了。以后由甲一个人继续测试这个程序。问:(1)刚开始测试时程序中总共有多少个潜藏的错误?(2)为使MTTF达到60h,必须再改正多少个错误?还需用多长测试时间?(

28、3)画出MTTF与集成测试时间之间的函数关系曲线。解答:(1)本题中采用的是分别测试法,测试前程序中的错误总数:B0=B1*B2/bc=20*24/6=80(2)由于经验:平均无故障时间与单位长度程序中剩余的错误数成反比,故有:MTTF=24000/(K*(ET-EC()由于:10=24000/(K*(80-20)得到:K=40为使MTTF达到60h,有:60=24000/(40*(80-EC()故:EC()=70,即总共需要改正70个错误,由于测试员甲和乙分别测试时,测试员甲已经更正了20个错误,以后由甲一个人继续测试这个程序,因此,还需要更正70-20=50个错误。覆盖测试1.为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。三、条件覆盖对于第一个判定(X8ANDY5)条件X8取真值记为T1,取假值记为-T1条件Y5取真值记为T2,取假值记为-T2对于第二个判定(X0ORY0)条件X0取真值记为T3,取假值记为-T3条件Y0取真值记为T4,取假值记为-T4对于第三个判定(X16O

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1