首页 软件工程 第七、八章习题

软件工程 第七、八章习题

举报
开通vip

软件工程 第七、八章习题软件工程第七、八章八章应该依据什么准则来评价脚本?答:脚本必须从用户的观点来描述每个重要的功能序列,因此,脚本应该能够说明系统的一类重要功能或具体的使用方法。2.用非正式分析法分析确定下述杂货店问题中的对象。一家杂货店想使其库存管理自动化。这家杂货店拥有能够记录顾客购买的所有商品的名称和数量的销售终端。顾客服务台也有类似的终端,以处理顾客的退货。它在码头有另一个终端处理供应商发货。肉食部和农产品部有终端用于输入由于损耗导致的损失和折扣。答:非正式分析也称为词法分析,这种方法把用自然语言书写的需求陈述中的名词作为候选...

软件工程  第七、八章习题
软件工程第七、八章八章应该依据什么准则来评价脚本?答:脚本必须从用户的观点来描述每个重要的功能序列,因此,脚本应该能够说明系统的一类重要功能或具体的使用方法。2.用非正式分析法分析确定下述杂货店问题中的对象。一家杂货店想使其库存管理自动化。这家杂货店拥有能够记录顾客购买的所有商品的名称和数量的销售终端。顾客服务台也有类似的终端,以处理顾客的退货。它在码头有另一个终端处理供应商发货。肉食部和农产品部有终端用于输入由于损耗导致的损失和折扣。答:非正式分析也称为词法分析,这种方法把用自然语言书写的需求陈述中的名词作为候选的对象。从对杂货店问题的描述中,可以找出下列名词作为对象的候选者:杂货店,库存,顾客,商品,名称,数量,销售终端,服务台,终端,退货,码头,供应商,发货,肉食部,农产品部,损耗,损失,折扣。其中,“退货”粗看起来是动词,好像应该作为操作的候选者,但是,经仔细分析可知,退货包含货物名称、数量、价格等属性,实际上是一类对象。类似地,“发货”也应该作为一类对象。词法分析仅仅帮助我们找到一些候选的对象,接下来应该严格考察每个候选对象,从中删去不正确的或不必要的,只保留确实应该记录其信息或需要其提供服务的那些对象。具体说到杂货店问题,“名称”和“数量”实际上是顾客所购买的商品的属性,不是独立存在的对象;“销售终端”和“终端”是同样的硬件设备,使用统一的名字“终端”就可以了;“服务台”和“码头”是放置某些终端的地点,它们与本软件关系不大,应该删掉;“肉部”和“农产品部”是杂货店的两个部门,本软件并不处理杂货店的组织管理问题,因此,它们不是本问题域中的对象,但是,从这两个部门可以想到,杂货店有“肉食品”和“农产品”这样两类特殊的商品,应该把这两类商品作为问题域中的两类对象。损耗是导致损失和折扣的原因,不是独立的对象。综上所述,杂货店问题域中的对象有:杂货店,库存,顾客,商品,终端,退货,供应商,发货,肉食品,农产品,损失,折扣。确定第2题所述杂货店问题中对象类之间可能有的继承关系。答:继承关系是“A_KIND_OF”(“是一种”)关系,也就是说,基类是公共的对象类,派生类是一种特殊的基类。通常,有两种常用的方法可以确定问题域中对象类之间可能存在的继承关系:自顶向下方法通过研究已知的对象类在问题域中的行为和作用,找出在某些情况下需要特殊处理并且具有特殊属性的对象,从而把现有的对象类细化成更具体的子类。自底向上方法与自顶向下方法相反,这种方法对类似的对象类进行分组,然后寻找它们之间的共性,所有相似的类的交集构成基类。也就是说,自底向上方法抽象出某些相似的类的共同特性(属性和操作),泛化出父类。具体到杂货店问题,自顶向下方法有助于使我们认识到,销售肉食品和销售农产品的方法并不相同,它们是两类不同的商品。因此,应该把商品作为父类,把肉食品和农产品作为由它派生出的子类。如果询问杂货店经理,还能知道更多的商品种类,也就是说,可以确定商品类的更多派生类。使用自底向上方法可以发现,“损失”、“折扣”、“退货”、“商品”等对象类有共同性质(例如,名称、数量、金额),因此,应该设立一个基类“交易”,从它派生出具体的交易类。第1页图描绘了杂货店问题域中类之间的继承关系。图 杂货店问题域中类的继承关系在图中仅画出了存在继承关系的那些类,没有画出没有继承关系的类。4.请判断下列各对事物之间的关系。(1)人员与雇员(继承)(2)书和图书馆馆员(一般关联)(3)列车和餐车(聚集)(4)教师和教授(继承)(5)读者和借出的书(一般关联)判断下列各项是类还是类的实例。(1)人员(类)(2)张三(实例)(3)教授(类)(4)计算机系(实例)(5)建工学院学生(类)(6)交通工具(类)6.请用面向对象方法分析设计下述的图书馆自动化系统,要求画出对象模型以及事件跟踪图。设计一个软件以支持一座公共图书馆的运行。该系统有一些工作站用于处理读者事务。第2页这些工作站由图书馆馆员操作。当读者借书时,首先读入客户的借书卡。然后,由工作站的条形码阅读器读入该书的代码。当读者归还一本书时,并不需要查看他的借书卡,仅需读入该书的代码。客户可以在图书馆内任一台PC机上检索馆藏图书目录。当检索图书目录时,客户应该首先指明检索方法(按作者姓名或按书名或按关键词)。答:识别对象的一条主要准则是,寻找应用领域中的重要概念。在一座图书馆中常见的实体有“书”、“书柜”、“读者”等。在办公室环境中,可能有“文件夹”、“信件”、“职员”等实体。应用领域中特有的这些实体,是对象的主要候选者。它们可以是现实世界中的事物(例如,书);担任的角色(例如,图书馆的读者);组织单位(例如,计算机系);地点(例如,办公室);或设备(例如,打印机)。此外,还可以通过研究已有的分类或聚集结构,发现候选的对象。通过访谈、阅读文档等途径可以列出对象的第一份清单。识别对象的更简单的方法,是词法分析法。简单地列出图书馆自动化系统需求陈述中的名词,就可以得到下列的候选对象清单:软件,图书馆,系统,工作站,读者,事务,书,图书馆馆员,客户,借书卡,条形码阅读器,书的代码,PC机,图书目录。上列清单中的某些候选对象并不是问题域中的对象,应该删掉。例如,“软件”是将要开发出的产品,不应该把它包含在问题域模型中。如果有诸如“算法”或“链 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf ”这样的名词作为候选对象,则也应该把它们删掉。在详细设计阶段,可能需要引入(或重新引入)它们作为面向解法的对象。笼统的名词应该被更具体的名词所代替,或者干脆把它们删掉。在上列的候选对象清单中,“系统”就是一个笼统的名词。事实上,工作站和PC机将连接到同一台主计算机上,因此,可以用“计算机”取代“系统”。在图书馆自动化系统的需求陈述中,“读者”和“客户”是同义词,只能保留其中一个作为问题域中对象的名字。在图书馆环境中,“读者”这个词更符合一般人的习惯,因此,应该用它作为对象名。在决定怎样建立“读者”和“图书馆馆员”的模型时,必须十分慎重。一个具体的人可能同时充当两种角色。在模型中把他作为不同对象恰当还是作为同一个对象的不同角色恰当,在现阶段往往较难确定。目前,决定把读者和馆员作为不同的对象,但是应该记住,当模型精化时有可能改变这个决定。在本问题中,术语“事务”指的是施加于对象上的操作,而不是一个对象。它导致一系列动作,例如,把借书卡和想借的书递给馆员,把借书卡插入工作站的条形码阅读器,读入书上的条形码等。仅当事务本身具有系统需要的属性时,才应该把它作为对象,例如,如果要求系统生成读者喜爱何种书刊的信息,则把事务作为对象是恰当的。应该从候选对象清单中删掉的最后一个候选者是“书的代码”。代码描述一个具体对象,应该把它作为对象“书”的属性。表8.1列出了对象之间的关系。其中一些关系是直接从需求陈述中摘录出来的,另一些关系是从我们关于图书馆的常识中得出的。表8.1 图书馆对象之间的关系从需求陈述中得出的关系从常识中得出的关系馆员操作工作站图书馆拥有计算机工作站有条形码阅读器图书馆拥有工作站条形码阅读器读入书的代码图书馆拥有PC机条形码阅读器读入借书卡PC机存储图书目录第3页读者检索图书目录计算机与工作站通信图书馆雇用馆员读者是图书馆的会员读者有借书卡根据上述分析得出的对象及对象之间的关系,画在图8.1所示的初始类图中。在这张图中仅包含了关系名,当模型进一步精化时可以包含诸如重数和泛化关系之类的进一步描述信息。图8.1 图书馆系统的初始对象模型接下来确定对象的属性。属性描述对象类的实例,构成对象的状态。通过寻找能把不同实例区分开来的特性,可以识别出对象的属性。属性是一个对象类的全部实例的公共性质。应该识别出原子属性而不是复合属性,例如,对于图书馆的“读者”来说,应该识别出属性“姓名”和“地址”,而不应该设置复合属性“姓名与地址”。在分析阶段还应该尽力防止在属性集中出现冗余,例如,不应该同时设置“已借出的书”和“已借出的书数”这样两个属性,因为后者可以通过前者计算出来,仅有前一个属性就足够了。采用在对象状态中保留冗余信息并由该对象维护这些信息的方法,总能够优化实际的实现结果。例如,在详细设计时我们可以决定在对象状态中包含已借出的书数,而不是在需要时通过计算得出这个信息,这样做可以提高系统运行速度。但是,在分析阶段通常不需要考虑优化问题。一个对象提供的主要服务是与它的生命周期相关的那些服务。例如,一本书被购入,被借出,被归还零次或多次,最后退出流通;一个人成为图书馆的会员,借书和还书,预约图书,改变地址,交纳罚金等等,直至最后终止会员资格。读、写对象属性的服务,提供对象的状态信息或改变对象的状态。提供对象状态信息的服务,可能需要引用某些计算,也可能不需要计算。在分析阶段并不需要考虑实现服务的方法。服务是通过计算实现的还是通过简单的查找过程实现的,对于需要这个信息的第4页对象来说是不可见的。通过研究使用目标系统的情景,可以进一步确定所需要的服务。应该考虑在系统构件之间的典型对话,既应该考虑正常情况下的对话也应该考虑意外情况下的对话。例如,既应该考虑读者顺利地借到一本书的情景,也应该考虑读者借书卡无效的情景,还应该考虑读者逾期还书应该付罚款的情景。图8.2是正常情况下读者借一本书的顺序图。从图中可以看出,UML顺序图与事件跟踪图很相像,区别仅在于在顺序图中用矩形框代表对象。在图中所描绘的交互过程中发生了一系列事件,这些事件将由涉及的对象的操作来处理。图8.2 正常情况下的借书过程服务只不过是把对象联系起来的一种途径。使软件系统真正具有面向对象风格的关系,是“整体唱部分”聚集关系和“一般唱特殊”分类关系。某些分类关系可以从系统所处理的现实世界问题中已有的分类模式导出来。通过寻找对象之间的关系,可以完成把对象进一步组织成层次系统的分类过程。我们可以把一个对象看作是某些可能的对象的泛化,例如,可以把对象“书”看作是对象“小说”、“诗集”和“工具书”的泛化。这些特化出的对象是否有意义,取决于所处理的问题。如果系统不需要区分小说和诗集,我们就不应该把它们定义成不同的对象类。但是,如果小说和诗集可以借出馆外,而工具书不可以借出馆外,则把小说和诗集作为一类对象,把工具书作为另一类对象,是有意义的。类似地,我们可以考虑对象之间的相似性,从而把它们看作是一个更一般化的对象的特化。例如,如果图书馆系统需要对象“书”和“杂志”,而且它们的许多属性是相同的,则可以引入一个新的对象类“出版物”,作为对这两类对象的泛化。把共同的属性提升到对第5页象类“出版物”中,然后“书”和“杂志”继承这些属性。注意,泛化出的对象应该代表现实世界中有意义的实体,例如,不应该仅仅因为书和文件柜有相同的属性“位置”,就草率地从这两类对象泛化出一个新的对象类。刚才泛化出的对象类“出版物”是一个抽象的类,这样的类没有实例。图书馆中仅有从“出版物”特化出的具体类(例如,“书”和“杂志”)的实例。在类的层次结构中,“出版物”的作用是建立其他对象类之间的关系,并且为它们的用户提供接口描述。在“出版物”层定义的属性和服务,构成了它的全部后代的公共接口。哪些对象和属性应该放到对象模型中与怎样在类的层次结构中定义它们是密切相关的。例如,如果一个对象仅有一个属性,通常最好把它作为另外一些对象的属性。此外,一个类的所有实例应该有共同的属性,如果某些属性仅对部分实例有意义,则实际上存在一个分类结构。例如,如果某些书可以借出馆外,另外一些书不能借出馆外,则表明存在一个分类结构,在该结构中“书”类有诸如“小说”和“工具书”那样的特化类。此外还应该注意,随着时间流逝,对象的属性集和对象所提供的服务也将变化,但是对象类的层次结构将保持相对稳定。例如,如果经过一段运行之后,图书馆决定增加向读者提供的服务(例如,出借音像制品),则只需简单地调整图书馆的属性集并扩充读者的服务集。第6页
本文档为【软件工程 第七、八章习题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
慢慢文档
8年外贸单证以及相关的工作经验
格式:doc
大小:651KB
软件:Word
页数:11
分类:管理学
上传时间:2023-01-11
浏览量:2