系统设计

软件设计包括四个独立,又联系的活动:数据设计软件结构设计,人机界面设计,过程设计

业务流程设计

图工具

程序流程图(Program Flow Diagram,PFD):它独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。任何复杂的程序流程图都应该由顺序、选择和循环结构组合或嵌套而成

IPO图:也是流程描述工具,用来描述构成软件系统的每个模块的输入、输出和数据加工。数据流图其实就是一种IPO图

N-S图:比较容易表示嵌套和层次关系,并具有强烈的结构化特征。但是当问题很复杂时,N-S图可能很大,因此不适合于复杂程序的设计

问题分析图(PAD):是一种支持结构化程序设计的图形工具。PAD具有清晰的逻辑结构、标准化的图形等优点,更重要的是,它引导设计人员使用结构化程序设计方法,从而提高程序的质量

设计分类

业务流程管理(BPM):是一种方法论,用于优化、管理和自动化组织内的业务流程。它涉及识别、建模、分析和优化业务流程,以实现更高效、灵活和协调的运作。BPM关注整个业务流程的管理,包括流程的执行、监控、优化和自动化

业务流程重组(BPR):BPR是更为激进的方法,它着眼于对现有业务流程进行彻底的重新设计和改造,以实现质的飞跃的改进,是对企业的业务流程进行根本性的再思考和彻底性的再设计,从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性的成就

流程管理包含三个层面:规范流程、优化流程和再造流程

系统设计

系统设计主要目的

为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法。简单点说,系统设计就是告诉你该怎么做,需求分析就是找到你要做什么,系统设计就是告诉你怎么做

系统设计方法

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

系统设计的主要内容

概要设计、详细设计。

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

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

系统设计基本原理

抽象化: 系统设计中也会将复杂的问题分成更小、更易管理的部分。这样做能让我们关注重要的细节,同时不被不必要的复杂性所困扰。

自顶而下,逐步求精: 先考虑整体框架,然后逐步添加细节,以确保每个部分都被仔细设计和优化。

信息隐蔽:在系统设计中,我们可以隐藏复杂的内部细节,只暴露必要的信息给其他部分。这样能够降低不同模块之间的相互影响,使系统更易于管理和维护。

模块独立(高内聚低耦合): 系统设计中的各个部分应该是独立的,即每个模块都有自己的功能并且尽可能不依赖其他模块。高内聚表示模块内部的元素彼此紧密相关,低耦合表示模块之间的依赖尽可能降低

衡量模块独立程度的标准有两个:耦合性和内聚性

内聚程度,模块内

偶然内聚 无直接关系
逻辑内聚 逻辑相似,参数决定
时间内聚 同时执行动作
过程内聚 指定的过程顺序
通信内聚 相同的数据结构,相同输入输出
顺序内聚 顺序执行,前一个输出是下一个输入
功能内聚 共同作用,缺一不可

耦合程度,模块之间

无直接耦合 无直接关系
数据耦合 模块间调用关系,传递数据值调用
标记耦合 传递数据结构
控制耦合 传递的是控制变量,执行另一个模块内部的某一功能
外部耦合 软件外部环境
公共耦合 公共数据结构
内容耦合 模块内部关联

系统设计基本原则

保持模块的大小适中: 系统中的模块也应该适中,不要太大也不要太小。这样做可以使每个模块的功能清晰,并且易于理解、测试和维护。

尽可能减少调用的深度: 在系统设计中,减少调用深度意味着尽量减少程序的层层嵌套,以避免复杂的调用关系,使代码更清晰和高效。

多扇入,少扇出: 在系统设计中,模块应该允许多个模块调用它(多扇入),但它本身应尽量少调用其他模块(少扇出),以减少模块

之间的复杂关系。

单入口,单出口:这样可以使模块的功能和接口更清晰,不容易引入混淆和错误。

模块的作用域应该在模块之内: 模块的功能应该限制在模块内部,不要让外部模块直接访问内部的细节。这有助于封装和隐藏内部逻辑,防止外部干扰。

功能应该是可预测的: 使用者在调用一个模块时应该能够合理地预期它会发生什么,从而避免产生混淆和不可预知的结果

人机界面设计

三大黄金原则:

置于用户的控制之下

减少用户的记忆负担

保持界面的一致性