系统设计
软件设计包括四个独立,又联系的活动:数据设计软件结构设计,人机界面设计,过程设计
业务流程设计
图工具
程序流程图(Program Flow Diagram,PFD):它独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。任何复杂的程序流程图都应该由顺序、选择和循环结构组合或嵌套而成
IPO图:也是流程描述工具,用来描述构成软件系统的每个模块的输入、输出和数据加工。数据流图其实就是一种IPO图
N-S图:比较容易表示嵌套和层次关系,并具有强烈的结构化特征。但是当问题很复杂时,N-S图可能很大,因此不适合于复杂程序的设计
问题分析图(PAD):是一种支持结构化程序设计的图形工具。PAD具有清晰的逻辑结构、标准化的图形等优点,更重要的是,它引导设计人员使用结构化程序设计方法,从而提高程序的质量
设计分类
业务流程管理(BPM):是一种方法论,用于优化、管理和自动化组织内的业务流程。它涉及识别、建模、分析和优化业务流程,以实现更高效、灵活和协调的运作。BPM关注整个业务流程的管理,包括流程的执行、监控、优化和自动化
业务流程重组(BPR):BPR是更为激进的方法,它着眼于对现有业务流程进行彻底的重新设计和改造,以实现质的飞跃的改进,是对企业的业务流程进行根本性的再思考和彻底性的再设计,从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性的成就
流程管理包含三个层面:规范流程、优化流程和再造流程
系统设计
系统设计主要目的
为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法。简单点说,系统设计就是告诉你该怎么做,需求分析就是找到你要做什么,系统设计就是告诉你怎么做
系统设计方法
结构化设计方法,面向对象设计方法。
系统设计的主要内容
概要设计、详细设计。
概要设计基本任务:外部设计,又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。还需要产出概要设计说明书
详细设计的基本任务:内部设计,模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审
系统设计基本原理
抽象化: 系统设计中也会将复杂的问题分成更小、更易管理的部分。这样做能让我们关注重要的细节,同时不被不必要的复杂性所困扰。
自顶而下,逐步求精: 先考虑整体框架,然后逐步添加细节,以确保每个部分都被仔细设计和优化。
信息隐蔽:在系统设计中,我们可以隐藏复杂的内部细节,只暴露必要的信息给其他部分。这样能够降低不同模块之间的相互影响,使系统更易于管理和维护。
模块独立(高内聚,低耦合): 系统设计中的各个部分应该是独立的,即每个模块都有自己的功能并且尽可能不依赖其他模块。高内聚表示模块内部的元素彼此紧密相关,低耦合表示模块之间的依赖尽可能降低
衡量模块独立程度的标准有两个:耦合性和内聚性
内聚程度,模块内
偶然内聚 | 无直接关系 |
---|---|
逻辑内聚 | 逻辑相似,参数决定 |
时间内聚 | 同时执行动作 |
过程内聚 | 指定的过程顺序 |
通信内聚 | 相同的数据结构,相同输入输出 |
顺序内聚 | 顺序执行,前一个输出是下一个输入 |
功能内聚 | 共同作用,缺一不可 |
耦合程度,模块之间
无直接耦合 | 无直接关系 |
---|---|
数据耦合 | 模块间调用关系,传递数据值调用 |
标记耦合 | 传递数据结构 |
控制耦合 | 传递的是控制变量,执行另一个模块内部的某一功能 |
外部耦合 | 软件外部环境 |
公共耦合 | 公共数据结构 |
内容耦合 | 模块内部关联 |
系统设计基本原则
保持模块的大小适中: 系统中的模块也应该适中,不要太大也不要太小。这样做可以使每个模块的功能清晰,并且易于理解、测试和维护。
尽可能减少调用的深度: 在系统设计中,减少调用深度意味着尽量减少程序的层层嵌套,以避免复杂的调用关系,使代码更清晰和高效。
多扇入,少扇出: 在系统设计中,模块应该允许多个模块调用它(多扇入),但它本身应尽量少调用其他模块(少扇出),以减少模块
之间的复杂关系。
单入口,单出口:这样可以使模块的功能和接口更清晰,不容易引入混淆和错误。
模块的作用域应该在模块之内: 模块的功能应该限制在模块内部,不要让外部模块直接访问内部的细节。这有助于封装和隐藏内部逻辑,防止外部干扰。
功能应该是可预测的: 使用者在调用一个模块时应该能够合理地预期它会发生什么,从而避免产生混淆和不可预知的结果
人机界面设计
三大黄金原则:
置于用户的控制之下
减少用户的记忆负担
保持界面的一致性