软工学习笔记(5)- 结构化设计与分析

结构化分析与设计

一种面向数据流的传统软件开发方法,以数据流为中心构建软件的分析模型和设计模型。

方法学

  • 结构化分析(Structured Analysis 简称SA)
  • 结构化设计(Structuresd Design 简称SD)
  • 结构化程序设计(Structured Programmin 简称SP)
    (区别OOA, OOD和OOP)


思想:抽象和分解。分解什么时候停止?直到问题足够简单为止。


结构化分析模型有哪些

数据流图

Data Flow Diagram(简称DFD):描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模,基本元素包括:



源或宿(外部实体)

存在于软件系统之外的人员或组织,表示软件系统输入数据的来源和输出数据的去向,因此也称为源点和终点。

加工和文件

  • 加工:描述输入数据流到输出数据流的变换
  • 文件:保存数据信息的外部单元
    DFD中称为文件,但在具体实现时可以用文件系统实现(Java.io.* API),也可以用数据库系统实现(JDBC API)

数据流

每个数据流用由一组固定成分的数据组成并拥有一个定义明确的名字标识。
如:运动会管理系统中,报名单(数据流)由队名、姓名、性别、参赛项目等数据组成

数据流图的各个层次

  • 顶层图只有代表整个软件系统的1个加工,描述了软件系统与外界(源或宿)之间的数据流
  • 顶层图中的加工经分解后的图称为0层图(只有1张)
  • 中间层图中至少有一个加工(也可以有多个)在下层图中分解成一张子图
  • 处于最底层的图称为底层图,其中所有的加工不再分解成新的子图

图和加工的编号(前缀表示法)

  • 顶层图只有一个代表整个系统的加工,不必编号。
  • 0层图中的加工编号分别为1,2,3,…
  • 子图号:若父图中的加工号x分解成某一子图,则该子图号记为“图x”
  • 子图中加工的编号:若父图中的加工号为x的加工分解成某一子图,则该子图中的加工编号分别为x.1、x.2、x.3…

分层数据流图的一致性

  • 父图与子图平衡
    • 任何一张DFD子图边界上的输入/输出数据流必须与其父图中对应的加工的输入/输出数据流保持一致
  • 数据守恒
    • 一个加工所有输出数据流中的数据,必须能从该加工的输入数据流中直接获得,或者能通过该加工的处理而产生
    • 多余的数据流:加工未使用其输入数据流中的某些数据项 (不一定是错误,但可能隐含潜在的错误)
  • 局部文件:文件应该画在哪些DFD中,不应该画在哪些DFD中。
  • 一个加工的输出数据流不能与该加工的输入数据流同名
    • 同一个加工的输出数据流和输入数据流即使组成成份相同,仍应对它们取不同的名字,以表示它们是不同数据流。例如,“报名单”和“合格报名单”
    • 允许一个加工有二个相同的数据流分别流向二个不同的加工

数据字典

数据流图与数据字典是密不可分的,两者结合起来构成软件的逻辑模型(分析模型)。
数据字典由字典条目组成,每个条目描述DFD中的一个元素
数据字典条目包括:数据流、文件、数据项(组成数据流和文件的数据)、加工、源或宿。加工逻辑的详细说明可以用“小说明”来描述。

加工条目的描述内容

  • 名称:加工名
  • 别名:同数据流条目
  • 加工号: 加工在DFD中的编号
  • 简述:对加工的功能的简要说明
  • 输入数据流:描述加工的输入数据流,包括读哪些文件
  • 输出数据流:描述加工的输出数据流,包括写哪些文件
  • 加工逻辑:简要描述加工逻辑,或者对加工规约的索引
    • 基本加工的加工逻辑用小说明描述,在加工条目中可填写对加工规约的索引
    • 非基本加工分解而成的DFD子图已反映了它的加工逻辑,不必书写小说明
  • 异常处理:描述加工处理过程中可能出现的异常情况,及其处理方式
  • 加工激发条件:描述执行加工的条件,如,“身份认证正确”,“收到报名单”
  • 执行频率:描述加工的执行频率,如,每月执行一次,每天0点执行
  • 注解:对加工的其它补充说明

结构化设计

结构化设计(Structured Design,简称SD)是一种将结构化分析得到的数据流图映射成软件体系结构的设计方法。强调模块化、自顶向下逐步求精、信息隐蔽、高内聚低耦合等设计准则。

分为概要设计和详细设计两大步骤

  • 概要设计是对软件系统的设计,采用结构化设计方法,其任务是:将系统分解成模块,确定每个模块的功能、接口(模块间传递的数据)及其调用关系,并用模块及其对模块的调用来构建软件的体系结构
  • 详细设计是对模块实现细节的设计,采用结构化程序设计(Structured Programming,简称SP)方法

结构图

描述软件系统的体系结构,一个软件系统由哪些模块组成,以及模块之间的调用关系。结构图的基本成分有:模块、调用和数据。

模块(module)

它们是组成程序的基本单元。一个模块具有其外部特征和内部特征。

  • 外部特征包括:模块的接口(模块名、输入/输出参数、返回值等)和模块的功能
  • 内部特征包括:模块的内部数据和完成其功能的程序代码(SD中忽略)

调用和数据

  • 调用(call):用从一个模块指向另一个模块的箭头来表示,其含义是前者调用了后者
    • 为了方便,有时常用直线替代箭头,此时,表示位于上方的模块调用位于下方的模块
  • 数据(data):模块调用时需传递的参数可通过在调用箭头旁附加一个小箭头和数据名来表示
启发式设计策略
  • 降低耦合度,提高内聚度
  • 避免高扇出,并随着深度的增加,力求高扇入
    避免如图a那样的“平铺”形态,较好的结构图形态是如图b那样的“椭圆”型


  • 模块的影响范围应限制在该模块的控制范围内
  • 降低模块接口的复杂程度和冗余程度,提高一致性
    模块接口上应尽可能传递简单数据,而且传递的数据应保持与模块的功能相一致,即不传递与模块功能无关的数据
  • 模块的功能应是可预测的,避免对模块施加过多的限制
    模块功能可预测是指该模块对相同的输入能产生相同的输出
    限制一个模块只处理单一的功能,那么,这个模块体现出高内聚
  • 尽可能设计单入口和单出口的模块
    单入口和单出口的模块能有效地避免内容耦合

信息流

信息流可分为两类:

  • 变换流(transform)
  • 事务流(transaction)

变换流型的DFD图可明显地分成输入、变换、输出三部分

数据流沿着输入通路到达一个事务中心,事务中心根据输入数据的类型在若干条动作通路(action path)中选出一条来执行,具有这种特征的信息流称为事务流。
事务中心的任务是:

  • 接收事务(输入数据)
  • 分析每个事务以确定它的类型
  • 根据事务类型选取一条动作通路


合并那些需要一连串参数传递的模块。删掉管道模块(输入控制,报名处理,输出控制)。


将那些相对独立的功能模块独立出来。(分析试题难度和分类统计成绩)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容