软件工程课后题答案.docx
《软件工程课后题答案.docx》由会员分享,可在线阅读,更多相关《软件工程课后题答案.docx(39页珍藏版)》请在冰豆网上搜索。
软件工程课后题答案
第一章
1简述软件发展过程。
共经历了四个阶段;
第一阶段:
(20世纪50年代初期到60年代初期十余年)计算机系统开发初期。
第二阶段:
(20世纪60年代中期到70年代中期十余年)软件产品和“软件作坊”概念开始出现。
软件开发人员不再像早期阶段那样只因个人工作需要而开发,而是为了用户更好地使用计算机。
第三阶段:
(20世纪70年代中期到80年代末期)分布式系统嵌入“智能”;硬件价格下降,软件价格急剧上升,导致了软件危机加剧。
第四阶段:
(20世纪80年代末期开始)强大桌面系统和计算机网络迅速发展。
2简述软件定义和特点。
定义:
软件是计算机程序、规程以及运行计算机系统可能需要相关文档和数据。
特点:
(1)是一种逻辑实体,具有抽象性;
(2)软件生产不存在明显制造过程;
(3)在软件运行和使用过程中,不会存在像硬件那样机械磨损及老化问题;
(4)由于对计算机系统依赖性,对软件通用性造成了一定影响;
(5)软件开发方式还没有完全脱离手工开发方式,还不能完全采用组装方式进行软件开发;
(6)作为提高工作效率逻辑产品,本身具有复杂性;
(7)成本相当昂贵;
(8)相当多软件工作设计社会因素。
3软件有哪些种类
1.按功能特征进行划分
(1)系统软件。
(2)支撑软件。
(3)应用软件
2.按规模大小进行划分
微型、小型、中型、大型、甚大型、、极大型
4什么是软件危机?
答:
是指在计算机软件开发和维护过程中所遇到一系列严重问题。
5什么是软件工程?
有哪些本质特性?
怎样用软件工程消除软件危机?
答:
是指导计算机软件开发和维护一门工程学科。
特性略。
技术措施和管理措施消除软件危机。
6软件工程三要素;
方法、工具和过程。
7.结合自己亲身经历,谈谈软件工具在软件开发过程中作用。
使软件开发更加模式化,工程化,从而提高软件开发效率和封装性。
8.CASE研究和CASE产品开发是近年来软件工程领域特点之一。
请列举数种你所熟悉CASE工具或环境,综述它们概念和优缺点,并分析其实现方法。
rose、“数据字典”(工具)
第二章
1.什么是软件生命周期?
它有哪些活动?
软件生命周期是指软件产品从考虑其概念开始到交付使用,直至最终退役为止整个过程。
软件生存周期可以划分为软件定义、软件开发和运行维护3个时期
2.每一种过程模型优点和缺点分别是什么?
瀑布模型:
优点:
它在软件发展早期,为开发人员提供了一种开发基本框架,有利于大型软件开发过程中人员组织、管理,有利于软件开发方法和工具研究和使用,从而提高了大型软件项目开发质量和效率。
缺点:
(1)在软件开发初始阶段指明全部需求是非常困难,有时甚至是不现实
(2)需求一旦确定,用户和软件项目负责人要等一段时间(经过设计、实现、测试、运行个阶段)才能得到一份软件最初版本。
(3)瀑布模型中软件活动是文档驱动,当阶段之间规定过多文档时,会大大增加软件开发工作量;而且当管理人员以文档完成情况来评估项目完成进度时,往往会产生错误结论,因为后期测试阶段发现问题会导致返工,前期完成文档只不过是一个未经返工修改初稿而已。
原型模型:
优点:
原型系统能够逐步明确用户需求,可以适应需求变化性,而且由于用户参及到软件开发过程,能够及早发现问题、降低软件开发风险,加快软件产品形成,降低软件开发成本。
缺点:
(1)对于大型软件项目,如果不经过系统分析并对系统进行整体划分,直接用原型来
模拟系统功能是十分困难。
(2)对于计算量大、逻辑性较强程序模块,原型法很难真正构造出来供用户评价。
(3)对于批处理系统,其大部分处理是内部进行,应用原型方法有一定困难。
(4)原型快速构造特点导致项目文档容易被忽略,给原型后期改进和维护造成困难。
(5)在原型建立中许多工作进展会被浪费掉,特别是对于丢弃型原型策略。
在一定程度上,增加了系统开发成本,降低系统开发效率。
螺旋模型:
喷泉模型:
优点:
可以提高软件项目开发效率,节省开发时间。
缺点:
由于各个开发阶段重叠性,开发人员管理和阶段生成文件管理存在困难。
增量模型:
优点:
(1)是能在较短时间内,向用户提交可完成部分工作产品。
(2)逐步增加产品功能,可以使用户有较充裕时间学习和适应新产品,从而减少一个全新软件可能给客户组织带来冲击。
缺点:
增量力度选择也很难把握,有时候很难将客户需求映射到适当规模增量上。
构件组装模型:
优点:
这大大提高了软件开发效率,而且构件模型允许多个项目同时开发,降低了费用,提高了可维护性。
缺点:
由于存在多种构件标准,缺乏通用构件组装结构标准,如果自行定义标准话,会引入较大风险;构件可重用性和软件系统高效性之间不易协调,需要权衡;
RUP:
RUP具有很多长处:
提高了团队生产力,在迭代开发过程、需求管理、基于组件体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键开发活动为每个开发成员提供了必要准则、模板和工具指导,并确保全体成员共享相同知识基础。
它建立了简洁和清晰过程结构,为开发过程提供较大通用性。
但同时它也存在一些不足:
RUP只是一个开发过程,并没有涵盖软件过程全部内容,例如它缺少关于软件运行和支持等方面内容;此外,它没有支持多项目开发结构,这在一定程度上降低了在开发组织内大范围实现重用可能性。
可以说RUP是一个非常好开端,但并不完美,在实际应用中可以根据需要对其进行改进并可以用OPEN和OOSP等其他软件过程相关内容对RUP进行补充和完善。
3.软件瀑布模型为什么要划分阶段?
各个阶段任务是什么?
在软件开发早期,开发只是被简单地分成编写代码和修改代码两个阶段。
往往在拿到项目后立刻编写程序,然后调试通过后直接交付给用户使用。
如果应用中出现错误,或者有新要求,都需要重新修改代码。
这种小作坊式软件开发方法有明显弊端,如缺乏统一项目规划、不太重视需求获取和分析、对软件测试和维护考虑不周等,这些都会导致软件项目失败。
概念阶段:
计划、需求分析
开发阶段:
设计、编码、测试
维护阶段:
运行维护
4.什么是原型?
试述原型模型在软件生命周期中应用。
原型一般是指对某种产品进行模拟初始版本或者原始模型,在工程领域中具有广泛应用。
由于软件规模和复杂性越来越大,软件开发在需求获取、技术实现手段选择、应用环境适应等方面面临巨大考验。
为了应对早期需求获取不易以及后期需求变化,人们选用原型方法构造软件系统。
5.为什么说喷泉模型较好地体现了面向对象软件开发过程无缝和迭代特性?
6.RUP模型思想是什么?
RUP模型融合了哪些传统生命周期模型特点?
迭代增量开发思想;
(1)面向对象:
从技术角度,RUP开发是基于面向对象技术,即它使用和支持面向对象技术概念和方法。
RUP要求建立设计模型、实现模型都是对象模型。
(2)USECASE驱动
(3)以架构为中心;
(4)螺旋上升式开发过程;
(5)以质量控制和风险管理为目标;
(6)及UML配置;
(7)适用性强;
7.举例说明哪些项目开发适用于原型模型或螺旋模型,哪些不适于采用这两种模型。
螺旋模型适合于大型软件开发,应该说它是最为实际方法,它吸收了软件工程“演化”概念,使得开发人员和客户对每个演化层出现风险有所了解,继而做出应有反应。
不适用:
小型软件。
原型一般是指对某种产品进行模拟初始版本或者原始模型,在工程领域中具有广泛应用。
不适用:
大型软件项目;含有对于计算量大、逻辑性较强程序模块;
第三章
1.可行性研究任务是什么?
可行性研究任务是以最小代价在尽可能短时间内确定问题是否能够解决。
简单地说,可行性研究最终结果是决定项目“做还是不做”而不是“如何做”。
2.可行性研究有哪些步骤?
1.确定系统规模和目标
2.研究目前正在使用系统
3.导出新系统高层逻辑模型
4.重新定义问题
5.导出和评价选择解法
6.推荐行动方针
7.草拟开发计划
8.书写计划任务书文档并提交审查
3.成本-效益分析可用哪些指标进行度量?
如果用比率分析法,有以下几种指标:
1,相关指标分析法。
产值成本率=成本/产值*100%;
销售收入成本率=成本/销售收入*100%;
成本利润率=利润/成本*100%
2,构成比率分析法,
直接材料费用比率=直接材料成本/产品成本*100%
直接人工费用比率=直接人工费用/产品成本*100%
制造费用比率=制造费用/产品成本*100%
4.项目开发计划有哪些内容?
引言(目、背景、参考文献、术语);项目概述(功能、条件、运行环境、产品、程序、文档、服务、验收标准、实施计划、工作任务分解、进度、预算、人员)
5.按照题意设计如下流程图:
计算机房产管理系统:
要求系统有分房、退房、调房、咨询和统计功能。
房产科把住户申请表输入系统后,系统首先检查申请表合法性,不合法拒绝接受,合法申请表根据申请表类型(分、调、退房)分别进行处理。
分房申请处理:
根据申请者情况(年龄、工龄、职称、职务、家庭人口等)计算其分数;当分数高于给定值时,按分数高低将申请单插到分房队列适当位置,输出核准后分房单。
分房处理:
每月月底进行分房。
从分房文件中读出空房信息,然后根据住户实际情况,从住房标准文件中读出住房标准进行校核,如果符合,则分配住房给该住户,打印出住房分配通知单,并登记相应住户信息。
退房,调房处理类似。
咨询、查询:
对空房、住房、房租情况进行查询和统计。
6.为方便储户,某银行拟开发计算机储蓄系统。
储户填写存款单或取款单由业务员输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。
写出问题定义并分析此系统可行性,画出系统流程图。
7.为方便旅客,某航空公司拟开发一个机票预订系统。
旅行社把预订机票旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目地等)输入该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞前一天凭取票通知单和账单交款取票,系统校对无误即打印出机票给旅客。
写出问题定义并分析此系统可行性,画出系统流程图。
这个系统可行性是在一个理想环境下,比如:
乘客不满意安排座位需要调换,或者需要改机票;这些种种因素都没考虑进去。
技术上可行:
使用现有技术能实现这个系统;
经济上可行:
这个系统经济效益可以超过他开发成本;
操作上可行:
操作方式简单,但是有缺陷;
社会、政策允许可行性:
可行。
8.某计算机系统投入使用后,5年内每年可节省人民币2000元。
假设系统投资额为5000元,年利率为12%。
试计算投资回收期和纯收入。
解:
第四章
1.什么是需求工程?
需求工程包括哪些活动?
需求工程是指应用已证实有效技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统所有外部特征一门学科。
它通过合适工具和记号系统地描述待开发系统,及其行为特征和相关约束,形成需求文档;并对用户不断变化需求演进给予支持。
一个良好需求开发过程应该包括需求获取、需求分析及建模、编写需求规格说明书和需求评审4个主要活动。
2.需求分为哪些层次?
业务需求、用户需求和功能需求
3.指出下列需求描述不当之处,并进行改写,使之符合好需求特性。
(1)产品应在不少于每60秒正常周期内提供状态信息。
(2)HTML分析器可以产生HTML标记错误报告,帮助HTML入门者快速解决问题。
(3)产品应瞬间在文本中显示和隐藏不可打印字符间切换。
好需求应具有特性能对一些需求描述不当之处进行改写,使之符合好需求特性。
4.对于一个小型图书馆管理系统,试给出非功能需求描述。
软件非功能性需求包括:
可靠性、可用性、有效性、可维护性和可移植性。
其中,在可靠性方面可以考虑平均无故障时间(MeanTimeBetweenFailures,MTBF)、平均修复时间(MeanTimetoRepair,MTTR)是多少,复制和故障转移方案是什么,系统出现故障时是否需要手动干预,系统安全性如何等。
可用性方法可以考虑系统是否为用户带来不适当负担(如需要特殊浏览器等),系统是否每天24小时,每年365天不间断提供服务等。
5.需求工程过程包括哪些主要活动?
需求开发过程应该包括需求获取、需求分析及建模、编写需求规格说明书和需求评审4个主要活动。
6.有哪两种主要需求分析模型?
它们主要思想是什么?
7.需求规格说明书主要作用是什么?
应该包括哪些主要内容?
作用:
(1)作为用户方和开发方之间合同,为双方相互了解提供基础。
(2)反映问题结构,作为系统设计和编码依据。
(3)作为测试和验收目标系统依据。
内容:
用户可以通过需求规格说明书检查需求描述是否满足原来期望。
设计人员根据软件需求规格说明书描述了解所需开发软件功能和性能,以及开发软件时必须满足约束,将其作为软件设计依据。
测试人员根据软件需求规格说明书中对产品描述,设计测试计划、测试用例和测试过程。
产品发布人员根据软件需求规格说明和用户界面设计编写用户手册和帮助信息
8.试建立一张需求评审检查表。
客户需求调查表
1.收集公司相关信息,比如公司名、地址、网站、联络人详细资料、电子邮件地址以及电话号码。
2.在这个渗透测试项目中您关键目标是什么?
3.确定渗透测试类型(包含或者不包含特定标准):
黑盒测试(或外部测试)
白盒测试(或内部测试)
测试前事先通知
测试前不通知
包含社会工程学
不包含社会工程学
调查员工背景信息
使用虚假员工信息
包含拒绝服务攻击
不包含拒绝服务攻击
渗透业务合作伙伴系统
4.总共需要测试多少台服务器、工作站和网络设备?
5.贵公司基础设施架构支持什么操作系统技术?
6.需要测试什么类型网络设备?
防火墙、路由器、交换机、调制解调器、负载平衡器、IDS、IPS,还是其他类型设备?
7.有没有什么灾难恢复计划?
如果有话如何操作?
8.当前网络有没有安全管理员在管理?
9.有没有什么特定工业标准需要遵循?
如果有,请列出来。
10.该项目联络人是谁?
11.该项目时间周期是多久?
以周或天为单位。
12.该项目预算是多少?
13.请列出所有其他需求。
9.需求管理有哪些主要活动?
各有什么作用?
主要包括需求变更控制、需求版本控制、需求跟踪和状态跟踪等活动
10.为什么要进行需求跟踪?
如何建立需求跟踪矩阵?
需求跟踪矩阵有什么作用?
1为了管理需求,需要维护需求可跟踪性信息。
2,矩阵第一列列出需求规格说明书中每一项需求标号,矩阵每一行显示了这一行所代表需求依赖其他需求、设计、代码和测试用例。
3
(1)能够完整地定义需求之间各种关系,并提供可视化表示方式。
(2)在一个需求发生变更时,系统能够按照所定义需求跟踪链,跟踪到所有受影响需求。
第五章
1.简述面向数据流分析方法基本思想。
“分解”和“抽象”;
2.简述数据流图分解时注意事项。
•上层可分解得快些(即分解成子数据处理个数多些),这是因为上层是综合性描述,对可读性影响小。
而下层应分解得慢些。
•在不影响可读性前提下,应适当多分解成几部分,以减少分解层数。
3.数据字典作用是什么?
它有哪些基本内容?
•分解应自然,概念上要合理、清晰。
作用:
数据字典作为分析阶段工具,有助于改进分析人员和用户间通信,进而消除很多误解,同时也有助于改进不同开发人员之间通信;
内容:
数据字典内容主要是对数据流图中数据项、数据流、加工逻辑、数据存储和外部实体
4.根据以下描述业务过程画出库存管理数据流图。
根据车间发来产品入库单做登入库账处理后存入库存账。
对销售科发来产品出库单,在查阅库存账后,如果库存数量足够,则做登出库账处理,否则将出库单退回销售科,并向生产科发出缺货通知。
5.某仓库管理系统按照以下步骤进行信息处理:
(1)保管员根据当日出库单和入库单通过出入库处理修改库存台账。
(2)根据库存台账由统计打印程序输出库存日报表。
(3)必要进行查询时,可利用查询程序,在输入查询条件后,到库存台账去查找,并显示查询结果。
试按上述过程画出数据流图。
6.某银行计算机储蓄系统功能是:
将储户存户填写存款单或取款单输入系统,如果是存款,系统记录存款人姓名﹑住址﹑存款类型﹑存款日期﹑利率等信息,并打印出存款单给储户;如果是取款,系统计算清单给储户。
请用数据流图描绘该功能需求,并建立相应数据字典。
7.某厂对部分职工重新分配工作政策是:
年龄在20岁以下、初中文化程度者脱产学习;高中文化程度者当电工。
20岁至40岁之间,初中文化程度,男性当钳工,女性当车工;大学文化程度都当技术员。
年龄在40岁以上者,初中文化程度当材料员,大学文化程度当技术员。
请用结构化语言﹑判定表或判定树描述上述问题加工逻辑。
第六章
1.什么是面向对象方法?
及传统软件开发方法相比,面向对象方法有什么优点?
是一种把面向对象思想应用于软件开发过程中,指导开发活动系统方法
优点:
1.符合人们对问题认识习惯
2.增强问题域及最终软件系统之间衔接
3.易于维护和复用
4.易于开发大型软件产品
2.UML及面向对象方法关系是什么?
UML是在总结面向对象技术应用实践基础上;
3.UML内容包括哪些部分?
它特点是什么?
UML由视图(Views)、模型元素(ModelElements)、图(Diagrams)等部分组成。
(1)统一标准
(2)面向对象
(3)可视化、表达能力强
(4)独立于过程。
(5)易掌握、易用
4.解释下列术语,并举例说明。
对象、类、关联、泛化、聚合、依赖
5.什么是模型?
在软件开发过程中为什么需要建立模型?
6.Coad-Youdon面向对象分析方法将建立概念模型分为5个步骤。
以一个你熟悉应用系统(如图书馆信息管理系统)为例,按照方法规定步骤,分层建立适当概念模
图书馆信息管理系统
7.假设你所在学校要开发一个研究生选课系统,要求该系统能够根据预先制订课表保证选课无冲突。
请采用UML面向对象方法为该问题建立需求模型。
8.设计一个计算机游戏软件游戏规则、情节及场景,基于UML给出其需求分析模型。
第七章
1.面向对象分析包括哪些活动?
应该建立哪些类型模型?
面向对象分析OOA模型过程包括理解用例模型、识别分析类、定义交互行为、建立
分析类图、评审分析模型5个活动组成。
目标是建立一个符合问题域、满足用户需求OOA模型。
2.什么是实体类、边界类和控制类?
为什么将分析类划分成这3种类型?
实体类:
用于描述必须存储信息,同时描述相关行为。
实体类代表拟建系统中核心信息。
在RUP有关文档中对实体类解释为:
“实体类是用于对必须存储信息和相关行为建模类。
边界类:
在系统及外界之间,为它们交换各种信息及事件。
边界类处理软件系统输入及输出。
在RUP有关文档中对边界类解释为:
边界类是一种用于
对系统外部环境及其内部运作之间交互进行建模类。
控制类:
及业务过程相关,它们控制整个业务流程和执行次序。
在RUP有关文档中对控制类解释为:
控制类用于对一个或几个用例所持有控制行为进行建模。
控制类对象可以和边界对象交互,也可以和实体对象交互,但不能和用例参及者直接进行交互。
3.请思考本章所讲案例中其他用例参及类图。
4.搜索关于面向对象分析文章,对比不同分析技术,并给出这些技术优缺点。
5.针对自己所选定系统,对用例模型进行分析,建立相应模型,从而在分析出各个分析类,
建立出分析类图。
第八章
1.什么是软件设计?
它目标和任务是什么?
<1>软件设计:
在需求分析基础上通过抽象和分解将系统分解成模块,确定系统功能实现。
即把软件需求转换为软件包表示过程。
<2>目标:
软件设计最终目标是产生一个设计规约,该规约包括体系结构、描述数据、接口和构件设计模型。
软件设计任务,就是把分析阶段产生软件需求规格说明转换为用适当手段表示软件设计文档。
2.怎样实现信息隐藏?
模块独立是信息隐藏直接结果。
信息隐藏原理告诉我们,模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息模块不可访问;每个模块只完成一个相对独立特定功能,模块之间仅仅交换那些为完成系统功能必须交换信息,即模块应该独立。
3.逐步求精、分层过程及抽象等概念之间相互关系如何?
程序体系结构是通过逐步精化处理过程层次而设计出来。
通过逐步分解对功能宏观陈述而开发出层次结构,最终得出用程序设计语言表达程序。
求精实际上是细化过程。
抽象及求精是一对互补概念。
抽象使得设计者能够说明过程和数据,但却忽略了底层细节。
求精则帮助设计者在设计过程中逐步揭示底层细节。
4.完成良好软件设计应遵循哪些原则?
模块化及模块独立性;抽象及逐步求精;信息隐藏。
5.如何理解模块独立性?
用什么指标来衡量模块独立性?
<1>模块独立性是指软件系统中每个模块只涉及软件要求具体子功能,而和软件系统中其他模块接口是简单。
<2>一般采用两个准则度量模块独立性,即模块内聚性和模块间耦合性。
6.说明软件设计阶段任务和过程
软件设计分两步完成,即总体设计及详细设计。
第一个阶段是总体设计,即概要设计或初步设计。
这一阶段主要确定实现目标系统总体思想和设计框架,确定程序由哪些模块组成,以及模块及模块之间关系,最后提出概要设计说明书。
第二个阶段是详细设计,即过程设计或构件级设计,其任务是通过对结构表示进行细化,确定各个软件构件详细数据结构和算法,产生描述各个软件构件详细设计文档。
7.试说明软件体系结构在软件设计阶段中重要性。
良好体系结构设计是决定软件系统成功重要因素。
软件体系结构设计好坏往往会成为一个系统设计成败关键。
通常,软件体系结构涉及软件总体组织、全局控制、数据存取及子系统之间通信协议等。
8.目前存在哪些不同设计复审方法?
各有什么特点?
目前存在着两种不同设计复审方法。
1)正式复审
2)非正式复审
正式复审包括各方面参加人员,通常采取正式会议方式。
非正式复审特点是参加人数少,且均为软件人员,带有同行讨论性质,方便灵活,十分适合于详细复审。
第九章
1.简述模块分解原则和依据。
1.改进软件结构以提高模块独立性
设计出软件初步结构以后,应该审查分析这个结构,通过模块分解或合并,力求降低
耦合提高内聚。
2.模块大小要适当
经验表明,一个模块规模不应过大,通常规定其语句行数为50~100行,最多不超过500行。
,体积过大模块往往是由于分解不充分,且具有多个功能,因此需要对功能进一步分解,生成一些下级模块或同层模块。
反之,模块体积过小也可以考虑是否可能及调用它上级模块合并。
3.深度、宽度、扇出和扇入都应适当
4.模块作用域应在控制域之内
5.力争降低模块接口复杂程度
6.设计单入口单出口模块
7.模块功能应该可预测,避免对模块施加过多限制
2.什么是“事物流”?
什么是“变换流”?
事务流由至少一条接受路径、一个事务中心及若干条动作路径组成。
变换流有三部分组成:
即输入流、变换中心和输出流
3.试述“变换分析”﹑“事物分析”设计步骤。
变换分析设计步骤:
(1)对DFD图分析和划分,首先区分输入流、输出流和变换中心3个部分,标明数据流边界。
(2)进行第一级