您的当前位置:首页正文

软件工程导论课后习题答案

来源:个人技术集锦
软件工程导论课后习题答案

一、什么是软件危机?它有什么典型表现?为什么会出现软件危机?

软件危机是指在计算机软件开发、使用与保护过程中遇到的一系列严重问题与难题。它包含两方面:如何开发软件,已满足对软件日益增长的需求;如何保护数量不断增长的已有软件。

软件危机的典型表现:

(1) 对软件开发成本与进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度与节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。 (2) 用户对已完成的软件不满意的现象时有发生。

(3) 软件产品的质量往往是靠不住的。 (4) 软件常常是不可保护的。

(5) 软件通常没有适当的文档资料。文档资料不全或者不合格,必将给软件开发与保护工作带来许多难以想象的困难与难以解决的问题。

(6) 软件成本、软件保护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。

软件危机出现的原因:

(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、保护困难。 (2) 软件开发与保护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件保护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。 二、什么是软件工程?它有什么本质特征?如何用软件工程消除软件危机?

1993年IEEE的定义:软件工程是:① 把系统的、规范的、可度量的途径应用于软件开发、运行与保护过程,也就是把工程应用于软件;② 研究①中提到的途径。

软件工程的本质特征:

(1) 软件工程关注于大型程序(软件系统)的构造 (2) 软件工程的中心课题是分解问题,操纵复杂性 (3) 软件是经常变化的,开发过程中务必考虑软件将来可能的变化

(4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与保护软件的更好更有效的方法与工具

(5) 与谐地合作是开发软件的关键 (6) 软件务必有效地支持它的用户

(7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)

消除软件危机的途径:

(1) 对计算机软件有一个正确的认识(软件≠程序)

(2) 务必充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目

(3) 推广使用在实践中总结出来的开发软件的成功技术与方法 (4) 开发与使用更好的软件工具

三、简述结构化范型与面向对象范型的要点,并分析他们的优缺点。

七、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型与螺旋模型的优缺点,说明每种模型的使用范围。

软件生命周期模型是跨越整个生存期的系统开发、运作与保护所实施的全部过程、活动与任务的结构框架。

瀑布模型 优点:

它提供了一个模板,这个模板使得分析、设计、编码、测试与支持的方法能够在该模板下有一个共同的指导。尽管有很多缺陷但比在软件开发中随意的状态要好得多。 缺点:

(1) 实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。

(2) 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。

(3) 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。

(4) 会经常在过程的开始与结束时碰到等待其他成员完成其所依靠的任务才能进行下去,有可能花在等待的时间比开发的时间要长。称之为“堵塞状态”。

它是软件工程中应用最广泛的过程模型,在软件工程中占有确信与重要的位置。 快速原型模型

在进行了基本需求分析之后,快速开发出产品的原型,然后基于这个原型,同客户沟通、交流,更好地熟悉客户需求,不断修改这个原型,到了双方认可的程度,再做全面地分析、设计与编程,最终开发出令客户满意的产品。

优点:使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。

缺点:产品的先天性不足,由于开发者常常需要做实现上的折中,可能使用不合适的操作系

统或者程序设计语言,以使原型能够尽快工作。 增量模型 优点:

(1) 人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。

(2) 当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就能够先公布部分功能给客户,对客户起到镇静剂的作用。 缺点:

(1) 至始至终开发者与客户纠缠在一起,直到完全版本出来。 (2) 适合于软件需求不明确、设计方案有一定风险的软件项目。

该模型具有一定的市场。 螺旋模型

优点:关于大型系统及软件的开发,这种模型是一个很好的方法。开发者与客户能够较好地对待与懂得每一个演化级别上的风险。

缺点:(1) 需要相当的风险分析评估的专门技术,且成功依靠于这种技术。

(2) 很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化 的方法失去操纵。

(3) 这种模型相对比较新,应用不广泛,其功效需要进一步的验证。

该模型适合于大型软件的开发

第二章

4.目前住院病人要紧由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请写出问题定义,同时分析开发这个系统的可行性。

医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还能够要求系统印出某个指定病人的病情报告。

问题定义:

从问题陈述可知,本系统的数据源点是“病人”与“护士”,他们分别提供生理信号与要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求能够想到,还应该有一个提供日期与时间信息的“时钟”作为数据源点。

从问题陈述容易看出,本系统的数据终点是接收警告信息与病情报告的护士。 系统对病人生理信号的处理功能要紧是“接收信号”、“分析信号”与“产生警告信息”。此外,系统还应该具有“定时取样生理信号”、“更新日志”与“产生病情报告\"的功能。 为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存储。

可行性叙述略。

5.北京某高校可用的电话号码有下列几类:校内电话号码由4位数字构成,第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] 数字零 = 0 3位数字 = 3{数字}3 8位数字 = 非零数字 + 7位数字 7位数字 = 7{数字}7 数字 = [0|l|2|3|4|5|6|7|8|9] 第三章

1、 为什么要进行需求分析?通常对软件系统有什么需求?

通过需求分析,明确用户对目标软件系统在功能、性能、行为、设计约束等方面的期望,回答软件系统“务必做什么”。通常对软件系统的需求是下列几方面的综合:

(1) 功能需求;(2) 性能需求;(3) 可靠性与可用性需求;(4) 出错处理需求;(5) 接口需求;(6) 约束;(7) 逆向需求;(8) 将来可能提出的要求。 2、如何与用户有效的沟通以获取用户的真实需求?

(1) 初步需求获取,通过访谈与会议、问卷调查、观察用户工作流程等方法; (2) 面向数据流,自顶向下求精

(3) 简易的应用规格说明 (4) 快速建立软件原型

6、复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;假如执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;假如复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。

请用状态转换图描绘复印机的行为。

从问题陈述可知,复印机的状态要紧有“闲置”、“复印”、“缺纸”与“卡纸”。引起状态转换的事件要紧是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”与“排除了卡纸故障”。状态转换图如下:

1、为每种类型的模块耦合举一个具体的例子。

(1) 非直接耦合—比如,两个模块没有直接关系(模块1与模块2),模块独立性最强。

(2) 数据耦合—比如,下左图

数据耦合 特征耦合 (3) 特征耦合—比如,上右图

“住户情况”是一个数据结构,图中模块都与此数据结构有关。“计算水费”与“计算电费”本无关,由于引用了此数据结构产生依靠关系,它们之间也是标记偶合。

(4) 操纵耦合--模块A通过传送开关、标志、名字等操纵信息,明显地操纵选择模块B的功能,比如下图

(5) 外部耦合—比如,下左图,模块A、B均需使用共享打印机

外部耦合 公共环境耦合

(6) 公共环境耦合—比如,上右图,模块A、B、C共享全局变量数组 (7) 内容耦合—比如,一个过程非正常地进入另一个过程 Sub AA(…)

… … goto L … End sub Sub BB(…)

… … L: … … End sub

2、用面向数据流的方法设计下列系统的软件结构: (3)患者监护系统(需求见习题2-4) 功能级数据流图:

P2分析信号E2病人F2生理信号危及病人信息F2生理信号D2患者安全范围P7制定安全范围P5更新日志P3产生警告信息F4警告信息E1护士F5安全范围D3生理信息定时的生理信号F2生理信号P1接收信号F2生理信号定时的生理信号F6日志E3时钟F3日前、时间P4定时取样生理信号F6日志E1护士F1要求报告P6产生病情报告D1患者日志

软件结构图:

患者监护系统危日志机信息理生生患者生理信号获取生理信号理信号定范时围生理信号信号监护处理志日定时生理信号生理信监护信息输出息理生制定生理信号安全范围接收信号定时取样生理信号时间分析信号更新日志报警危机信号信围范危机生号信理生时定号信理志日信息号病情报告取得时间 3、

从伪码转换成的数据流程图 从伪码转换成的盒图

4、(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。本题图6-18所示的程序的循环操纵结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。

(2)使用附加的标志变量flag,至少有两种方法能够把该程序改造为等价的结构化程序,下图所示盒图描绘了两个等价的结构化程序。

(3)不使用flag把该程序改造为等价的结构化程序的方法如下图所示。

7、令P代表交易的总金额,Q代表每股的售价,n代表交易的股数。

判定表的每一列是一条计算规则。比如,第1列(规则l)规定,当交易总金额P少于1,000元,且每股售价Q低于l4元,且交易的股数n是l00的倍数时,给经纪人的手续费为:

(1+0.05)×0.084P

第16列(规则l6)说明,当交易总金额P超过l0,000元,且每股售价Q在14元到25元之间,且交易的股数n不是l00的倍数时,手续费为:

(1+0.06)X(0.04P+134)

表示手续费计算方法的判定表与判定树如下图所示。

判定表

判定树

4(3) 答:(1)语句覆盖的测试用例

由于每个判定表达式为真或者为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或者为假各一次。下面是实现语句覆盖的典型测试用例:

①使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个判定表达式依次为假、假、真 输入:A=1,B=1,C=60 预期的输出:X=1,Y=2,Z=30 ③3个判定表达式依次为假、真、假 输入:A=1,B=40,C=1 预期的输出:X=1,Y=20,Z=3

④3个判定表达式依次为假、真、真 输入:A=1,B=40,C=60 预期的输出:X=1,y=20,Z=30 ⑤3个判定表达式依次为真、假、假 输入:A=20,B=1,C=1 预期的输出:X=10,y=2,Z=3 ⑥3个判定表达式依次为真、假、真 输入:A=20,B=1,C=60 预期的输出:X=10,y=2,Z=30 ⑦3个判定表达式依次为真、真、假 输入:A=20,B=40,C=1 预期的输出:X=10,y=20,Z=3 ⑧3个判定表达式全为真 输入:A=20,B=40,C=60 预期的输出:X=10,y=20,Z=30

6、答:应该分别使用正常的输入数据与特殊的输入数据,作为验收测试数据。

( 1 )用正常的输人数据作为测试数据

①输入常规的出发点、目的地、5个位置校核点、高度、速度及飞机型号。 ②针对5对不一致的出发点与目的地,重复执行测试①。

③固定出发点、目的地、位置校核点、高度与速度,分别输入3~5种不一致的飞机型号,重复执行测试①。

④固定出发点、目的地、位置校核点、高度与飞机型号,分别输入3~5个不一致的速度,重复执行测试①。

⑤固定出发点、目的地、位置校核点、速度与飞机型号,分别输入3~5个不一致的高度,重复执行测试①。

⑥固定出发点、目的地、高度、速度与飞机型号,分别输入3~5组不一致的位置校核点,重复执行测试①。

⑦固定出发点、位置校核点、高度、速度与飞机型号,分别输入3~5个不一致的目的地,重复执行测试①。

⑧固定目的地、位置校核点、高度、速度与飞机型号,分别输入3~5个不一致的出发点,重复执行测试①。

⑨同时改变一对参数的值,其他参数的值固定,重复执行测试①。 ⑩同时改变3个参数的值,其他参数的值固定,重复执行测试①。 (11)以适当的方式改变描述天气状况的数据,重复执行测试①。 ( 2 )用边界数据值作为测试数据

①分别使用距离非常近与距离非常远的两个地点作为出发点与目的地。

②输入位置校核点的非常规组合。 ③分别输入非常高与非常低的高度值。 ④分别输入非常高与非常低的速度值。 ⑤输入极其少见的飞机型号。 ( 3 )用无效的数据作为测试数

①用由字母数字字符与操纵字符混合在一起构成的字符串作为出发点或者目的地。 ②用数字0作为所有参数的值。 ③用负数作为高度与速度的值。 补充作业:

答:题中并没有给出实现函数SEARCH的算法,仅仅描述了它的功能,因此,只能用黑盒测试技术设计测试它的测试方案。

为了用等价划分法设计测试方案,首先需要划分输入数据的等价类。根据该函数的功能,能够把它的输入数据划分成下列等价类:

(1)有效输入的等价类

·数组有偶数个元素,第1个元素是所要找的数。 ·数组有偶数个元素,最后一个元素是所要找的数。 ·数组有偶数个元素,数组中没有所要找的数。 ·数组有奇数个元素,第1个元素是所要找的数。 ·数组有奇数个元素,最后一个元素是所要找的数。 ·数组有奇数个元素,数组中没有所要找的数。 ·数组有多个元素,其中一个正整数是所要找的数。 ·数组有多个元素,其中一个负整数是所要找的数。 ·数组有多个元素,其中一个0是所要找的数。 (2)无效输入的等价类

数组实际长度不等于变元size的值。

为了使用边界值分析法设计测试方案,应该再考虑下述几种边界情况: ·数组长度为l,其元素是所要找的数。 ·数组长度为l,其元素不是所要找的数。 ·数组为空(长度为0)。

根据上面划分出的等价类及边界情况,能够设计出下述测试方案: ①数组长度为l,其正整数元素是所要找的数 输入:somearray={6},size=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 ⑦数组有偶数个元素,最后一个元素是负整数且是所要找的数 输入: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},size=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、答:

对象是面向对象方法学开发软件时对客观世界实体的抽象,它是由描述实体属性的数据与能够对这些数据施加的所有操作封装在一起构成的统一体。传统的数据是传统方法学开发软件时对客观世界实体的抽象,但是,这种抽象是不全面的:数据只能描述实体的静态属性,不能描述实体的动态行为。务必从外界对数据施加操作,才能改变数据、实现相应的行为。 对象与传统数据有本质的区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。务必发消息请求对象主动地执行它的某些操作,处理它的私有数据,而不能直接从外界对它的私有数据进行操作。 5、答:

所谓模型,就是为了懂得事物而对事物进行的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号与组织这些符号的规则构成,利用它们来定义与描述问题域中的术语与概念。更进一步地讲,模型是一种思维工具,利用这种工具能够把知识规范地表示出来。

众所周知,在解决问题之前务必懂得所要解决的问题。对问题懂得得越透彻,就越容易解决它。在软件开发的过程中,为了更好地懂得客户要求解决的问题,往往需要建立问题域的模型。

为了开发复杂的软件系统,系统分析员应该从不一致角度抽象出目标系统的特征,使用精确地表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐步把与实现有关的细节加进模型中来,直到最终实现这个模型。关于那些过分复杂而不能直接懂得的系统,特别需要建立模型。建立模型的目的要紧是为了降低复杂性。人的头脑每次只能处理少量信息,模型通过把系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂度。 10、答:

订货系统用例图

作业题:

有如下用户需求:

王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员与一个接待员。王大夫需要一个软件系统来管理预约。

当病人打电话预约时,接待员将查阅预约登记表,假如病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。假如病人同意建议的就诊时间,接待员将输入约定时间与病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包含病人的病历号等。在每次治疗或者清洗后,助手或者保健员将标记相应的预约诊治已经完成,假如必要的话会安排病人下一次再来。

系统能够按病人姓名与按日期进行查询,能够显示记录的病人数据与预约信息。接待员能够取消预约,能够打印出前两天预约尚未接诊的病人清单。系统能够从病人记录中获知病人的电话号码。接待员还能够打印出关于所有病人的每天与每周的工作安排。 (1)建立牙科诊所管理系统的对象模型; (2)建立牙科诊所管理系统的用例模型;

(3)用数据流图建立牙科诊所管理系统的功能模型; (4)写出牙科诊所管理系统的脚本; (5)画出牙科诊所管理系统的状态图。 解答:

(1)从对牙科诊所问题的陈述中,能够找出下列名词作为对象的候选者:

王大夫,小镇,牙科诊所,牙科助手,牙科保健员,接待员,软件系统,预约,病人,预约登记表,就诊时间,预约时间,约定时间,系统,名字,记录的病人数据,病历号,姓名,日期,预约信息,病人清单,病人记录,电话号码,每天工作安排,每周工作安排。

通常,通过词法分析找到的候选对象中有许多并不是问题域中真正有意义的对象,因此,务必对这些候选对象进行严格的筛选,从中删去不正确的或者不必要的,只保留确实应该记录其信息或者需要其提供服务的那些对象。

具体说到牙科诊所问题,“王大夫”只只是是牙医的一个实例,实际上,本软件系统的要紧功能是管理病人的预约,并不关心诊所内每名工作人员的分工,因此,牙医、牙科助手、牙科保健员与接待员都不是问题域中的对象;“小镇”是牙科诊所的地址属性,不是独立的对象;“软件系统”与“系统”是同义词,指的是将要开发的软件产品,不是问题域中的对象;“就诊时间”、“预约时间”与“约定时间”在本问题陈述中的含义相同,指的都是预约的就诊时间,实际上,预约的就诊时间既包含日期又包含时间,但是,它们是预约登记表包含的属性,不是问题域中独立的对象;“名字”与“姓名”是同义词,应该作为病人与预约登记表的属性;“记录的病人数据”实际上就是“病人记录”,能够统一使用“病人记录”作为对象名;“病历号”与“电话号码”是病人记录的属性,不是独立的对象;从问题陈知,“病人清单”是已预约但尚未就诊的病人名单,应该包含病人姓名、预约的就诊时间等内容,它与“预约信息”包含的内容基本相同,能够只保留“病人清单”作为问题域中的对象。

接下来分析确定问题域中对象彼此之间的关系。“每天工作安排”与“每周工作安排”有许多共同点,能够从它们泛化出一个父类“工作安排”。此外,问题域的对象之间还有下述关联关系:牙科诊所诊治多名病人;一位病人有一份病人记录;一位病人可能预约多次也可能一次也没预约;牙科诊所在一段时间内将打印出多份病人清单;牙科诊所开业以来已经建立了多份预约登记表;预约登记表中记录了多位病人的预约;根据预约登记表在不一致时问能够制定出不一致的工作安排。

综上所述,能够画出图7.2所示的牙科诊所管理系统的对象模型。

(2)用例图从用户角度描述系统的功能,它务必包含用户关心的所有关键功能。用户通常就是用例图中的行为者。为了画出系统的用例图,首先应该找出系统的用户,然后根据用户对系统功能的需求确定用例。

从对牙科诊所问题的陈述可知,接待员负责处理病人预约事务,为此他需要访问预约登记表与病人记录,接待员也能够取消预约,此外,接待员还能够根据预约登记表打印出关于所有病人的每天与每周的工作安排,牙医将按照工作安排诊治病人;在病人就诊后,助手或者保健员将标记相应的预约诊治已完成,必要时还将安排病人下次再来,也就是说,他们将更新预约登记表的内容;系统能够按照病人姓名与日期查询预约信息,这项功能需求尽管没有指明行为者,但是这并不意味着没有行为者也能够有用例,事实上,一个用例至少务必与一个行为者有关联,能够认为“查询预约’’这个用例的行为者是牙科诊所的职员。在牙科诊所问题中,没有必要区分接待员、助手与保健员在业务工作中扮演的不一致角色,能够把他们统称之职员。

综上所述,能够画出图7.3所示的牙科诊所管理系统的用例图。

(3)从牙科诊所管理系统的需求陈述得知,当进行预约时病人提供姓名、希望的就诊日期等数据,系统查询预约登记表,以确定一个有效的就诊日期,此外,系统还将查询病人记录以获得病历号等病人数据。在每次预约诊治完成之后,应该更新预约登记表,以标记相应的预约诊治已经完成,必要时将约定下次就诊日期。诊所职员能够按照病人姓名与日期查询

预约信息,也能够取消预约。此外,系统能够打印出每天与每周的工作安排给牙医。

根据上述的系统功能,能够画出图7.4所示的牙科诊所管理系统的数据流图。

(4)脚本从用户角度描述系统典型的工作过程。根据对牙科诊所管理系统的需求,至少能够设想出下述3个脚本。

(a) 正常情况:病人甲请求预约。系统识别出病人的名字。系统建议二个就诊时间。病人同意该时间,接待员输入该预约。在预约的就诊日期到来之前两天,系统输出一份包含病人姓名与电话号码等信息的提醒清单。接待员打电话提醒病人。病人如约到来。治疗完之后,牙医助手安排该病人的下一次预约。

(b) 新病人:病人乙请求预约。系统不认识该病人的名字,务必把该病人的信息输入到病人记录系统中并为他建立一个记录。

(c) 多个预约:病人丙请求在未来两年内进行16次预约。接待员将其姓名输入到系统中,系统提出建议的预约就诊时间,病人同意后接待员输入病人认可的预约。

(5)状态图描绘系统可能有的状态转换。牙科诊所管理系统的要紧功能是实现病人预约,根据需求陈述与在第9题解答中给出的脚本,能够画出图7.5所示的牙科诊所管理系统状态图。图中把除了完成病人预约之外的事务笼统地称之日常事务。

第十一章作业

P288 第3题 答:

面向对象技术中的“类”,不妨称之为类构件,是比较理想的可重用软构件。原因如下: 为使软构件也像硬件集成电路那样,能在构造各类各样的软件系统时方便地重复使用,就务必使它们满足下列要求:

(1) 模块独立性强。具有单一、完整的功能,且通过反复测试被确认是正确的。它应该是一个不受或者很少受外界干扰的封装体,其内部实现在外面是不可见的。

(2) 具有高度可塑性(可裁剪性)。也就是说,务必提供为习惯特定需求而扩充或者修改已有构件的机制,而且所提供的机制务必使用起来非常简单方便。

(3) 接口清晰、简明、可靠。软构件应该提供清晰、简明、可靠的对外接口,而且还应该有详尽的文档说明,以方便用户使用。

精心设计的“类”基本上能满足上述要求,能够认为它是可重用软构件的雏形。 类构件有3种重用方式,分别是实例重用、继承重用与多态重用。 补充:从面向对象分析到面向对象设计,对象模型有何变化?

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

需要的时间与子任务彼此之间的依靠关系。请用工程网络描述下表中给出的信息,同时计算每个事件的最早时刻与最迟时刻。

因篇幅问题不能全部显示,请点此查看更多更全内容