2024年软件设计师中级(软考中级)详细笔记【6】结构化开发方法(分值3~4)

server/2024/10/18 20:36:26/

目录

  • 前言
    • 6.1 系统分析与设计概述
      • 6.1.2 系统设计的基本原理
      • 6.1.3 系统总体结构设计
      • 6.1.4 系统文档
      • 6.2.2 数据流图
      • 6.2.3 数据字典(DD)
    • 6.5 用户界面设计
      • 6.5.1 用户界面设计的黄金原则
      • 杂题习题:
  • 结语


前言

在备考软件设计师中级考试的过程中,我遇到了些许挑战,也收获了宝贵的经验。为了帮助其他同样正在为这门考试(证书)奋斗的朋友们,我决定将我的笔记整理出来,与大家分享。这些笔记不仅包含了书本上的知识,还加入了我对重点和难点的个人理解以及考试技巧,力求帮助大家更加高效地复习。我希望这份笔记能够成为你备考路上的一份支持,也祝愿你在考试中取得理想的成绩👍👍👍

如果有写的不好或者需要改进的地方,恳请在评论区指正!🤓🤓🤓


6.1 系统分析与设计概述

6.1.2 系统设计的基本原理

  1. 抽象

  2. 模块化
    模块化是指讲一个待开发的软件分解成若干个小的简单部分——模块。

  3. 信息隐蔽

  4. 模块独立(需熟记)
    模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单。衡量模块独立程度的标准有两个:耦合性和内聚性。

    1. 耦合【熟记】
      耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。耦合取决于各个模块之间按口的复杂程度、调用模块的方式以及通过接口的信息类型等。一般模块之间可能的耦合方式有7种类型,如图6-2 所示。
      图6-2 耦合的种类
    • 无直接耦合。指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此,模块耦合性最弱,模块独立性最高。
    • 数据耦合。指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。
    • 标记耦合。指两个模块之间传递的是数据结构
    • 控制耦合。指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择地执行模块内的某一功能。因此,被调用模块应具有多个功能,哪个功能起作用受调用模块控制。
    • 外部耦合。模块间通过软件之外的环境联结(如 I/O 将模块耦合到特定的设备、格式、通信协议上)时称为外部耦合。
    • 公共耦合。指通过一个公共数据环境相互作用的那些模块间的耦合。
    • 内容耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部时,这种模块之间的耦合称为内容满合。
    1. 内聚【熟记】
      内聚是对一个模块内部各个元素彼此结合的紧密程度的度量。一个内聚程度高的模块(在理想情况下)应当只做一件事。一般模块的内聚性分为7 种类型,如图6-3 所示。
      图6-3 内聚的种类

      • 偶然内聚(巧合内聚)。指一个模块内的各处理元素之间没有任何联系
      • 逻辑内聚。指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
      • 时间内聚。把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。
      • 过程内聚。指一个模块完成多个任务,这些任务必须按指定的过程执行。
      • 通信内聚。指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。
      • 顺序内聚。指一个模块中的各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。
      • 功能内聚。这是最强的内聚,指模块内的所有元素共同作用完成一个功能,缺一不可

耦合性和内聚性是模块独立性的两个定性标准,在将软件系统划分模块时,应尽量做到高内聚、低耦合,提高模块的独立性。

6.1.3 系统总体结构设计

系统结构设计原则【熟记5-9】

  1. 分解-协调原则。
  2. 自顶向下的原则。
  3. 信息隐蔽、抽象的原则。
  4. 一致性原则。
  5. 明确性原则。每个模块必须功能明确、接口明确,消除多重功能和无用接口。【避免病态连接,降低接口复杂度】
  6. 模块之间的耦合尽可能小,模块的内聚度尽可能高。【高内聚,低耦合,保证独立性】
  7. 模块的扇入系数和扇出系数要合理【适中】。一个模块直接调用其他模块的个数称为模块的扇出系数:反之,一个模块被其他模块调用时,直接调用它的模块个数称为模块的扇入系数。模块的扇入、扇出系数必须适当。经验表明,一个设计得好的系统的平均扇入、扇出系数通常是3或4,一般不应超过 7,否则会引起出错概率的增大。但菜单调用型模块的扇入与扇出系数可以大一些,公用模块的扇入系数可以大一些。【扇入扇出要适中】
  8. 模块的规模适当【适中】。过大的楼块常常使系统分解得不充分,其内部可能包含了若干部分的功能,因此有必要进一步把原有的模块分解成若干功能尽可能单一的模块。但分解也必须适度,因为过小的模块有可能降低模块的独立性,造成系统接口的复杂性。
  9. 模块的作用范围应该在其控制范围之 内。

习题:

  1. 在软件设计阶段,划分模块的原则是:一个模块的(18)。(2012年下半年)
    A、作用范围应在其控制范围之内
    B、控制范围应在其作用范围之内
    C、作用范围与控制范围互不包含
    D、作用范围与控制范围不受限制
    答案:A
  2. 在设计软件的模块结构时,(32)不能改进设计质量。(2017年上半年)
    A、尽量减少高扇出结构
    B、模块的大小适中
    C、将具有相似功能的模块合并
    D、完善模块的功能
    答案:C

6.1.4 系统文档

对文档在系统开发人员、项目管理人员、系统维护人员、系统评价人员以及用户之间的多种作用总结如下。(1-2需要熟悉,3-6了解)
(1) 用户系统分析人员在系统规划和系统分析阶段通过文档进行沟通。这里的文档主要包括可行性研究报告、总体规划报告、系统开发合同和系统方案说明书等。有了文档,用户就能依次对系统分析师是否正确理解了系统的需求进行评价,如不正确,可以在己有文档的基础上进行修正。
(2) 系统开发人员项目管理人员通过文档在项目期内进行沟通。这里的文档主要有系统开发计划(包括工作任务分解表、PERT 图、甘特图和预算分配表等)、系统开发月报以及系统开发总结报告等项目管理文件。有了这些文档,不同阶段之间的开发人员就可以进行工作的顺利交接,同时还能降低因为人员流动带来的风险,因为接替人员可以根据文档理解前面人员的设计思路或开发思路。
(3) 系统测试人员系统开发人员通过文档进行沟通。系统测试人员可以根据系统方案说明书、系统开发合同、系统设计说明书和测试计划等文档对系统开发人员所开发的系统进行测试。系统测试人员再将评估结果撰写成系统测试报告。
(4) 系统开发人员用户在系统运行期间进行沟通。用户通过系统开发人员撰写的文档运行系统。这里的文档主要是用户手册和操作指南。
(5) 系统开发人员系统维护人员通过文档进行沟通。这里的文档主要有系统设计说明书和系统开发总结报告。有的开发总结报告写得很详细,分为研制报告、技术报告和技术手册 3个文档,其中的技术手册记录了系统开发过程中的各种主要技术细节。这样,即使系统维护人员不是原来的开发人员,也可以在这些文档的基础上进行系统的维护与升级。
(6)用户维修人员在运行维护期间进行沟通。用户在使用信息系统的过程中,将运行过程中的问题进行记载,形成系统运行报告和维护修改建议。系统维护人员根据维护修改建议以及系统开发人员留下的技术手册等文档对系统进行维护和升级。

6.2.2 数据流图

数据流图也称数据流程图(Data Flow Diagram,DFD),它是一种便于用户理解、分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。

  1. 数据流图的基本元素
    数据流图中的基本图形元素包括数据流(Data Flow)、加工(Process)、数据存储(Data Store)和外部实体(External Agent)。其中,数据流、加工和数据存储用于构建软件系统内部的数据处理模型;外部实体表示存在于系统之外的对象,用来帮助用户理解系统数据的来源和去向。DFD的基本图形元素如图6-8所示。
    1)数据流
    数据流由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向可以有以下几种:从一个加工流向另一个加工;从加工流向数据存储(写);从数据存储流向加工(读);从外部实体流向加工(输入);从加工流向外部实体(输出)。
    DFD中的每个数据流用一个定义明确的名字表示。除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个合适的名字,以反映该数据流的含义。值得注意的是,DFD中描述的是数据流,而不是控制流。
    数据流或者由具体的数据属性(也称为数据结构)构成,或者由其他数据流构成。组合数据流是由其他数据流构成的数据流,它们用于在高层的数据流图中组合相似的数据流,以使数据流图更便于阅读。

    2)加工
    加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流经过什么处理后变成了输出数据流。每个加工都有一个名字和编号。编号能反映出该加工位于分层DFD中的哪个层次和哪张图中,也能够看出它是哪个加工分解出来的子加工。
    一个加工可以有多个输入数据流和多个输出数据流,但至少有一个输入数据流和一个输出数据流。数据流图中常见的3种错误如图6-9所示。
    加工3.1.2有输入但是没有输出,我们称之为“黑洞”。因为数据输入到过程,然后就消失了。在大多数情况下,建模人员只是忘了输出。
    加工3.1.3有输出但没有输入。在这种情况下,输入流似乎被忘记了。
    加工3.1.1中输入不足以产生输出,我们称之为“灰洞”。这有几种可能的原因:一个错误的命名过程;错误命名的输入或输出;不完全的事实。灰洞是最常见的错误,也是最使人为难的错误。一旦数据流图交给了程序员,到一个加工的输入数据流必须足以产生输出数据流。
    图6-9 数据流图中的常见错误

    3)数据存储
    数据存储用来存储数据。通常,一个流入加工的数据流经过加工处理后就消失了,而它的某些数据(或全部数据)可能被加工成输出数据流,流向其他加工或外部实体。除此之外,在软件系统中还常常要把某些信息保存下来以供以后使用,这时可以使用数据存储。例如,在考务处理系统中,报名时产生的考生名册要随着报名的过程不断补充,在统计成绩和制作考生通知书时还要使用考生名册的相关信息。因此,考生名册可以作为数据存储存在,以保存相关的考生信息。

    4)外部实体(外部主体)
    外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。例如,对于一个考务处理系统而言,考生向系统提供报名单(输入数据流),所以考生是考务处理系统的一个源;而考务处理系统要将考试成绩的统计分析表(输出数据流)传递给考试中心,所以考试中心是该系统的一个宿。

  2. 数据流图的层次结构
    从原理上讲,只要纸足够大,一个软件系统的分析模型就可以画在一张纸上。然而,一个复杂的软件系统可能涉及上百个加工和上百个数据流,甚至更多。如果将它们画在一张图上,则会十分复杂,不易阅读,也不易理解。
    根据自顶向下逐层分解的思想,可以将数据流图按照层次结构来绘制,每张图中的加工个数可大致控制在“7加减2”的范围内,从而构成一套分层数据流图。
    1)层次结构
    分层数据流图的顶层只有一张图,其中只有一个加工,代表整个软件系统,该加工描述了软件系统与外界之间的数据流,称为顶层图。
    顶层图中的加工(即系统)经分解后的图称为0层图,也只有一张。处于分层数据流图最底层的图称为底层图,在底层图中,所有的加工不再进行分解。分层数据流图中的其他图称为中间层,其中至少有一个加工(也可以是所有加工)被分解成一张子图。在整套分层数据流图中,凡是不再分解成子图的加工称为基本加工。
    2)图和加工的编号

习题:

  1. 数据流图(DFD)对系统的功能和功能之间的数据流进行建模,其中顶层数据流图描述了系统的(15)。(2012年上半年)
    A、处理过程 B、输入与输出 C、数据存储 D、数据实体

    答案:B
    处理过程在0层(子图)加工;数据存储在0层;数据实体在外部

  2. 在结构化分析中,用数据流图描述(17)。当采用数据流图对一个图书馆管理系统进行分析时,(18)是一个外部实体。(2016年上半年)
    A、数据对象之间的关系,用于对数据建模
    B、数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模
    C、西永对外部时间如何相应,如何动作,用于对行为建模
    D、数据流图中的各个组成部分
    (18)A、读者 B、图书 C、借书证 D、借阅

    答案:B;数据建模E-R图,功能建模DFD,行为建模UML(状态转换图)

  3. 某医院预约系统的部分需求为:患者可以查看医院发布的专家特长介绍及其就诊时间:系统记录患者信息,患者预约特定时间就诊。用 DFD 对其进行功能建模时,患者是(15);用ERD 对其进行数据建模时,患者是(16)。(2017年下半年)
    (15) A. 外部实体 B. 加工 C.数据流 D. 数据存储
    (16) A.实体 B.属性 C.联系 D. 弱实体

    答案:A;A

6.2.3 数据字典(DD)

  1. 数据字典的内容
    数据字典有以下4 类条目:数据流、数据项、数据存储和基本加工数据项是组成数据流和数据存储的最小元素源点、终点不在系统之内,故一般不在字典中说明
    (1-4了解)

    1. 数据流条目。数据流条目给出了 DFD 中数据流的定义,通常列出该数据流的各组成数据项。在定义数据流或数据存储组成时,使用表6-1给出的符号。
    2. 数据存储条目。数据存储条目是对数据存储的定义。
    3. 数据项条目。数据项条目是不可再分解的数据单位。
    4. 基本加工条目。加工条目是用来说明 DFD 中基本加工的处理逻辑的,由于下层的基本加工是由上层的加工分解而来,只要有了基本加工的说明,就可理解其他加工。
  2. 数据词典管理

  3. 加工逻辑的描述
    加工逻辑也称为“小说明”。常用的加工逻辑描述方法有结构化语言、判定表和判定树3种。(重点记这一句,后面的全部做了解)

    1. 结构化语言
      结构化语言(如结构化英语)是一种介于自然语言和形式化语言之间的半形式化语言,是自然语言的一个受限子集。
      结构化语言没有严格的语法,它的结构通常可分为内层和外层。外层有严格的语法,内层的语法比较灵活,可以接近于自然语言的描述。
      1. 外层。用来描述控制结构,采用顺序、选择和重复3种基本结构。
        ① 顺序结构。一组祈使语句、选择语句、重复语句的顺序排列。祈使语句是指至少包含一个动词及一个名词,指出要执行的动作及接受动作的对象。
        ② 选择结构。一般用 IF-THEN-ELSE-ENDIF、 CASE-OF-ENDCASE 等关键词。
        ③ 重复结构。一般用 DO-WHILE-ENDDO、 REPEAT-UNTIL 等关键词。
      2. 内层。一般采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其动词含义要具体,尽量不用形容词和副词来修饰,还可使用一些简单的算法运算和遐辑运算符号。

6.5 用户界面设计

6.5.1 用户界面设计的黄金原则

Theo Mandel在其关于界面设计的著作中提出了3条“黄金原则”:用户操纵控制减少用户的记忆负担保持界面一致
这些黄金原则实际上构成了一系列用户界面设计原则的基础,这些原则可以指导软件设计的重要方面。

杂题习题:

【知识点】

  • 结构化分析模型进行接口设计:数据流图DFD
  • 软件设计必须依据软件的需求来进行,结构化分析的结果为结构化设计提供了最基本的输入信息,其关系为:根据加工规格说明和控制规格说明进行过程设计;根据数据字典和实体关系图进行数据设计;根据数据流图进行接口设计;根据数据流图进行体系结构设计。
  • 结构化设计主要包括:
    ① 体系结构设计:定义软件的主要结构元素及其关系。
    ② 数据设计:基于实体联系图确定软件涉及的文件系统的结构及数据库的表结构。
    ③ 接口s合计:描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口
    ④ 过程设计:确定软件各个组成部分内的算法及内部数据结构,并选定某个过程的表达形式来描述各种算法。
  1. 在采用结构化方法进行系统分析时,根据分解与抽象的原则,按照系统中数据处理的流程,用(15)来建立系统的逻辑模型,从而完成分析工作。(2009 年下半年)
    A. E-R 图 B.数据流图 C. 程序流程图 D. 软件体系结构

    B

  2. 利用结构化分析模型进行接口设计时,应以 (16) 为依据。(2011年下半年)
    (16) A. 数据流图 B. 实体—关系图
    C. 数据字典 D. 状态—迁移图

    在这里插入图片描述

  3. 在划分模块时,一个模块的作用范围应该在其控制范围之内。若发现其作用范围不在其控制范围内,则 (16) 不是适当的处理方法。(2013年下半年)
    (16) A. 将判定所在模块合并到父模块中,使判定处于较高层次
    B. 将受判定影响的模块下移到控制范围内
    C. 将判定上移到层次较高的位置
    D. 将父模块下移,使该判定处于较高层次

    在这里插入图片描述

  4. 以下关于结构化开发方法的叙述中,不正确的是 (15) 。(2014年上半年)
    (15) A. 将数据流映射为软件系统的模块结构
    B. 一般情况下,数据流类型包括变换流型和事务流型
    C. 不同类型的数据流有不同的映射方法
    D. 一个软件系统只有一种数据流类型

    在这里插入图片描述

  5. 模块A提供某个班级某门课程的成绩给模块B,模块B计算平均成绩、最高分和最低分,将计算结果返回给模块A,则模块B在软件结构图中属于 (16) 模块。(2014年上半年)
    (16) A. 传入 B. 传出 C. 变换 D. 协调

    在这里插入图片描述

  6. 以下关于结构化开发方法的叙述中,不正确的是 (15) 。(2014年下半年)
    (15) A. 总的指导思想是自顶向下,逐层分解
    B. 基本原则是功能的分解与抽象
    C. 与面向对象开发方法相比,更适合于大规模、特别复杂的项目
    D. 特别适合于数据处理领域的项目

    在这里插入图片描述

  7. 数据流图中某个加工的一组动作依赖于多个逻辑条件的取值,则用 (33) 能够清楚地表示复杂的条件组合与应做的动作之间的对应关系。(2015年下半年)
    (33) A. 流程图 B. NS盒图
    C. 形式语言 D. 决策树

    在这里插入图片描述

  8. 在采用结构化开发方法进行软件开发时,设计阶段接口设计主要依据需求分析阶段的 (15) 。接口设计的任务主要是 (16) 。(2017年上半年)
    (15) A. 数据流图 B. E-R图
    C. 状态-迁移图 D. 加工规格说明
    (16) A. 定义软件的主要结构元素及其之间的关系
    B. 确定软件涉及的文件系统的结构及数据库的表结构
    C. 描述软件与外部环境之间的交互关系,软件内模块之间的调用关系
    D. 确定软件各个模块内部的算法和数据结构

在这里插入图片描述

  1. Theo Mandel在其关于界面设计所提出的三条“黄金准则”中,不包括 (33) 。(2019年上半年)
    (33) A. 用户操纵控制 B. 界面美观整洁
    C. 减轻用户的记忆负担 D. 保持界面一致

    在这里插入图片描述

  2. 绘制分层数据流图(DFD)时需要注意的问题中,不包括(15) 。(2021年下半年)
    (15) A. 给图中的每个数据流、加工、数据存储和外部实体命名
    B. 图中要表示出控制流
    C. 一个加工不适合有过多的数据流
    D. 分解尽可能均匀

    在这里插入图片描述


结语

这份笔记由我在备考软件设计师中级考试的过程中编写,包含了我对知识点的理解与总结。如果您觉得这份笔记对您有帮助,并希望分享给更多的人,我十分乐意。但请在转载时务必注明出处,以尊重作者的劳动成果,感谢您的理解与支持

在此特别强调,本人编写笔记的所需部分资源均源于网络公开资源,旨在为大家提供一个学习和交流的内容,未经原作者授权,如若不慎侵犯您的合法权益,请您立即通过有效联系方式通知我,并附上相关证明材料。一旦核实无误,我将在第一时间删除涉事资源,全力保障您的合法权利不受损害。


  • 每篇一句:“把心收一收,想要的以后都会有。”
  • 如果觉得对您有用,请点个赞或者收藏鼓励我持续更新吧!
  • 恭喜您,已挑战成功第六关上,请前往第六关下进行挑战吧【整理中……】

http://www.ppmy.cn/server/132858.html

相关文章

安卓13禁止锁屏 关闭锁屏 android13禁止锁屏 关闭锁屏

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 设置 =》安全 =》屏幕锁定 =》 无。 我们通过修改系统屏幕锁定配置,来达到设置屏幕不锁屏的配置。像网上好多文章都只写了在哪里改,改什么东西,但是实际上并未写明为什么要改那…

【适用于Mac】MySQL忘记密码卸载重新安装

因为MySQL忘记密码了,卸载重新安装了一下,记录一下过程 步骤 1: 安装 Homebrew 如果你还没有安装 Homebrew,可以通过以下命令来安装 Homebrew: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/i…

PMP--必刷题–解题–51-60

文章目录 51、 [单选] 项目B的一个领导一直向项目A的一个团队成员寻求帮助。项目A的项目经理应该怎么做? 4.整合管理--变更控制流程--52、 [单选] 业务经理和产品负责人要求以更灵活的方式将更改纳入产品基线。与其他供应商相比,他们担心失去进入市场的时…

在线书画展:艺术与科技携手,拓宽艺术之路

在数字化浪潮的推动下,在线书画展正成为艺术与科技完美融合的典范。它不仅拓宽了艺术的传播渠道,提升了个人书画家的开展效率,还促进了艺术家们的职业发展。以下是对在线书画展几大优势的深入探讨。 一、拓宽艺术传播渠道 全球化展示&#x…

private field is never assigned

文章目录 问题现象解决办法 问题现象 在IDEA中,代码中注入的属性提示private field is never assigned,入下图所示。该提示意思是私有字段没有被分配赋值。 解决办法 可以点击Add constructor parameter来解决,即添加带有参数的构造器&…

前端工具函数库

流行的前端工具函数库 lodashlodash-es:用lodash-es代替lodashes-toolkit:https://www.npmjs.com/package/es-toolkitradash:https://github.com/sodiray/radash 补充信息: antd-mobile 已不再依赖 lodash, 淘汰 lo…

【机器学习算法】基于python天气预测数据分析可视化系统(完整系统源码+数据库+开发笔记+详细部署教程)✅

文章目录 【机器学习算法】基于python天气预测数据分析可视化系统(完整系统源码数据库开发笔记详细部署教程)✅ 一、项目背景 二、研究目的 三、项目意义 四、项目功能 五、项目创新点 六、开发技术介绍 七、数据库设计 八、算法介绍 九、项目…

zookeeper客户端

启动单机版的zookeeper 配置Maven环境 (1) IDEA自带maven (2) 更新Maven库镜像地址: ① 拷贝D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\plugins\maven\lib\maven3\conf\settings.xml [IntelliJ的安装目录]到 C:/用户/username/.m2 (如果.m2文件不存在&…