

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1软件工程作业及答案1-1 什么是软件危机 ?它有哪些典型表现 ?为什么会出现软件危机 ?答: 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括地说,软件危机包含 下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。软件危机典型表现:对软件开发成本和进度的估计常常很不准确。用户对“已完成的”软件系统不满意 的现象经常发生。软件产品的质量往往靠不住。软件常常是不可维护的。软件通常没有适当的文档资料。 软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率提高的速度,远远跟不上计算机应 用迅速普及深入的趋势。产生软件危机的原因:
2、 一方面与软件本身的特点有关, 另一方面也和软件开发与维护的方法不正确有关。 软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。管理和控制软件开发过程相当困难。软 件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。目前相当多的软件专业人员对软件 开发和维护还有不省糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展 成软件危机的主要原因。1-2 假设你是一家软件公司的总工程师, 当你把图 1.1 给手下的软件工程师们观看, 告诉他们及早发现并改 正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例 说: “如果一
3、个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他 ?1-3 什么是软件工程 ?它有哪些本质特性 ?怎样用软件工程消除软件危机 ?答: 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来 开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以 经济地开发出高质量的软件并有效地维护它。软件工程本质特性: 1、软件工程关注于大型程序的构造; 2、软件工程的中心课题是控制复杂性; 3、 软件经常变化; 4、开发软件的效率非常重要; 5、和谐地合作是开发软件的关键; 6、软件必须有效地支持 它的用户; 7
4、、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。消除软件危机的途径:为了消除软件危机,首先应该对计算机软件有一个正确的认识。必须充分认识 到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同 完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更 有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。应该开发和使用更 好的软件工具。为了解决软件危机,既要有技术措施(方法和工具) ,又要有必要的组织管理措施。 1-6 什么是软件过程 ?它与软件工程方法学有何关系 ?答:
5、 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作 步骤。软件工程方法学包含软件过程。1-7 什么是软件生命周期模型 ?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种 模型的适用范围。答: 生命周期模型简洁地描述软件过程,规定了把生命周期划分成哪些阶段及各个阶段执行顺序。瀑布模型历史悠久、广为人知,它的优势在于它是规范的、文档驱动的方法;这种模型的问题是,最 终开发出的软件产品可能并不是用户真正需要的。快速原型模型正是为了克服瀑布模型的缺点而提出来的。它通过快速构建起一个可在计算机上运行的 原型系统,让用户试用原型并收集用户反馈意见的办法
6、,获取用户的真实需求。增量模型具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但是,要求软件具有 开放的结构是使用这种模型时固有的困难。风险驱动的螺旋模型适用于内部开发的大型软件项目,但是,只有在开发人员具有风险分析和排除风 险的经验及专门知识时,使用这种模型才会获得成功。快速原型模型:适合小型软件;螺旋模型:适合内部开发的大规模软件项目。2-1 在软件开发的早期阶段为什么要进行可行性研究 ?应该从哪些方面研究目标系统的可行性 ?答: 可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。至少应该从下述 三方面研究每种解法的可行性: (1)技术可行性; (2)
7、经济可行性;(3)操作可行性。2-5 北京某高校可用的电话号码有以下几类: 校内电话号码由 4 位数字组成, 第 1 位数字不是 0;校外电话 又分为本市电话和外地电话两类, 拨校外电话需先拨 0,若是本市电话则再接着拨 8 位数字(第 1 位不是 0), 若是外地电话则拨 3 位区码再拨 8 位电话号码 (第 1 位不是 0)。请用 2.5.2 小节讲述的定义数据的方法,定义上述的电话号码。答:电话号码=校内电话 I 本市电话 I 外地电话非零数字字符 =1|2|3|4|5|6|7|8|9校内电话 =非零数字字符 +3数字 3本市电话 =0+非零数字字符 +7 数字7外地电话 =0+区码+非
8、零数字字符 +7数字73-1 为什么要进行需求分析 ?通常对软件系统有哪些需求 ?答:为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是 软件开发工作获得成功的前提条件,不论我们把设计和编码工作做得如何出色,不能真正满足用户需求的 程序只会令用户失望,给开发者带来烦恼。确定对系统的综合要求: 1、功能需求; 2、性能需求; 3、可靠性和可用性需求; 4、出错处理需求; 5、2接口需求;6、约束;7、逆向需求;8、将来可以提岀的要求,分析系统的数据要求。3-2 怎样与用户有效地沟通以获取用户的真实需求?答:与用户沟通获取需求的方法:访谈;面向数据流自顶向下求精;
9、简易的应用规格说明技术;快速建立 软件原型3-3 银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存 款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密 码(可选)等信息,并印岀存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密 码正确或存款时未留密码,则系统计算利息并印岀利息清单给储户。请用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。答:4- 2 在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?答:在开发大型软件系统的过程中应该使用形式化说明技术。
10、应用形式化方法的准则:(1)应该选用适当的表示方法。(2)应该形式化,但不要过分形式化。 (3) 应该估算成本。(4)应该有形式化方法顾问随时提供咨询。 (5)不应该放弃传统的开发方法。 (6)应该建 立详尽的文档。(7)不应该放弃质量标准。(8)不应该盲目依赖形式化方法。(9)应该测试、测试再测试。(10)应该重用。5- 4 美国某大学共有 200 名教师,校方与教师工会刚刚签订一项协议。按照协议,所有年工资超过$26000(含$ 26 000)的教师工资将保持不变,年工资少于$26 000 的教师将增加工资,所增加的工资数按下述方法计算:给每个由此教师所赡养的人(包括教师本人)每年补助$
11、100,此外,教师有一年工龄每年再多 补助$ 50,但是,增加后的年工资总额不能多于$26 000。教师的工资档案储存在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇用日期等信息。需要写一个程序计算并印岀每名教师的原有工资和调整后的新工资。要求:(1) 画出此系统的数据流图;(2) 写出需求说明;(3)设计上述的工资调整程序(要求用 HIPO 图描绘设计结果),设计时请分别采用下述两种算法,并比较这两种算法的优缺点:(a)搜索工资档案数据,找出年工资少于$26 000 的人, 计算新工资,校核是否超过$26 000 ,储存新工资,印岀新旧工资对照表;3(b)把工资档案数据按工资从最低
12、到最高的次序排序,当工资数额超过$26 000 时即停止排序,计算新工42600 的教师涨工资:每赡养 1 人补助$100,每有一年工龄补助$50,涨工资上限为$2600;2.数据描述:数据库描述:工资表、VF3.功能需求:对于年工资未超过$所画的流程图适合(a)种算法6-8 画岀下列伪码程序的流图,计算它的环形复杂度。你觉得这个程序的逻辑有什么问题吗 C EXAMPLELOOP:DO WHILE Z0A=B+1IF A10THEN X=AELSE Y=ZEND IFIF Y0THEN PRINT CELSE PRINT KENDIFSTOP2600的教师涨资,校核是否超过限额,储存新工资,印
13、岀结果答:1.任务概述:对于年工资未超过$工龄补助$50,涨工资上限为$2600;5答:对应的流图环形复杂度:V( G) =E-N+2=17-13+2=6存在的逻辑问题:1)当 Z0 时易形成死循环.2) 条件 Y5 包含条件6-9 把统计空格程序的 Jackson 图(下图)改画为等价的程序流程图和盒图。Y=22,36710467-8 对一个包含 10000 条机器指令的程序进行一个月集成测试后,总共改正了15 个错误,此时 MTTF=10h;经过两个月测试后,总共改正了25 个错误(第二个月改正了 10 个错误),MTTF=15h要求: 根据上述数据确定 MTTF 与测试时间之间的函数关系
14、,画出MTTF 与测试时间T的关系曲线。在画这条曲线时做了什么假设?(2)为做到 MTTF=100h 必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?答:(1) 所做假设:1)单位长度里的错误数近似为常数;2)失效率正比于软件中剩余的错误数,而平均无故障时间与剩余的错误数成反比3)发现的每一个错误都立即正确地改正了(2) 由 Shooman 公式:MTTF=T/(K*(ET-EC(T)其中,IT=104,MTTF1=10,n1=15,MTTF2=15,n2=25。得:MTTF=IT/(K*(ET-EC(T1)10=10000/(K*(ET-15)M
15、TTF=IT/(K*(ET-EC(T2)15=10000/(K*(ET-25)(1) 解得程序中固有的错误总数ET=45,此外 K=100/3。(2) 设 MTTF=100 有100=10000/( 100/3 )*(45-X)解得X=42。所以,当集成测试结束时,改正了42 个错误,还剩 3 个错误。7-9 如对一个长度为 100000 条指令的程序进行集成测试期间记录下下面的数据:(a) 7 月 1 日:集成测试开始,没有发现错误。(b) 8 月 2 日:总共改正 100 个错误,此时 MTTF=0.4h(c) 9 月 1 日:总共改正 300 个错误,此时,MTTF=2h答:7根据上列数
16、据完成下列各题:(1) 估计程序中的错误总数;为使 MTTF 达到 10h,必须测试和调试这个程序多长时间?画出 MTTF 和测试时间T之间的函数关系线。答:由 Shooman 公式:MTTF=IT/(K*(ET-EC(T)5其中, IT=105,MTTF1=0.4,T1=160,n1=100,MTTF2=2,T2=320,n2=300。得:MTTF1=IT/(K*(ET-EC(T1) 0.4=100000/(K*(ET-100) MTTF2=IT/(K*(ET-EC(T2) 2=100000/(K*(ET-300)(1) 解得程序中固有的错误总数 ET=350, 此外 K=1000。(2)
17、设 MTTF=10 有10=100000/(1000*(350-x)解得 x=340。由可靠性积累曲线 &(t)=ET(1-exp (-Kit)得: 100=350*(1-exp ( -160K1) ) 300=350*(1-exp( -320K1) )解得: K=0.01。 代入 340=350*(1-exp(-K1t) )= 350*(1-exp(-0.01t ),得: t=(ln(35)/0.01=356h因此求得为使 MTTF=10,测试和调试该程序需要花费365h。8- 1 软件的可维护性与哪些因素有关 ?在软件开发过程中应该采取哪些措施才能提高软件产品的可维护性?答:1、决
18、定软件可维护性的因素主要有下述 5 个:1、可理解性;2、可测试性; 3、可修改性; 4、可 移植性;5、可重用性。在软件工程过程的每一个阶段都应该考虑并努力提高软件的可维护性,在每个阶段结束前的技术审查 和管理复审中,应该着重对可维护性进行复审。在需求分析阶段的复审过程中,应该对将来要改进的部分和可能会修改的部分加以注意并指明;应该 讨论软件的可移植性问题,并且考虑可能影响软件维护的系统界面。在正式的和非正式的设计复审期,应该从容易修改、模块化和功能独立的目标出发,评价软件的结构 和过程;设计中应该对将来可能修改的部分预作准备。代码复审应该强调编码风格和内部说明文档这两个影响可维护性的因素。
19、 在设计和编码过程中应该尽量使用可重用的软件构件,如果需要开发新的构件,也应该注意提高构件的可重用性。 每个测试步骤都可以暗示在软件正式交付使用前,程序中可能需要做预防性维护的部分。 在测试结束时进行最正式的可维护性复审 .在完成了每项维护工作之后,都应该对软件维护本身进行仔细认真的复审。维护应该针对整个软件配 置,不应该只修改源程序代码。每当对数据、软件结构、模块过程或任何其他有关的软件特点做了改动时, 必须立即修改相应的技术文档。9- 1 什么是面向对象方法学?它有哪些优点?答:OO=objects+classes+inheritance+communication with messag
20、es 也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。面向对象方法学的优点: 1 、与人类习惯的思维方法一致; 2、稳定性好; 3、可重用性好; 4、较易开 发大型软件产品; 5、可维护性好。9-5 什么是模型 ?开发软件为何要建模 ?答:所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。模 型是一种思考工具,利用这种工具可以把知识规范地表示出来。为了开发复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐渐把和实现有
21、关的细节加进模型中,直至最终用程序实现模型。对于那些因过分复杂而不能直接理解的系统,特别需要建立模型, 建模的目的主要是为了减少复杂性。8应该依据什么准则来评价用例图、脚本和状态图 ?11-1 面向对象设计应该遵循哪些准则 ?简述每条准则的内容,并说明遵循这条准则的必要性。答: 面向对象设计准则: 1、模块化; 2、抽象; 3、信息隐藏; 4、弱耦合; 5、强内聚; 6、可重用。11-2 简述有助于提高面向对象设计质量的每条主要启发规则的内容和必要性。答: 1、设计结果应该清晰易懂,使设计结果清晰、易读、易懂,是提高软件可维护性和可重用性的重要措施; 2、一般、特殊结构的深度应适当,应该使类等
22、级中包含的层次数适当;3、设计简单的类,应该尽量设计小而简单的类, 以便于开发和管理; 4、使用简单的协议, 一般说来, 消息中的参数不要超过 3 个; 5、使用简单的服务,一般只有 3 5 行源程序语句,可以用仅含一个动词和一个宾语的简单句子描述它的 功能; 6、把设计变动减至最小,即使出现必须修改设计的情况,也应该使修改的范围尽可能小。12-1 面向对象实现应该选用哪种程序设计语言?为什么?答: 开发人员在选择面向对象语言时,还应该着重考虑以下一些实际因素。1、将来能否占主导地位,为了使自己的产品在若干年后仍然具有很强的生命力;2、可重用性,采用面向对象方法开发软件的基本目的和主要优点,是
23、通过重用提高软件生产率;3、类库和开发环境,决定可重用性的因素,不仅仅是面向对象程 序语言本身,开发环境和类库也是非常重要的因素;4、其他因素,对用户学习面向对象分析、设计和编码技术所能提供的培训服务;在使用这个面向对象语言期间能提供的技术支持;能提供给开发人员使用的开 发工具、开发平台、发行平台;对机器性能和内存的需求;集成已有软件的容易程度等。12-4 良好的面向对象程序设计风格主要有哪些准则?答: 良好的面向对象程序设计风格, 即包括传统的程序设计风格准则, 也包括为适应面向对象方法所 特有的概念 (例如,继承性)而必须遵循的一些新准则。提高可重用性: 1、提高方法的内聚; 2、减小方法的规模; 3、保持方法的一致性; 4、把策略与实现 分开; 5、全面覆盖; 6、尽量不使用全局信息; 7、利用继承机制。提高可扩充性: 1、封装实现策略; 2、不要用一个方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上市企业市值管理办法
- 电玩城库存管理办法
- 上海返乡人员管理办法
- 自然角区域管理办法
- 融资业务贷款管理办法
- 综合部材料管理办法
- 个人活期账户管理办法
- 粮油厂分级管理办法
- 中国设备租赁管理办法
- 上海灯光设置管理办法
- 大学信息与网络安全保密管理办法
- 李中莹 亲子关系全面技巧
- 音乐《上学歌》课件
- PMC部门运作流程对下达的生产计划任务合理性负责
- 防止电力电力建设施工安全事故三十项重点要求考试题
- 绿色校园创建资料
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 六三制新青岛版四年级科学上册第一单元《动物王国》全部课件(一共5课时)
- OpenVPX标准和架构精选课件
- 历史八年级上册电子课件:第2课 第二次鸦片战争
- 消防安全培训及应急演练主题教育课件PPT模板宣传PPT动态PPT
评论
0/150
提交评论