架构-软件工程4-设计

概述

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

人机界面设计

人机界面设计三大黄金原则

置于用户控制之下

  • 以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式
  • 提供灵活的交互
  • 允许用户交互可以被中断和撒销
  • 当技能级别增加时可以使交互流水化并允许定制交互
  • 使用户隔离内部技术细节
  • 设计应允许用户和出现在屏幕上的对象直接交互

减少用户的记忆负担

  • 减少对短期记忆的要求
  • 建立有意义的缺省
  • 定义直觉性的捷径
  • 界面的视觉布局应该基于真实世界的隐喻
  • 以不断进展的方式揭示信息

保持界面的一致性

  • 允许用户将当前任务放入有意义的语境
  • 在应用系列内保持一致性
  • 如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它
    三大黄金原则

结构化设计

结构化设计可分为:概要设计、详细设计

  • 概要设计【外部设计】:又称为系统总体结构设计,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。+概要设计书
  • 详细设计【内部设计】:确定每个具体任务选择适当的技术手段和处理方法,模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审。

软件结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。
它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模块化的过程。

概要设计

设计原则

  • 保持模块的大小适中
  • 尽可能减少调用的深度
  • 多扇入,少扇出
    多扇入少扇出
    当扇出过多时,可考虑拆分
  • 单入口,单出口
    结构化程序设计的三种基本控制结构就是:顺序、分支和循环。通过这三种,可以构造出任何单入口单出口的程序
  • 模块的作用域应该在模块之内,模块独立性原则(藕合性和内聚性)
  • 功能应该是可预测的

模块的四个要素(了解)

  • 输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个块从调用者那儿取得输入,进行加工后再把输出返回调用者。
  • 处理功能:指模块把输入转换成输出所做的工作。
  • 内部数据:指仅供该模块本身引用的数据。
  • 程序代码:指用来实现模块功能的程序。

设计基本原理

  • 抽象
  • 模块化
  • 信息隐蔽
  • 模块独立(高内聚,低耦合)
    衡量模块独立程度的标准:耦合性和内聚性
    内聚程度由低到高如下表【必考1分】
    内聚程度由低到高
    耦合程度由低到高如下表【必考1分】
    耦合程度由低到高

系统结构图

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

图与开发阶段的对应关系:
1、需求分析阶段:数据流图。
2、概要设计阶段:模块结构图、层次图和 HIPO 图。
3、详细设计阶段:程序流程图、伪代码、盒图。

详细设计

基本步骤

  1. 分析并确定输入/输出数据的逻辑结构。
  2. 找出输入数据结构和输出数据结构中有对应关系的数据单元。
  3. 按一定的规则由输入、输出的数据结构导出程序结构。
  4. 列出基本操作与条件,并把它们分配到程序结构图的适当位置。
  5. 用伪码写出程序。

工具

详细设计的表示工具有图形工具、表格工具和语言工具。其中图形工具有业务流图、程序流程图(PFD)、PAD图、NS流程图

  • 程序流程图又称为程序框图。用方框表示一个处理步骤,菱形表示一个逻辑条件,箭头表示控制流向。
    • 优点:结构清晰,易于理解,易于修改
    • 缺点:只能描述执行过程而不能描述有关的数据
  • NS 流程图,也称为盒图,是一种强制使用结构化构造的图示工具,也称为方框图。其具有以下特点:功能域明确、不可能任意转移控制、很容易确定局部和全局数据的作用域、很容易表示嵌套关系及模板的层次关系
  • 问题分析图(ProblemAnalysisDiagram,PAD)是一种改进的图形描述方式,可以用来取代程序流程图,相比程序流程图更直观,结构更清晰。最大的优点是能够反映和描述自顶向下的历史和过程。PAD 提供了5种基本控制结构的图示,并允许递归使用。
  • 过程设计语言(ProcessDesignLanguage,PDL)也称为结构化语言或伪代码(pseudocode),它是一种混合语言,采用自然语言的词汇和结构化程序设计语言的语法,用于描述处理过程怎么做,类似于编程语言。过程设计语言用于描述模块中算法和加工逻辑的具体细节,以便在开发人员之间比较精确地进行交流。

面向对象设计

基本过程

面向对象设计结构图

类的分类

类的分类

设计原则

  • 单一职责原则:设计目的单一的类
  • 开放-封闭原则:对扩展开放,对修改封闭
  • 李氏(Liskov)替换原则:子类可以替换父类
  • 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
  • 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
  • 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
  • 迪米特(Demeter)原则(最少知识原则):一个对象应当对其他对象有尽可能少的了解

架构-软件工程4-设计
http://060800.xyz/2025/08/06/架构/架构-软件工程4-设计/
作者
砖头
发布于
2025年8月6日
许可协议