软件工程技术--第五章 详细设计

article/2025/8/17 16:19:02

第五章 详细设计

5.1详细设计的任务与原则

详细设计(又称为过程设计或模块设计),是编码的前导。

详细设计的根本目标是:

  • 确定应该怎样具体地实现所要求的系统。
  • 经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

详细设计的任务是:

​ 根据概要设计说明文档,确定每一个模块的数据结构及具体算法,并选用合适的描述工具,将其清晰准确地表达出来。

  • 详细设计的结果在很大程度上决定着最终的程序代码的质量。

详细设计的任务

主要确定每个模块具体执行过程,即:

  1. 为每个模块进行详细的算法设计
  2. 为模块内的数据结构进行设计
  3. 数据库进行物理设计。
  4. 其他设计,如:代码设计、输入/输出格式设计、人机对话设计。
  5. 编写详细设计说明书。
  6. 评审

详细设计的原则

(1)采用自顶向下、逐步求精的程序设计方法。

(2)使用三种基本控制结构完成程序设计。

(3)设计人员组织结构采用“外科医生——助手”模式。

​ 在这种组织结构中,外科医生和助手都应了解相关设计内容,但外科医生在设计中起主导作用,是设计的技术负责人,助手只起技术支持作用。此种模式区别于传统的“平等组合”模式,使设计责任集中在少数人身上,避免了因观点不同而造成的设计策略和接口的差异。

详细设计的工具

进行详细设计时常用三种工具:图形、表格和语言

  • 图形工具:程序流程图、N-S图、问题分析图(PAD图)

  • 表格工具:判定表、判定树

  • 语言工具:过程设计语言(PDL)

  1. 程序流程图

优点:直观清晰、易于使用,应用广泛。

缺点:反映的是最后的结果,不易反映逐步求精的过程;

​ 可以随心所欲地画控制流程线的流向,容易造成非结构化的程序结构。

​ 不易表示数据结构。

克服缺陷画流程图时只用5种基本控制结构。(顺序结构、选择结构、多分支选择结构、当循环结构、直到循环结构)

  1. 盒图(N-S图)
  • 特点:
    • 功能域明确
    • 不可能任意转移控制
    • 容易确定局部和全程数据的作用域
    • 容易表示嵌套关系和模块的层次结构
  • 仅由顺序、选择、循环三种基本结构组成。
  • 优点:
    • 只能描述结构化程序所允许的标准结构。
    • 程序结构用方框表示,清晰可见。
    • 有助于程序员养成结构化的设计思想;
  • 缺点:
    • 当程序内嵌套层数增多时,内层方块越画越小,增加了画图的困难,并使图形的清晰性受到影响。
  1. 问题分析图(PAD图)
  • 用二维树形结构图表示程序的控制流,控制流程自上而下,从左往右执行。
  • 优点:
    • 程序结构清晰,结构化程度高。
    • 支持自顶向下,逐步求精的设计方法。
    • 既可以表示程序逻辑,也可描绘数据结构。
    • 用PAD图表现程序逻辑,易读易写,使用方便。
    • 容易转换成高级语言源程序,也可用软件工具实现自动转换。
  • 特点:
    • 用PAD图表示的程序从最左边的竖线的上端开始,自上而下,自左向右执行。
    • 用PAD设计的软件结构,必然是结构化的程序结构。
    • 结构清晰,层次分明。
    • PAD既可以表示程序逻辑,也可用于描绘数据结构。
    • PAD图可以表示自顶向下,逐步求精的设计方法,开始时对某个处理可以用语句标号表示,其具体过程用def逐步增加,直到详细设计完成。
  1. 判定表
  • 如果数据流处理时需要依赖多个逻辑条件的取值,用判定表来描述比较合适。
  • 判定表的组成结构
    • 左上部列出所有条件。
    • 左下部列出所有可能做的工作。
    • 右上部每一列表示各种条件的一种可能组合,所有列表示条件组合的全部可能情况。
    • 右下部的每一列是和每一种条件组合所对应的应做的工作。
  • 判定表中的符号
    • 右上部用“T”表示条件成立,用“F”表示条件不成立,空白表示条件成立与否不影响。
    • 右下部画“X”或“√”等都可表示做该行左边列出的那项工作,空白表示不做该项工作。
条件定义①条件的值②
动作定义③特定条件下相应的动作的值④
  1. 判定树
  • 判定树是用一种树图形方式来表示多个条件、多个取值所应采取的动作。
    • 它是判定表的变种;
    • 优点在于形式简单,含义明确;
    • 是一种常用的详细设计的工具
    • 缺点:简洁性很差、分之次序影响判定树的简洁度。
  1. PDL
  • 也称伪代码,是一种软件设计语言,介于自然语言和形式化语言之间。
  • PDL的结构和一般的程序类似,包括注释部分、数据说明部分过程部分
  • 与程序完全不同,仅仅是一种算法描述语言
  • 具有严格的外层语法结构,如if then-else、while-do、repeat、until等,用来定义控制结构和数据结构;
  • 内层语法则灵活自由,可采用自然语言描述。
  • 特点:易编写,易理解,容易转换成源程序。

5.2用户界面设计

  • 用户界面通常也称为人机界面。
  • 用户界面友好性属软件性能特性,独立于所有具体功能。
  • 用户界面是否友好很大程度由人的主观因素决定。
  • 人机界面设计是接口设计的一个重要的组成部分。对于交互式系统来说,人机界面设计数据设计体系结构设计过程设计一样重要。人机界面的质量直接影响用户对软件产品的接受程度,因此,对人机界面设计必须给予足够重视。
  • 综上所述,用户界面设计应考虑以下问题:
  1. 系统响应时间 (长度,易变性)

  2. 用户帮助信息 (集成,附加,上下文)

  3. 出错信息处理 (如何办, 用户心理)

  4. 命令交互 (多媒体-图文声光,自定义宏指令,CTRL)

  • 系统响应时间

    • 是指从用户完成某个控制动作,到软件给出预期的响应之间的这段时间
    • 它有两个重要属性:
      • 长度:响应时间的长短;(适中
      • 易变性:系统响应时间相对于平均响应时间的偏差。(要小
        • 这是更重要的属性
        • 稳定在1秒的响应时间比从0.1秒2.5秒变化的响应时间要好。
  • 用户帮助信息

    • 帮助是必须的。帮助设施可分为两类:
      • 集成的帮助设施:从一开始就设计在软件里面;操作错误或有问题时,自动出现。 内存不足、打印机未连接等信息
      • 附加的帮助设施:是系统建成后再添加到软件中的, 是一个查询能力有限的联机用户手册(如:Word、Excel中的帮助), 通常集成的帮助设施优于附加的帮助设施。
  • 出错信息处理

    • 出错信息或警告信息,是出现问题时交互式系统给出的“坏消息
    • 出错信息应该具备如下的属性:
      • 以用户可以理解的术语描述;(打印机未连接
      • 提供如何从错误中恢复的建设性意见
      • 指出错误可能导致的不良后果;(例如破坏数据文件
      • 伴随听觉和视觉上的提示——特殊图像,颜色,闪烁等;
      • 信息不能带有指责用户的色彩。
  • 命令交互

    • 命令交互曾经广泛地用于各种应用软件。 (Unix,Dos)
    • 现在面向图形的界面出现后(Window,Office系列)使用减少
    • 但是许多高级用户仍然偏爱这个方式。
    • 在多数情况下,用户可以从菜单中选择软件功能, 也可以用键盘输入相应的功能。
    • 在提供命令交互方式时,必须考虑下列问题:
      • 每个菜单选项都有对应的命令。(常用的有:复制)
      • 采用何种命令形式,三个选择:控制序列(ctrl+c),功能键(F1),键入命令(ping)
      • 用户是否定制或缩写命令?
      • 所有的应用软件尽可能有一致的命令使用方法
      • 学习和记忆命令的难度有多大

5.3用户界面设计过程

  • 用户界面设计是一个迭代的过程,包括以下步骤:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hwd3HWis-1665991749090)(https://gitee.com/wcy0220/csdn/raw/master/img/%E8%BD%AF%E5%B7%A511.png)]

  • 用户界面设计主要依靠设计者的经验,总结众多设计者的经验,得出的设计指南有助于设计者设计出高效友好的人机界面

5.4用户界面设计基本原则

  1. 可靠性:提供可靠的、能有效减少用户出错的、容错性好的环境。用户出错时能检测出错误、提供出错信息,给用户改正错误的机会。
  2. 简单性:输入、输出要简单易懂;系统界面风格要一致;命令关键词的含义、命令的格式、提示信息、输入输出格式等的一致性。
  3. 易学习,易使用性:提供多种学习和使用方式,应能灵活地适用于所有的用户。
  4. 立即反馈性:用户界面对用户的所有输入都应立即做出反馈。

5.5用户界面设计指南

  • 用户界面设计主要依靠设计者好的经验
  • 界面分类:
    1. 一般交互界面
    2. 信息显示界面
    3. 数据输入界面

一、一般交互界面设计指南:信息显示、系统整体控制、数据输入。

  1. 保持一致性: 菜单选择、命令输入、数据显示以及其他功能,使用一致的格式。
  2. 提供有意义的反馈帮助信息:向用户提供视觉的和听觉的反馈,以保证在用户和系统之间建立双向通信。例如:把A盘格式化时,按下“开始” 按钮,就听见铃声,并出现,警告:格式化将删除该磁盘上的所有数据。 若想格式化该磁盘,请单击“确定”, 若想退出,请单击“取消”
  3. 要求用户确认:执行较大破坏性动作之前要求用户确认。
  4. 允许取消大多数操作:每个交互系统都应该能方便的取消已完成的操作。
  5. 减少两次操作之间必须记忆的信息量:不应该期待用户能记住下一步操作中。
  6. 提高对话、移动和思考的效率:减少用户击键的次数(敲键盘)、屏幕布局应该有利于减少鼠标移动的距离
  7. 允许用户犯错误,并给出错误提示信息:系统应该能保护自己不受严重错误的破坏。
  8. 按功能对动作分类,并据此设计屏幕布局:例如:编辑菜单:有复制、剪切、粘贴、查找等有关编辑功能;插入:页码、符号、对象(公式)等插入功能。
  9. 提供帮助设施。
  10. 命令名应该用简单动词或动词短语:过长的命令名难以识别和记忆,也会占用过多的显示空间
  • 交互界面类型—①菜单界面:
    • 显示方式正文菜单、图标菜单、正文图标混合菜单
    • 屏幕位置操作风格分类:固定、浮动/弹出
  • 交互界面类型—②图象界面:
    • 在用户界面中,加入丰富多彩画面,更加行象地为用户提供有用的信息,达到可视化目的。主要的处理操作有:图像隐蔽再现屏幕滚动图案显示动画等。
  • 交互界面类型—③对话框:
    • 对话形式:必须回答式、无需回答式、警告式。
    • 对话实现方式:标准对话、定做式对话。
  • 交互界面类型—④窗口式界面:
    • 也称视图区,是虚拟屏幕。一个实用窗口,可包含部件:菜单区,图标区,标题区移动区,大小区,退出区用户工作区横向滚动区纵向滚动区

二、信息显示界面设计指南:

  • 界面显示的基本元素:数据、字符、图形、报告

  • 界面显示的信息要简单,明确,完整,清晰;

  • 多种方式显示—文字,图片,声音,大小,颜色等;

  • 只显示与当前工作内容有关的信息;

  • 使用一致的标记、标准缩写和适当的颜色

  • 产生有意义的出错信息;

  • 使用大小写、缩进、和文本分组以帮助理解。

  • 使用模拟(图形图像)方式表示信息。

  • 使用窗口分隔不同类型的信息。

  • 每一屏的数据量不超过屏幕的30%。

三、数据输入界面设计指南:主要从输入速度减少出错率考虑

  • 尽量减少用户输入工作量。
  • 保持信息显示和数据输入的一致性。
  • 允许用户自定义输入: 如定义警告信息,动作确认。
  • 允许用户选择输入方式:键盘输入或鼠标输入。
  • 当前动作语境中,不适用的命令不起作用。
  • 让用户控制交互流,如用户能跳过不必要的动作。
  • 为所有输入动作提供帮助。
  • 消除冗余的输入。

5.6数据代码设计

  1. 代码的定义和作用:码是为了对数据进行识别、分类、排序等操作所使用的数字、文字或符号。

  2. 代码的特性:

    • 简洁性:减少存储空间,消除二义性
    • 保密性:数据的编码规则保密
    • 可扩充性:涉及代码留有扩充的空间
    • 持久性:代码在生命周期内长期有效
  3. 代码设计原则:

    • 以下可参考实用规则:
    1. 标准化:国际标准、国家标准、部颁标准或习惯标准
    2. 惟一性
    3. 可扩充性
    4. 简单性
    5. 规范化
    6. 适应性
    • 实用规则:
      1. 只有两个特征值的,可用逻辑值代码,如电路的闭合、断开。
      2. 特征值的个数不超过10时,可用数字代码。
      3. 特征值的个数不超过20时,可用字母代码。
      4. 数字、字母混用时,要注意区分相似的符号。
      5. 若代码会出现颠倒使用的情况时,要注意区分数字6和数字9、字母M和字母W。
      6. 代码可能会正反使用时,要注意区分字母p和字母q。
  4. 代码种类:

    • 顺序码:发票、银行支票
    • 信息块:学号、行政区划代码
    • 归组分类码
    • 助记码:TV-C-46 46英寸彩色电视机
    • 缩写码:HEB代表河北 BJ001
    • 组合码:几种代码形态合成编码
  5. 代码设计方法:

    • 基本步骤如下:
      1. 确定编码对象
      2. 明确编码目的
      3. 确定代码的个数
      4. 确定代码使用范围和使用期限
      5. 确定代码体系和代码位数
      6. 确定编码规则
      7. 编写代码
      8. 编写代码词典

5.7数据的安全设计

  • 软件系统发生的安全事故类型。
  • 数据安全控制方法:
    1. 检查数据的正确性、完整性
    2. 检查用户使用权限
    3. 系统运行日志
    4. 监督检查违规行为
    5. 加密
    6. 数据安全受破坏时的措施

5.8详细设计说明书

详细设计说明书参考格式:

  • 详细设计说明书又称程序设计说明书。
  • 编制本说明书的目的,是为了说明一个软件系统各个层次中的每一个程序(每个模块或子程序)的设计思路,如实现算法、逻辑流程等。
  • 计算机软件产品开发文件编制指南(GB8567-2006)中给出了详细设计说明书的编写提示。

编写详细设计说明书的步骤:

  • 确定每一个模块所用的算法,选择某种适当工具表达算法过程,写出详细过程性描述;
  • ②确定每一个模块使用的数据结构;(数据库)
  • ③确定模块接口细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及输入数据、输出数据及局部数据的全部细节;
  • ④要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。
  • ⑤在详细设计结束时,把上述结果写入详细设计说明书,并且通过复审形成正式文档,形成交付给下一阶段(软件实现阶段)的工作依据。

详细设计小结

  • 了解详细设计的 任务 、过程、内容
  • 能熟练应用3类共6种 过程设计工具(程序流程图,盒图NS,问题分析图PAD,判定表,判定树,过程设计语言PDL)。
  • 了解用户界面的重要性及其设计原则。
  • 能够编写详细设计说明书文档。

http://chatgpt.dhexx.cn/article/kjbUrKoW.shtml

相关文章

1 画图软件设计概述

本人这段时间完成了一个小的绘图软件的设计;主要的功能包括: 1、文件操作(打开、关闭、保存、打印、等) 2、编辑功能 自由画笔,画点、直线、矩形、等 橡皮擦 撤销、恢复 3、查看功能,图片的放大、缩小…

基于Java实现的绘图软件工具设计

基于Java实现的绘图软件工具设计 演示视频 基于Java设计的绘图工具 01. 题目要求 做一个简单的绘图工具,以CAD的方式操作,能放置直线、矩形、圆和文字,能选中图形,修改参数,如颜色等,能拖动图形和调整大小…

linux画板软件下载,Drawing画图软件

Drawing Linux(简单画图软件)让Linux用户有像win画图工具一样的体验,Linux下一款简单的绘图程序,类似Windows自带的画图,支持PNG,JPEG和bmp文件! 软件介绍 该应用程序是一个基本的图像编辑器,类似于Microso…

【软考-软件设计师】(下午题).

【软考-软件设计师】(下午题). 一,数据流图 二,数据库 三,UNL 四,算法题 ,c语言 五,c / java ,程序填空 数据流图 数据流图基本概念 数据流图:没有联系() …

基于JavaSwing开发画图软件 课程设计 小作业 大作业源码

基于JavaSwing开发画图软件(大作业/课程设计) 开发环境: Windows操作系统 开发工具:MyEclipse/eclipse/ideaJdk 运行效果图: 基于JavaSwing开发画图软件(大作业/课程设计) 开发环境: Windows操作系统 开…

2 画图软件 界面设计

打开Qt creator新建项目 (1)选择Qt控件项目–> Qt Gui应用(为了适合新手我尽量附图) (2)点击确定后出现项目名称和创建路径大家自己选择喽。我起的名称是pen 然后一直点击下一步就好了我们双击界面…

画图工具的认识及应用计算机,认知画图软件教学设计

认知画图软件教学设计 引导语:教学设计有利于教师主导作用的发挥,有利于按教学目标的要求来组织教学。以下是百分网小编整理的两篇不同的认知画图软件的教学设计,以供参考学习,欢迎阅读! 设计一 教学目的与要求 1、学会进入与正常…

计算机画图软件教学教案,画图软件教学设计

画图软件教学设计 学会用作图软件作图很重要!下面是百分网小编收集整理的画图软件教学设计,希望可以帮助到你! [教学目标] (1)学会进入与正常退出Windows 98的“画图”窗口。 (2)认识Windows 98“画图”窗口的组成。 (3)初步认识绘图工具箱。 [课时安排]1课时。 [教…

盘点年度最佳10大顶级绘图软件,满足你99%的图表需求,赶紧收藏

有效的沟通,从来都不是字数与数据的堆砌,有时一张图表的价值远高于成千的文字描述,将复杂的信息讲明白,便于浏览,让人一目了然就是信息视觉化的最佳效果。 老李我刚开始工作的时候,习惯什么都直接放上数据&…

dind(docker in docker)镜像-使用Docker学习Docker

文章目录 使用Docker学习Docker一、搭建演示环境二、关联基础docker image 文件系统什么是image layerDockerfile VOLUME(数据卷) 指令Volume命令的使用 什么是container-diff使用 三、演示时间探索 docker create 命令探索 docker start 命令探索 docke…

Docker学习1 - Docker

Docker 在部署中的重要性 直接把程序安装或部署在Linux操作系统上面,很容易引发资源冲突程序卸载不干净,导致无法安装或部署新程序每次部署之前要安装很多软件,修改复杂的配置文件无法让服务器硬件资源实现多租户服务增大了在Linux系统上部署…

Docker学习记录-01

Docker 的基本组成 镜像(image): 好比一个模板,tomcat -> run -> tomcat01 (container) 镜像可以创建多个容器 容器(container): 容器可以启动,停止,删除,基本命令 容器就是一个简易的Linux系统 仓库(repository): 存…

docker学习之Ubuntu系统部署docker

目录 安装环境: 支持安装docker的Ubuntu操作系统版本 卸载旧版本的docker 安装docker所需要的依赖包 添加Docker的官方GPG密钥: 设置docker的镜像仓库 安装docker引擎 测试docker 卸载Docke ​​​​安装完毕。 安装环境: Linux系…

Docker学习2

文章目录 Docker学习Docker镜像是什么特点Docker镜像commit操作补充 Docker容器数据卷是什么能干嘛数据卷容器内添加 数据卷容器 DockerFile解析是什么DockerFile构建过程解析基础知识Docker执行DockerFile的大致流程 DockerFile体系结构(保留字指令)Doc…

Docker学习自我总结(一)

以下内容皆参考至狂神说docker学习视频 一、初识dockerfile ​ docker镜像创建时需要使用dockerfile,dockerfile相当于一个命令脚本,通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层&…

Docker 学习笔记

Docker 学习笔记 Docker 安装CentOS 安装 DockerUbuntu 安装 Docker Docker 常用命令 Docker 实操记录Docker 安装mysqlDocker 部署 jupyter notebook Docker 安装 CentOS 安装 Docker 以下是docker官网的安装教程,我只是将命令都提取出来 按下列顺序逐步输入即可…

docker 学习

centos7安装docker 步骤 1、Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。 社区版按照stable和edge两种方式发…

docker学习1

1.docker常用管理命令 格式 docker image 【】 ls 列出镜像 bulid 构建镜像利用dockerfile history 查看 inspect 显示一个或多个镜像的详细信息 pull 从镜像仓库拉取镜像 rm 移除一个或多个镜像 push 推送一个镜像到镜像仓库 prune 移除没有被…

docker 学习总结

只要学不死,就往死了学。 docker学习目录 docker概述docker安装docker基本组成 镜像命令容器命令操作命令 docker镜像容器数据卷dockerFiledocker 网络原理IDEA整合dockerdocker composerdocker swarmcI\cd docker概述 痛点:解决跨平台,服…

Docker学习总结

Docker学习总结 一、Docker简介二、Docker安装2.1 安装步骤2.2 卸载Docker2.3 配置阿里云镜像加速 三、Docker常用命令3.1 帮助命令3.2 镜像命令3.3 容器命令3.4 其他常用命令 四、Dockerfile4.1 DockerFile简介4.2 DockerFile体系结构(保留字指令)4.3 案例4.3.1 Base镜像(scra…