网络学院软件工程作业(一)
一、选择题(32分)
1.(5分)对象是面向对象范型的( A① )。每个对象可用它自己的一组( B⑤ )和它可以执行的一组( C③ )来表征。应用执行对象的( C③ )可以改变该对象的( B⑤ )。它的应用必须通过( D② )的传递。可以认为,这种( D② )的传递大致等价于过程性范型中的函数调用。某些语言提供了特殊功能,允许对象引用自己。若一个对象没有显式地被引用,则可让该对象( E③ )。
  供选择的答案.
  A:    ①基本单位        ②最小单位        ③最大单位        ④语法单位      B~C:    ①行为        ②功能        ③操作        ④数据            ⑤属性
  D:    ①接口        ②消息        ③信息        ④操作            ⑤过程
  E:    ①撤消        ②歇着        ③缺省        ④隐式引用        ⑤引用自己
对象模型是什么
2.(5分)类常常被看做是一个抽象数据类型的实现,更合适的是把类看做是某种( A② )的一个模型。事实上,类是单个的( B③ )语义单元。类的用户能够操纵的操作叫做类的( C① )。类定义的其余部分给出数据定义和辅助功能定义,包括类的实现。
类的实现常常包括了其它类的实例,这些实例( D④ )被其它对象存取,包括同一个类的其它实例。类的实现可能还包括某些私有方法,实现它们的类可以使用,而其它任何对象都不能使用。
类,就它是一个数据值的聚合的意义上来看,与Pascal中的记录或C中的结构类似,但又有差别。类扩展了通常的记录语义,可提供各种级别的( E③ )。类不同于记录,因为它们包括了操作的定义,这些操作与类中声明的数据值有相同的地位。
  供选择的答案.
  A:①功能        ②概念            ③结构            ④数据
  B:①语法        ②词法            ③语义            ④上下文环境
  C:①界面        ②操作            ③行为            ④活动
  D:①可自由地    ②可有控制地    ③可通过继承    ④应受保护不
  E:①可移植性    ②可重复性        ③可访问性        ④继承性
 
3.(5分)由RumBaugh等人提出的一种面向对象方法叫做对象模型化技术(OMT),即三视点技术,它要求把分析时收集的信息建立在三个模型中。第一个模型是( A⑦ ),它的作用是描述系统的静态结构,包括构成系统的对象和类,它们的属性和操作,以及它们之间的联系。第二个模型是( B⑥ ),它描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。( B⑥ )包括两种图, 即( C③ )和( DD⑥⑥ )。( C③ )描述每一类对象的行为,( D⑥ )描述发生于系统执行过程中的某一特定场景。第三个模型是( E② ),它着重于描述系统内部数据的传送与处理,它由多个数据流图组成。
  供选择的答案.
  A,B,E:    ① 数据模型  ② 功能模型   ③ 行为模型
          ④ 信息模型  ⑤ 原型     ⑥ 动态模型
          ⑦ 对象模型  ⑧ 逻辑模型   ⑨ 控制模型
          ⑩ 仿真模型<br>
  C,D:          ① 对象图   ② 概念模型图    ③ 状态迁移图
            ④ 数据流程图 ⑤ 时序图            ⑥ 事件追踪图
              ⑦ 控制流程图 ⑧ 逻辑模拟图    ⑨ 仿真图
              ⑩ 行为图
 
4.(5分)在面向对象软件设计过程中,应按如下要求进行类的设计.只有类的共有界面的成员才能成为使用类的操作,这就是软件设计的( A③ )原则。当且仅当一个操作对类的实例的用户有用时,它才是类公共界面的一个成员,这是软件设计的( B② )原则。由同属一个类的操作负担存取或加工类的数据,这是软件设计的( C③ )原则。两个类之间的交互应当仅涉及参数表,这是软件设计的( D① )原则。每个派生类应该当做基类的特殊化来开发,
而基类所具有的公共界面成为派生类的共有界面的一个子集,这是软件设计的( E⑤ )原则。
  供选择的答案.
  A:①过程抽象        ②功能抽象    ③信息隐蔽    ④共享性        ⑤连通性
  B:①标准调用        ②最小界面    ③高耦合    ④高效率        ⑤可读性
  C:①数据抽象        ②低内聚    ③高内聚    ④低复杂度        ⑤低强度
  D:①显式信息传递    ②高内聚    ③低内聚    ④相互操作性    ⑤连接性
  E:①动态联编        ②异质表    ③信息隐蔽        ④多态性        ⑤继承性
 
5.(1分)从下列有关系统结构图的叙述中选出正确的叙述。
(1)系统结构图中反映的是程序中数据流的情况。
(2)系统结构图是精确表达程序结构的图形表示法。因此,有时也可将系统结构当作程序流程图使用。
(3)一个模块的多个下属模块在系统结构图中所处的左右位置是无关紧要的。
(4)在系统结构图中,上级模块与其下属模块之间的调用关系用有向线段表示。这时,使用斜的线段和水平、垂直的线段具有相同的含义。
  解:(4)
6.(5分)软件的开发工作经过需求分析阶段,进入( A② )以后,就开始着手解决“怎么做”的问题。常用的软件设计方法有( B⑤ )、( C① )、( D① )和( E③ )等方法。
  供选择的答案:
A~B:    ①程序设计            ②设计阶段        ③总体设计 
④定义阶段            ⑤SD方法        ⑥SP方法
  C:    ① Jackson方法      ②瀑布法        ③快速原型法  ④回溯法
  D~E:    ①LCP(Wanier)方法    ②递归法        ③Parnas方法
        ④自下而上修正    ⑤逐步求精法    ⑥检测校正法
 
7.(3分)请将下述有关模块独立性的各种模块之间的耦合,按其耦合度从低到高排列起来。
  ① 内容耦合 ② 控制耦合 ③ 非直接耦合 ④ 标记耦合
⑤ 数据耦合 ⑥ 外部耦合 ⑦ 公共耦合
解:③、⑤、④、②、⑥、⑦、①
  (3分)请将下述有关模块独立性的各种模块内聚,按其内聚度(强度)从高到低排列起来。
  ① 巧合内聚 ② 时间内聚 ③ 功能内聚 ④ 通信内聚
  ⑤ 逻辑内聚 ⑥ 信息内聚 ⑦ 过程内聚
解:③、⑥、④、⑦、②、⑤、①
二、解答题(68分)
1.(10分)建立分析和设计模型的一种重要方法是UML。
试问UML是一种什么样的建模方法?它如何表示一个系统?
在类的设计中需要遵循的方针是什么?
三个主要的设计准则:抽象、信息隐蔽和模块化如何才能做到?
解: UML 是一种可视化的、用于绘制软件蓝图的标准建模语言。可以用 UML 对软件系统的 各种制品(包括程序、文档等)进行描述。 
UML 虽然不是一种具体的编程语言,但是用 UML 描述的各种模型可以与各种编程语言 直接相连。
在设计类时需要遵循的方针是: 
  信息隐蔽:通过信息隐蔽可保护类的存储表示不被其它类的实例直接存取。   消息限制:该类实例的用户应当只能使用界面提供的操作。   狭窄界面:只有对其它类的实例是必要的操作才放到界面上。 
  强内聚:模块内部各个部分之间应有较强的关系,它们不能分别标识。   弱耦合:一个单独模块应尽量不依赖于其它模块。 
  显式信息传递:两个类之间的交互应当仅涉及显式信息传递。 
  派生类当做派生类型:每个派生类应该当做基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集。 
  抽象类:某些语言提供了一个类,用它做为继承结构的开始点,所有用户定义的类都直接或间接以这个类为基类。 
为了在类的设计中做到抽象、信息隐蔽和模块化:   以类作为系统的基本模块单元,通过一般化―特殊化关系和整体―部分关系,搭建整个系统的类层次结构,实现数据抽象和过程抽象; 
  将数据和相关的操作封装在类内部,建立共有、私有和子类型等存取级别,将数据表示定义成为类的私有成员,实现信息隐蔽。 
  通过建立类属性(类模板),将某些有可复用要求的类设计成在数据类型上通用的可复用的软件构件,这样有助于实现模块化。
2.(7分)使用面向对象设计方法 进行高层设计 ,以建立系统的体系结构。这样的结构有哪几种主要的组成部分?每一部分所承担的职责是什么?
解:这个模型有5层结构,又被划分成了4个组成部分:问题论域、用户界面、任务管理和数据管理。
问题论域部分的职责是:组合所有的论域中定义的类,为应用设计适当的类层次,为适应语言要求简化继承层次,细化设计以改善性能,开发与数据管理部分的接口,做细化时加入低层对象,评审设计并审查对分析模型所做的增补。 
人机交互部分的职责是:定义用户类型,开发任务场景,设计用户命令层次,建立原型以细化与用户交互,设计相关的类和类层次,适当时集成GUI类。 
任务管理部分的职责是:标识任务的类型(如事件驱动,时钟驱动),建立优先级,标识协调者,为每个任务设计适当的类。 
数据管理部分的职责是:设计数据结构和布局,设计管理数据结构所需的服务,标识可以协助实现数据管理的工具,设计适当的类和类层次。
3.(4分)写出“家庭保安系统”中“门窗监测”的场景
参与执行者实例:警报器,警报电话,显示器,门窗监视器
前置条件:系统已开机
事件流:
a.门窗监视器发现门或窗户发生异动,向软件系统报告异常事件;
b.软件系统启动警报器并拨报警电话号码;
c.报警电话接通后,软件系统播出语音,报告异常事件发生的时间、地点和事件的性质(门窗异动);
d.系统在控制面版的显示器上显示报警时间及当前状态(如报警:门窗异动)
后置条件:系统处于“报警”状态
4.(3分)画出“传感器监测”的用例的活动图。
解:
5.(4分)逐步求精、分层过程与抽象等概念之间的相互关系如何?
解: 总的指导原则是自顶向下、逐步求精。它的基本原则是功能的分解与抽象。逐步求精,也称为自顶向下是指:不要求一步就编制成可执行的程序,而是分若干步进行。第一步编出的程序抽象程度最高,第二步编出的程序抽象程度有所降低,最后一步编出的程序即为可执行的程序。用这种方法编程,可使程序易读、易写、易调试、易维护,也易于保证程序的正确性及验证其正确性。随着软件设计的逐步展开,程序结构中每一层模块就体现了过程抽象某一层次上的一次细化。 
“自顶向下,逐步求精”是Niklaus Wirth提出的设计策略:即将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。 
这样的结构实际就是一个模块的分层结构,即分层的过程。在实施时,采用抽象化的方法,自顶向下,给出不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。而在较低的抽象层次上,则采用过程化的方法。在描述问题的解法时,我们可以配合使用面向问题的术语和面向现实的术语。但最后在最低的抽象层次上,我们应
使用能够直接实现的方式来描述这个解法。
6.(15分)完成良好的软件设计应遵循哪些原则?
解:高内聚、低耦合面向抽象编程多用组合少用继承“开-闭”原则;里氏代换原则;依赖倒置原则;接口隔离原则;合成/聚合复用原则;迪米特法则;单一职责原则。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。