软件工程复习题

原文链接在本人语雀文档

2、比较传统的软件工程方法与敏捷过程的特点(5分)
敏捷过程的特点:
敏捷开发的优点是轻量级、简单、可快速交付、最大的特点是高度透明、检验和适应,注重开发团队之间以及开发团队与客户的及时沟通,主张响应需求变化,但是不够系统。
传统软件架构的优点在于预见性和系统性,能在正式开发前预见软件的功能需求和非功能需求,最大的特点是重视文档和结构明显,主张固定的流水开发,很难响应客户需求的变化,难以保证开发的灵活性。

原文链接:https://blog.csdn.net/u012755393/article/details/52790887

3、谈谈你对面向对象与面向过程的理解。(5分)

  • 软件开发思想,先有面向过程,后有面向对象
  • 在大型软件系统中,面向过程的做法不足,从而推出了面向对象
  • 都是解决实际问题的思维方式
  • 两者相辅相成,宏观上面向对象把握复杂事物的关系;微观上面向过程去处理
  • 面向过程以实现功能的函数开发为主;面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能
  • 面向过程是封装的是功能;面向对象封装的是数据和功能
  • 面向对象具有继承性和多态性;面向过程则没有

https://www.cnblogs.com/ConstXiong/p/11846771.html
4、什么是面向对象的开闭法则?(2分)
开闭原则定义 :一个软件实体应当对扩展开放,对修改关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为。
另请完成下面的设计重构:GUT软件公司开发的CRM系统可以显示各种类型的图表,如饼状图和柱状图等,为了支持多种图表显示方式,原始设计方案如图,如何实现对该系统进行重构,使之符合开闭原则。(5分)
![image.png](https://img-blog.csdnimg.cn/img_convert/af1c374d366dfecd035f5d87923d2049.png#clientId=ue9727a21-68c2-4&from=paste&height=125&id=u75d1deb8&margin=[object Object]&name=image.png&originHeight=250&originWidth=559&originalType=binary&size=121222&status=done&style=none&taskId=ucab0bb62-f909-4b20-8502-d46aa9d0f72&width=279.5)

答:我们引入了抽象图表类AbstractChart,且ChartDisplay针对抽象图表类进行编程,并通过setChart()方法由客户端来设置实例化的具体图表对象,在ChartDisplay的display()方法中调用chart对象的display()方法显示图表。如果需要增加一种新的图表,如折线图LineChart,只需要将LineChart也作为AbstractChart的子类,在客户端向ChartDisplay中注入一个LineChart对象即可,无须修改现有类库的源代码。

![1336201573_6059.jpg](https://img-blog.csdnimg.cn/img_convert/507a7373aee862d1f0e734f5ffecc7f6.png#clientId=ue9727a21-68c2-4&from=ui&id=u175b0baf&margin=[object Object]&name=1336201573_6059.jpg&originHeight=317&originWidth=778&originalType=binary&size=116374&status=done&style=none&taskId=uc26296ad-361c-4925-9882-79e4b4548be)
二、应用题(共80分)
1、根据下述描述画出相应的状态转换图:到ATM机前插入磁卡后输入密码,如果密码不正确则系统
会要求再次输入密码,如3次输入不正确则退出服务:密码正确后,系统会提示选择服务类型,如果
选择存款则进行存款操作,存款完毕后可以选择继续服务,也可以选择退出服务;如果选择取款则进
行取款操作,取款完毕后可选择退出服务。(10分)
类似于下图:
![](https://img-blog.csdnimg.cn/img_convert/703c131c004245d6bb5fc729e4d72f1b.png#clientId=u323eb721-68dd-4&from=paste&height=161&id=uf97236aa&margin=[object Object]&originHeight=322&originWidth=554&originalType=url&status=done&style=none&taskId=u89752c40-4962-4634-a1fa-b6fb2d6597b&width=277)

2、某企业集团有若干工厂,每个工厂生产多种产品,且每种产品可以在多个工厂生产,每个工厂按照
固定的计划数量生产产品,计划数量不低于300;每个工厂聘用多名职工,且每名职工只能在一个工
厂工作,工厂聘用职工有聘用期和工资。工厂有工厂编号、厂名和地址,产品有产品编号、产品名和
规格,职工有职工号、姓名和技术等级。请画出E-R图。(10分)
![](https://img-blog.csdnimg.cn/img_convert/a20e38252d741b6a0199bd210f15355a.png#clientId=u323eb721-68dd-4&from=paste&height=158&id=u7e7d2094&margin=[object Object]&originHeight=315&originWidth=471&originalType=url&status=done&style=none&taskId=uef3bcd79-0da1-469e-af7a-d160a278dc6&width=235.5)
3、请用程序流程图来描述下述问题:求解两个正整数的最小公倍数。(10分)
下图把输出最大公因数输出框去掉即可;
![](https://img-blog.csdnimg.cn/img_convert/46eb42f55806bb2ca9d723218c5a55a6.gif#clientId=u323eb721-68dd-4&from=paste&height=358&id=ud744752d&margin=[object Object]&originHeight=385&originWidth=253&originalType=url&status=done&style=none&taskId=uafa45e73-47c4-40f9-8b80-98a6c6b87b1&width=235.5)
4、某大型企业计划开发一个“ 综合信息管理系统”,该系统涉及销售、供应、财务、生产和人力资源
等多个部门的信息管理。该企业的想法是按部门优先级别逐个实现,边应用边开发。对此,需要一种
比较适合的过程模型。请对这个过程模型作出符合应用需要的选择,并说明选择理由。(10分)

答:可以采用增量模型。
它是瀑布模型与快速原型模型的综合,它对软件过程的考虑是:在整体上按照瀑布模型的流程实施项目开发,以方便对项目的管理;但在软件的实际创建中,则把软件系统功能分解为许多增量构件,并以构件为单位逐个创建与交付,直到全部增量构件创建完毕,并都被集成到系统之中交付用户使用。

5、设计下列代码的语句覆盖和路径覆盖测试用例:(8分)
白盒测试:六种逻辑覆盖;
理解概念网址:https://blog.csdn.net/weixin_44772874/article/details/107457007?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-4&spm=1001.2101.3001.4242
_AND_函数_意思是_多个条件均符合,逻辑才成立。
语句覆盖:为了暴露程序中的错误,至少每个语句应该执行一次。

判定覆盖又叫分支覆盖,它的含义是,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。

条件覆盖的含义是,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都驭到各种可能的结果。

判定/条件覆盖是使判定中每个条件的所有可能结果至少出现一次,并且每个判定本身的所有可能结果也至少出现一次。

条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。

路径覆盖的含义是,选取足够多测试数据,使程序的每条可能路径都至少执行一次如果程序图中有环,则要求每个环至少经过一次)。

Start:
if(A>1) and (B=0)
then X=X/A;
if(A=2) and (X>1)
then X=X+1;
end;
语句覆盖:
A = 2 B = 0,X = 4
路径覆盖:
这部分覆盖A,B,X > 1
A=2,B = 0,X =4;
A=2,B = -1,X = 4;
A = 1,B = 0,X =4;
A =1,B =-1,X=4;
覆盖X <= 1 情况,
A=2,B = 0,X =1;
A=2,B = -1,X = 1;
A = 1,B = 0,X =1;
A =1,B =-1,X=1;

课后习题重点看蓝色字体部分

第一章课后习题

1.什么是软件危机?它有哪些典型表现?为什么会出现软件危机?
答:(1)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含两方面的问题;
①如何开发软件,以满足对软件日益增长的需求;
②如何维护数量不断膨胀的已有软件。
(2)软件危机的典型表现:
①对软件开发成本和进度的估计不准确;
②用户对“已完成的”软件系统不满意的现象经常发生;
③软件产品的质量往往靠不住;
④软件常常是不可维护的;
⑤软件通常没有适当的文档资料;
⑧软件成本在计算机系统总成本中所占的比例逐年上升;
⑦软件开发跟不上计算机应用迅速普及深入的趋势。
(3)软件危机出现的原因:
①软件是计算机系统中的逻辑部件而不是物理部件;
②软件显著特点是规模庞大:
③对软件开发和维护还有不少糊涂观念,采用了错误的方法和技术;
④存在与软件开发和维护有关的许多错误认识和傲法;
⑤对用户要求没有完整准确的认识就匆忙着手编写程序;
⑥一个软件从定义、开发、维护到废弃,要经历一个漫长的时期;
⑦一个软件产品必须由一个完整的配置组成,要包括程序、文档和数据等成分;
⑧在软件开发的不同阶段进行修改需要付出的代价是很不相同的:
⑨轻视维护。

2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错 误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?
![image.png](https://img-blog.csdnimg.cn/img_convert/aaf47ba80a25c7c1f2fe30eb1512750a.png#clientId=u419f7544-96d5-4&from=paste&height=137&id=u86653e05&margin=[object Object]&name=image.png&originHeight=273&originWidth=441&originalType=binary&size=33789&status=done&style=none&taskId=u42ca5daf-c7d4-4332-b1db-c53ad6b4f6d&width=220.5)
(1)在软件开发的不同阶段进行修改需要付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低:而在开发的中期,软件配置的许多成分己经完成,引入一个变动要对所有已完成的配置成分都傲相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增。
(2〉在软件“已经完成”时再引入变动,当然需要付出更高的代价。在后期引入一个变动比在旱期引入相同变动所需付出的代价高2~3个数量级。

3.什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?
答:(1)软件工程定义:指导计算机软件开发和维护的一门工程学科。
(2〉软件工程本质特征:
①软件工程关注于大型程序的构造;
②软件工程的中心课题是控制复杂性;
③软件经常变化;
④开发软件的效率非常重要;
⑤和谐地合作是开发软件的关键;
⑥软件必须有效地支持它的用户;
⑦由具有一种文化背景的人替具有另一种文化背景的人创造产品。
消除软件危机的方法:
①应该对计算机软件有一个正确的认识;
②应该充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;
③研究探索更好的管理措施和技术措施两个方面解决软件危机;
④应该开发和使用更好的软件工具。

4.简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
答:(1)结构化范型
①要点
结构化范型属于传统方法学。传统的软件开发方法大部分采用瀑布模型。这种模型要求每一阶段都以前
一阶段形成的文档为基础完成工作。每一阶段将要完成时,都要求开发人员进行验证或确认。
②优点
把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从面降低了整个软件开发过程的困难程度。
③缺点
当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化时,开发出的软件往往不成功;而且维护起来仍然很困难。
(2)面向对象范型
①要点
a. 软件中的任何元素都是对象,复杂的软件对象由简单的软件对象组合而成。
b.所有对象划分成各种对象类,每个对象都定义了一组数据和一组方法。
c.按照子类和父类的关系,把若干个对象类组成一个层次结构的系统。
d. 对象彼此之间仅能通过传递消息互相联系。
②优点
a. 按照人类习惯的思维方法,对软件开发过程所有阶段进行综合考虑。
b.软件生存期各阶段所使用的方法、技术具有高度的连续性。
c.软件开发各个阶段有机集成,有利于系统的稳定性。

5.根据历史数据可以进行如下的假设。
对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:
M= 4 080 e0.28(Y一1 960);
存储器的价格按下面公式描述的趋势逐年下降:
P1= 0.3 ×0.72Y-1974(美分/位)如果计算机字长为16位,则存储器价格下降的趋势为:
P2- 0.048×0.72Y-1 974(美元/字)
在上列公式中¥代表年份,M是存储容量(字数),P。和P:代表价格。
基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算:
(1)在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少?
(2〉假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4 000美元,如果一条指令为一个字长,计算使存储器装满程序所需用的成本。
(3)假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6 000美元,重复( 1)、(2)题。
6.什么是软件过程?它与软件工程方法学有何关系?
答:(1)软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工 作步骤。软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。
(2)软件过程是软件工程方法学的三个重要组成部分之一。软件工程方法学的三个要素为:方法、工具和过程。

7.什么是软件生命周期模型?试比较瀑布模型﹑快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。
一个软件产品从定义、开发、维护到废弃的时间总和称为软件的生命周期。
答:(1)瀑布模型
①优点
a,可强迫开发人员采用规范的方法:
b.严格地规定了每个阶段必须提交的文档;
c.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;
d.对文档的约束,使软件维护变得容易一些,且能降低软件预算。
②缺点
a,开发过程一般不能逆转,否则代价太大:
b,实际的项目开发很难严格按该模型进行;
c,客户往往很难清楚地给出所有的需求:
d.软件的实际情况必须到项目开发的后期客户才能看到。
③适用范围
a,用户的需求非常清楚全面,且在开发过程中没有或很少变化:
b、开发人员对软件的应用领域很熟悉:
c,用户的使用环境非常稳定;
d,开发工作对用户参与的要求很低。
(2)快速原型模型
①优点
a,可以得到比较良好的需求定义,容易适应需求的变化;
b.有利于开发与培训的同步;
c.开发费用低、开发周期短且对用户更友好。
②缺点
a.客户与开发者对原型理解不同;
b.准确的原型设计比较困难;
c.不利于开发人员的创新。
③适用范围
a,对所开发的领域比较熟悉而且有快速的原型开发工具:
b.项日招投标时,可以以原型模型作为软件的开发模型;
c.进行产品移植或升级时,或对已有产品原型进行客户化工作时。
(3)增量模型
①优点
a.能在较短时间内向用户提交可完成部分工作的产品:
b,逐步增加功能,减少了全新的软件可能给客户组织带来的冲击。
②缺点
a,并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;
b.增量模型的灵活性很容易退化为边做边改模型,从而是软件过程的控制失去整体性。
③适用范围
a,进行已有产品升级或新版本开发;
b.对完成期限严格要求的产品:
c.对所开发的领域比较熟悉而且已有原型系统。
(4)螺旋模型
①优点
a.对可选方案和约束条件的强调有利于已有软件的重用;
b.减少了过多测试或测试不足所带来的风险:
c.在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
②缺点
a.需要丰富的风险评估经验和专门知识,如果未能够及时标识风险,会造成重大损失;
b.过多的迭代次数会增加开发成本,延迟提交时间。
③适用范围
适用于内部开发的大规模软件项目。

8.为什么说喷泉模型较好地体现了面向对象软件开发过程无缝和迭代的特性?9.试讨论Rational统一过程的优缺点。
答:喷泉模型,是典型的面向对象的软件过程模型之–。“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。代表不同阶段的圆圈相互重叠,表示两个活动之间存在交迭:而面向对象方法在概念和表示方法上的一致性,保证了在各项开发活动之间的无缝过渡。在一个阶段内的向下箭头代表该阶段内的迭代(或求精);
10. Rational统一过程主要适用于何种项目?
答Rational统一过程(RUP)强调采用迭代和渐增的方式来开发软件,整个项目开发过程由多个迭代过程组成。在每次迭代中只考虑系统的一部分需求,针对这部分需求进行分析、设计、实现、测试和部署等工作,每次迭代都是在系统已完成部分的基础上进行的,每次给系统增加些N的功能,如此循环往复地进行下去,直至完成最终项目。它适用于大型的需求不断变化的复杂软件系统项目。
11.说明敏捷过程的适用范围。
答:敏捷过程具有对变化和不确定性的更快速、更敏捷的反应特性,而且在快速的同时仍然能够保持可持续的开发速度。较适用于开发可用资源及开发时间都有较苛刻约束的小型项目。
12.说明微软过程的适用范围。
答微软过程的每一个生命周期发布一个递进的软件版本,各个生命周期持续、快速地迭代循环。它综合了Rational统一过程和敏捷过程的许多优点,是对众多成功项目的开发经验的正确总结;适用于商业环境下具有有限资源和有限开发时间约束的项目。

第二章课后习题:不考

第三章课后习题:

1.为什么要进行需求分析?通常对软件系统有哪些需求?
答:(1)需求分析的原因为了开发真正满足用户需求的软件产品,需求分析是软件开发工作获得成功的前提条 件,不能满足用户需求的程序只会令用户失望,给开发者带来烦恼。

(2)对软件系统的需求功能需求、性能需求,可靠性和可用性需求、出错处理、借口需求、约束、逆向需求、将 来可能提出的要求;

2.怎样与用户有效地沟通以获取用户的真实需求?
答:访谈是最早开始使用的获取用户需求的技术,也是目前广泛使用的需求分析技术,访谈有两种形式,分别是正式的和非正式的访谈。正式访谈时,系统分析员将提出一些事先准备好的具体问题。在非正式访淡中,分析员将提出一些用户可以自由回答的开放性问题,以鼓励被访问人员说出自己的想法。其中情景分析技术往往非常有效.

3.银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输人系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期,利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。
![image.png](https://img-blog.csdnimg.cn/img_convert/3580a077de97f97b341bd3afa11cd0b9.png#clientId=u419f7544-96d5-4&from=paste&height=285&id=ufb5ac220&margin=[object Object]&name=image.png&originHeight=569&originWidth=933&originalType=binary&size=252544&status=done&style=none&taskId=ud63a0b2a-380a-40b0-9929-1e89f3d90fc&width=466.5)
(2)E-R模型如图3-10 所示。
本题中共有两类实体,分别是“储户”和“储蓄所”,在它们之间存在“存取款”关系。因为一位储户可以在多家储蓄所存取款,一家储蓄所拥有多位储户,所以“存取款”是多对多(M:N) 关系。
储户的属性主要有姓名、住址、电话号码和身份证号码,储蓄所的属性主要是名称、地址和电话号码,而数额、类型、到期日期、利率和密码则是关系类型存取款的属性。
![image.png](https://img-blog.csdnimg.cn/img_convert/d4b922a4f5ea28602e127c8a607d7ddd.png#clientId=u419f7544-96d5-4&from=paste&height=167&id=u65e45d51&margin=[object Object]&name=image.png&originHeight=333&originWidth=594&originalType=binary&size=83722&status=done&style=none&taskId=uf70609df-869d-4a71-a89e-fe974934246&width=297)

4.分析习题⒉第3题所述的机票预订系统。试用实体-联系图描绘本系统中的数据对象并用数据流图描绘本系统的功能。
数据流图,如图3-11所示:
![image.png](https://img-blog.csdnimg.cn/img_convert/871fbbcce0cdbd9a39dbdc88aa8629dd.png#clientId=u419f7544-96d5-4&from=paste&height=82&id=ud86aa5f5&margin=[object Object]&name=image.png&originHeight=163&originWidth=710&originalType=binary&size=98936&status=done&style=none&taskId=u5e611bfb-7952-45e0-8a4c-243e3053d04&width=355)
ER图,如图3-12:
![image.png](https://img-blog.csdnimg.cn/img_convert/00f43a6c094bbcfc7020c2cf40ee27c2.png#clientId=u419f7544-96d5-4&from=paste&height=397&id=u30af948d&margin=[object Object]&name=image.png&originHeight=794&originWidth=645&originalType=binary&size=303726&status=done&style=none&taskId=ud9e96909-a502-4c02-9a0a-66b5551e1c5&width=322.5)

5.分析习题⒉第4题所述的患者监护系统。试用实体-联系图描绘本系统中的数据对象并用数据流图描绘本系统的功能,画出本系统的顶层IPO图。

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

状态转化图,如图3-14所示:
![image.png](https://img-blog.csdnimg.cn/img_convert/588f388c75452c70c3995ef3c26fd127.png#clientId=u419f7544-96d5-4&from=paste&height=206&id=u20a5851e&margin=[object Object]&name=image.png&originHeight=315&originWidth=586&originalType=binary&size=78516&status=done&style=none&taskId=u501821b0-9a4c-4711-80c2-a944059252b&width=384)

第四章不考

第五章课后习题

1.为每种类型的模块耦合举一个具体例子。
答: (1)数据耦合:计算机网络属于松耦合系统。
(2)控制耦合;遥控器与电器。
(3)公共环境耦合:多机系统。
(4)内容耦合:汇编程序模块。

2.为每种类型的模块内聚举一个具体例子。
答:(1)逻辑内聚一个子程序将打印季度开支报告、月份开支报告和日开支报告.具体打印哪平个,将由传入 的控制标悲决定,这个子程序具有逻辑内聚性,因为它的内部逻辑是由输进去的外部控制标志决定的。
(2)时间内聚
若一个模块包含了需要在同–时间段中执行的多个任务,则称该模块的内聚为时间内聚。例如,将多个变量 的初始化放在同一个模块中实现,或将需要同时使用的多个库文件的打开操作放在同一个模块中,都会产生时间内聚的模块。
(3)过程内聚
一个子程序,它产生读取雇员的名字,然后是地址,最后是它的电话号码。这种顺序之所以重要,仅仅是因为它符合用户的要求,用户希望按这种顺序进行屏幕输入。另外一个子程序将读取关于雇员的其它信息。这个子程序是过程内聚性,因为是由一个特定顺序而不是其它任何原因,把这些操作组合在一起的.
(4)颠序内聚
一个按给出的生日计算雇员年龄、退休时间的子程序,如果它是利用所计算的年龄来确定雇员将要退休的时间,那么它就具有顺序内聚性。而如果它是分别计算年龄和退休时间的,但使用相同生日数据,那它就只具有通讯内聚性。
(5)功能内聚
计算雇员年龄并给出生日的子程序就是功能内聚性的,因为它只完成一项工作,而且完成得很好。(6)偶然内聚一个模块完成一组任务,这些任务彼此间即使有关系,关系也比较松散,就叫做偶然内聚。

3.用面向数据流的方法设计下列系统的软件结构。
(1)储蓄系统(参见习题2第2题)。
![image.png](https://img-blog.csdnimg.cn/img_convert/d82977d902676a535157669d65d18e73.png#clientId=u59a677c0-3d92-4&from=paste&height=183&id=udaaa9551&margin=[object Object]&name=image.png&originHeight=366&originWidth=604&originalType=binary&size=83378&status=done&style=none&taskId=u6c9ab132-af67-4d99-9880-d1adb5ab808&width=302)
(2〉机票预订系统(参见习题2第3题)。
(3)患者监护系统(参见习题⒉第4题)。
4.美国某大学共有200名教师,校方与教师工会刚刚签订一项协议。按照协议,所有年工资超过$ 26 000(含$ 26 000)的教师工资将保持不变,年工资少于 26000 的教师将增加工资 , 所增加的工资数按下述方法计算 : 给每个由此教师所赡养的人 ( 包括教师本人 ) 每年补助 26 000 的教师将增加工资,所增加的工资数按下述方法计算:给每个由此教师所赡养的人(包括教师本人)每年补助 26000的教师将增加工资,所增加的工资数按下述方法计算:给每个由此教师所赡养的人(包括教师本人)每年补助 100,此外,教师有一年工龄每年再多补助$50,但是,增加后的年工资总额不能多于 26000 。教师的工资档案储存在行政办公室的光盘上 , 档案中有目前的年工资﹑赡养的人数、雇用日期等信息。需要写一个程序计算并印出每名教师的原有工资和调整后的新工资。要求 : ( 1 )画出此系统的数据流图。 ( 2 ) 写出需求说明。 ( 3 )设计上述的工资调整程序 ( 要求用 H I P O 图描绘设计结果 ) , 设计时分别采用下述两种算法 , 并比较这两种算法的优缺点 : ( a )搜索工资档案数据 , 找出年工资少于 26 000。教师的工资档案储存在行政办公室的光盘上,档案中有目前的年工资﹑赡养的人数、雇用日期等信息。需要写一个程序计算并印出每名教师的原有工资和调整后的新工资。要求: (1)画出此系统的数据流图。 (2)写出需求说明。 (3)设计上述的工资调整程序(要求用HIPO图描绘设计结果),设计时分别采用下述两种算法,并比较这两种算法的优缺点: (a)搜索工资档案数据,找出年工资少于 26000。教师的工资档案储存在行政办公室的光盘上,档案中有目前的年工资赡养的人数、雇用日期等信息。需要写一个程序计算并印出每名教师的原有工资和调整后的新工资。要求:(1)画出此系统的数据流图。(2)写出需求说明。(3)设计上述的工资调整程序(要求用HIPO图描绘设计结果),设计时分别采用下述两种算法,并比较这两种算法的优缺点:(a)搜索工资档案数据,找出年工资少于 26 000 的人﹐计算新工资,校核是否超过$ 26 000,储存新工资,印出新旧工资对照表;
(b)把工资档案数据按工资从最低到最高的次序排序,当工资数额超过$26 000时即停止排序,计算新工资,校核是否超过限额,储存新工资,印出结果。
(4)所画出的数据流图适用于哪种算法?
5.下面将给出两个人玩的扑克牌游戏的一种玩法﹐试设计一个模拟程序,它的基本功能是:
(1)发两手牌(利用随机数产生器)。
(2)确定赢者和赢牌的类型。
(3)模拟Ⅳ次游戏,计算每种类型牌赢或平局的概率。要求用HIPO图描绘设计结果并且画出高层控制流程图。
扑克牌游戏规则如下:
(1)有两个人玩,分别称为A和 B。
(2)一副扑克牌有52张牌,4种花色(方块,梅花、红桃和黑桃),每种花色的牌的点数
按升序排列有2,3,4,…,10,J,Q,K,A 等13种。按升序排列有2,3,4,…,10,J,Q,K,A等13种.(3)给每个人发3张牌﹐牌面向上(即﹐亮牌),赢者立即可以确定。(3)给每个人发3张牌,牌面向上(即,亮牌),赢者立即可以确定。
(4)最高等级的一手牌称为同花,即3张牌均为同一种花色,最大的同花牌是同一种花色的Q.K、A。(4)最高等级的一手牌称为同花,即3张牌均为同一种花色,最大的同花牌是同一种花色的Q.K、A。
(5)第二等级的牌称为顺子,即点数连续的3张牌﹐最大的顺子是花色不同的Q、K、A。(5)第二等级的牌称为顺子,即点数连续的3张牌,最大的顺子是花色不同的Q、K、A.
(6)第三等级的牌是同点,即点数相同的3张牌﹐最大的同点是A、A、A。(6)第三等级的牌是同点,即点数相同的3张牌,最大的同点是A、A、A.
(7)第四等级的牌是对子,即3张牌中有两张点数相同,最大的对子是A、A、K。(8)第五等级的牌是杂牌,即除去上列4等之外的任何一手牌,最大的杂牌是不同花色的A,K、J。(7)第四等级的牌是对子,即3张牌中有两张点数相同,最大的对子是A、A、K.(8)第五等级的牌是杂牌,即除去上列4等之外的任何一手牌,最大的杂牌是不同花色的A,K、J.
(9)若两人的牌类型不同,则等级高者胜;若等级相同,则点数高者胜;若点数也相同,则为平局。(9)若两人的牌类型不同,则等级高者胜;若等级相同,则点数高者胜;若点数也相同,则为平局。

你可能感兴趣的:(软件工程导论作业,软件工程)