系统设计

1 系统设计概述

1.1 系统设计定义

系统设计的目标是根据系统分析的结果,完成系统的构建过程。其主要目的是绘制系统的蓝图,权衡和比较各种技术和实施方法的利弊,合理分配各种资源,构建新系统的详细设计方案和相关模型,指导系统实施工作的顺利开展。

系统设计的主要内容包括概要设计详细设计

  • 概要设计(又称系统总体结构设计):将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图
  • 详细设计:将系统开发的总任务分解成许多个基本的、具体的任务,为每个具体任务选择适当的技术手段和处理方法。

1.2 详细设计分类

序号设计类型说明
1网络设计根据系统要求选择网络结构,安排网络和设备的分布,考虑网络布线和设备部署
2代码设计考虑系统编码问题,关键在于分类。常用线分类法(层级关系)和面分类法(多维度分类)
3输入/输出设计确保数据完整性、正确性和一致性
4处理流程设计确定各模块内部结构(局部数据组织、控制流、加工过程和实施细节)
5数据存储设计选择存储方式、介质、组织方式和记录格式,估算数据容量
6用户界面设计三大黄金原则:置于用户控制之下、减轻用户记忆负担、保持界面一致性
7安全性和可靠性设计确保系统运行环境安全和数据处理控制

1.3 输入设计原则

  1. 输入数据最少原则:尽量减少输入数据量
  2. 简单性原则:输入操作应简单易行
  3. 尽早验证原则:尽早对输入数据进行校验
  4. 少转换原则:尽量减少数据格式转换

2 处理流程设计

2.1 业务流程基本概念

业务流程:一组将输入转化为输出的相互关联或相互作用的活动。

流程包含 6 个基本要素

要素说明
输入资源流程的输入
活动流程中的操作步骤
活动的相互作用(结构)活动之间的关系
输出结果流程的产出
用户流程的服务对象
价值流程创造的价值

流程定义 vs 流程实例:流程定义是对业务过程的形式化表示;流程实例是流程定义的运行实例(即一次具体的流程操作)。

2.2 流程设计工具

流程设计工具分为三类:图形工具表格工具语言工具

2.2.1 程序流程图(PFD)

  • 用图框表示各种操作,独立于程序设计语言
  • 包含 5 种基本控制结构:顺序型选择型多分支选择型当型循环(WHILE)、直到型循环(UNTIL)

2.2.2 IPO 图

  • 描述构成软件系统的每个模块的输入输出数据加工

2.2.3 N-S 图(盒图)

  • 容易表示嵌套和层次关系,具有强烈的结构化特征
  • 同样包含 5 种基本控制结构
  • 缺点:问题复杂时 N-S 图可能很大,不适合复杂程序设计

2.2.4 问题分析图(PAD)

  • 支持结构化程序设计的图形工具
  • 包含 5 种基本控制结构
  • 优点:清晰的逻辑结构、标准化的图形,引导设计人员使用结构化方法

2.2.5 过程设计语言(PDL)

  • 也称为结构化语言伪代码
  • 采用自然语言的词汇和结构化程序设计语言的语法
  • 外层语法:描述结构;内层语法:描述操作

2.2.6 判定表

  • 用表格形式表达逻辑判断问题
  • 分为 4 个部分:
部分位置内容
条件说明左上列出所有条件
条件组合右上各种条件的组合
行动说明左下列出所有行动
行动分配右下各条件组合下对应的行动

示例(折扣率判定表):

条件和行动12345678
C1: 交易额≥50000TTTTFFFF
C2: 近3月无欠款TTFFTTFF
C3: 交易≥20年TFTFTFTF
A1: 折扣15%YY
A2: 折扣10%Y
A3: 折扣5%Y
A4: 无折扣YYYY

2.2.7 判定树

  • 用树形结构表达不同条件下的不同处理流程
  • 比语言、表格方式更直观
  • 左侧为加工名(树根),中间为各种条件,右侧为所有行动

2.3 业务流程重组(BPR)

BPR:对企业的业务流程进行根本性的再思考彻底性的再设计,从而在成本、质量、服务和速度等方面获得显著性的成就。

业务流程分类

类型说明
操作流程直接与满足外部顾客需求相关的活动
支持流程保证操作流程顺利执行的支撑活动(资金、人力、设备、信息系统)
管理流程指导企业整体运营方向,确定价值取向

BPR 实施方法

  1. 在研究和描述企业现有业务流程的基础上进行重新设计
  2. 从一张白纸开始构建企业理想的业务流程(可参考相关企业管理水准)

BPR 设计原则

  • 以流程为中心的原则
  • 团队式管理原则(以人为本)
  • 以顾客为导向的原则

BPR 与信息系统规划的关系:相辅相成

  • 信息系统规划要以 BPR 为前提,以业务流程为主线
  • 面向流程的信息系统规划驱动企业的 BPR

基于 BPR 的信息系统规划步骤

步骤内容
1. 战略规划明确企业战略目标,使信息系统战略目标与企业一致
2. 流程规划分析业务流程,选出关键流程进行改进
3. 数据规划对业务流程所需数据分类(类似 BSP 法),产生不同数据类
4. 功能规划建立 CU 矩阵,划分功能模块
5. 实施规划制定开发目的和项目开发计划

3 结构化设计

3.1 系统设计基本原理

原理说明
抽象化隐藏实现细节,关注本质特征
自顶而下,逐步求精从高层到低层逐步细化
信息隐蔽模块内部信息对外不可见
模块独立高内聚,低耦合

3.2 系统设计原则

  1. 保持模块的大小适中
  2. 尽可能减少调用的深度
  3. 多扇入,少扇出
  4. 单入口,单出口
  5. 模块的作用域应该在模块之内
  6. 功能应该是可预测的

扇入大 → 模块复用程度高;扇出大 → 需要把下级模块进一步分解

3.3 内聚类型(从低到高)

内聚类型定义记忆关键字
偶然内聚模块内各处理元素之间没有任何联系无直接关系
逻辑内聚模块内执行若干个逻辑上相似的功能,通过参数确定完成哪一个逻辑相似、参数决定
时间内聚把需要同时执行的动作组合在一起同时执行
过程内聚一个模块完成多个任务,必须按指定过程执行指定的过程顺序
通信内聚所有处理元素在同一数据结构上操作,或使用相同输入/输出数据相同数据结构、相同输入输出
顺序内聚各处理元素密切相关于同一功能且必须顺序执行,前一元素输出为后一元素输入顺序执行、输入为输出
功能内聚最强内聚,所有元素共同完成一个功能,缺一不可共同作用、缺一不可

3.4 耦合类型(从低到高)

耦合类型定义记忆关键字
无直接耦合两个模块没有直接关系,分别从属于不同模块的控制与调用无直接关系
数据耦合传递的是简单的数据值(值传递)传递数据值调用
标记耦合传递的是数据结构传递数据结构
控制耦合传递控制变量,被调用模块选择性执行某一功能控制变量、选择执行
外部耦合通过软件之外的环境联合(如 I/O 设备、格式、通信协议)软件外部环境
公共耦合通过公共数据环境相互作用公共数据结构
内容耦合直接使用另一个模块的内部数据,或非正常入口转入模块内部关联

考试重点:传递”数据结构”→ 标记耦合;传递”数据值”→ 数据耦合

3.5 系统结构图(SC)

系统结构图(又称模块结构图)是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信。

SC 的组成:模块、模块之间的调用关系、模块之间的通信、辅助控制符号。

4 种模块类型

模块类型说明
传入模块从下属获取数据送给上级
传出模块从上级获取数据送给下属
变换模块从上级获取数据处理后返回上级
协调模块对所有下属模块进行协调

完全因子分解:全部实际加工由底层原子模块完成,其他非原子模块仅执行控制或协调功能,这是最好的系统。

3.6 系统结构图类型

类型说明
变换型 SC信息沿输入通道进入→变换中心(主加工)处理→沿输出通道离开(变换流)
事务型 SC信息沿输入通道到达事务中心→根据类型选择动作序列执行(事务流),由事务层、操作层、细节层三层组成
混合型 SC大规模系统中变换型和事务型的混合结构

4 面向对象设计

4.1 面向对象设计基本思想

OOD 是 OOA 方法的延续,基本思想包括抽象封装可扩展性(主要通过继承和多态实现)。

在 OOD 中,数据结构和在数据结构上定义的操作算法封装在一个对象之中。

4.2 面向对象设计原则

原则说明记忆要点
开闭原则软件实体可以扩展(开放),但不可修改(封闭)对扩展开放,对修改关闭
里氏替换原则子类型必须能够替换掉它们的基类型子类可替换父类
依赖倒置原则抽象不应依赖细节,细节应依赖抽象;针对接口编程针对接口编程
组合/聚合复用原则尽量使用组合/聚合关系,少用继承;Has-A 用组合,Is-A 用继承Has-A 组合,Is-A 继承
接口隔离原则使用多个专门的接口,不使用单一的总接口多个专用接口
最少知识原则(迪米特法则)一个软件实体应尽可能少地与其他实体发生相互作用少交互,通过第三者转发

4.3 对象持久化与 ORM

对象持久化:把内存中的对象保存到数据库或可永久保存的存储设备中。将对象持久化到关系数据库中,需要进行对象/关系映射(ORM)

持久化技术的优点

  • 减少访问数据库次数,增加执行速度
  • 代码重用性高,能完成大部分数据库操作
  • 松散耦合,更换数据库只需修改配置文件

主流持久化技术框架

框架说明
CMP(EJB 容器管理持久化)基于 EJB 技术,封装 ORM 和数据访问细节。缺点:须遵守复杂 J2EE 规范,灵活性受限,只能运行在 EJB 容器中
Hibernate开源 ORM 框架,提供完整的对象/关系映射
iBatis半自动 ORM,SQL 由开发者编写,灵活度高于 Hibernate
JDOSUN 制定的 Java 数据对象新规范,提供透明的对象存储

5 设计模式

5.1 模式层次

层次说明示例
架构模式软件设计中的高层决策C/S 结构
设计模式描述不断重复发生的问题及其解决方案的核心23 种 GoF 模式
惯用法最低层模式,通过特定编程语言描述C++ 引用计数

设计模式四要素:模式名称、问题(何时使用)、解决方案(设计内容)、效果(应用效果)。

5.2 创建型模式

模式定义记忆关键字
抽象工厂模式提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定具体类抽象接口
构建器模式将一个复杂类的表示与其构造相分离,使得相同构建过程能得出不同表示类和构造分离
工厂方法模式定义一个创建对象的接口,但由子类决定需要实例化哪一个类子类决定实例化
原型模式用原型实例指定创建对象的类型,通过拷贝原型来创建新对象原型实例、拷贝
单例模式保证一个类只有一个实例,并提供一个访问它的全局访问点唯一实例

5.3 结构型模式

模式定义记忆关键字
适配器模式将一个类的接口转换成用户希望得到的另一种接口,使原本不相容的接口得以协同工作转换、兼容接口
桥接模式将类的抽象部分和它的实现部分分离开来,使它们可以独立变化抽象和实现分离
组合模式将对象组合成树型结构以表示”整体-部分”的层次结构,使单个对象和组合对象使用具有一致性整体-部分、树形结构
装饰模式动态地给一个对象添加一些额外的职责,比派生子类更灵活附加职责
外观模式定义一个高层接口,为子系统中的一组接口提供一致的外观,简化子系统使用对外统一接口
享元模式提供支持大量细粒度对象共享的有效方法细粒度、共享
代理模式为其他对象提供一种代理以控制这个对象的访问代理控制

5.4 行为型模式

模式定义记忆关键字
职责链模式通过给多个对象处理请求的机会,减少发送者与接收者之间的耦合,在链中传递请求直到有对象处理传递请求、职责链
命令模式将一个请求封装为一个对象,可用不同请求对客户参数化,支持排队、日志记录、可撤销操作日志记录、可撤销
解释器模式给定一种语言,定义其文法表示,并定义一个解释器来解释语言中的句子解释器、虚拟机器
迭代器模式提供一种方法顺序访问聚合对象中的各个元素,而不需要暴露该对象的内部表示顺序访问、不暴露内部
中介者模式用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互调用不直接引用
备忘录模式在不破坏封装性的前提下,捕获对象的内部状态并保存,以便以后恢复保存、恢复
观察者模式定义对象间一对多的依赖关系,当一个对象状态改变时,所有依赖它的对象都得到通知并自动更新通知、自动更新
状态模式允许一个对象在其内部状态改变时改变它的行为状态变成类
策略模式定义一系列算法,把它们封装起来,使它们之间可互相替换算法替换
模板方法模式定义一个操作中的算法骨架,将一些步骤延迟到子类中算法骨架、延迟到子类
访问者模式表示一个作用于某对象结构中各元素的操作,在不改变各元素类的前提下定义新操作数据和操作分离

6 输入/输出原型设计

6.1 输入设计

系统输入设计的关键考虑因素:用户需求、输入方式、输入格式、输入验证、输入反馈、输入历史、输入安全、输入效率。

输入设计 7 原则

  1. 确定输入数据的类型和格式:文本数据、数字数据、图像数据;整数、浮点数、JPEG 等
  2. 确定输入数据的来源
  3. 设计良好的输入界面:考虑界面布局、控件选择、输入提示、错误提示
  4. 设计系统输入验证机制:考虑验证规则、错误提示、安全性
  5. 设计输入处理流程:考虑处理流程、数据清洗、数据转换
  6. 设计输入存储方案:考虑存储方式、存储结构、存储安全
  7. 设计输入安全机制:考虑访问控制、数据加密、防止 SQL 注入

6.2 输出设计

输出设计 3 方面内容

方面说明
确定输出内容确定用户信息需求,设计输出信息内容、形式、项目及数据结构、数据类型、位数及取值范围、生成途径、完整性及一致性
选择输出设备与介质设备:显示终端、打印机、绘图仪、磁带机、多媒体设备;介质:纸张、磁带、磁盘、胶卷、光盘
确定输出格式报表输出、图形输出等,根据系统分析和管理业务需求决定

输出设计 7 原则

  1. 简洁性原则:避免过多冗余信息和复杂设计
  2. 一致性原则:保持一致的设计风格和交互方式
  3. 可用性原则:注重用户体验和需求,方便、易用、可靠
  4. 可访问性原则:考虑不同用户的需求和能力
  5. 可维护性原则:注重系统的可维护性和可扩展性
  6. 安全性原则:注重系统的安全性和保密性
  7. 可扩展性原则:注重系统的可扩展性和灵活性

7 人机交互设计

7.1 设计目标

  1. 切实满足用户需求,功能有用、内容齐全
  2. 产品容易上手和使用,易操作、易理解、易学习
  3. 降低用户的错误率和学习成本

7.2 用户体验五层模型

层次核心内容说明
战略层用户需求 + 产品目标确定目标用户:用户细分 → 可用性研究 → 人物角色
范围层功能规格 + 内容需求将战略转化为应提供的内容和功能(工具型 vs 内容型)
结构层交互设计 + 信息架构创建功能和内容之间的关系;信息架构有从上到下和从下到上两种分类体系
框架层界面设计 + 导航设计 + 信息设计决定交互元素放置位置;遵循用户习惯和使用生活比喻
表现层视觉设计用户所见的一切:字体、颜色、整体感觉

结构层信息架构的分类体系

  • 从上到下:从战略层向下推导内容和功能组织
  • 从下到上:从已有内容向上归纳组织结构

信息架构的结构类型:层级结构、矩阵结构、自然结构、线性结构

7.3 如何设计良好的人机交互

  1. 了解用户:用户群体划分、需求调研、使用场景分析、竞品分析
  2. 设计交互界面:采用简单、自然、统一的操作方式
  3. 提供即时反馈机制:用户操作时系统提供对应反馈
  4. 辅助功能:为视觉、听觉、肢体障碍的用户提供额外功能
  5. 用户测试
  6. 迭代优化设计
  7. 多语言支持
  8. 与实际应用场景相结合
  9. 适当使用动画效果
  10. 适当使用新理念和新技术

参考资源

  • 系统分析师教材(第二版)第13章
  • 文老师软考教育