1.系统分析与设计概述
系统分析过程一般按如图所示的逻辑进行:
- (1)认识、理解当前的现实环境,获得
当前系统的“物理模型” - (2)从当前系统的“物理模型”抽象出
当前系统的“逻辑模型” - (3)对当前系统的“逻辑模型”进行分析和优化,建立
目标系统的“逻辑模型” - (4)对目标系统的逻辑模型具体化 (物理化),建立
目标系统的物理模型
系统开发的目的是把现有系统的物理模型转化为目标系统的物理模型,即图中所描述的路径,而系统分析阶段的结果是得到目标系统的逻辑模型。逻辑模型反映了系统的功能和性质,而物理模型反映的是系统的某一种具体实现方案
-
核心任务:
将现有系统的物理模型转化为目标系统的逻辑模型 -
四步转化法:
-
物理模型获取:认识当前现实环境(如参考淘宝、京东等现有系统),建立当前系统的物理模型
-
逻辑抽象:从物理模型抽象出当前系统的逻辑模型(如从实体建筑推导设计图纸)
-
优化建模:分析优化后建立目标系统的逻辑模型(核心产出)
-
物理实现:将目标逻辑模型具体化为物理模型(注:此步实际属于系统设计阶段)
-
-
关键区别:系统分析止步于逻辑模型(第三步),系统设计才实现物理模型(第四步)
-
类比说明:逻辑模型相当于房屋设计图纸,物理模型相当于实体沙盘或实际建筑
系统设计基本原理:抽象、模块化、信息隐蔽、模块独立。
衡量模块独立程度的标准有两个:耦合性和内聚性。
-
内聚程度从低到高如下表所示:
-
衡量标准:模块内部元素间的关联程度,越高越好
- 偶然内聚:元素间无直接关系(记忆:偶然相遇无关联)
- 逻辑内聚:执行逻辑相似功能,由参数决定具体功能(例:根据参数类型执行不同相加操作)
- 时间内聚:需同时执行的动作组合(记忆:强调时间同步性)
- 过程内聚:按指定过程顺序执行任务(记忆:类似流程图顺序)
- 通信内聚:所有元素操作同一数据结构(例:共用全局结构体变量)
- 顺序内聚:元素顺序执行且前序输出是后续输入(记忆:类似数据流图)
- 功能内聚:所有元素共同完成单一功能(最强内聚,缺一不可)
-
耦合程度从低到高如下表所示:
-
衡量标准:模块间的关联程度,越低越好
- 无直接耦合:模块间无任何关系(最理想状态)
- 数据耦合:传递简单数据值(例:函数参数传值调用,简单数据类型(int, float, char等))
- 标记耦合:传递数据结构(复杂数据结构(结构体、对象、字典等))
- 控制耦合:传递控制变量选择执行模块内的某一功能(例:信号量控制)
- 外部耦合:通过外部环境关联(记忆:依赖I/O设备等)
- 公共耦合:共享公共数据环境(记忆:类似全局变量区)
- 内容耦合:直接使用对方内部数据(最高耦合,应避免)
系统总体结构设计是要根据系统分析的要求和组织的实际情况对新系统的总体结构形式和可利用的资源进行大致设计,这是一种宏观、总体上的设计和规划。
系统结构设计原则:
-
分解-协调原则。
-
自顶向下的原则。
-
信息隐蔽、抽象的原则。
-
一致性原则。
-
明确性原则。
-
模块之间的耦合尽可能小,模块的内聚度尽可能高
-
模块的扇入系数和扇出系数要合理。
-
模块的规模适当。
-
定义: 根据系统分析要求和组织实际情况,对新系统的总体结构形式和可利用资源进行宏观设计和规划
-
实质: 即软件工程中的概要设计,主要产出系统框架和模块结构图
-
设计原则:
- 分解-协调: 将系统分解为模块后需考虑模块间协调机制
- 信息隐蔽: 模块内部实现细节应对其他模块隐藏
- 耦合与内聚: 模块间耦合要小,模块内聚度要高
- 扇入扇出: 扇入系数(被调用次数)可多,扇出系数(调用其他模块数)宜少
- 规模控制: 模块规模需保持适中,避免极端化
子系统划分的原则:
- 子系统要具有相对独立性。
- 子系统之间数据的依赖性尽量小。
- 子系统划分的结果应使数据冗余较小。
- 子系统的设置应考虑今后管理发展的需要
- 子系统的划分应便于系统分阶段实现。
- 子系统的划分应考虑到各类资源的充分利用
子系统结构设计的任务是确定划分后的子系统模块结构,并画出模块结构图
在这个过程中必须考虑以下几个问题。
- (1) 每个子系统如何划分成多个模块。
- (2) 如何确定子系统之间、模块之间传送的数据及其调用关系
- (3) 如何评价并改进模块结构的质量
- (4) 如何从
数据流图导出模块结构图
系统模块结构设计
模块是组成系统的基本单位它的特点是可以组合、分解和更换。系统中的任何一个处理功能都可以看成是一个模块。根据功能具体化程度的不同,模块可以分为逻辑模块和物理 模块。
一个模块应具备以下4 个要素:
-
(1)输入和输出。
-
(2)处理功能。指模块把输入转换成输出所做的工作。
-
(3)内部数据。指仅供该模块本身引用的数据。
-
(4)程序代码。指用来实现模块功能的程序。
前两个要素是模块外部特性,反映了模块的外貌。后两个要素是模块的内部特性 -
基本概念:模块是组成系统的基本单位,具有可组合、可分解和可更换的特点。系统中任何处理功能都可视为模块。
-
分类依据:根据功能具体化程度可分为逻辑模块(设计层面的功能点)和物理模块(实现功能的代码段)。
-
四要素:
- 外部特性:
- 输入输出:类比函数的参数传递,是模块与外界交互的接口
- 处理功能:将输入转换为输出的加工过程
- 内部特性:
- 内部数据:仅供本模块使用的私有数据
- 程序代码:实现模块功能的具体代码
- 外部特性:
-
设计关注点:模块结构图只需关注外部特性(输入/输出/功能),内部特性在编码阶段实现
基本概念:模块是组成系统的基本单位,具有可组合、可分解和可更换的特点。系统中任何处理功能都可视为模块。
分类依据:根据功能具体化程度可分为逻辑模块(设计层面的功能点)和物理模块(实现功能的代码段)。
四要素:
外部特性:
输入输出:类比函数的参数传递,是模块与外界交互的接口
处理功能:将输入转换为输出的加工过程
内部特性:
内部数据:仅供本模块使用的私有数据
程序代码:实现模块功能的具体代码
设计关注点:模块结构图只需关注外部特性(输入/输出/功能),内部特性在编码阶段实现
模块结构图为了保证系统设计工作的顺利进行,结构设计应遵循以下原则。
(1)所划分的模块其内部的凝聚性要强,模块之间的联系要少,即模块具有较强的独立
性。
(2) 模块之间的连接只能存在上下级之间的调用关系,不能有同级之间的横向联系
(3)整个系统呈树状结构,不允许网状结构或交叉调用关系出现。
(4)所有模块(包括后IPO图) 都必须严格地分类编码并建立归档文件。
核心原则:
- 高内聚低耦合:模块内部凝聚力强,模块间联系少
- 层次化调用:只允许上下级调用,禁止同级横向联系
- 树状结构:系统呈树形拓扑,禁止网状/交叉调用
- 标准化管理:严格分类编码并建立归档文件(含后续IPO图(输入/处理/输出图))
模块结构图主要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系,并不关心模块的内部。
2.结构化开发方法
结构化分析与设计方法是一种面向数据流的传统软件开发方法,它以数据流为中心构建软件的分析模型和设计模型。结构化分析(Structured Analysis,SA)结构化设计 (Structured Design,SD)和结构化程序设计 (Structured Programming Design,SPD) 构成了完整的结构化方法
结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明) 、补充材料。
- 核心特征:面向数据流的传统方法,以数据流为中心构建分析模型和设计模型,采用"自顶向下,逐层分解"思想
- 完整流程:包含结构化分析(SA)、结构化设计(SD)和结构化程序设计(SPD)三个阶段
- 语言对应:结构化程序设计使用C语言,面向对象程序设计使用C++/Java
- 分析产出:
- 三大模型:功能模型(数据流图)、行为模型(状态转换图)、数据模型(ER图)
- 补充材料:数据词典、加工逻辑说明(小说明)、补充资料
数据流图DFD
基本图形元素:外部实体、加工、数据存储、数据流
1)数据流:由一组固定成分的数据组成,表示数据的流向在DFD 中,数据流的流向必须经过加工。
2)加工:描述了输入数据流到输出数据流之间的变换,数据流图中常见的三种错误如图所示
- 加工3.1.2 有输入但是没有输出,称之为“黑洞
- 加工3.1.3 有输出但没有输入。称之为“奇迹”
- 加工3.1.1 中输入不足以产生输出,我们称之为“灰洞”
3)数据存储:用来存储数据
4)外部实体(外部主体):是指存在于软件系统之外的人员或组织或事物,它指出系统所需数据的发源地(源) 和系统所产生的数据的归宿地(宿)
- 数据流:
- 组成:由固定成分数据组成的箭头,表示数据流向
- 关键规则:必须经过加工,即两端至少有一端连接加工
- 禁止情况:外部实体↔数据存储、外部实体↔外部实体、数据存储↔数据存储
- 加工:
- 功能:描述输入数据流到输出数据流的变换
- 常见错误:
- 黑洞:只有输入没有输出(如加工3.1.2)
- 奇迹:只有输出没有输入(如加工3.1.3)
- 灰洞:输入不足以产生输出(如加工3.1.1中仅凭雇员地址输出银行结算表)
- 数据存储:用于存储数据的容器,图形表示有两种形式
- 外部实体:
- 定义:系统外部的人员/组织,是数据的源或宿
- 特征:与系统交互但不属于系统内部
分层数据流图
- 层级结构:
- 顶层图(上下文图):展示系统与外部实体的交互
- 0层图:展示系统内部主要功能模块
- 1层图:对0层图的每个加工进一步分解
- 平衡原则:子图必须与父图保持输入输出数据流一致
- 考试重点:通常只考查顶层图和0层图两层结构
数据字典DD
数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。
数据字典有以下4 类条目: 数据流、数据项、数据存储和基本加工
加工逻辑也称为“小说明”。常用的加工逻辑描述方法有结构化语言、判定表和判定树3 种。
- 作用:对DFD中各成分进行详细说明的"字典"
- 条目类型:
- 数据流、数据项、数据存储、基本加工
- 注意:不包含外部实体的描述
- 符号系统:
- =:被定义为
- +:与关系(如)
- […|…]:或关系(如)
- {…}:重复(如表示0个或多个a)
- 加工逻辑描述:
- 又称"小说明"
- 描述方法:结构化语言、判定表、判定树
┌─────────────────────────────────────┐
│ 数据流图(DFD) │
│ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ 输 │────→│ 加 │────→│ 输 │ │
│ │ 入 │ │ 工 │ │ 出 │ │
│ └─────┘ └─────┘ └─────┘ │
│ ↓ │
└──────────────────┼──────────────────┘
↓
┌─────────────────────────────────────┐
│ 加工逻辑描述(小说明) │
│ IF 条件1 THEN │
│ 执行操作A │
│ ELSE IF 条件2 THEN │
│ 执行操作B │
│ ENDIF │
└─────────────────────────────────────┘
3.结构化设计方法
结构化设计 (structured Design,SD)方法是一种面向数据流的设计方法,可以与SA 方法衔接。结构化设计方法的基本思想是将系统设计成由相对独立功能单一的模块组成的结构。
- 结构化设计方法概念
- 面向数据流:与结构化分析方法(SA)衔接,都是面向数据流的设计方法
- 核心思想:将系统设计成由相对独立、功能单一的模块组成的结构
- 转换过程:主要任务是将结构化分析阶段的数据流图(DFD)转换为设计阶段的系统
结构图
结构化设计方法中用结构图 (structure chart) 来描述软件系统的体系结构指出一个软件系统由哪些模块组成,以及模块之间的调用关系。模块结构图是结构化设计的工具,由模块、调用、数据、控制和转接五种基本符号组成。
- 描述工具:用结构图(Structure Chart)描述软件系统体系结构
- 组成要素:
- 模块:功能单元
- 调用:模块间调用关系
- 数据:模块间传递的数据
- 控制:模块间控制信息
- 转接:特殊连接方式
结构化设计主要包括
-
1)体系结构设计:定义软件的主要结构元素及其关系
-
2)数据设计:基于实体联系图确定软件涉及的文件系统的结构及数据库的表结
-
3)接口设计:描述用户界面,软件和其他硬件设备、其他软件系统及使用人员
的外部接口,以及各种构件之间的内部接口。 -
4)过程设计:确定软件各个组成部分内的算法及内部数据结构,并选定某种过
程的表达形式来描述各种算法。 -
1)体系结构设计
- 本质:即架构设计(architecture design)
- 内容:定义软件主要结构元素及其关系
- 特点:类似于总体结构设计
-
2)数据设计
- 依据:基于实体联系图(ER图)
- 产出:确定文件系统结构和数据库表结构
- 关联:与数据库设计直接相关
-
3)接口设计
- 范围:
- 用户界面
- 硬件设备接口
- 软件系统间接口
- 人员外部接口
- 构件内部接口
- 关联:与数据流图相关,描述模块间数据交换方式
- 范围:
-
4)过程设计
- 内容:
- 确定算法
- 确定内部数据结构
- 选择过程表达形式
- 特点:对应详细设计阶段
- 关键:关注模块内部的算法和数据结构实现
- 内容:
4.WebApp分析与设计
WebApp是基于web的系统和应用。大多数WebApp采用敏捷开发过程模型进行
开发。
WebApp的特性
(1) 网络密集性。WebApp 驻留在网络上,服务于不同客户全体的需求。网络提供开放的访问和通信(如Internet) 或者受限的访问和通信(如企业内联网)
(2)并发性。大量用户可能同时访问WebApp。很多情况下最终用户的使用模式存在很大的差异。
(3)无法预知的负载量。WebApp 的用户数量每天都可能有数量级的变化。例如,周一显示有100 个用户使用系统,周四就有可能会有10000 个用户。
(4)性能。如果一位WebApp 用户必须等待很长时间(访问、服务器端处理客户端格式化显示),该用户就可能转向其他地方。
(5)可用性。尽管期望百分之百的可用性是不切实际的,但是对于热门的WebApp,用户通常要求能够24/7/365 (全天候)访问。
(6)数据驱动。许多WebApp 的主要功能是使用超媒体向最终用户提供文本图片、音频及视频内容。除此之外,WebApp 还常被用来访问那些存储在Web 应用环境之外的数据库中的信息。
- 定义: WebApp是基于web的系统和应用,多数采用敏捷开发过程模型。
- 六大特性:
- 网络密集性: 驻留网络,服务不同客户群体,提供开放或受限的访问(如Internet/企业内网)
- 并发性: 支持大量用户同时访问,使用模式差异大(如12306购票系统)
- 负载不可预测: 用户量可能发生数量级变化(如周一100用户,周四10000用户)
- 性能关键: 响应延迟会导致用户流失(非必需服务更明显)
- 高可用性: 热门WebApp需支持24/7/365访问(虽100%可用不现实)
- 数据驱动: 主要提供超媒体内容(文本/图片/音频/视频)和外部数据库访问
WebApp五种需求模型
1、内容模型:给出由WebApp提供的全部系列内容,包括文字、图形、图像
音频和视频。包含结构元素,为WebApp的内容需求提供了一个重要的视图。这
些结构元素包含内容对象和所有分析类,在用户与WebApp交互时生成并操作用
户可见的实体。
2、交互模型:描述了用户与WebApp采用了哪种交互方式。由一种或多种元素
构成,包括用例、顺序图、状态图、用户界面原型等。
3、功能模型:许多WebApp提供大量的计算和操作功能,这些功能与内容直接
相关(既能使用又能生成内容,如统计报表)。这些功能常常以用户的交互活
动为主要目标。功能模型定义了将用于WebApp内容并描述其他处理功能的操作
这些处理功能不依赖于内容却是最终用户所必需的。
4、导航模型:为WebApp定义所有导航策略。考虑了每一类用户如何从一个
WebApp元素(如内容对象) 导航到另一个元素。
5、配置模型:描述WebApp所在的环境和基础设施。在必需考虑复杂配置体系
结构的情况下,可以使用UML部署图。
五种需求模型:
- 内容模型: 确定提供的全部内容类型(文字/图形/音频/视频),如抖音提供短视频、淘宝提供商品图文
- 交互模型: 描述用户交互方式,使用用例图、顺序图、状态图等面向对象建模技术
- 功能模型: 定义内容相关操作(如统计报表生成)和独立处理功能(如支付宝年度账单)
- 导航模型: 制定元素间跳转策略(如淘宝商品页→购物车的路径)
- 配置模型: 描述运行环境和基础设施,可能使用UML部署图表示物理部署
WebApp设计
1、架构设计:描述将以什么方式来管理用户交互、操作内部处理任务、实现导
航及展示内容。MVC(模型-视图-控制器) 结构是WebApp基础结构模型之一
将WebApp功能及信息内容分离。
2、构件设计
WebApp构件:定义良好的聚合功能,为最终用户处理内容或提供计算或处理数
据;内容和功能的聚合包,提供最终用户所需要的功能。因此, WebApp构件设
计通常包括内容设计元素和功能设计元素。
构件级内容设计:关注内容对象,以及包装后展示给最终用户的方式,应该适
合创建的WebApp特性。
构件级功能设计: 将WebApp作为一系列构件加以交付,这些构件与信息体系结
构并行开发,以确保一致性。
3、内容设计:着重于内容对象的表现和导航的组织,通常采用线性结构、网格
结构、层次结构、网络结构四种结构及其组合。
4、导航设计:定义导航路径,使用户可以访问WebApp的内容和功能
- 设计要素
- 架构设计:
- MVC模式:
- 模型(Model): 处理数据逻辑(如数据库交互)
- 视图(View): 用户界面(如账单展示页面)
- 控制器(Controller): 处理用户输入(如点击"查看账单"触发数据查询)
- MVC模式:
- 分离原则: 将功能与信息内容分离
- 构建设计:
- 构件定义: 功能聚合单元(如统计模块、支付模块)
- 设计元素: 包含内容设计(展示方式)和功能设计(并行开发确保一致性)
- 内容设计: 采用四种结构组合:
- 线性结构、网格结构、层次结构、网络结构
- 导航设计: 定义内容/功能的访问路径(如淘宝购物流程)

947

被折叠的 条评论
为什么被折叠?



