架构-软件工程4-设计
概述
系统设计主要目的:为系统制定蓝图,在各种技术和实施方法中权衡利弊精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法。
人机界面设计
人机界面设计三大黄金原则:
置于用户控制之下
- 以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式
- 提供灵活的交互
- 允许用户交互可以被中断和撒销
- 当技能级别增加时可以使交互流水化并允许定制交互
- 使用户隔离内部技术细节
- 设计应允许用户和出现在屏幕上的对象直接交互
减少用户的记忆负担
- 减少对短期记忆的要求
- 建立有意义的缺省
- 定义直觉性的捷径
- 界面的视觉布局应该基于真实世界的隐喻
- 以不断进展的方式揭示信息
保持界面的一致性
- 允许用户将当前任务放入有意义的语境
- 在应用系列内保持一致性
- 如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它
结构化设计
结构化设计可分为:概要设计、详细设计
- 概要设计【外部设计】:又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。+概要设计书
- 详细设计【内部设计】:确定每个具体任务选择适当的技术手段和处理方法,模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审。
软件结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。
它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模块化的过程。
概要设计
设计原则
- 保持模块的大小适中
- 尽可能减少调用的深度
- 多扇入,少扇出
当扇出过多时,可考虑拆分 - 单入口,单出口
结构化程序设计的三种基本控制结构就是:顺序、分支和循环。通过这三种,可以构造出任何单入口单出口的程序 - 模块的作用域应该在模块之内,模块独立性原则(藕合性和内聚性)
- 功能应该是可预测的
模块的四个要素(了解)
- 输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个块从调用者那儿取得输入,进行加工后再把输出返回调用者。
- 处理功能:指模块把输入转换成输出所做的工作。
- 内部数据:指仅供该模块本身引用的数据。
- 程序代码:指用来实现模块功能的程序。
设计基本原理
- 抽象
- 模块化
- 信息隐蔽
- 模块独立(高内聚,低耦合)
衡量模块独立程度的标准:耦合性和内聚性
内聚程度由低到高如下表【必考1分】
耦合程度由低到高如下表【必考1分】
系统结构图
系统结构图(SC)又称为模块结构图,它是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构。
图与开发阶段的对应关系:
1、需求分析阶段:数据流图。
2、概要设计阶段:模块结构图、层次图和 HIPO 图。
3、详细设计阶段:程序流程图、伪代码、盒图。
详细设计
基本步骤
- 分析并确定输入/输出数据的逻辑结构。
- 找出输入数据结构和输出数据结构中有对应关系的数据单元。
- 按一定的规则由输入、输出的数据结构导出程序结构。
- 列出基本操作与条件,并把它们分配到程序结构图的适当位置。
- 用伪码写出程序。
工具
详细设计的表示工具有图形工具、表格工具和语言工具。其中图形工具有业务流图、程序流程图(PFD)、PAD图、NS流程图。
- 程序流程图又称为程序框图。用方框表示一个处理步骤,菱形表示一个逻辑条件,箭头表示控制流向。
- 优点:结构清晰,易于理解,易于修改。
- 缺点:只能描述执行过程而不能描述有关的数据
- NS 流程图,也称为盒图,是一种强制使用结构化构造的图示工具,也称为方框图。其具有以下特点:功能域明确、不可能任意转移控制、很容易确定局部和全局数据的作用域、很容易表示嵌套关系及模板的层次关系。
- 问题分析图(ProblemAnalysisDiagram,PAD)是一种改进的图形描述方式,可以用来取代程序流程图,相比程序流程图更直观,结构更清晰。最大的优点是能够反映和描述自顶向下的历史和过程。PAD 提供了5种基本控制结构的图示,并允许递归使用。
- 过程设计语言(ProcessDesignLanguage,PDL)也称为结构化语言或伪代码(pseudocode),它是一种混合语言,采用自然语言的词汇和结构化程序设计语言的语法,用于描述处理过程怎么做,类似于编程语言。过程设计语言用于描述模块中算法和加工逻辑的具体细节,以便在开发人员之间比较精确地进行交流。
面向对象设计
基本过程
类的分类
设计原则
- 单一职责原则:设计目的单一的类
- 开放-封闭原则:对扩展开放,对修改封闭
- 李氏(Liskov)替换原则:子类可以替换父类
- 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
- 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
- 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
- 迪米特(Demeter)原则(最少知识原则):一个对象应当对其他对象有尽可能少的了解
架构-软件工程4-设计
http://060800.xyz/2025/08/06/架构/架构-软件工程4-设计/