软件工程期中.docx
《软件工程期中.docx》由会员分享,可在线阅读,更多相关《软件工程期中.docx(27页珍藏版)》请在冰豆网上搜索。
软件工程期中
1.什么是当前系统?
当前系统的物理模型与逻辑模型有什么差别?
(1)所谓当前系统可能是需要改进的某个已在计算机上运行的数据处理系统,也可能是一个人工的数据处理过程。
(2)当前系统的物理模型客观地反映当前系统实际的工作情况。
但在物理模型中有许多物理的因素,随着分析工作的深入,有些非本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的和非本质的因素,去掉那些非本质的因素即可获得反映系统本质的逻辑模型.
所以当前系统的逻辑模型是从当前系统的物理模型抽象出来的
2。
在UML中用例与用例之间存在泛化、包含和扩展关系,请分析它们的异同。
(1)共性:
都是从现有用例中抽取出公共的那部分信息,作为一个单独的用例,然后通过不同的方法重用这个公共的用例,以减少模型维护的工作量。
(2)不同点:
a.泛化侧重表示子用例间的互斥性。
b.包含侧重表示被包含用例对参与者提供服务的间接性.
c.扩展侧重表示扩展用例的触发不定性.
泛化关系是描述用例之间一般与特殊关系的。
子用例继承了父用例所有的结构、行为和关系,同时子用例还可以添加、覆盖、改变继承的行为。
子用例是父用例的一种特殊形式,不同的子用例代表了父用例的不同实现方法。
在一个复杂系统中,不同的用例之间可能存在一些相同的行为,这时可以将这些相同的行为提取出来组成一个用例.当其他用例使用该用例时,用例之间便形成了包含关系.
向一个用例中添加一些动作后构成了另一个用例,这两个用例之间的关系就是扩展关系,后者继承前者的一些行为,把后者称为扩展用例。
也可以把扩展关系看成从主用例中将异常行为或可选分支抽象成一个单独的用例而形成的关系。
3。
多个软件工程师合作开发一个项目,各开发者之间需要两两互相通信。
假设每一条通信路径的开销为300LOC/年(LOC为代码行数)。
(1)设有6名软件工程师,如果单独工作,每个人的生产率是6500LOC/年,那么由这6名软件工程师组成的项目组的生产率是多少?
(2)在这一年期限的最后两个月,又增加了两名工程师,新增成员的个人生产率为4500LOC/年,那么这8人组成的项目组全年完成的开发工作量又是多少条代码行?
当开发小组的人员为N时,可能的通信路径有N(N—1)/2条。
6500*6-(6*5/2)*300=34500(行/年)
从第11月开始增加2个人,则通信路径增加了:
8*(8—1)/2–15=13(条)
所以通信开销增加了:
(300/12)*2*13=650(LOC)
而这2人的开发工作量为:
(4500/12)*2*2=1500(LOC)
则总计工作量为:
34500+1500–650=35350(LOC)
4。
输入三个正整数作为边长,然后判断该三条边能否构成三角形。
若能,则构成的三角形是等边、等腰还是一般三角形?
请用N-S图描述程序的算法,并将盒图中每个格中标出数字①、②……,利用数字画出程序控制流图,计算此程序的环形复杂度
5.某学校计算机教材购销系统有以下功能:
学生买书,首先填写购书单,计算机根据各班学生用书表及售书登记表审查有效性。
若有效,计算机根据教材库存表进一步判断书库是否有书;若有书,把领书单返回给学生,学生凭领书单到书库领书。
对脱销的教材,系统用缺书单的形式通知书库保管员,新书购进库后,也由书库保管员将进书通知返回给系统。
请就以上系统功能画出分层的DFD图。
(第三层只需画出销售子系统的DFD图)
6.图书馆的预定图书子系统有如下功能:
⏹由供书部门提供书目给订购组;
⏹订购组从各单位取得要订的书目;
⏹根据供书目录和订书书目产生订书文档留底;
⏹将订书信息(包括数目、数量等)反馈给供书单位;
⏹将未订书目通知订书者;
⏹对于重复订购的书目由系统自动检查,并把其结果反馈给订书者.
☐请就以上系统功能分两层画出DFD图。
7.根据描述建立软件公司的对象模型,即画出类图。
问题陈述如下:
一个软件公司有许多部门,分为开发部门和管理部门两种.每个部门由部门名字唯一确定.每个开发部门开发多个软件产品,每个软件产品都由程序、数据和文档组成。
该公司有许多员工,分为经理、工作人员和开发人员。
开发部门有经理和多个开发人员,管理部门有经理和多个工作人员.每个开发人员可参加多个开发项目,每个开发项目需要多个开发人员。
每位经理可主持多个开发项目。
8.一本书的组成包括一个封面,一个目录,一个前言,若干章,每章有若干节,每节有若干段,每段有若干句子,每节有0个或多个插图,还有0个或多个表格,最后有一个附录.试建立该书的对象模型。
9。
根据描述建立复印机行为的动态模型,即画出复印机状态图。
问题描述:
办公室复印机的工作过程大致如下:
未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接受复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。
实验
1。
绘制书中73页习题3的数据流图:
题目:
银行计算机储蓄系统的工作过程大致如下:
储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存款存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
分析:
从存取款的常识可知,本系统的数据源点和终点都是“储户",储户既要提出存取款要求,又要获得存款存单或利息清单。
系统对存取款的处理功能主要是“记录存款信息”、“打印存款存单”和“核对密码”、“计算利息"、“打印利息清单”。
为了完成上述功能,显然“存款信息”应该是一个数据存储。
2.在上题文件的另一个绘图页中绘制书中73页习题4的数据流图:
题目:
为方便旅客,某航空公司拟开发一个机票预订系统。
旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和帐单,旅客在飞机起飞的前一天凭取票通知和帐单交款取票,系统校对无误即印出机票给旅客.
分析:
从问题陈述可知,本系统的数据源点是“旅行社”,机票预订系统印出取票通知和帐单是给旅行社的,所以“旅行社"也是终点。
另外旅客凭取票通知和帐单交款取票,系统印出机票给旅客,则“旅客”也是一个源点和终点。
机票预订系统包括了预订机票和旅客取票两部分,主要功能有:
“分类并检验”、“订票”、“记账”和“机票准备”。
要为旅客安排航班,需要查看“航班目录”,所以“航班目录"应该作为一个数据存储;系统能够输出账单,所以有记账功能,则另一个数据存储为“记账文件";完整的订票信息应给存储在“机票文件”中,作为“准备机票”功能的基本数据。
提示:
本系统的基本系统模型如下:
3.在上题文件的另一个绘图页中绘制书中73页习题5的数据流图:
题目:
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。
分析:
从问题陈述可知,本系统的数据源点是“病人”和“护士",他们分别提供生理信号和要求病情报告的信息。
进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟"作为数据源点.
从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。
系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。
此外,系统还应该具有“定时取样生理信号"、“更新日志”和“产生病情报告"的功能。
为了分析病人上理信号是否超出了医生规定的安全范围,应该存储“患者安全范围"信息.此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存储。
提示:
本系统的基本系统模型如下:
绘制本系统的功能级数据流图过程如下:
4。
“选课系统”类图的设计.需求陈述如下:
某学校网上选课系统主要包括如下功能:
管理员通过系统管理界面进入,建立本学期要开的各种课程、将课程信息保存在数据库中并可以对课程进行改动和删除。
学生通过客户机浏览器根据学号和密码进入选课界面,在这里学生可以进行三种操作:
查询已选课程、选课以及付费.同样,通过业务层,这些操作结果存入数据库中。
5。
图书馆馆藏出版物需求描述如下:
一家图书馆藏有书籍、杂志、小册子、电影录像带、音乐CD、录音图书磁带和报纸等出版物,供读者借阅。
这些出版物有出版物名、出版者、获得日期、目录编号、书架位置、借出状态和借出限制等属性,并有借出、收回等服务.
创建图书馆馆藏出版物的类图。
分析:
题目中很明确地给出了此对象模型中包含的各种类,也明显地表示出了馆藏出版物与“书籍、杂志、小册子、电影录像带"等其它类应该是继承关系。
所以,容易画出此描述的类图.
6。
交通工具分为空中、陆地、水上三种。
空中交通工具分为客机、货机、专用轻型机。
陆地交通工具分为列车、汽车;列车又分为旅客列车、货运列车;汽车又分为客车、货车。
水上交通工具分为客轮、货轮、客货混合轮.建立交通工具的类图
7.一台微机有一个显示器,一个主机,一个键盘,一个鼠标,汉王笔可有可无。
主机包括一个机箱,一个主板,一个电源,存储器等部件。
存储器又分为固定存储器、活动存储器,固定存储器又分为内存和硬盘,活动存储器又分为软盘、光盘、优盘.请建立微机的类图
8.“选课系统”状态图的设计.
一个课程类的状态变化如下:
课程对象被创建,添加到数据库中。
管理员可以删除、修改课程信息,在某个学期,开设该课程,如果选修人数超过指定人数,就不再允许学生选这门课。
学期结束,课程的状态终止.
9.人们烧水的状态描述如下:
初始状态进入烧水过程时先处于炉子关闭状态,当打开炉子的触发事件发生时,需要检查是否满足监护条件“壶里是否有水",如果满足则执行烧水的动作,触发转换进入到炉子打开状态,在此状态下,如果出现水烧开了,或壶烧坏了的情况,状态图应如何表达?
试创建烧水的状态图。
10。
图形用户界面具有一个主菜单和一个带有文件打开命令的文件菜单,在每个菜单上都有一条退出命令。
假设每次只有一个文件能够打开。
建立图形用户界面的状态图。
11。
航班机票预订系统状态描述:
在刚确定飞行计划时,显然没有任何预订的,并且在有人预订机票之前都将处于这种“无预订”的状态。
对于订座而言,显然有“部分预订”和“预订完"两种状态,当航班快要起飞时,显然要“预订关闭"。
请建立航班机票预订系统的状态图
12。
请根据下述电梯系统的需求描述画出类图来。
在一幢m层楼的大厦中,用电梯内的和每个楼层的按钮来控制n部电梯的移动。
每部电梯有m个按钮,每个按钮代表一个楼层。
当按下一个按钮时该按钮指示灯亮,同时电梯驶向相应的楼层,当到达由按钮指定的楼层时指示灯熄灭。
除了大厦的最底层和最高层之外,每层楼都有两个按钮分别指示电梯上行和下行。
当这两个按钮之一被按下时相应的指示灯亮,当电梯达到此楼层时灯熄灭,电梯向请求的方向移动.
当电梯无升降动作时,关门并停在当前楼层。
分析:
1.确定问题域内的候选对象
大厦、电梯、楼层、按钮、运动、指示灯、请求、最底层、最高层、方向和门
2。
筛选出正确的对象
删除“大厦、最底层、最高层、楼层”—-无关
删除“运动、指示灯、请求、方向和门”——属性
只剩下“按钮、电梯"
按钮又分为:
电梯按钮和楼层按钮
3.根据领域知识或常识找出隐含对象
按钮并不直接与电梯通信,为了决定分派哪一部电梯去响应一个特定的请求,必须有某种类型的电梯控制器.
进一步完善对象模型:
分析:
电梯类的主要功能是执行电梯控制器类发来的电梯操作命令,如果把电梯门(的状态)作为电梯的一个属性,则电梯类还要执行门操作命令,这样电梯类的功能就不单一了。
解决:
把电梯门独立出来作为一个类。
这样打开或关闭电梯门的唯一办法就是向对象“电梯门”发送一条消息。
如果电梯门类的封装性很好,就能保证不会在错误的时间开/关电梯门,从而能有效地杜绝严重的意外事故。
另外,出于在XX的情况下不允许修改请求的考虑,也应该把“请求”作为一个独立的类.
13.请根据使用电话的通常情况画出描述交互行为状态图来。
电话系统的一般操作过程为:
没人打电话时电话处于闲置状态;有人拿起听筒则进入拨号音状态,到达这个状态后,电话的行为是响起拨号音;这时如果拿起听筒的人改变主意不想打了,他把听筒放下(挂断),电话重又回到闲置状态;如果拿起听筒很长时间不拨号(超时),则进入超时状态……
具体打电话、通话过程的脚本如下:
打电话者拿起电话;
电话拨号音开始;
打电话者拨数字(先拨一位数字,如:
3);
电话拨号音结束;
打电话者拨数字(5);
打电话者拨数字(8);
打电话者拨数字
(2);
如果电话号码拨错,交换机提示出错信息;如果号码正确,且对方空闲,则接电话者的电话开始振铃;
铃声在打电话者的电话上传出;
如果在30秒钟内,接电话者拿起话筒;
接电话者的电话停止振铃;
打电话者的电话停止振铃;
通电话;……
接电话者挂断电话;
电话切断;
打电话者挂断电话。
如果拨号正确,对方忙,打电话者的电话上传出忙音。
如果拨号正确,接电话者在30秒钟内不接听电话,双方电话停止振铃.
14。
白盒测试
15。
黑盒测试
输入三个整数a、b和c分别作为三角形的3条边,通过程序判断由这3条边构成的三角形类型是:
等边三角形、等腰三角形、一般三角形或非三角形.请从输出域定义等价类,设计测试用例.
按照等价类的划分原则,建立输出等价类。
选取测试用例,覆盖所有的等价类。
某一报表处理系统,要求用户输入处理报表的日期.假设日期限制在1990年1月至1999年12月,即系统只能对该段时间内的报表进行处理。
如果用户输入的日期不在此范围内,则显示输入错误信息.该系统规定日期由年、月的6位数字字符组成,前4位代表年,后两位代表月.现用等价类划分法设计测试用例,来测试程序的“日期检查功能”。
程序规格说明为:
“一个程序读入三个整数。
把此三个数值看成是一个三角形的三个边.这个程序要打印出信息,说明这个三角形是三边不等的、是等腰的、还是等边的。
”请使用等价类划分法,从输入域定义等价类,完成测试用例设计。
16.面向对象设计原则
☐单一职责原则:
一个类应该仅有一个职责。
⏹注意:
职责是否应该分开依赖于具体的应用。
☐开放—封闭原则:
⏹在设计一个软件系统模块(类、方法)的时候,应该可以在不修改原有的模块(修改封闭)的基础上,能够扩展其功能(扩展开放)。
☐在面向对象的程序中是可以做到的,利用面向对象的抽象和多态.
⏹程序对于修改不是100%封闭!
☐一种抽象只能处理一类变化。
抽象后的系统对这类变化是封闭的,但是对于其它类型的变化仍然不是封闭的。
☐依赖倒置原则—-系统框架设计的核心原则.
⏹高层模块不应该依赖于低层模块,二者都应该依赖于抽象.
⏹抽象不应该依赖于细节。
细节应该依赖于抽象。
⏹使用何种语言来编写程序是无关紧要的,如果程序的依赖关系是倒置的,它就是面向对象的设计;如果程序的依赖关系不是倒置的,它就是过程化的设计.
☐接口隔离原则
⏹使用多个专门的接口比使用单一的总接口要好。
☐不能强迫用户去依赖那些他们不使用的接口.
☐程序所依赖的接口中不要包含该程序不使用的方法。
下面的设计是否合理,如果不合理,请说明原因并给出修正后的设计。
(本题10分)
说明:
(1)Retangle类有两个方法,一个方法画矩形,另一个方法计算矩形的面积。
其中draw()方法调用area()方法。
(2)有两个不同的应用程序使用Retangle类。
一个是ComputationalGeometryApplication,它是计算几何图形面积的,它依赖Retangle类的area()方法,但是它从来不用draw()方法。
另一个是GraphicalApplication,它是绘制图形的,它主要依赖Retangle类的draw()方法,也有可能会用到area()方法。
标准答案:
这个设计违反了“单一职责原则"。
Retangle类有两个职责,第一个职责是绘制矩形,第二个职责是计算矩形的面积。
解决办法:
把两个职责分离开,分离到两个完全不同的类中。
(3分)
(7分)
例2。
下面的设计是否合适,如果不合适,请修正设计。
系统需求说明:
在屏幕上显示出圆形的面积。
该需求今后会被扩展,要求显示正方形、矩形等其他形状的面积。
要求设计的系统符合开放封闭原则。
interfaceShape{doublearea();}
publicclassCircleimplementsShape{
privateintr;
publicCircle(inta){r=a;}
publicdoublearea(){return3.14*r*r;}}
publicclassPrintDrawing{
publicvoidprintArea(Shapes){
System.out.println("Areais:
”+s.area());}}
publicclassShow{
publicstaticvoidmain(Stringargs[]){
Circlec=newCircle
(2);
PrintDrawingpc=newPrintDrawing();
pc。
printArea(c);}}
改进后的Button类的伪码为:
publicclassButton
{publicvoidPoll(ButtonServerbs)
{判断是“开”还是“关”;
if(“开”)bs.turnOn();
elsebs。
turnOff();}}
ButtonServer类的代码为:
interfaceButtonServer
{publicvoidturnOn();
publicvoidturnOff();}
Lamp类的伪码为:
publicclass
LampimplementsButtonServer
{publicvoidturnOn(){…}
publicvoidturnOff(){…}
}
17.项目管理
⏹五个等级从低到高是:
初始级、可重复级、已定义级、已管理级和优化级。
☐1。
初始级
⏹软件过程的特征是无序的,有时甚至是混乱的。
几乎没有什么过程是经过定义的,项目能否成功完全取决于个人能力。
⏹处于这个最低成熟度等级的组织,基本上没有健全的软件工程管理制度。
⏹由于软件过程完全取决于当前的人员配备,所以不可能准确地预测产品的开发时间和成本。
☐2。
可重复级
⏹建立了基本的项目管理过程,以追踪成本、进度和功能性。
必要的过程规范已经建立起来了,使得可以重复以前类似项目所取得的成功。
⏹在这一级,有些基本的软件项目管理行为、设计和管理技术,是基于相似产品中的经验确定的,因此称为“可重复”.
☐3.已定义级
⏹用于管理和工程活动的软件过程已经文档化和标准化,并且已经集成到整个组织的软件过程中.
⏹所有项目都使用文档化的、组织批准的过程来开发和维护软件。
⏹这一级包含了第2级的所有特征。
☐4。
已管理级
⏹已收集了软件过程和产品质量的详细度量数据,使用这些详细的度量数据,能够定量地理解和控制软件过程和产品。
⏹这一级包含了第3级的所有特征。
⏹处于第4级的公司为每个项目都设定质量和生产目标,并不断地测量这两个量,当偏离目标太多时,就采取行动来修正。
☐5.优化级
⏹通过定量的反馈能够实现持续的过程改进,这些反馈是从过程及对新想法和技术的测试中获得的。
⏹这一级包含了第4级的所有特征.
甘特图以水平线段表示任务的工作阶段;线段的起点和终点分别对应着任务的开工时间和完成时间;线段的长度表示完成任务所需的时间。
特点:
从甘特图上可以很清楚地看出各子任务在时间上的对比关系,可以标明各任务的计划进度和当前进度,能动态地反映软件开发进展情况.但是,它难以反映多个任务之间存在的复杂的逻辑关系。
工程网络是采用网络图来描述一个项目的任务网络。
特点:
不仅可以表达子任务的计划安排,还可以在任务计划执行过程中估计任务完成的情况,分析某些子任务完成情况对全局的影响,找出影响全局的区域和关键子任务,以便及时采取措施,确保整个项目的完成.