系统设计方法论全解:原则、模型与用户体验核心要义

目录

一、系统设计概述

二、处理流程设计

[2.1 流程设计概述](#2.1 流程设计概述)

[2.2 工作流管理系统](#2.2 工作流管理系统)

[2.3 流程设计工具](#2.3 流程设计工具)

三、结构化设计

[3.1 高内聚](#3.1 高内聚)

[3.2 低耦合](#3.2 低耦合)

[3.3 系统结构图(SC)](#3.3 系统结构图(SC))

四、面向对象设计

[4.1 设计软件类](#4.1 设计软件类)

[4.2 对象持久化与数据库](#4.2 对象持久化与数据库)

五、设计模式

六、输入/输出原型设计

[6.1 输人设计](#6.1 输人设计)

[6.2 输出设计](#6.2 输出设计)

七、人机交互设计

[7.1 设计目标](#7.1 设计目标)

[7.2 用户体验五层模型](#7.2 用户体验五层模型)

[7.2.1 战略层](#7.2.1 战略层)

[7.2.2 范围层](#7.2.2 范围层)

[7.2.3 结构层](#7.2.3 结构层)

[7.2.4 框架层](#7.2.4 框架层)

[7.2.5 表现层](#7.2.5 表现层)

[7.3 如何设计良好的人机交互](#7.3 如何设计良好的人机交互)

相关推荐


一、系统设计概述

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

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

概要设计又称为系统总体结构设计,其主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。在概要设计中,将系统开发的总任务分解成许多个基本的、具体的任务,而为每个具体任务选择适当的技术手段和处理方法的过程称为详细设计。根据任务的不同,详细设计又可分为多种,如下:

  • (1)网络设计的主要任务是,根据系统的要求选择网络结构,按照系统结构的划分,安排网络和设备的分布,然后根据物理位置考虑网络布线和设备的部署。
  • (2)在进行代码设计时,首先需要考虑系统的编码问题,编码问题的关键在于分类,有了科学的分类方式后,系统要建立编码规范就相对容易。目前最常用的分类方法概括起来有两种,一种是线分类法,另一种是面分类法。线分类法基本原理是:首先给定母项,母项下分若干子项,子项又可以分为更小的子项,最后落实到具体对象,分类的结果造成了一层套一层的线性关系。面分类法与线分类法不同,主要从面角度来考虑分类。
  • (3)输入设计的目的是确保向系统输入数据的完整性、正确性和一致性,其主要内容包括确定输入数据内容、输入方式设计、输入格式设计和检验方式设计。输出设计的目的是确保系统输出数据的完整性、正确性和一致性,其主要内容包括确定输出的内容、选择输出设备与介质,以及确定输出格式等。输入设计遵循的原则:输入数据最少原则;简单性原则;尽早验证原则;少转换原则。
  • (4)处理流程设计的主要目的是确定各个系统模块的内部结构,即内部执行过程,包括局部数据组织和控制流,以及每个具体加工过程和实施细节。
  • (5)数据存储设计主要是根据数据处理要求、处理方式、存储的信息量大小、数据使用的频率和所能提供的设备条件等,选择数据存储的方式、存储介质、数据组织方式和记录格式,并估算数据的容量。主要包括两方面工作:数据的统筹安排、文件的数据结构设计。
  • (6)用户界面设计三大黄金原则:置于用户的控制之下、减轻用户的记忆负担、保持界面一致性。
  • (7)安全性和可靠性设计的目的是确保系统的安全性和可靠性,对系统的运行环境和数据处理进行有效控制,保证系统安全、有效地运行。其主要内容包括系统运行环境的安全性分析和控制;还包括对数据处理的控制。

二、处理流程设计

2.1 流程设计概述

处理流程设计的任务是设计出系统所有模块以及它们之间的相互关系,并具体设计出每个模块内部的功能和处理过程,为开发人员提供详细的技术资料。

系统处理流程对应于现实世界中的真实业务过程,通过对业务流程的设计,可以对其进行建模,以便使用信息系统来取代传统的手工处理,提高业务处理的效率和准确性,降低业务处理成本。

业务流程为一组将输入转化为输出的相互关联或相互作用的活动。流程包括6个基本要素,分别是输入资源、活动、活动的相互作用(结构)、输出结果、用户和价值。

流程的概念包括流程定义和流程实例,其中流程定义是指对业务过程的形式化表示,它定义了过程运行中的活动和所涉及的各种信息;流程实例也称为工作,是一个流程定义的运行实例,即一次具体的流程操作。

2.2 工作流管理系统

WFMS将业务流程中工作如何组织与协调的规则抽象出来,在WFMS的协助下,开发人员遵从一定的编程接口和约定,就可以开发出更具灵活性的事务处理系统,用户无需重新开发即可更改工作流程,以适应业务的变更。WFMS的基本功能体现在以下几个方面:

  • (1)对工作流进行建模。即定义工作流,包括具体的活动和规则等,所创建的模型是同时可以被人和计算机所"理解"的,工作流对应现实世界的业务处理过程,不能改变真实业务的处理逻辑。
  • (2)工作流执行。遵循工作流模型来创建和执行实际的工作流,即通过WFMS可以执行多个工作项。
  • (3)业务过程的管理和分析。监控和管理执行中的业务(工作流),例如,进度完成情况和数据所处状态、工作分配与均衡情况等。

工作流参考模型(Workflow Reference Model,WRM)包含六个基本模块,分别是工作流执行服务、工作流引擎、流程定义工具、客户端应用、调用应用和管理监控工具。

2.3 流程设计工具

流程设计工具包括三类:图形工县、表格工具和语言工具。其中常见的图形工具包括程序流程图(PFD)、IPO图、NS图(盒图)、问题分析图、判定树,表格工具包括判定表,语言工具包括过程设计语言等。

(1)程序流程图用一些图框表示各种操作,它独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。流程图中只能包括5种基本控制结构:顺序型、选择型、多分支选择型、当型循环、直到型循环。

(2)IPO图也是流程描述工具,用来描述构成软件系统的每个模块的输入、输出和数据加工。

(3)N-S图容易表示嵌套和层次关系,并具有强烈的结构化特征。与PFD类似,也包含那5种基本控制结构。但是当问题很复杂时,N-S图可能很大,因此不适合于复杂程序的设计。

(4)问题分析图(PAD)是一种支持结构化程序设计的图形工具。同样包含那5种基本控制结构。PAD具有清晰的逻辑结构、标准化的图形等优点,更重要的是,它引导设计入员使用结构化程序设计方法,从而提高程序的质量。

(5)过程设计语言(PDL)也称为结构化语言或伪代码,它是一种混合语言,采用自然语言的词汇和结构化程序设计语言的语法,用于描述处理过程,类似于编程语言。语法规则一般分为外层语法和内层语法。外层语法用于描述结构,内层语法用于描述操作。

(6)判定表。采用表格形式来表达逻辑判断问题,表格分成4个部分,左上部分为条件说明,左下部分为行动说明,右上部分为各种条件的组合说明,右下部分为各条件组合下相应的行动。

(7)判定树也是用来表示逻辑判断问题的一种常用的图形工具,它用树来表达不同条件下的不同处理流程,比用语言、表格的方式更为直观。判定树的左侧(称为树根)为加工名,中间是各种条件,所有的行动都列于最右侧。

三、结构化设计

系统设计主要目的:为系统制定蓝图,在各种技术和实施方法中权衡利弊精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法。

系统设计方法:结构化设计方法,面向对象设计方法。

系统设计的主要内容:概要设计、详细设计。

概要设计基本任务:又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图

详细设计的基本任务:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审。

系统设计基本原理:

  • 抽象化;
  • 自顶而下,逐步求精;
  • 信息隐蔽;
  • 模块独立(高内聚,低耦合)。

系统设计原则:

  • 保持模块的大小适中;
  • 尽可能减少调用的深度;
  • 多扇入,少扇出;
  • 单入口,单出口;
  • 模块的作用域应该在模块之内;
  • 功能应该是可预测的。

3.1 高内聚

内聚表示模块内部各代码成分之间联系的紧密程度,根据内聚度从高到低的排序如表所示:

内聚类型 描述 关键字
功能内聚 完成一个单一功能,各个部分协同工作,缺一不可 协同工作,缺一不可
顺序内聚 处理元素相关,而且必须顺序执行 顺序执行,输入为输出
通信内聚 所有处理元素集中在一个数据结构的区域上 相同数据结构,相同输入输出
过程内聚 处理元素相关,而且必须按特定的次序执行 指定过程顺序
时间内聚 所包含的任务必须在同一时间间隔内执行 同时执行
逻辑内聚 完成逻辑上相关的一组任务 逻辑相似,参数决定
偶然内聚 完成一组没有关系或松散关系的任务 无直接关系

3.2 低耦合

耦合表示模块之间联系的程度,耦合度从低到高依次如表所示:

耦合类型 描述 关键字
非直接耦合 两个模块之间没有直接关系,它们之间的联系完全是通过上级模块的控制和调用来实现的 无直接关系
数据耦合 一组模块借助参数表传递简单数据 传递数据
标记耦合 一组模块通过参数表传递记录等复杂信息(数据结构) 传递数据结构
控制耦合 一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择的执行模块内的某一功能。 控制变量、选择执行某一功能。
外部(通信)耦合 模块间通过软件之外的环境联合(如 I/O将模块耦合到特定的设备、格式、通信协议上)时 软件外部环境
公共耦合 多个模块都访问同一个公共数据环境,公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等 公共数据结构
内容耦合 一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口等 模块内部关联

3.3 系统结构图(SC)

在系统结构图(SC)中不能再分解的底层模块称为原子模块。如果一个系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其他所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。如果SC是完全因子分解的,就是最好的系统。

一般而言,在SC中存在4种类型的模块:传入模块(从下属获取数据送给上级)、传出模块(从上级获取数据送给下属)、变换模块(上级获取数据处理后返回上级)、协调模块(对所有下属模块进行协调)。

系统结构图也称为模块结构图,它是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构。

SC的组成包括模块、模块之间的调用关系、模块之间的通信和辅助控制符号等4个部分。

常用的SC主要有变换型、事务型和混合型三种。

(1)变换型SC:信息沿着输入通道进入系统,然后通过变换中心(也称为主加工)处理,再沿着输出通道离开系统,具有这一特性的信息流称为变换流。

(2)事务型SC:信息沿着输入通道到达一个事务中心,事务中心根据输入信息(即事务)的类型在若干个动作序列(称为活动流)中选择一个来执行,这种信息流称为事务流。事务型系统一般由三层组成,即事务层、操作层和细节层,它的功能是对接收的事务,按其类型选择某一类事务处理。

(3)混合型SC:在规模较大的系统中,其DFD往往是变换型和事务型的混合结构。

四、面向对象设计

OOD是OOA方法的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。在OOD中,数据结构和在数据结构上定义的操作算法封装在一个对象之中。

4.1 设计软件类

类封装了信息和行为,是面向对象的重要组成部分,它是具有相同属性、方法和关系的对象集合的总称。在系统中,每个类都具有一定的职责,职责是指类所担任的任务。一个类可以有多种职责,设计得好的类一般至少有一种职责。在系统设计过程中,类可以分为三种类型:实体类、控制类和边界类。

(1)实体类:实体类映射需求中的每个实体。实体类保存需要存储在永久存储体中的信息,例如,在线教育平台系统可以提取出学员类和课程类,它们都属于实体类。实体类通常都是永久性的,它们所具有的属性和关系是长期需要的,有时甚至在系统的整个生存期都需要。

(2)控制类:控制类是用于控制用例工作的类,控制类用于对一个或几个用例所特有的控制行为进行建模,控制对象(控制类的实例)通常控制其他对象,因此,它们的行为具有协调性。控制类将用例的特有行为进行封装,控制对象的行为与特定用例的实现密切相关。

(3)边界类:边界类用于封装在用例内、外流动的信息或数据流。每个参与者和用例交互至少要有一个边界类,边界类使参与者能与系统交互。常见的边界类有窗口、通信协议、打印机接口、传感器和终端等。实际上,在系统设计时,产生的报表都可以作为边界类来处理。

4.2 对象持久化与数据库

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

数据持久化技术封装了数据访问细节,为大部分业务逻辑提供面向对象的API。通过持久化技术,可以减少访问数据库数据的次数,增加应用程序执行速度;其代码重用性高,能够完成大部分数据库操作;松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时只需修改配置文件而不用修改代码。主流的持久化技术框架包括:

(1)CMP。在J2EE架构中,容器管理持久化(CMP)是由EJB容器来管理实体EJB的持久化,EUB容器封装了对象/关系的映射和数据访问细节。CMP模式的优点在于它基于EJB技术。CMP的缺点在于开发的实体必须遵守复杂的J2EE规范,其灵活性受到影响;而且,CMP只能运行在EJB容器中。
(2)Hibernate。Hibernate和iBatis都是ORM解决方案,不同的是两者各有侧重。在后续章节会介绍。
(3)iBatis。提供Java对象到sQL的映射实现,实际的数据库操作需要通过手动编写sQL实现,与Hibernate相比,iBatis最大的特点就是小巧,上手较快。
(4)JDO。Java数据对象(JDO)是SUN公司制定的描述对象持久化语义的标准APl,它是Java对象持久化的新规范。JDO提供了透明的对象存储,对开发人员来说,存储数据对象完全不需要额外的代码。

五、设计模式

设计模式之设计原则

设计模式之创建型模式

设计模式之结构型模式

设计模式之行为型模式

六、输入/输出原型设计

6.1 输人设计

系统输入设计是指在设计系统时,如何收集和处理用户输入的过程。系统输入设计的关键考虑因素:用户需求、输入方式、输入格式、输入验证、输入反馈、输入历史、输入安全、输入效率。

在设计系统输入时,应当遵循以下7种设计原则:

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

6.2 输出设计

系统的输出设计主要包括以下三个方面的内容:

  • (1)确定输出内容:确定用户在使用信息方面的需求,然后设计输出信息的内容、信息形式、输出项目及数据结构、数据类型、位数及取值范围、数据的生成途径、完整性以及数据一致性等。
  • (2)选择输出设备与介质:常见的输出设备有显示终端、打印机、绘图仪、磁带机、多媒体设备;输出介质有纸张、磁带、磁盘、胶卷、光盘等。
  • (3)确定输出格式:最终输出形式包括报表输出、图形输出等,其输出形式需要根据系统分析和管理业务的需求来决定。

在针对系统输出设计方面要遵循下面7条原则:

  • 1.简洁性原则:应该尽量避免过多的冗余信息和复杂的设计,保持简洁明了的风格。
  • 2.一致性原则:应该保持一致的设计风格和交互方式,使用户在使用系统时能够更加自然和流畅地进行操作。
  • 3.可用性原则:应该注重用户的使用体验和用户的需求,使系统能够更加方便、易用和可靠。
  • 4.可访问性原则:应该考虑到不同用户的需求和能力,使系统能够更加易于访问和使用。
  • 5.可维护性原则:应该注重系统的可维护性和可扩展性,使系统能够更加易于维护和升级。
  • 6.安全性原则:应该注重系统的安全性和保密性。
  • 7.可扩展性原则:应该注重系统的可扩展性和灵活性,使系统能够更加易于扩展和适应不同的需求。

七、人机交互设计

7.1 设计目标

系统人机交互设计的目标是提高用户体验和效率,使用户能够轻松地使用系统完成任务。具体来说,系统人机交互设计的目标包括:

  • (1)切实满足用户的需求,功能有用、内容齐全,对用户有帮助。
  • (2)产品容易上手和使用,用户用起来易操作、易理解、易学习。
  • (3)降低用户的错误率和学习成本,使用户能够更容易地掌握系统的使用方法。

7.2 用户体验五层模型

用户体验五层模型:表现层、框架层、结构层、范围层和战略层。

7.2.1 战略层

主要包括用户需求和产品目标。为了确定用户需求,首先要确定产品的目标用户。确定产品的目标用户有以下几个步骤:

  • (1)用户细分:将用户分成较小的有共同需求的组(人口统计学、消费心态档案等)。
  • (2)用户研究:知道用户是谁(问卷调查、访谈、实地考察、焦点小组、卡片分类等)。
  • (3)人物角色:从用户研究中提取出可以成为样例的虚拟人物。例如,电商用户需要在网络上购买到物美价廉的产品,所以电商系统的整体产品目标在于构建一个C2C电商平台。

7.2.2 范围层

当把用户需求和网站目标转变成网站应该提供给用户什么样的内容和功能时,战略就变成了范围。根据范围层的具体内容,可以将产品大致分为工具型和内容型。

例如,在电商平台的功能中,需要与用户交互的功能包括搜索商品、查看详情、加入购物、结算、支付等。内容需求则包括海量的可供挑选的商品及商品的详情介绍,如何给用户推荐用户喜欢的商品等。

7.2.3 结构层

在收集完用户需求并将其排列好优先级后,需要将这些分散的片段组成一个整体,这就是结构层,即创建产品功能和内容之间的关系。

结构层分为交互设计和信息架构两大部分。交互设计是描述"可能的用户行为",定义"系统如何配合与响应"这些用户行为。信息架构是关注如何将信息表达给用户。交互设计应该至少包括概念模型和错误处理。

信息架构有两种分类体系:从上到下和从下到上。其结构可以是层级结构、矩阵结构、自然结构和线性结构。

例如,电商平台把搜索商品、查看详情、加入购物、结算、支付等功能点组织在一起,一步一步地引导用户买到想要的商品。平台中有海量的商品,通过商品分类、搜索、扫码、系统推荐等方式可以帮助用户找到心仪的商品。

7.2.4 框架层

决定某个板块或按钮等交互元素应该放在页面的什么地方。在设计框架层的内容时要遵循两条原则:遵循用户日常使用习惯和恰当使用生活中的比喻。框架层设计包含界面设计、导航设计和信息设计三个方面。

例如,在界面的什么位置放置用户常用的按钮、搜索栏等内容,底部放置导航栏,以符合用户在与系统进行交互时的行为习惯。

7.2.5 表现层

是用户所能看见的一切,包括字体的大小、导航栏的颜色、整体给人的感觉等。在这一层,内容、功能和美学汇集在一起产生一个最终设计,从而满足其他层面的所有要求。

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

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

相关推荐

软件架构设计的软件架构概述、软件架构建模、软件架构风格https://shuaici.blog.csdn.net/article/details/156272113技术深耕三部曲:领域突破、工具赋能与项目实战全复盘https://shuaici.blog.csdn.net/article/details/156317749

相关推荐
蔺太微17 小时前
装饰器模式(Decorator Pattern)
设计模式·装饰器模式
rolt17 小时前
软件需求设计方法学全程实例剖析幻灯片02-愿景[202512更新]
产品经理·需求分析·架构师·uml
rolt18 小时前
软件需求设计方法学全程实例剖析幻灯片03-业务用例图和业务序列图[202601更新]
产品经理·需求分析·uml
旦莫18 小时前
自动化测试需求分析:从“做对”到“做好”的前提
python·测试开发·自动化·需求分析·ai测试
reddingtons1 天前
【游戏宣发】PS “生成式扩展”流,30秒无损适配全渠道KV
游戏·设计模式·新媒体运营·prompt·aigc·教育电商·游戏美术
sxlishaobin1 天前
设计模式之桥接模式
java·设计模式·桥接模式
2401_876907521 天前
USB TYPE-C 公头连接器设计规范总结:提升可靠性、降本增效的关键指南
c语言·开发语言·设计规范
晴殇i1 天前
package.json 中的 dependencies 与 devDependencies:深度解析
前端·设计模式·前端框架
HL_风神1 天前
设计原则之单一职责原则
c++·学习·设计模式·单一职责原则