习题参考答案
【3-1】从下列有关系统结构图的叙述中选出正确的叙述。
(1) 系统结构图中反映的是程序中数据流的情况。
(2) 系统结构图是精确表达程序结构的图形表示法。因此,有时也可将系统结构当作程序流程图使用。
(3) 一个模块的多个下属模块在系统结构图中所处的左右位置是无关紧要的。
(4) 在系统结构图中,上级模块与其下属模块之间的调用关系用有向线段表示。这时,使用斜的线段和水平、垂直的线段具有相同的含义。
〖解〗 (4)
分析:系统结构图反映的是系统中模块的调用关系和层次关系,谁调用谁,有一个先后次序(时序)关系。所以系统结构图既不同于数据流图,也不同与程序流程图。数据流图仅描述数据在系统中如何流动,如何处理和存储,它不考虑时序关系。图中的有向线段表示
了数据流。程序流程图描述程序中控制流的情况,即程序中处理的执行顺序和执行序列所依赖的条件,图中的有向线段(流线)表示的是控制流,从一个处理走到下一个处理。但在系统结构图中的有向线段表示调用时程序的控制从调用模块移到被调用模块,并隐含了当调用结束时控制将交回给调用模块。
如果一个模块有多个下属模块,这些下属模块的左右位置可能与它们的调用次序有关。例如,在用结构化设计方法依据数据流图建立起来的变换型系统结构图中,主模块的所有下属模块按逻辑输入、中心变换、逻辑输出的次序自左向右一字排开,左右位置不是无关紧要的。所以只有最后的一个叙述是正确的。
【3-2】软件的开发工作经过需求分析阶段,进入(  A  )以后,就开始着手解决“怎么做”的问题。常用的软件设计方法有(  B  )(  C  )(  D  )(  E  )等方法。
供选择的答案:
A  B① 程序设计    设计阶段        总体设计        ④ 定义阶段
SD方法        SP方法
C.    Jackson方法    瀑布法        快速原型法    回溯法
D  E. LCPWanier)方法    递归法        Parnas方法
    自下而上修正    逐步求精法    检测校正法
〖解〗A. ,  B. ,  C. ,  D. ,  E. ③。其中,D与E的答案可互换。
分析:进入设计阶段之后,就开始着手解决“怎么做”的问题。一般把设计阶段的工作分成两步:即概要设计和详细设计。在概要设计阶段应着重解决实现需求的程序模块划分问题,在详细设计阶段则要决定每个模块的具体算法。
    常见的软件概要设计方法有三大类:
以数据流图为基础构造模块结构的结构化设计方法SD);
以数据结构为基础构造模块结构的Jackson方法和LCPWanier)逻辑构造方法;
以对象、类、继承和通信为基础的面向对象设计方法(OOD)。
此外,以信息隐蔽为原则的Parnas方法虽然没有给出系统化的设计方法,但它提出了一组原则,要求预先估计未来生存周期中可能发生的种种情况,并采取相应措施以提高软件系统的可维护性和可靠性。
这里对面向数据结构的Jackson方法和LCP方法再多说几句。
Jackson方法是一种典型的面向面向数据结构开发软件的方法。它的基本思想是首先根据实际问题,给出处理问题所需要和产生的数据结构,一旦搞清了问题的输入输出数据结构,就可以以简单的方式直接导出程序的处理结构,然后应用Jackson的描述符号,将这个处理结构转换为程序的过程性描述。
LCP方法是另一种面向数据结构的方法,它也要先给出用Wanier图表示的处理问题所需要和产生的数据结构,再在Wanier图上直接将数据结构转换为加工处理的形式化表示,最后生成描述加工过程的伪代码,进行验证和优化。
【3-3】请将下述有关模块独立性的各种模块之间的耦合,按其耦合度从低到高排列起来。
    内容耦合        控制耦合        非直接耦合    标记耦合
数据耦合        外部耦合        公共耦合
〖解〗③、⑤、④、②、⑥、⑦、①
分析:参看“内容提要”中有关模块独立性的介绍。
3-4】请将下述有关模块独立性的各种模块内聚,按其内聚度(强度)从高到低排列起来。
巧合内聚        时间内聚        功能内聚    通信内聚
逻辑内聚        信息内聚        过程内聚
〖解〗 ③、⑥、④、⑦、②、⑤、①程序设计语言一般可分为三大类
分析:在状态迁移图中,由一个状态和一个事件所确定的下一状态可能会有多个。实际会迁移到哪一个状态,是由更详细的内部状态和更详细的事件信息来决定的,此时在状态迁移图中可能需要使用加进判断框和处理框的记法。状态迁移图的优点:第一,状态之间的关系能够直观地捕捉到,这样用眼睛就能看到是否所有可能的状态迁移都已纳入图
中,是否存在不必要的状态等。第二,由于状态迁移图的单纯性,能够机械地分析许多情况,可很容易地建立分析工具。
3-5】在结构化分析方法中,用实体―关系图表达系统中的对象及其关系。在实体―关系图中,表达对象的实例之间的关联有三种类型: 一对一联系、(      )联系、多对多联系。
供选择的答案:
A. 多对一        B. 一对多
〖解〗B
分析:使用实体―关系图,可以建立系统中各个数据对象及对象之间的关系。对象的实例间的关联称为“基数”,共有3种类型的基数:一对一,一对多,多对多。它反映了现实世界中实体之间的联系,多对一的情况可以归入一对多的关联中去。
3-6 软件需求分析的任务不应包括A  )。进行需求分析可使用多种工具,但B  )是不
适用的。在需求分析中,分析员要从用户那里解决的最重要的问题是C  )。需求规格说明书的内容不应当包括D  )。该文档在软件开发中具有重要的作用,但其作用不应当包括E  )
供选择的答案:
A.    问题分析        信息域分析    结构化程序设计        确定逻辑模型
B.    数据流图        判定表        PAD            数据词典
C.    要让软件做什么            要给该软件提供哪些信息
要求软件工作效率如何    要让软件具有什么样的结构
D.    对重要功能的描述        对算法的详细过程性描述
软件确认准则            软件的性能
E.    软件设计的依据            用户和开发人员对软件要“做什么”的共同理解
软件验收的依据            软件可行性分析的依据
〖解〗A.     B.     C.     D.     E.
分析:软件需求分析的任务是通过与用户的合作,了解用户对待开发系统的要求;根据对用户要求的系统所在的信息域的调查、分析,确定系统的逻辑模型;并对求解的问题做适当的分解,使之适合于计算机求解。需求分析的结果是软件需求规格说明书。
结构化程序设计是在详细设计和编码阶段所采用的技术,而不是需求分析阶段要采用的技术。在需求分析阶段,分析人员可以用数据流图描述系统的数据流的变换和流向,用数据词典定义在数据流图中出现的数据流、数据文件、加工或处理,用判定表表示复杂条件和动作组合的情况。但PAD图是在详细设计阶段使用的描述加工逻辑的工具,不适用于需求分析。此外,软件需求分析阶段只确定软件系统要“做什么”,完成对重要功能、性能、确认准则的描述,至于“怎么做”由后续的设计阶段完成,对算法的详细过程性描述也是在设计阶段给出。软件可行性分析应在需求分析之前,所以需求分析规格说明不能成为可行性分析的依据。
3-7】原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于A  )系统。它从用户界面的开发入手,首先形成B  ),用户C  ),并就D  )提出意见,它是一种E  )型的设计过程。
供选择的答案:
A.    需求不确定性高的    需求确定的    管理信息        决策支持
B.    用户界面使用手册        用户界面需求分析说明书
    系统界面原型            完善的用户界面
C.    改进用户界面的设计        阅读文档资料
模拟用户界面的运行        运行用户界面原型
D.    同意什么和不同意什么    使用和不使用哪一种编程语言
程序的结构            执行速度是否满足要求
E.    自外向内        自顶向下        自内向外        自底向上
〖解〗A. ,  B. ,  C. ,  D. ,  E.
分析:通常,原型是指模拟某种产品的原始模型。在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。
使用原型的原型化方法特别适用于需求不确定性较高的软件系统的开发。它的基本思想是根据用户给出的基本需求,通过快速实现构造出一个小型的可执行的模型,满足用户的基本要求,这就是系统界面原型。让用户计算机上实际运行这个用户界面原型,在试用的过程中得到亲身感受和受到启发,做出反应和评价,提出同意什么和不同意什么。然后开发者根据用户的意见对原型加以改进。随着不断试验、纠错、使用、评价和修改,获得新的原型版本,如此周而复始,逐步减少分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需求的变更,从而提高了最终产品的质量。它是一种自外向内型的设计过程。
3-8】逐步求精、分层过程与抽象等概念之间的相互关系如何?
〖解〗“自顶向下,逐步求精”是Niklaus Wirth提出的设计策略:即将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。
这样的结构实际就是一个模块的分层结构,即分层的过程。在实施时,采用抽象化的方法,自顶向下,给出不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。而在较低的抽象层次上,则采用过程化的方法。在描述问题的解法时,我们可以配合使用面向问题的术语和面向现实的术语。但最后在最低的抽象层次上,我们应使用能够直接实现的方式来描述这个解法。
3-9】完成良好的软件设计应遵循哪些原则?
〖解〗软件设计既是过程又是模型。设计过程是一系列迭代的步骤,使设计人员能够描述被开发软件的方方面面。设计模型体现了自顶向下、逐步细化的思想,首先构造事物的整体,再逐步细化,引导人们构造各种细节。为了给软件设计人员提供一些指导,1995年Davis提出了一系列软件设计的原则如下,其中有些修改和补充:

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