《软件工程导论课后习题答案34166.docx》由会员分享,可在线阅读,更多相关《软件工程导论课后习题答案34166.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。(2) 用户对已完成的软件不满意的现象时有发生。(3) 软件产品的质量往往是靠不住的。(4) 软件常常是不可
2、维护的。(5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。二、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机?1993年
3、IEEE的定义:软件工程是: 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; 研究中提到的途径。软件工程的本质特征:(1) 软件工程关注于大型程序(软件系统)的构造(2) 软件工程的中心课题是分解问题,控制复杂性(3) 软件是经常变化的,开发过程中必须考虑软件将来可能的变化(4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具(5) 和谐地合作是开发软件的关键(6) 软件必须有效地支持它的用户(7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径:(
4、1) 对计算机软件有一个正确的认识(软件程序)(2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目(3) 推广使用在实践中总结出来的开发软件的成功技术和方法(4) 开发和使用更好的软件工具三、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。七、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。l 瀑布模型 优点:它提供了一个模板,这个模板使得分析、设计、编码、测试和
5、支持的方法可以在该模板下有一个共同的指导。虽然有不少缺陷但比在软件开发中随意的状态要好得多。缺点:(1) 实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。(2) 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。(3) 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。(4) 会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。称之为“堵塞状态”。它是软件工
6、程中应用最广泛的过程模型,在软件工程中占有肯定和重要的位置。l 快速原型模型在进行了基本需求分析之后,快速开发出产品的原型,然后基于这个原型,同客户沟通、交流,更好地了解客户需求,不断修改这个原型,到了双方认可的程度,再做详细地分析、设计和编程,最终开发出令客户满意的产品。 优点:使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。缺点:产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作。 l 增量模型优点:(1) 人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。(2) 当配备的
7、人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。缺点:(1) 至始至终开发者和客户纠缠在一起,直到完全版本出来。(2) 适合于软件需求不明确、设计方案有一定风险的软件项目。该模型具有一定的市场。l 螺旋模型优点:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。缺点:(1) 需要相当的风险分析评估的专门技术,且成功依赖于这种技术。(2) 很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化 的方法失去控制。(3) 这种模型相对比较新,应用不广泛,
8、其功效需要进一步的验证。该模型适合于大型软件的开发第二章4目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请写出问题定义,并且分析开发这个系统的可行性。 医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。问题定义:从问题陈述可知,本系统的数据源点是“病人”和“护士”,他们分别提供生理信号和要
9、求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告的功能。 为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存储。可行性叙述略。5北京某高校可用的电话号码有以下几类:校内电话号码由4
10、位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码,再拨8位电话号码(第1位不是0)。请用2.5.2小节讲述的定义数据的方法,定义上述的电话号码。电话号码 = 校内电话号码 | 校外电话号码校内电话号码 = 非零数字 + 3位数字校外电话号码 = 本市号码 | 外地号码本市号码 = 数字零 + 8位数字外地号码 = 数字零 + 3位数字 + 8位数字非零数字 = 1|2|3|4|5|6|7|8|9数字零 = 03位数字 = 3数字38位数字 = 非零数字 + 7位数字7位数字 = 7数
11、字7数字 = 0|l|2|3|4|5|6|7|8|9第三章1、 为什么要进行需求分析?通常对软件系统有哪些需求?通过需求分析,明确用户对目标软件系统在功能、性能、行为、设计约束等方面的期望,回答软件系统“必须做什么”。通常对软件系统的需求是以下几方面的综合:(1) 功能需求;(2) 性能需求;(3) 可靠性和可用性需求;(4) 出错处理需求;(5) 接口需求;(6) 约束;(7) 逆向需求;(8) 将来可能提出的要求。2、怎样与用户有效的沟通以获取用户的真实需求?(1) 初步需求获取,通过访谈与会议、问卷调查、观察用户工作流程等方法;(2) 面向数据流,自顶向下求精(3) 简易的应用规格说明(
12、4) 快速建立软件原型6、复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。请用状态转换图描绘复印机的行为。从问题陈述可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。引起状态转换的事件主要是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故
13、障”。状态转换图如下:1、为每种类型的模块耦合举一个具体的例子。(1) 非直接耦合例如,两个模块没有直接关系(模块1和模块2),模块独立性最强。(2) 数据耦合例如,下左图 数据耦合 特征耦合(3) 特征耦合例如,上右图“住户情况”是一个数据结构,图中模块都与此数据结构有关。“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。(4) 控制耦合-模块A通过传送开关、标志、名字等控制信息,明显地控制选择模块B的功能,例如下图(5) 外部耦合例如,下左图,模块A、B均需使用共享打印机 外部耦合 公共环境耦合(6) 公共环境耦合例如,上右图,模块A、B、C共享全局
14、变量数组(7) 内容耦合例如,一个过程非正常地进入另一个过程Sub AA()goto LEnd subSub BB()L: End sub2、用面向数据流的方法设计下列系统的软件结构:(3)患者监护系统(需求见习题2-4)功能级数据流图:软件结构图:3、 从伪码转换成的数据流程图 从伪码转换成的盒图4、(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。本题图6-18所示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,下图所示盒图描绘了两个等价的
15、结构化程序。(3)不使用flag把该程序改造为等价的结构化程序的方法如下图所示。7、令P代表交易的总金额,Q代表每股的售价,n代表交易的股数。判定表的每一列是一条计算规则。例如,第1列(规则l)规定,当交易总金额P少于1,000元,且每股售价Q低于l4元,且交易的股数n是l00的倍数时,给经纪人的手续费为:(1+005)0084P第16列(规则l6)表明,当交易总金额P超过l0,000元,且每股售价Q在14元到25元之间,且交易的股数n不是l00的倍数时,手续费为:(1+006)X(004P+134)表示手续费计算方法的判定表和判定树如下图所示。判定表判定树4(3) 答:(1)语句覆盖的测试用
16、例 因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句覆盖的典型测试用例: 使3个判定表达式之值全为假 输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=3 使3个判定表达式之值全为真 输入:A=20,B=40,C=60预期的输出:X=10,Y=20,Z=30 (2)路径覆盖的测试用例 本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据。下面是实现路径覆盖的典型测试用例: 3个判定表达式之值全为假 输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=3 3个判
17、定表达式依次为假、假、真 输入:A=1,B=1,C=60预期的输出:X=1,Y=2,Z=30 3个判定表达式依次为假、真、假 输入:A=1,B=40,C=1预期的输出:X=1,Y=20,Z=33个判定表达式依次为假、真、真输入:A=1,B=40,C=60预期的输出:X=1,y=20,Z=303个判定表达式依次为真、假、假输入:A=20,B=1,C=1预期的输出:X=10,y=2,Z=33个判定表达式依次为真、假、真输入:A=20,B=1,C=60预期的输出:X=10,y=2,Z=303个判定表达式依次为真、真、假输入:A=20,B=40,C=1预期的输出:X=10,y=20,Z=33个判定表达
18、式全为真输入:A=20,B=40,C=60预期的输出:X=10,y=20,Z=306、答:应该分别使用正常的输入数据和异常的输入数据,作为验收测试数据。( 1 )用正常的输人数据作为测试数据 输入常规的出发点、目的地、5个位置校核点、高度、速度及飞机型号。 针对5对不同的出发点和目的地,重复执行测试。 固定出发点、目的地、位置校核点、高度和速度,分别输入35种不同的飞机型号,重复执行测试。 固定出发点、目的地、位置校核点、高度和飞机型号,分别输入35个不同的速度,重复执行测试。 固定出发点、目的地、位置校核点、速度和飞机型号,分别输入35个不同的高度,重复执行测试。 固定出发点、目的地、高度、
19、速度和飞机型号,分别输入35组不同的位置校核点,重复执行测试。 固定出发点、位置校核点、高度、速度和飞机型号,分别输入35个不同的目的地,重复执行测试。 固定目的地、位置校核点、高度、速度和飞机型号,分别输入35个不同的出发点,重复执行测试。 同时改变一对参数的值,其他参数的值固定,重复执行测试。 同时改变3个参数的值,其他参数的值固定,重复执行测试。 (11)以适当的方式改变描述天气状况的数据,重复执行测试。( 2 )用边界数据值作为测试数据 分别使用距离非常近和距离非常远的两个地点作为出发点和目的地。 输入位置校核点的非常规组合。 分别输入非常高和非常低的高度值。 分别输入非常高和非常低的
20、速度值。 输入极其少见的飞机型号。( 3 )用无效的数据作为测试数 用由字母数字字符和控制字符混合在一起组成的字符串作为出发点或目的地。 用数字0作为所有参数的值。 用负数作为高度和速度的值。补充作业:答:题中并没有给出实现函数SEARCH的算法,仅仅描述了它的功能,因此,只能用黑盒测试技术设计测试它的测试方案。为了用等价划分法设计测试方案,首先需要划分输入数据的等价类。根据该函数的功能,可以把它的输入数据划分成以下等价类:(1)有效输入的等价类 数组有偶数个元素,第1个元素是所要找的数。 数组有偶数个元素,最后一个元素是所要找的数。 数组有偶数个元素,数组中没有所要找的数。 数组有奇数个元素
21、,第1个元素是所要找的数。 数组有奇数个元素,最后一个元素是所要找的数。 数组有奇数个元素,数组中没有所要找的数。 数组有多个元素,其中一个正整数是所要找的数。 数组有多个元素,其中一个负整数是所要找的数。 数组有多个元素,其中一个0是所要找的数。(2)无效输入的等价类数组实际长度不等于变元size的值。为了使用边界值分析法设计测试方案,应该再考虑下述几种边界情况: 数组长度为l,其元素是所要找的数。 数组长度为l,其元素不是所要找的数。 数组为空(长度为0)。根据上面划分出的等价类及边界情况,可以设计出下述测试方案:数组长度为l,其正整数元素是所要找的数输入:somearray=6,size
22、=1,value=6预期的输出:l数组长度为l,其负整数元素是所要找的数输入:somearray=-20),size=1,value=20预期的输出:l数组长度为l,其元素0是所要找的数输入:somearray=0,size=1,value=0预期的输出:l数组长度为l,其元素不是所要找的数输入:somearray=6,size=1,value=8预期的输出:-1数组为空输入:somearray=,size=0,value=6预期的输出:-1数组有偶数个元素,第1个元素是正整数且是所要找的数输入:somearray=1,2,3,4,size=4,value=1预期的输出:l数组有偶数个元素,最
23、后一个元素是负整数且是所要找的数输入:somearray=1,2,3,一4,size=4,value=4预期的输出:4数组有偶数个元素,其中一个元素0是所要找的数输入:somearray=1,2,0,3,size=4,value=0预期的输出:3数组有偶数个元素,元素中没有所要找的数输入:somearray=1,2,3,4,size=4,value=5预期的输入:-1,数组有奇数个元素,第1个元素是0且是要找的数输入:somearray=0,1,2),size=3,value=0预期的输出:l(11)数组有奇数个元素,最后一个元素是负整数且是所要找的数输入:somearray=1,2,一3,s
24、ize=3,value=3预期的输入:3(12)数组有奇数个元素,没有要找的数输入:somearray=1,2,3,size=3,value=3预期的输出:-1(13)数组实际长度不等于size输入:somearray=1,2,3,size=2,value=1预期的输出:“无效的size值”第九章作业2、答:对象是面向对象方法学开发软件时对客观世界实体的抽象,它是由描述实体属性的数据和可以对这些数据施加的所有操作封装在一起构成的统一体。传统的数据是传统方法学开发软件时对客观世界实体的抽象,但是,这种抽象是不全面的:数据只能描述实体的静态属性,不能描述实体的动态行为。必须从外界对数据施加操作,才
25、能改变数据、实现相应的行为。对象与传统数据有本质的区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。必须发消息请求对象主动地执行它的某些操作,处理它的私有数据,而不能直接从外界对它的私有数据进行操作。5、答:所谓模型,就是为了理解事物而对事物进行的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。更进一步地讲,模型是一种思维工具,利用这种工具可以把知识规范地表示出来。众所周知,在解决问题之前必须理解所要解决的问题。对问题理解得越透彻,就越容易解决它。在软件开发的过程中,为了更好地理解客户要求解决
26、的问题,往往需要建立问题域的模型。为了开发复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特征,使用精确地表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐步把和实现有关的细节加进模型中来,直到最终实现这个模型。对于那些过分复杂而不能直接理解的系统,特别需要建立模型。建立模型的目的主要是为了降低复杂性。人的头脑每次只能处理少量信息,模型通过把系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂度。10、答:订货系统用例图作业题:有如下用户需求:王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软
27、件系统来管理预约。当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。系统能够按病人姓名和按日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关于所有病人的每天和每周的工作安
28、排。(1)建立牙科诊所管理系统的对象模型;(2)建立牙科诊所管理系统的用例模型;(3)用数据流图建立牙科诊所管理系统的功能模型;(4)写出牙科诊所管理系统的脚本;(5)画出牙科诊所管理系统的状态图。解答:(1)从对牙科诊所问题的陈述中,可以找出下列名词作为对象的候选者:王大夫,小镇,牙科诊所,牙科助手,牙科保健员,接待员,软件系统,预约,病人,预约登记表,就诊时间,预约时间,约定时间,系统,名字,记录的病人数据,病历号,姓名,日期,预约信息,病人清单,病人记录,电话号码,每天工作安排,每周工作安排。通常,通过词法分析找到的候选对象中有许多并不是问题域中真正有意义的对象,因此,必须对这些候选对象
29、进行严格的筛选,从中删去不正确的或不必要的,只保留确实应该记录其信息或需要其提供服务的那些对象。具体说到牙科诊所问题,“王大夫”只不过是牙医的一个实例,实际上,本软件系统的主要功能是管理病人的预约,并不关心诊所内每名工作人员的分工,因此,牙医、牙科助手、牙科保健员和接待员都不是问题域中的对象;“小镇”是牙科诊所的地址属性,不是独立的对象;“软件系统”和“系统”是同义词,指的是将要开发的软件产品,不是问题域中的对象;“就诊时间”、“预约时间”和“约定时间”在本问题陈述中的含义相同,指的都是预约的就诊时间,实际上,预约的就诊时间既包括日期又包括时间,但是,它们是预约登记表包含的属性,不是问题域中独
30、立的对象;“名字”和“姓名”是同义词,应该作为病人和预约登记表的属性;“记录的病人数据”实际上就是“病人记录”,可以统一使用“病人记录”作为对象名;“病历号”和“电话号码”是病人记录的属性,不是独立的对象;从问题陈知,“病人清单”是已预约但尚未就诊的病人名单,应该包含病人姓名、预约的就诊时间等内容,它和“预约信息”包含的内容基本相同,可以只保留“病人清单”作为问题域中的对象。接下来分析确定问题域中对象彼此之间的关系。“每天工作安排”和“每周工作安排”有许多共同点,可以从它们泛化出一个父类“工作安排”。此外,问题域的对象之间还有下述关联关系:牙科诊所诊治多名病人;一位病人有一份病人记录;一位病人
31、可能预约多次也可能一次也没预约;牙科诊所在一段时间内将打印出多份病人清单;牙科诊所开业以来已经建立了多份预约登记表;预约登记表中记录了多位病人的预约;根据预约登记表在不同时问可以制定出不同的工作安排。综上所述,可以画出图7.2所示的牙科诊所管理系统的对象模型。(2)用例图从用户角度描述系统的功能,它必须包含用户关心的所有关键功能。用户通常就是用例图中的行为者。为了画出系统的用例图,首先应该找出系统的用户,然后根据用户对系统功能的需求确定用例。从对牙科诊所问题的陈述可知,接待员负责处理病人预约事务,为此他需要访问预约登记表和病人记录,接待员也可以取消预约,此外,接待员还可以根据预约登记表打印出关
32、于所有病人的每天和每周的工作安排,牙医将按照工作安排诊治病人;在病人就诊后,助手或保健员将标记相应的预约诊治已完成,必要时还将安排病人下次再来,也就是说,他们将更新预约登记表的内容;系统能够按照病人姓名和日期查询预约信息,这项功能需求虽然没有指明行为者,但是这并不意味着没有行为者也可以有用例,事实上,一个用例至少必须与一个行为者相关联,可以认为“查询预约这个用例的行为者是牙科诊所的职员。在牙科诊所问题中,没有必要区分接待员、助手和保健员在业务工作中扮演的不同角色,可以把他们统称为职员。综上所述,可以画出图7.3所示的牙科诊所管理系统的用例图。(3)从牙科诊所管理系统的需求陈述得知,当进行预约时
33、病人提供姓名、希望的就诊日期等数据,系统查询预约登记表,以确定一个有效的就诊日期,此外,系统还将查询病人记录以获得病历号等病人数据。在每次预约诊治完成之后,应该更新预约登记表,以标记相应的预约诊治已经完成,必要时将约定下次就诊日期。诊所职员可以按照病人姓名和日期查询预约信息,也可以取消预约。此外,系统可以打印出每天和每周的工作安排给牙医。根据上述的系统功能,可以画出图7.4所示的牙科诊所管理系统的数据流图。(4)脚本从用户角度描述系统典型的工作过程。根据对牙科诊所管理系统的需求,至少可以设想出下述3个脚本。 (a) 正常情况:病人甲请求预约。系统识别出病人的名字。系统建议二个就诊时间。病人同意
34、该时间,接待员输入该预约。在预约的就诊日期到来之前两天,系统输出一份包含病人姓名和电话号码等信息的提醒清单。接待员打电话提醒病人。病人如约到来。治疗完之后,牙医助手安排该病人的下一次预约。 (b) 新病人:病人乙请求预约。系统不认识该病人的名字,必须把该病人的信息输入到病人记录系统中并为他建立一个记录。 (c) 多个预约:病人丙请求在未来两年内进行16次预约。接待员将其姓名输入到系统中,系统提出建议的预约就诊时间,病人同意后接待员输入病人认可的预约。(5)状态图描绘系统可能有的状态转换。牙科诊所管理系统的主要功能是实现病人预约,根据需求陈述和在第9题解答中给出的脚本,可以画出图7.5所示的牙科
35、诊所管理系统状态图。图中把除了完成病人预约之外的事务笼统地称为日常事务。第十一章作业P288 第3题答:面向对象技术中的“类”,不妨称之为类构件,是比较理想的可重用软构件。原因如下:为使软构件也像硬件集成电路那样,能在构造各种各样的软件系统时方便地重复使用,就必须使它们满足下列要求:(1) 模块独立性强。具有单一、完整的功能,且经过反复测试被确认是正确的。它应该是一个不受或很少受外界干扰的封装体,其内部实现在外面是不可见的。(2) 具有高度可塑性(可裁剪性)。也就是说,必须提供为适应特定需求而扩充或修改已有构件的机制,而且所提供的机制必须使用起来非常简单方便。(3) 接口清晰、简明、可靠。软构件应该提供清晰、简明、可靠的对外接口,而且还应该有详尽的文档说明,以方便用户使用。精心设计的“类”基本上能满足上述要求,可以认为它是可重用软构件的雏形。类构件有3种重用方式,分别是实例重用、继承重用和多态重用。补充:从面向对象分析到面向对象设计,对象模型有何变化?答:在面向对象分析阶段建立的对象模型中对象是对问题空间中实体的抽象。随着软件开发过程进入面向对象设计阶段,这些对象逐渐变成了解空间的实体。需要的时间以及子任务彼此之间的依赖关系。请用工程网络描述下表中给出的信息,并且计算每个事件的最早时刻和最迟时刻。
限制150内