当前位置:文档之家› 软工题第八章

软工题第八章

软工题第八章
软工题第八章

第八章习题

一、选择题

1.软件复用的目的是要使软件开发工作进行得( A )。软件复用的实际效益除了( B )之外,在企业的经营管理方面也可望达到理想的效益。

新的应用软件开发技术和工具是以( C )作为关键,复用大粒度的( D ),为的是快速开发应用软件。这些新技术包括微软的( E )、( F )、( G ),SUN公司的Java,OMG公司的CORBA、IDL等。

供选择的答案:

A. ①更简捷②更方便③更快、更好、更省④更丰富

B. ①复用率②功能扩充③效率④空间利用率

C, D. ①软件②固件③构件④属性

⑤对象⑥事物⑦数据⑧代码

E~G. ① office ② Visual Basic ③ Active X ④ Photoshop

⑤ OLE ⑥ Fortran ⑦ COBOL ⑧ Delphi

2. 以往的软件工程技术不能满足复用的需要,体现在工程、( A )、( B )、经营业务等4个方面。“工程”指软件开发工程,表现在缺乏( C )手段,缺乏( D )构件,缺乏对潜在可复用的( E ),缺乏实施复用的工具。

供选择的答案:

A, B. ①需求②过程③环境④组织管理

C ~ E. ①复用②可靠性③灵活性④界定

⑤工具⑥互连性

3. 软件体系设计的一个中心问题是能否( A ),以及采用何种软件体系结构风格。有原则地使用体系结构风格可带来一些实际的好处:

(1) 它促进了对设计的( B );

(2) 它可以带来显著的( C )(体系结构风格的不变部分使它们可以共享同一个实现代码);

(3) 只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构;

(4) 对标准或规范风格的使用也支持了( D ),例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;

(5) 在限制了设计空间的情况下体系结构风格通常允许进行特殊的与风格有关的分析;

(6) 通常可以对特定的风格提供( E )手段。

供选择的答案:

A ~ C. ①使用特定的体系模式②使用重复的体系模式

③复用④专用⑤代码复用⑥结构复用

D ~ E. ①可视化②构件③互操作性④可移植性

⑤可调度性⑥框架

4. 软件复用可分为以下三个层次:

( A ),例如软件工程知识的复用。

( B ),例如面向对象方法或国家制定的软件开发规范的复用。

软件成分的复用。软件成分的复用又可进一步划分为( C ),如剪贴;( D ),如复用设计模型;( E ),更高级别复用。

为了研究软件复用程度与软件生产率之间的关系,我们引进:生产率P = ( F )和复用率R = ( G )的公式,以及两者之间的关系P = ( H )。其中,用Lt代表程序总长度,Ln和Lr分别为新编代码和复用代码的长度。令Et、En和Er分别代表开发该程序的总工作量、新编程序的工作量和复用已有软件构件的工作量,Cn和Cr分别代表开发新代码和复用已有软件构件的生产率。

供选择的答案:

A ~ E.①知识复用②分析结果复用③代码复用

④方法与标准复用⑤设计结果复用⑥软件成分复用

F ~ H. ①②③

④⑤⑥

二、简答题

1. 请比较功能内聚和信息性内聚。

2. 多态重用与继承重用有何关系?

3. 在面向对象设计过程中为什么会调整对目标系统的需求?怎样调整需求?

4. 为了设计人机交互子系统,为什么需要分类用户?

5. 问题空间和解空间有何区别?

6. 从面向对象分析阶段到面向对象设计阶段,对象模型有何变化?

7. 请用面向对象方法分析设计下述的图书馆自动化系统。

设计一个软件以支持一座公共图书馆的运行。该系统有一些工作站用于处理读者事务。这些工作站由图书馆馆员操作。当读者借书时,首先读入客户的借书卡。然后,由工作站的条形码阅读器读入该书的代码。当读者归还一本书时,并不需要查看他的借书卡,仅需读入该书的代码。

客户可以在图书馆内任一台PC机上检索馆藏图书目录。当检索图书目录时,客户应该首先指明检索方法(按作者姓名或按书名或关键词)。

8. 用面向对象方法分析设计下述的电梯系统。

在一幢m层楼的大厦里,用电梯内的和每个楼层的按钮来控制n部电梯的运动。当按下电梯按钮请求电梯在指定楼层停下时,按钮指示灯亮;当电梯到达指定楼层时,指示灯熄灭。除了大厦的最低层和最高层之外,每层楼都有两个按钮分别指示电梯上行和下行。当这两个按钮之一被按下时相应的指示灯亮,当电梯到达此楼层时灯熄灭,电梯向要求的方向移动。当电梯无升降动作时,关门并停在当前楼层。

第八章习题解答

一、选择题

1.答案:A. ③, B. ①, C. ③, D. ⑤, E. ②, F. ③, G. ⑤。其中,E、F、G 的答案顺序可互换。

分析:实施软件复用的目的是要使软件开发工作进行得是更快、更好、更省。“更快”是指在市场竞争环境中,软件开发工作能满足市场上时间方面的要求(即在提供软件产品的时间方面能赛过竞争对手);“更好”是指开发出来的软件在未来的运行中失效可能性小;“更省”是指在开发和维护期间所花费的开销少。

日美一些大公司的资料表明,软件复用率最高可望达到90 %,而且软件复用使得企业在及时满足市场、软件质量、软件开发和维护费用等方面都得到显著的改进。

除了复用率之外,在企业的经营管理方面也可望达到理想的效益。例如,上市时间可缩短2 ~ 5倍;软件产品的缺陷密度可减少5 ~ 10倍;软件产品的维护费用可减少5 ~ 10倍;软件开发总费用可减少15% ~ 75%,其中,75%是针对长期项目,包括开发可复用构件及支持复用的负担。

新的应用软件开发技术和工具是以“构件”作为关键,复用大粒度的“对象”,为的是快速开发应用软件。这些新技术包括微软的Visual Basic、Active X、OLE(对象链接与嵌入),SUN公司的Java,OMG公司的CORBA(公用对象请求代理程序体系结构)、IDL(接口定义语言)等。非面向对象语言(如COBOL和Fortran)在复用实践中已经器的相当的成功。这些非面向对象程序设计语言构件技术的成功实践说明了:实现软件复用并不限于面向对象语言构件或类库。

2. 答案:A. ②, B. ④, C. ④, D. ①, E. ③。其中,A、B的答案的顺序可互换。

分析:以往的软件工程技术不能满足复用的需要,体现在工程、过程、组织管理、经营业务等4个方面。这里所说的“工程”是指软件开发工程,其技术和方法面对复用的需要已显得低效,主要表现在:

§缺乏界定手段:为了软件复用,需要循软件开发流程的各个阶段,通过分析它们的描述模型,明确界定出潜在可复用的部分,被界定出的部分,可能是可被复用的部分,也可能是可被可复用构件代用的部分。而以往的软件工程缺乏这种界定手段。

§缺乏可复用的构件:者反映在许多方面。例如,不能有效地挑选出可复用构件并对它们进行强化;缺乏对构件打包、文档化、分类、界定的技术;缺乏有效方法进行(构件)库的设计和实现;缺乏良好的构件库存取方法。

§缺乏对潜在可复用构件的灵活性:如果一个构件很死板,那么它被复用的机会就很少。而过去的软件工程方法在设计灵活的、分层的软件体系结构方面一直没有不成熟的办法。过去的方法是对构件进行调节使之满足新的需求,或者使对新的体系结构进行限制。

§缺乏实施复用的工具:为了实施复用,需要一系列新的工具,并把它们集成到面向复用的软件工程环境中去。而过去的工程缺乏这方面的工具。

3. 答案:A. ②, B. ③, C. ⑤, D. ③, E. ①。

分析:软件体系设计的一个中心问题是能否使用重复的体系模式,以及采用何种软件体系结构风格。例如可以采用通用的基于层次或数据流的系统体系结构,或者采用特殊的系统组织(如经典的编译器分解方式),OSI七层协议,MVC用户界面语义图等。有原则地使用体系结构风格可带来一系列实际的好处。

(1) 它促进了对设计的复用。一些经过实践证实的解决方案可以拿来可靠地解决新问题。

(2) 它可以带来显著的代码复用。体系结构风格的不变部分使它们可以共享同一个实现代码。

(3) 只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构。例如,如果某人把系统描述为“客户机∕服务器”模式,则不必给出细节,人们立刻就会明白它们是如何一部分一部分地组织起来,并在脑海中清晰地得到这个图像。

(4) 对标准或规范风格的使用也支持了互操作性,例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;

(5) 在限制了设计空间的情况下,体系结构风格通常允许进行特殊的与风格有关的分析。例如,分析管道过滤器系统的可调度性(吞吐量、延时、死锁的解决)是可行的,但对于任意的、或用其它方法构造的架构来说,这种分析可能毫无意义。

(6) 通常可以对特定的风格提供可视化的手段。例如,可以对与客户的专业领域有关的设计作出图解或文字说明。

对于应用软件体系结构风格来说,由于视点的不同,软件人员有很大的选择空间。要为系统选择或设计某一个体系结构风格,必须根据特定项目的具体特点,进行分析比较后再确定。体系结构风格的使用几乎完全是特化的。

4. 答案:A. ①, B. ④, C. ③, D. ⑤, E. ②, F. ④, G. ②, H. ③。

分析:广义来讲,软件复用可分为以下三个层次:

(1) 知识复用(如软件工程知识的复用);

(2) 方法和标准的复用(如面向对象方法或国家制定的软件开发规范的复用);

(3) 软件成分的复用。软件成分的复用又可进一步划分为三个级别:①代码复用(源代码剪贴、源代码包含、继承);②设计结果复用;③分析结果复用(这是一种更高级别的复用,即复用某个系统的分析模型)。

为实现软件复用需要付出额外代价,如投资、时间和可复用构件库。

即使不考虑上述的额外代价,软件复用也不是必然能提高软件生产率。为研究软件复用程度与软件生产率的关系,我们首先引入下列两个量:

生产率P = 程序总长度∕开发该程序所用人时数

复用率R = 复用代码长度∕程序总长度

令Lt为程序总长度(目标代码条数),Ln和Lr分别为新编代码和复用代码的长度(都用目标代码条数来度量)。再令Et、En和Er分别代表开发该程序的总工作量、新编程序的工作量和复用已有软件构件的工作量,则有以下等式成立:

Lt = Ln + Lr, Et = En + Er, P = Lt∕Et, R = Lr∕Lt.

此外,用符号Cn和Cr分别代表开发新代码和复用已有软件构件的生产率,则有:Cn = Ln∕En, Cr = Lr∕Er.

从上述6个等式出发,可以推导出下列的生产率与复用率之间的关系:

从上式可知,复用率R越高,生产率不一定就越高。只有当软件开发人员使用已有的软件构件构造应用系统时,其工作效率比重新从底层编写程序的效率高时,复用率的提高才会导致生产率提高。可见,通过软件复用来提高软件生产率,并不是一件轻而易举的事情。构件的实用程度和使用方便程度,以及软件人员的素质、开发环境等因素,都直接影响软件复用的效果。

二、简答题

1. 答:内聚衡量组成模块的各个元素彼此结合的紧密程度,它是信息隐藏和局部化原理的自然扩展。设计软件时应该力求做到模块高内聚。

当采用结构化范型设计软件系统时,使用功能分解方法划分模块。组成这类模块的元素主要是完成模块功能的可执行语句。如果模块内所有处理元素属于一个整体,完成单一完整的功能,则该模块的内聚称为功能内聚。采用结构化范型开发软件时,功能内聚是最高等级的内聚。

采用面向对象范型设计软件时,使用对象分解方法划分模块。对象是面向对象软件的基本模块,它是由描述该对象属性的数据及可以对这些数据施加的操作封装在一起构成的统一体。因此,组成对象的主要元素是既有数据又有操作,这两类元素是同等重要的。如果一个对象可以完成许多相关的操作,每个操作都有自己的入口点,它们的代码相对独立,而且所有操作都在相同的数据结构上完成,也就是说,操作围绕对其数据所需要做的处理来设置,不设置与这些数据无关的操作,则该对象具有信息性内聚。实际上,信息性内聚的对象所包含的操作本身,应该是功能内聚的。

2.答:当已有的类构件不能通过实例重用方式满足当前系统的需求时,利用继承机制从已有类派生出符合当前需要的子类,从而获得可在当前系统中使用的类构件,这种重用方式称为继承重用。

如果在设计类构件时,把可能妨碍重用的、与应用环境密切相关的操作从一般操作中分离出来,作为适配接口,并且把这类操作说明为多态操作,类中其他操作通过调用适当的多态操作来完成自己的功能,则为了在当前系统中重用已有的类构件,在从已有类派生出的子类中只需重新定义某些多态操作即可满足当前系统的需求,这种重用方式称为多态重用。

通过上面的叙述可以知道,多态重用实际上是一种特殊的继承重用,是充分利用多态性机制支持的继承重用。一般说来,使用多态重用方式重用已有的类构件时,在子类中只需要重新定义的操作比较少,因此,这种重用方式的成本比继承重用方式的成本低。

3.答:有两种情况会导致修改由面向对象分析确定下来的系统需求:一是客户需求或系统外部环境发生了变化;二是分析员对问题域理解不透彻或缺乏领域专家帮助,以致面向对象分析模型不能完整、准确地反映客户的真实需求。

为了调整对目标系统的需求,通常只需简单地修改面向对象分析的结果(例如,增添或删掉一些类,从已有类派生出新类,调整某些类之间的关系),然后把这些修改反映到问题域子系统中。

4.答:人机界面是提供给用户使用的,用户对人机界面的评价在很大程度上由人的主观因素决定。用户的技能水平或职务不同,喜好和习惯也往往不同。因此,为了设计出符合用户需要的人机界面,应该了解和研究用户,根据用户类型设计出为他们所喜爱的用户界面。

5.答:问题空间是现实世界的一部分,它由现实世界中的实体组成。解空间实际上就是软件系统,它由实现解决方案的软件实体组成。

6.答:在面向对象分析阶段建立的对象模型中,对象是对问题空间中实体的抽象。随着软件开发过程进入面向对象设计阶段,这些对象逐渐变成了解空间的实体。

7.答:识别对象的一条主要准则是,寻找应用领域中的重要概念。

在一座图书馆中常见的实体有“书”、“书柜”、“读者”等。在办公室环境中,可能有“文件夹”、“信件”、“职员”等实体。应用领域中特有的这些实体,是对象的主要候选者。它们可以使现实世界中的事物(例如,书);担任的角色(例如,图书馆的读者);组织单位(例如,计算机系);地点(例如,办公室);或设备(例如,打印机)。此外,还可以通过研究已有的分类或聚集结构,发现候选的对象。通过访谈、阅读文档等途径可以列出对象的第一份清单。

识别对象的更简单的方法,是词法分析法。简单地列出图书馆自动化系统需求陈述中的名称,就可以得到下列的候选对象清单:软件,图书馆,系统,工作站,读者,事务,书,图书馆馆员,客户,借书卡,条形码阅读器,书的代码,PC机,图书目录。

上列清单中的某些候选对象并不是问题域中的对象,应该删掉。例如,“软件”是将要开发出的产品,不应该把它包含在问题域模型中。如果有诸如“算法”或“链表”这样的名称作为候选对象,则也应该把它们删掉。在详细设计阶段,可以需要引入(或重新引入)它们作为面向解法的对象。

笼统的名称应该被更具体的名称所代替,或者干脆把它们删掉。在上列的候选对象清单中,“系统”就是一个笼统的名称。事实上,工作站和PC机将连接到同一台主计算机上,因此,可以用“计算机”取代“系统”。

在图书馆自动化系统的需求陈述中,“读者”和“客户”是同义词,只能保留其中一个作为问题域中对象的名字。在图书馆环境中个,“读者”这个词更符合一般人的习惯,因此,应该用它作为对象名。

在决定怎样建立“读者”和“图书馆馆员”的模型时,必须十分慎重。一个具体的人可能同时充当两种角色。在模型中把他作为不同对象恰当还是作为同一个对象的不同角色恰当,在现阶段往往较难确定。目前,决定把读者和馆员作为不同的对象,但是应该记住,当模型精化时有可能改变这个决定。

在本问题中,术语“事务”指的是施加于对象上的操作,而不是一个对象。它导致一系列动作,例如,把借书卡和想借的书递给馆员,把借书卡插入工作站的条形码阅读器,读入书上的条形码等。仅当事务本身具有系统需要的属性时,才应该把它作为对象,例如,如果要求系统生成读者喜爱何种书刊的信息,则把事务作为对象是恰当的。

应该从候选对象清单中删掉的最后一个候选者是“书的代码”。代码描述一个具体对象,应该把它作为对象“书”的属性。

表8.1列出了对象之间的关系。其中一些关系是直接从需求陈述中摘录出来的,另一些关系是从我们关于图书馆的常识中得出的。

表8.1 图书馆对象之间的关系

根据上述分析得出的对象及对象之间的关系,画出图8.1所示的初始类图中。

在这张图中仅包含了关系名,当模型进一步精化时可以包含诸如重数和泛化关系之类的进一步描述信息。

图8.1 图书馆系统的初始对象模型

接下来确定对象的属性。属性描述对象类的实例,构成对象的状态。通过寻找能把不同实例区分开来的特性,可以识别出对象的属性。属性是一个对象类的全部实例的公共性质。应该识别出原子属性而不是复合属性,例如,对于图书馆的“读者”来说,应该识别出属性“姓名”和“地址”,而不应该设置复合属性“姓名与地址”。在分析阶段还应该尽力防止在属性集中出现冗余,例如,不应该同时设置“已借出的书”和“已借出的书数”这样两个属性,因为后者可以通过前者计算出来,仅有前一个属性就足够了。

采用在对象状态中保留冗余信息并由该对象维护这些信息的方法,总能够优化实际的实现结果。例如,在详细设计时我们可以决定在对象状态中包含已借出的书数,而不是在需要时通过计算得出这个消息,这样做可以提高系统运行速度。但是,在分析阶段通常不需要考虑优化问题。

一个对象提供的主要服务是与它的生命周期相关的那些服务。例如,一本书被购入,被借出,被归还零次或多次,最后退出流通;一个人成为图书馆的会员,借书和还书,预约图书,改变地址,交纳罚金等等,直至最后终止会员资格。

读、写对象属性的服务,提供对象的状态信息或改变对象的状态。提供对象状态信息的服务,可能需要引用某些计算,也可能不需要计算。在分析阶段并不需要考虑实现服务的方法。服务是通过计算实现的还是通过简单的查找过程实现的,对于需要这个信息的对象来说是不可见的。

通过研究使用目标系统的情景,可以进一步确定所需要的服务。应该考虑在系统构件之间的典型对话,既应该考虑正常情况下的对话也应该考虑意外情况下的对话。例如,既应该考虑读者顺利地借到一本书的情景,也应该考虑读者借书卡无效的情景,还应该考虑读者逾期还书应该付罚款的情景。图8.2是正常情况下读者借一本书的顺序图。从图中可以看出,

UML顺序图与事件跟踪图很相像,区别仅在于在顺序图中用矩形框代表对象。在图中所描述的交互过程中发生了一系列事情,这些事件将由涉及的对象的操作来处理。

图8.2 正常情况下的借书过程

服务只不过是把对象联系起来的一种途径。使软件系统真正具有面向对象风格的关系,是“整体-部分”聚集关系和“一般-特殊”分类关系。

某些分类关系可以从系统所处理的现实世界问题中已有的分类模式导出来。通过寻找对象之间的关系,可以完成把对象进一步组织成层次系统的分类过程。我们可以把一个对象看作是某些可能的对象的泛化。例如,可以把对象“书”看作是对象“小说”、“诗集”和“工具书”的泛化。这些特化出的对象是否有意义,取决于所处理的问题。如果系统不需要区分小说和诗集,我们就不应该把它们定义成不同的对象类。但是,如果小说和诗集可以借出馆外,而工具书不可以借出馆外,则把小说和诗集作为一类对象,把工具书作为另一类对象,是有意义的。

类似地,我们可以考虑对象之间的相似性,从而把它们看作是一个更一般化的对象的特化。例如,如果图书馆系统需要对象“书”和“杂志”,而且它们的许多属性是相同的,则可以引入一个新的对象类“出版物”,作为对这两类对象的泛化。把共同的属性提升到对象类“出版物”中,然后“书”和“杂志”继承这些属性。注意,泛化出的对象应该代表现实世界中有意义的实体,例如,不应该仅仅因为书和文件柜有相同的属性“位置”,就草率地从这两类对象泛化出一个新的对象类。

刚才泛化出的对象类“出版物”是一个抽象的类,这样的类没有实例。图书馆中仅有从“出版物”特化出的具体类(例如,“书”和“杂志”)的实例。在类的层次结构中,“出

版物”的作用是建立其他对象类之间的关系,并且为它们的用户提供接口描述。在“出版物”层定义的属性和服务,构成了它的全部后代的公共接口。

哪些对象和属性应该放到对象模型中与怎样在类的层次结构中定义它们是密切相关的。例如,如果一个对象仅有一个属性,通常最好要把它作为另外一些对象的属性。此外,一个类的所有实例应该有共同的属性,如果某些属性仅对部分实例有意义,则实际上存在一个分类结构。例如,如果某些书可以借出馆外,另外一些书不能借出馆外,则表明存在一个分类结构,在该结构中“书”类有诸如“小说”和“工具书”那样的特化类。

此外还应该注意,随着时间流逝,对象的属性集和对象所提供的服务也将变化,但是对象类的层次结构将保持相对稳定。例如,如果经过一段运行之后,图书馆决定增加向读者提供的服务(例如,出借音像制品),则只简单地调整图书馆的属性集并扩充读者的服务集。

8.答:在电梯系统的需求陈述中,共有下列11个不同的名称:大厦,电梯,楼层,按钮,运动,指示灯,请求,最低层,最高层,方向和门。这些名称代替的事物可以作为对象的初步候选者。其中,大厦、最低层、最高层和楼层是处于问题边界之外的,因此应该删掉;运动、方向、指示灯、请求和门可以作为其他对象的属性,例如,指示灯(的状态)可以作为按钮类的属性,方向和门(的状态)可以作为电梯类的属性。经过上述筛选后只剩下两个候选的对象类,即电梯和按钮。

在需要陈述中实际上指定了两类按钮,因此,应该为按钮类定义两个子类,它们分别是电梯按钮和楼层按钮。总结上述分析结果,得出图8.3所示的对象模型。这个模型是一个非常初步的模型,在面向对象分析设计的过程中将不断的充实和完善它。

图8.3 电梯系统对象模型的第一代迭代

分析图8.3所示的对象模型就会发现,这个模型还存在比较明显的缺陷:在实际的电梯系统中,按钮并不直接与电梯通信;为了决定分派哪一部电梯去响应一个特定的请求,必须有某种类型的电梯控制器。然而在需求陈述中并没有提到控制器,因此它未被列入候选类中。由此可见,词法分析只为寻找候选类提供了初步线索,但不能指望依靠这种方法找出全部候选类。系统分析员必须根据领域知识和常识做更深入细致的分析工作,才能找出问题域中所有类。

补充了电梯控制器类之后,得到了图8.4所示的对象模型。在这个模型中所有关系均为一对多关系,这使设计和实现变得比较容易。现在,似乎可以着手做面向对象分析的第二步工作,即建立动态模型,但是,必须始终记住,任何时候都可以返回到建立对象模型这项工作上来。

图8.4 电梯系统对象模型的第二代迭代

建立动态模型的目的,是决定每类对象应该做的操作。达到这个目的的一种有效方法,是列出用户和系统之间相互作用的典型情况,即写出脚本(包括正常情况脚本和异常情况脚本)。表8.2和表8.3分别是正常情况脚本和异常情况脚本。

表8.2 电梯系统正常情况脚本

表8.3 电梯系统异常情况脚本

通常,用状态转换图建立动态模型。电梯控制器类是在电梯系统中起关键控制作用的类,我们将画出这个类的状态转换图。为简单起见,仅考虑一部电梯(即n=1)的情况。电梯控制器类的动态模型如图8.5所示,这张状态图的画法与教材中讲的画法大同小异,读者可对照电梯系统的脚本理解它。

图8.5 电梯控制器类的动态模型

其他类的动态模型比较简单,作为练习请读者自行画出。一旦建立了电梯系统的动态模型,就可根据在建立动态模型的过程中获得的信息,重新审视图8.4所示的对象模型,如果看起来仍然令人满意,就可以开始进入面向对象分析的第三步----功能建模。

面向对象分析的第三个步骤是,在不考虑动作次序的情况下,决定产品怎样做各种不同的动作。通常用数据流通来描绘在这一步所得到的信息,由于这样的图描绘了在产品范围内的功能相关性,故称为功能模型。图8.6是电梯系统的功能模型。

图8.6 电梯系统功能模型的第一次迭代

结构化范型中使用的数据流图与面向对象范型中使用的数据流图的差别,主要是数据存储的含义可能不同:在结构化范型中数据存储几乎总是作为文件或数据库来保存,然而在面向对象范型中类的状态变量(即属性)也可以是数据存储。因此,面向对象范型的功能模型中包含两类数据存储,分别是类的数据存储和不属于类的数据存储。

电梯系统的人机界面很简单:用户通过按下楼层按钮或电梯按钮向系统发指令,系统通过按钮灯亮或灯灭向用户提供反馈信息。在面向对象分析过程中所建立的问题域模型,已经包含了人机界面功能,因此,无须再单独设立一个人机交互子系统。类似地,本系统也无须包含独立的数据管理子系统和任务管理子系统。面向对象设计的主要任务,就是进一步完善通过面向对象分析所建立的系统模型。

根据从功能模型中获得的信息,重新审查对象模型(图8.4)和动态模型(图8.5),以便进一步完善面向对象分析的结果。从图8.6可见,电梯类的主要功能是执行电梯控制器类发来的电梯操作命令,如果把电梯门(的状态)作为电梯的一个属性,则电梯类还要执行门操作命令,这样电梯类的功能就不单一了。比较好的做法是,把电梯门独立出来作为一个类。一旦“电梯门”成为一个独立的对象,则打开或关闭电梯门的惟一办法就是向对象“电

梯门”发送一条消息。如果电梯门类的封装性很好,就能保证不会在错误的时间开/关电梯门,从而能有效地杜绝严重的意外事故。

同样,出于在未经授权的情况下不允许修改请求的考虑,也应该把“请求”作为一个独立的类。

增加了“电梯门”类和“请求”类之后,得到对象模型的第三次求精结果,如图8.7所示。

图8.7 电梯系统对象模型的第三次迭代

修改了对象模型之后,必须重新审查动态模型和功能模型,看看是否需要进一步求精。显然,必须修改功能模型,把数据存储“电梯门”和“请求”标识为类,如图8.8所示。经审查发现,动态模型现在仍然适用。

图8.8 电梯系统功能模型的第二次迭代

软件工程(第五版)-习题及答案---第六章

一、选择题 1、UML的主要特点不正确的是(C)。 A、面对对象,表达能力强 B、可视化建模 C、面对过程,表达能力强 D、统一标准 2、静态建模图不包括(B)。 A、用例图 B、协作图 C、类图 D、对象图 3、用例图的模型元素不包括(D)。 A、用例 B、系统 C、行为者 D、软件开发者 4、类图的要素不包括(D)。 A、类名称 B、操作 C、属性 D、对象 5、时序图中的要素不包括(A)。 A、执行者 B、对象 C、对象生命线 D、消息 6、对象模型的描述工具是(C)。 A、状态图 B、数据流图 C、对象图 D、结构图 7、协作图的要素不包括(A)。 A、用例 B、对象 C、链 D、消息 8、类图反映了系统中对象之间的抽象关系,不包括(D)。 A、关联 B、聚合 C、泛化 D、内聚 9、下面(D)不是状态图的图符。 A、圆角的矩形 B、实心圆点 C、实心圆环 D、椭圆 10、描述类中某个对象的行为,反映了状态与事件关系的是(A)。 A、状态图 B、数据流图 C、对象图 D、结构图 11、动态模型的描述工具(C)。 A、对象图 B、设计图 C、状态图 D、结构图 12、表示对象的相互行为的模型是(A)模型。 A、对象 B、动态 C、结构 D、静态 13、有关类和对象的描述中,错误的是(A)。 A、一个类只能有一个对象 B、对象是类的具体实例 C、类是某一类对象的抽象 D、类和对象的关系是一种数据类型和变量的关系 14、用例图中用例之间的关系通常有关联关系、依赖关系和(C)关系。 A、协作 B、聚合 C、泛化 D、内聚 15、动态模型图包括:时序图、协作图、状态图和(C)图。 A、对象图 B、设计图 C、活动图 D、结构图 二、简答题 1.简要介绍用例图的三个要素。 答:用例图主要包括以下三个元素: ①用例(Use Case):用例是系统的使用过程或要执行的动作序列,用来描述某个参与者使用系统所完成的功能。在图中用椭圆来表示,用例名称可写在椭圆中或椭圆下面。 ②参与者(Actor)。或称角色或执行者,它是系统外部的一个实体(可以是任何的事物或人所扮演的角色等)。在图中用一个小人图形表示。

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

软件工程导论第五章课后 答案 -标准化文件发布号:(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-1 什么是软件危机? 答:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3 什么是软件工程? 答:是指导计算机软件开发和维护的一门工程学科。 1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 答:目前使用得最广泛的软件工程方法学有2种: 传统方法学:也称为生命周期方法学或结构化范型。 优点:把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。 缺点:当软件规模庞大时,或者对软件的需求是模糊的或会随着时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 面向对象方法学: 优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 1-5、根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加: M = 4080 e0.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=4080 e0.28(1985-1960)=4080 e7=4474263(字) 如果字长为16位,则这个存储器的价格是 P=0.048 ×0.721995-1974×73577679 =5789(美元) (2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。 在1985年一名程序员每天可开发出10条指令,如果每月的20个工作日,则每人每月可开发出10*20条指令。 为了开发4474263条指令以装满存储器,需要的工作量是: 4474263 / 200 ≈22371(月) 程序员的月平均工资是4000美元,开发出4474263条指令的成本是 22371 *4000 =89484000(美元) (3)在1995年对存储容量的需求估计为: M=4080 e0.28(1995-1960) =73577679 (字)=4080e9.8

软工历年考题(加答案)

试卷一 中南大学考试试卷 2006--2006 学年学期时间110分钟 软件工程课程48 学时 3 学分考试形式:闭卷 专业年级:总分100分,占总评成绩100 % 注:此页不作答题纸,请将答案写在答题纸上 1.填空题(本题20分,每小题2分) 1. 瀑布模型是以文档为驱动、适合于(软件需求确定的)软件项目的开发。 2. 需求分析的基本任务是(确定用户需要软件做什么)。 3. 若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是(边界值分析法)。 4. 根据程序流程图划分的模块通常是(过程)内聚的模块。 5. 软件的分类,按其功能可分为:系统软件、(支撑软件)和应用软件。 6. UML的定义包括UML语义和(UML表示法)两个部分。 7. 客观世界中的若干类,通常有两种主要的结构关系:即分类结构和( 整体与部分结构)。 8. IDEF1X图用来描述系统的(数据)模型,主要有实体、联系和(属性)三种成分,其中实体可分为独立实体和(依赖实体),且一个实体只能在图中出现一次。 二、简答题(本题30分,每小题5分) 1. 什么是软件工程?软件工程和计算机科学有何区别? 答:软件工程是指导软件开发和维护的工程性学科; 计算机科学着重于原理和理论,软件工程与计算机科学不同,软件工程着重于如何建造软件系统,软件是计算机中看不见摸不着的逻辑部分,以程序、数据和文档的形式出现。 2. 面向对象方法和结构化方法有何区别与联系? 答:区别:面向对象从所处理的数据入手,以数据为中心来描述系统,其基本思想是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界的方法与过程,基本原则为:对象+类+继承+消息通信 结构化方法首先关心的是功能,强调以模块为中心,其基本思想是自顶向下,逐步求精,单入口,单出口,基本原则为:抽象与功能的分解 联系: 软件开发过程中,在需求分析和规格说明阶段采用结构化方法,在设计和实现阶段采用面向对象方法。 3. 什么是模块的作用域和模块的控制域?为何要求模块的控制域必须在作用域内? 答:模块的作用域是指模块中判定的作用范围,它是指所有受这个判定范围影响的模块;模块的控制域是指模块本身及其直接或间接调用的模块; 如果模块的作用域不在控制域内,则会增加数据间的传递量,使模块间出现控制耦合

软件工程第6章-课后作业参考答案说课讲解

软件工程第6章-课后作业参考答案

第六章作业题参考答案3.画出下列伪码程序的程序流程图和盒图: START IF p THEN WHILE q DO f END DO ELSE BLOCK g n END BLOCK END IF STOP 答:(1)流程图如图6-1所示: 图6-1 从伪码变成的程序流程图(2)该程序的盒图如图6-2所示:

图6-2 从伪码变成的程序盒图 4.下图给出的程序流程图代表一个非结构化的程序,请问: (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。 (3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。 答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。 (2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图6-3描绘了等价的结构化程序的盒图。 (a)解法1 (b)解法2

图6-3 与该图等价的结构化程序(用flag) (3)不使用flag把该程序改造为等价的结构化程序的方法如图6-4所示。 图6-4 与该图等价的结构化程序(不用flag) 8.画出下列伪码程序的流图,计算它的环形复杂度。你觉得这个程序的逻辑有什么问题吗? C EXAMPLE LOOP:DO WHILE X>0 A=B+1 IF A>10 THEN X=A ELSE Y=Z END IF IF Y<5 THEN PRINT X,Y ELSE IF Y=2 THEN GOTO LOOP ELSE C=3 END IF END IF G=H+R END DO IF F>0 THEN PRINT G ELSE PRINT K END IF STOP 答:(1)该伪码的流程图如图6-8所示:

第五章习题答案

第五章习题答案 5-1 什么是中断系统?中断系统的功能是什么? 实现中断功能的硬件和软件称为中断系统. 中断系统功能包括进行中断优先排队、实现中断嵌套、自动响应中断和实现中断返回。 5-2 什么是中断嵌套? CPU在响应某一个中断源中断请求而进行中断处理时,若有中断优先级更高的中断源发出中断请求,CPU会暂停正在执行的中断服务程序,转向执行中断优先级更高的中断源的中断服务程序,等处理完后,再返回继续执行被暂停的中断服务程序,这个过程称为中断嵌套。 5-3 什么是中断源?MCS-51有哪些中断源?各有什么特点? ①实现中断功能的硬件和软件称为中断系统,产生中断请求的请求源称为中断源. ②5个中断源中共有两个外部中断、两个定时中断和一个串行中断。 (1)外部中断源 外部中断是由外部原因(如打印机、键盘、控制开关、外部故障)引起的,可以通过两 个固定引脚来输入到单片机内的信号,即外部中断0(INT0)和外部中断1(INT1)。 (2)定时中断类 定时中断是由内部定时(或计数)溢出或外部定时(或计数)溢出引起的,即T0和T1 中断。 (3)串行口中断类 串行口中断是为接收或发送一帧串行数据,硬件自动使RI和TI置1,并申请中断 5-4 MCS-51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对外部中断请求的响应? (1)MCS-51单片机的最短响应时间为3个机器周期,最长响应时间8个机器周期。 (2)有下列任何一种情况存在,则中断响应会受到阻断。 ①CPU正在执行一个同级或高一级的中断服务程序; ②当前的机器周期不是正在执行的指令的最后一个周期,即正在执行的指令还未完成前,任何中断请求都得不到响应; ③正在执行的指令是返回指令或者对专业寄存器IE、IP进行读/写的指令,此时。在 执行RETI或者读写IE或IP之后,不会马上响应中断请求,至少在执行一条其他之后才会 响应。若存在上述任何一种情况,中断查询结果就被取消,否则,在紧接着的下一个机器周期,就会响应中断。 5-5 MCS-51有哪几种扩展外部中断源的方法?各有什么特点? 扩展外部中断源的方法有定时扩展法和中断加查询扩展法两种。定时扩展法用于外部 中断源个数不太多并且定时器有空余的场合。中断加查询扩展法用于外部中断源个数较多的 场合,但因查询时间较长,在实时控制中要注意能否满足实时控制要求。 5-6 MCS-51单片机各中断源发出的中断请求信号,标记那些寄存器中? 外部中断0(INT0)和外部中断1(INT1)中断请求信号标记在TCON中IE1和IE0。 T0和T1中断中断请求信号标记在TCON中TF1和TF0 串行口中断类中断请求信号标记在SCON中TI和RI 5-7 编写出外部中断1为跳沿触发的中断初始化程序。 SETB EA SETB EX1 SETB IT1

软件工程课后题答案

附加题: 1、对下列子程序进行调试: procedure example(y,z: real; var x: real) begin if (y>1) and (z=0) then x:=x/y; if (y=2) or (x=l) then x:=x+l; end. 该子程序接受x, y, z的值,并将计算结果x的值返回给调用程序。答题要求: (1)画出流程图。 (2)用白盒法设计测试用例,并写出它所满足的是何种覆盖标准、预期结果以及路径。 答:(1)流程图 (2)用白盒法中条件组合覆盖设计测试用例: ①y=2, z=0, x=4; ②y=2, z=1, x=1; ③y=1, z=0, x=2; ④y=1, z=1, x=1. 2、某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。现要求用黑盒测试法中的边界值法写出测试用例。 答: 输入条件测试用例说明测试数据 报表日期的1个数字字符 5 类型及长度5个数字字符20035 7个数字字符2003005 有1个非数字字符2003.5 全部是非数字字符MAY--- 6个数字字符200305 日期范围在有效范围200301 边界上选取200812 数据200300

200813 月份范围月份为1月200301 月份为12月200312 月份<1 200300 月份>12 200313 3、对以下程序进行测试: PROCEDURE EX(A,B:REAL;VAR X:REAL); BEGIN IF(A=3)OR(B> 1)THEN X:=A×B IF(A>2)AND(B=0)THEN X:=A-3 END 先画出程序流程图。再按不同逻辑覆盖法设计一种(写出名称)测试数据。 答: 语句覆盖A=3 B=0 4、程序功能说明书指出,某程序的输入条件为:每个学生可以选修1至3门课程,试用黑盒法设计测试用例。 (1)按等价分类法设计测试用例(要求列出设计过程) (2)按边缘值分析法设计测试用例。 答: 1)合理等价类 选修1门 选修2门 选修3门 不合理等价类 没选课 选3门以上 测试用例 选修=2

软件工程 简答题复习题(带答案)

n n g a r 第一章 1,与计算机硬件相比,计算机软件有哪些特点? 软件的特点如下。 1)无法直接观察计算机软件的物理形态,只能通过观察它的实际运行情况来 了解它的功能、特性和质量等。 2)人们在分析、设计、开发、测试软件产品,以及在软件开发项目的管理过 程中,渗透了大量的脑力劳动。 3)不存在像硬件一样的磨损和老化现象,但存在着缺陷维护和技术更新的问 题。 4)软件的开发和运行必须依赖于特定的计算机系统环境。 5)具有可复用性。 3,什么是软件危机?什么原因导致了软件危机? 软件危机的现象如下。 1)预算,项目一再拖延。 2)需求,开发的软件不能满足用户的要求,项目成功率低。 3)软件工程方法,软件可维护性差、软件质量差、可靠性差。 4)开发工具落后,手工方式,开发效率低。 所有导致软件危机的原因,都与软件本身的产品特点相关。 1)软件是一个复杂的逻辑产品。如果没有解决复杂问题的有效方法,以及软 件产品的结构、质量、可维护性得不到保障,开发与维护费用就会持续升 高。 2)软件产品不能实现大规模复用,这导致了软硬件生产效率的不同。 3)软件生产是脑力劳动,它看不见、摸不着,开发成本、开发周期等都无法 做到准确估算,生产过程不易控制。 4)软件成本主要是由研发成本构成;而硬件的生产成本主要是材料和制造成 本,分摊的研发成本很少,即软件研发过程与硬件制造过程相比要复杂得 多。 5,请简述软件工程研究的内容。

n d A i 软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。 软件开发方法的内容涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实 施、系统维护、版本升级等。 常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型等。软件支持过程由所支持的CASE 工具组成,常用的CASE 工具有Power Designer 和Rational Rose 等。 7,请简述软件工程的目标、过程和原则。 目标、过程和原则是一切工程的三维框架,这里是以工程的观点来看待软件开 发。 1)软件工程的目标:降低成本、及时交付高质量的软件产品(高质量、高效 率、高效益)。2)实现目标的过程即完成产品加工的过程,包括:基本过程、支持过程和组 织过程。 3)进行过程应遵守的原则:原则就是过程中的轨道约束,包括:选取适宜的 开发范型、采用合适的设计方法、提供高质量的工程支持、重视开发过程 的管理。 9,请简述现代软件工程与传统软件工程显著的区别和改进。 1)传统的软件工程是基于结构化的软件开发方法,而现代软件工程是以面向 对象技术为标志。 2)不仅在编程技术上有很大的改进,而且在分析、设计等整个开发过程中, 采用面向对象的思维方式,更加完整、自然地反映客观世界。3)采用架构技术,开发效率、产品质量得到了极大提高。 4)更注重团队开发和管理,融入更多、更新的管理理念和手段,如RUP 模型、 XP 模型、过程改进、能力成熟度模型、配置管理等。 第二章 1,如何理解软件生命周期的内在特征?

【免费下载】软件工程第五版 习题及答案 第五章

一、判断题 1、(√)详细设计也称模块设计。 2、(×)在数据代码设计时,应尽量让一条代码代表多个信息。 3、(×)在数据代码设计时,应可能设计字母和数字混合代码。 4、(×)在输出界面设计时,要尽可能使用代码或缩写,以求简洁。 5、(×)详细设计评审应尽可能和概要设计评审一同进行。 二、选择题 1、软件详细设计的主要任务是确定每个模块的(A)。 A、算法和使用的数据结构 B、外部接口 C、功能 D、程序 2、借助于软件工具,可将(C)容易地转换为高级语言源程序。 A、程序流程图 B、N-S图 C、PAD图 D、判定表 3、不属于详细设计工具的是(A)。 A、DFD图 B、PAD图 C、PDl D、N-S图 4、程序的三种基本结构是(C)。 A、过程、子过程和子程序 B、递归、堆栈和队列 C、顺序、选择和重复 D、调用、返回和转移 5、下面描述中,符合结构化程序设计风格的是(A)。 A、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B、模块只有一个入口,可以有多个出口 C、注重提高程序的执行效率 D、不使用goto语句 三、简答题 1、软件的详细设计阶段完成的主要任务是什么? 答:(1)算法设计;(2)数据结构设计;(3)模块接口细节设计;(4)测试用例设计;(5)数据库物理设计;(6)数据代码设计;(7)其他设计;(8)编写详细设计说明书 并进行评审。 2、数据输入界面设计的主要原则有哪些? 答:在设计数据输入界面时应做到:尽量简化用户的工作、减少输入的出错率;减轻用户的记忆负担、尽可能减少输入量并实现自动输入;对共同的输入设置默认值;使用代码或缩写;自动填入已输入过的内容;列表式输入; 数据分组输入。 3、代码设计的原则有哪些? 答:代码设计的原则是标准化、唯一性、可扩充性、简单性、规范性和适应性。 四、应用题 1、请分别使用程序流程图、PAD图和N-S图描述下列程序的算法。 (1)求整数1-n的累加和SUM,其中n的值由键盘输入。 答:程序流程图如下

软件工程课后习题_第1,2,3章

第一章: 一.判断题: 1.软件就程序,编软件就是编写程序。() 2.软件危机的主要表现是软件需求增加,软件价格上升。() 3.软件工程科学出现的主要原因是软件危机的出现。() 4.与计算机科学的理论研究不同,软件工程是一门原理性学科() 二.选择题 1.在下列选项中,()不是软件的特征 A系统性与复杂性 B 可靠性与一致性 C 抽象性与智能性 D 有形性与可控性 2.软件危机的主要原因是: A软件工具落后 B 软件生产能力不足 C 对软件的认识不够 D 软件本身的特点及开发方法 3.下列说法正确是的是 A 20世纪50年代提出了软件工程的概念 B 20世纪60年代提出了软件工程的概念 C 20世纪70年代提出了客户机/服务器技术 D 20世纪80年代软件工程学达到成熟 4.( )是将系统化的规范的可定量的方法应用于软件的开发,运行和维护的过程。它包括方法、工具和过程三个要素 A 软件生命周期 B 软件测试 C 软件工程 D 软件过程

5.在下列选项中,()不属于软件工程学科索要研究的基本内容。 A 软件工程材料 B 软件工程目标 C 软件工程原理 D 软件工程过程 6.软件工程的三要素是() A技术,方法和工具 B 方法,对象和类 C 方法,工具和过程 D 过程,模型和方法 7.用来辅助软件开发,运行,维护,管理,支持等过程中的活动的软件成为软件开发工具,通常也称为()工具 A CAD B CAI C CAM D CASE 三简答题 1.与计算机硬件相比,计算机软件有哪些特点? 2.软件就是程序吗?如何定义软件? 3.什么是软件危机?是什么原因导致了软件危机? 4.为什么说软件工程的开发能在一定程度上解决软件危机的各种弊端? 5.请简述软件工程的研究内容。 6.请简述软件工程的三要素。 7.请简述软件工程的目标,过程和原则。 8.请简述软件工程的基本原则。 9.请简述现代软件工程与传统软件工程显著的区别与改进。 第二章: 一判断题 1.瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。

《软件工程》期末考试题及答案++精华版!!(20200701194934)

一、填空题 1 ?软件开发模型有(瀑布模型)(螺旋模型)第四代技术模型 (原型模型)构件组装模型、混合模型。 2 ?可行性研究一般可以从(经济)可行性、(技术)可行性、 运行可行性、法律可行性和开发可行性等方面来研究。 3. 现在向银行存款,年利率为 i ,若希望在n 年后从银 行得到F 元,现在应该存入的钱数为(F/(1+i )n )。 4?数据流图的基本符号包括(数据输入的源点和数据输 出的汇点)、(加工)、(数据流)、(数据存储文件)。 5. Jackson 图除了可以表达程序结构外, 还可以表达(数 据结构),它首先要分析(数据结构),并用适当的工具来描述。 6 ?详细设计的工具有图形工具)、表格工具和(语言工具)。 7. IPO 图由(输入)、处理和(输岀)三个框组成。这个 图的特点是能够直观的显示三者之间的关系。 &面向对象技术是一整套关于如何看待(软件系统)和 (现实世界)的关系,以什么观点来研究问题并进行分析求解, 以及如何进行系统构造的软件方法学。 面向对象方法是一种运 用(对象)、(类八(继承)、(封装)、聚集、消息传送、多态 性等概念来构造系统的软件开发方法。 二、单项选择题 《软件工程》期末考试样题 1. 下列(A ) 属于系统软件。 A. WINDOWS 2000 B. Word C. Flash D. 3D MAX 2. 下列哪个图是 N — S 图的构 件 A . B. D. D )不是利用笛卡尔坐 实施工程 程序编码 B. D. C )。

3.对于螺旋模型,下列(标表达的活动。 A. 制定计划 C.风险分析 三、多项选择题 1 ?软件危机可以表现为(ABXD )。 A ?产品不符合用户的需要 B. 软件产品的质量差 C. 软件的可维护性差 D. 软件的价格昂贵 2. Jackson图中一般可能包括(ABCD )。 A .表头 B. 表体 C. 表名 D. 字段名 3. 关于内容耦合的描述正确的是(AD )。 A、内容耦合是最高程度的耦合 B、应该尽量使用内容耦合 C、高级语言一般设计成允许内容耦合的形式 D、如果一个模块有多个入口,可能发生内容耦合 4. 下列属于不标准的书写格式(BCD )。 A、书写时适当使用空格分隔 B、一行写入多条语句 C、嵌套结构不使用分层缩进的写法 D、程序中不加注释 四、判断题(正确的在括号内打上,错误的打上“X” )1?软件生存 周期是从软件开始开发到开发结束的整个时期。() 2?系统流程图是一个典型的描述逻辑系统的传统工具。 () 3.数据流图和数据字典共同构成系统的逻辑模型。(1) 4?扇出是一个模块直接调用的模块数目,一般推荐的扇出为3或4。( 1 ) 5?耦合用于衡量一个模块内部的各个元素彼此结合的紧密程 度。()

软件工程第五版课后习题答案第五章-推荐下载

习题5 3(1)数据流图如下: 对数据流图划分边界,如下所示: 按照以上数据流图设计软件结构,如下所示:

储蓄系统 输入用户 信息 处理用户请求 输出相关清单 4(1)数据流图如下: (2)需求说明: 功能需求:系统需要能查出教师的原有工资,计算出教师的现有工资,并打印相关信息。 数据需求:教师的原有工资信息,教师赡养的人数,教师的工龄 行为需求:系统要能判断原有工资是否符合涨工资要求,要精确计算现有工资,要提供给用户调查信息的借口与界面。 (3)用a 算法的HIPO 图:

教师工资系统工资调整 2.0 用b 算法的HIPO 图: 教师工资系统工资调整 2.0对于算法(a):优点:这样设置符合常规思路,容易让人理解 缺点:计算的次数较多。检索效率低。 对于算法(b):优点:计算的次数较少,效率高 缺点:该算法不易于理解。涉及到排序算法的设计。 (4)所画的数据流图更符合a 算法。 5.答:需求分析:要实现三大功能,发牌;确定获胜方和牌型;模拟多次游戏,计算牌型的获胜和平局的概率。 、管路敷设技术处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标高等,要求技术交底。管线敷设技术包含线槽、管架等多语文电气课件中管薄、接口不严等问题,合理利用管线敷设技术。线缆敷设原则:在分线盒处,当不同电压回路交叉、电气课件中调试行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技术指导。对于调试过程中高中资料试卷技术、电气设备调试高中资料试卷技术围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必停机。因此,电力中资料试卷保护装置调试技术,要求电力保护装置做到准确灵活。对于差动保护装置高中资料试卷

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

计算机科学与技术 第六章习题答案 4、图6.18给出的程序流程图代表一个非结构化的程序,问: (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。 (3)在(2)题的设计中使用附加的标志变量flag了吗?若没有,再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。 图6.18 一个非结构化程序 答:(1)图示程序的循环控制结构有两个出口,不符合结构程序的定义,因此是非结构化的程序。 (2)设计的等价结构化程序盒图如下所示:

(3)在第(2)题中没有使用标志变量flag,设计使用附加的标志变量flag,将上述程序改成等价的结构化程序,如下盒图所示: 7、某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元,则等于手续费为交易金额的8.4%;如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。要求:(1)用判定表表示手续费的计算方法。(2)用判定树表示手续费的计算方法。答:(1)用判定表表示手续费的计算方法如下所

软工题第五章

第五章习题 一、选择题 1.对于软件产品来说,有4 个方面影响着产品的质量,即( A )、( B )、( C )及成本、时间和进度等条件。重视软件过程的质量是近年来质量管理理论和实践的新发展。 重视软件过程质量的控制,其部分原因可能是:相对于产品质量的控制来说,过程质量的控制是( D )、( E )、( F ),而产品质量的控制是( G )、( H )、( I )。 供选择的答案: A ~ C. ①开发时间② 开发技术③ 过程质量④ 风险控制 ⑤质量控制⑥ 人员素质⑦ 项目管理⑧ 配置管理 D ~ I. ①主动的② 被动的③ 整体的④ 系统的 ⑤ 先期的⑥ 事后的⑦ 个别的⑧ 部分的 2.在软件维护的实施过程中,为了正确、有效地修改,需要经历以下 3 个步骤:( A )、( B )、( C )。( A )是决定维护成败和质量好坏的关键。( C )包括( D )确认、计算机确认和维护后的( E )。 供选择的答案: A ~ C. ①修改程序② 建立目标程序③ 分析和理解程序 ④ 重新验证程序⑤ 验收程序 D.①动态②静态③人工④自动 E.①验证② 验收③ 检验④ 存档 2.A.③,B.①,C.④,D.②,E.② 在软件维护的实施过程中,为了正确、有效地修改,需要经历以下3个步

骤:分析和理解程序、修改程序和重新验证程序。经过分析,全面、准确、迅速地理解程序是决定维护成败和质量好坏的关键。有如下几种方法:分析程序结构图、数据跟踪、控制跟踪及其它方法。 在将修改后的程序提交用户之前,需要通过静态确认、计算机确认和维护后的验收,保证修改后的程序的正确性。 3?从供选择的答案中选出同下列各叙述关系最密切的字句。 A.软件从一个计算机系统或环境转移到另一个计算系统或环境的容易程度。 B.软件在需要它投入使用时能实现其指定的功能的概率。 C.软件使不同的系统约束条件和用户需求得到满足的容易程度。 D.在规定的条件下和规定的一段期间内,实现所指定的功能的概率。 E.尽管有不合法的输入,软件仍能继续正常工作的能力。 供选择的答案: ①可测试性②可理解性③可靠性④可移植性 ⑤可使用性⑥兼容性⑦容错性⑧可修改性 ⑨可接近性⑩一致性 4?软件可移植性是用来衡量软件的(A )的重要尺度之一。为了提高软件的可移植性,应注意提咼软件的(B )。米用(C )有助于提咼(B )。为了提高可移植性,还应(D )。使用(E )语言开发的系统软件具有较好的可移植性。 供选择的答案: A.①通用性②效率③质量④人机界面 B.①使用的方便性② 简洁性③ 可靠性④ 设备独立性 C.①优化算法② 专用设备③ 表格驱动方式④ 树型文件目录 D. ①有完备的文件资料② 选择好的宿主计算机③ 减少输入输出次数④ 选择好的操作系统

软件工程课后习题答案

软件工程课后习题答案 第一章 一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现: (1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。

(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因: (1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

软件工程简答题复习题(带答案)

第一章 1,与计算机硬件相比,计算机软件有哪些特点? 软件的特点如下。 1)无法直接观察计算机软件的物理形态,只能通过观察它的实际运行情况来了 解它的功能、特性和质量等。 2)人们在分析、设计、开发、测试软件产品,以及在软件开发项目的管理过程 中,渗透了大量的脑力劳动。 3)不存在像硬件一样的磨损和老化现象,但存在着缺陷维护和技术更新的问 题。 4)软件的开发和运行必须依赖于特定的计算机系统环境。 5)具有可复用性。 3,什么是软件危机?什么原因导致了软件危机? 软件危机的现象如下。 1)经费超出预算,项目一再拖延。 2)不重视需求,开发的软件不能满足用户的要求,项目成功率低。 3)没有规范的软件工程方法,软件可维护性差、软件质量差、可靠性差。 4)开发工具落后,手工方式,开发效率低。 所有导致软件危机的原因,都与软件本身的产品特点相关。 1)软件是一个复杂的逻辑产品。如果没有解决复杂问题的有效方法,以及软件 产品的结构、质量、可维护性得不到保障,开发与维护费用就会持续升高。 2)软件产品不能实现大规模复用,这导致了软硬件生产效率的不同。 3)软件生产是脑力劳动,它看不见、摸不着,开发成本、开发周期等都无法做 到准确估算,生产过程不易控制。 4)软件成本主要是由研发成本构成;而硬件的生产成本主要是材料和制造成 本,分摊的研发成本很少,即软件研发过程与硬件制造过程相比要复杂得 多。 5,请简述软件工程研究的内容。 软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。 软件开发方法的内容涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级等。 常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型等。 软件支持过程由所支持的CASE工具组成,常用的CASE工具有Power Designer和

软件工程课后习题参考答案

1.简述软件开发的本质。 答:软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。P19 2.简述实施软件开发的基本途径。 答:实施软件开发的基本途径是系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个 结构——系统模型。P19 3.简述何谓模型以及软件开发中所涉及的模型。 答:模型是一个抽象。该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之 间所具有的特定语义的关系,还包括对该系统边界的描述。 软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述 了实现概念模型的软件解决方案。 4.简述软件开发所涉及的两大类技术。 答:软件开发所涉及的两大类技术为:一是求解软件的开发逻辑,二是求解软件的开发手段。 5、简述需求与需求规约的基本性质。 答:需求的基本性质:1) 必要的,该需求是用户所要求的。2)无歧义的,该需求只能用一种方式解释。3)可测的,该 需求是可进行测试的。4)可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。5)可测量的,该需求是可测量的。 需求规约的基本性质:1)重要性和稳定性程度:按需求的重要性和稳定性,对需求进行分级。2)可修改的:在不过多地 影响其他需求的前提下,可以容易地修改一个单一需求。3)完整的:没有被遗漏的需求。4)一致的:不存在互斥的需 求。 6、简述软件需求的分类。 答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可分为性能需求,外部接口需求、 设计约束和质量属性需求。P23 Array 7、举例说明功能需求和非功能需求之间的基本关系。 答:非功能需求可作用于一个或多个功能需求,例如 非功能需求可作用于一个或多个功能需求 其中,非功能需求1作用于功能需求1和功能需求3 8、有哪几种常用的初始需求发现技术? 答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。P26 9、简述需求规约的3种基本形式。 (1) 非形式化的需求规约。非形式化的需求规约即以一种自然语言来表达需求规约,如同使用一种自然语言写了一 篇文章。(2) 半形式化的需求规约。半形式化的需求规约即以半形式化符号体系(包括术语表、标准化的表达格式等)来表达需求规约。(3)形式化的需求规约。形式化的需求规约即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性注释的支持。P29 10、简述软件需求规约的内容和作用。 答:软件需求规约的内容有:引言、总体描述、特定需求、附录、索引。P28 需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。P31 11、简述需求规约在项目开发中的基本作用。 答:需求规约的作用可概括为以下4点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础。P31 12、简述需求规约和项目需求的不同。 答:需求规约和项目需求是两个不同的概念。需求规约是软件开发组织和用户之间一份事实上的技术合同书,即关注产品需求,回答“交付给客户的产品/系统是什么”;而项目需求是客户和开发者之间有关技术合同——产品/系统需求的理解,应记录在工作陈述中或其他某一项目文档中,即关注项目工作与管理,回答“开发组要做的是什么”。P30 13、何谓模块耦合?简述模块耦合的类型。 答:耦合是不同模块之间相互依赖程序的度量。

(完整版)软件工程第六章答案

作业4参考答案 1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作? 答:转化如下: K = 1 DO WHILE (条件.AND. K.EQ.1) 程序块1 K=K+1 END DO DO WHILE ((.NOT. 条件) .AND. K.EQ.1) 程序块2 K=K+1 END DO 2.假设允许使用SEQUENCE和IF_THEN_ELSE两种控制结构,怎样利用它们完成DO_WHILE操作? 答:转化如下; label: IF (条件) THEN 程序块 GOTO label ELSE 程序块 END IF 3.画出下列伪码程序的程序流程图和盒图: START IF p THEN WHILE q DO f END DO ELSE BLOCK g n END BLOCK END IF STOP 答:(1)流程图如图4-1所示:

图4-1 从伪码变成的程序流程图 (2)该程序的盒图如图4-2所示: 图4-2 从伪码变成的程序盒图 4.下图给出的程序流程图代表一个非结构化的程序,请问: (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。 (3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag 的程序;若用了,再设计一个不用flag的程序。 答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。 (2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图4-3描绘了等价的结构化程序的盒图。

相关主题
文本预览
相关文档 最新文档