第五章:软件详细设计

2023-05-16

真是应了那句:白天游四方、晚上点灯补裤裆(捂脸),孩子睡了夜深人静了、我才是开始我的小笔记整理工作。。

详细设计是软件设计的第二阶段,这一阶段的工作,就是要对系统中的每个模块给出足够详细的过程性描述,故也称为过程设计)

目的:确定应该怎么具体实现所要求的系统经过这一阶段的设计工作,应该得出对目标系统的精确描述。具体的就是为了软件结构图中每一个模块确定采用的算法和快内数据结构。用某种选定的详细设计工具更清晰地描述,从而在编码阶段可以把这些描述直接翻译成某种程序设计语言,书写的源程序。

任务:要设计出程序的“蓝图”,以后程序将根据这个蓝图写出实际的代码。

5.2结构化程序设计

所使用的结构有:顺序、选择和重复3种

顺序结构:实现过程的步骤是任意算法说明的基础。

条件结构:提供按某些逻辑发生选择处理的条件

重复结构:提供循环处理

只有3种基本控制结构就能实现任何单入口单出口,且无死循环、死语句的程序。

结构化程序设计采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。

5.3详细设计工具

描述程序处理过程的工具称为详细设计工具,可以分为图形、表格和语言3类,对工具基本要求:提供对设计准确无歧义的描述,应能控制流程、处理功能、数据组织及其它方面的实现细节。从而在编码阶段能把对设计的描述直接翻译成程序代码

常用的详细设计工具:HIPO图、判定表、判定树前面章节已讲,现介绍新的如下:

程序流程图:

优点:易学、表达算法直观

缺点:不够规范,特别是使用箭头使质量受到很大影响因此必须加以限制,使其称为规范的详细设计工具。

为了使它能够描述结构化的程序限制只用前面所述的3种基本结构图。

例图5.1

程序流图的缺点:

1、本质上不是逐步求精的好工具,它诱使程序员过早考虑控制流程,而不去考虑程序的整体结构。

2、图中箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制,容易造成非结构化的程序结构。

3、程序流图不易表示数据结构和层次的结构。

5.3.2盒图 (N-S图)

N-S图的主要特点就是只能描述结构化程序所允许的标准结构图

例图5.2

N-S图的优点有

1、功能域表达明确,功能域从盒子图上可以明显看出来

2、很容易确定局部和全局数据的作用域

3、不可能随意转移控制。

4、很容易表达模块的层次结构并列出嵌套关系。

5、使软件人员遵守结构化程序设计的规定,自然地养成良好的程序设计风格。

5.3.3问题分析图(PAD图) 

PAD时一种算法描述工具,采用一种由左向右的二维树型结构图来描述程序的逻辑,图5.3PAD的基本控制结构

图5.3

 PAD优点如下:

1、用PAD图设计出来的程序必然是结构化程序

2、PAD图描绘的程序结构十分清晰,图最左面的竖线就是程序的主线,即第一层结构,随着程序的层次增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线,PAD图中竖线的条数就是程序的层次数。

3、PAD图的付款支持自顶向下,逐步求精的方法,左边层次中的内容可以抽象,然后用def从做向右逐步细化

4、用PAD途表示的程序逻辑易读、易懂、易记使用方便

5、即可表示程序逻辑,也可用于描绘数据结构。

6、可自动生成程序,利用软件工具自动完成,省去扔编码工作,有利于提高软件的可靠性和软件生产率。

图5.4PAD图将数组A(1)到A(10)从大到小进行选择排序的算法描述

5.3.4过程设计语言(PDL) 

过程设计语言也称为伪码,是一种用于描述模块算法设计和处理细节的语言,具有严格的关键字外层语法,用于定义控制结构和数据结构。

PDL特点:

1、关键字有固定语法,以便提供结构化的控制结构,数据说明和模块化的特征,通常在所有可能嵌套使用的控制结构的头和尾部都有关键字。

2、描述处理过程的说明性语言没有严格的语法限制

3、具有数据说明机制,既包括简单的数据结构(如简单变量和数组)包括复杂的数据结构(如链表或层次的数据结构)

4、具有规模定义和调用机制,从开发应根据系统编程所用的语种,说明过程设计语言表示的有关程序结构。

PDL程序结构

1、顺序结构

自然语言描述结构如下

处理s1

处理s2

...

处理sn

2、选择结构

If-else结构如下

if条件

处理s1

else

处理s2

endif

if-orif-else结构如下

if条件1

处理s1

orif  条件2

处理s2

else处理sn

endif

case结构如下:

case of

case(1)

处理s1

case(2)

处理s2

...

else处理sn

endcase

循环结构

for结构如下

forI=1to m

循环体

end for

while 结构如下

while条件

循环体

endwhile

until结构如下

repeat 

循环体

until条件

4、出口结构

escape结构如下

while条件

处理s1

cycle  i  if 条件

处理s2

endwhile

5、扩充结构

模块定义:procedure 模块名(参数)

return

end

模块调用定义 call 模块名(参数)

数据定义:de clare属性 变量多

注:属性有整列、实型、双精度、字符、指针、数组及结构类型

输入/输出定义 get(输入变量表) put(输出变量表)

5.4人机界面设计

本节对以下3个方面进行介绍:界面设计问题、界面设计原则、界面设计过程。

5.4.1人机界面设计问题

1、系统响应时间 属性:长度和易变性

2、用户帮助设施分为:集成和附加两类,集成一开始就设计在软件界面里面,附加:系统建成之后添加到软件中的。

3、出错信息处理:交互式系统给出错误信息或警告信息。

4、命令交互

5.4.2人机界面设计原则

可归为:界面简洁、控制摆放规范、颜色统一、符合用户习惯

3条用户界面设计的重要准则,称为黄金指导准则

1、让用户驾驭软件,而不是软件驾驭用户

2、尽可能减少用户的记忆负担

3、保持界面的一致性

5.4.3人机界面设计过程

1、建立任务的目标和意图

2、目标和意图明确后,建立界面需求规格模型。

3、以界面需求模型为依据,创建用户界面原型

4、用户使用评估该界面原型

5、设计者根据用户的意见修改设计并实现下一原型。

6、不断进行下去,直到用户感到满意为止。

5.5详细设计说明书

1、引言部分和前两章一样,不多赘述

2、程序描述:(所有模块给出以下说明)

2.1功能

2.2性能

2.3输出和输入项目

2.4算法:模块所选用的算法

2.5程序逻辑:详细描述各个模块实现的算法可以采用流程图NS图、PDL语言、PAD图、判定表和判定树等描述算法的图表。

2.6接口

2.7存储分配

2.8限制条件

2.9测试要点:给出测试模块的主要测试要求

本章小结:

详细设计阶段的任务是确定如何实现所要求的目标系统,将总体设计阶段得到的模块算法用详细审计工具:程序流程图、NS图、PAD图和PDL语言描述处来,即设计出程序蓝图,从而在下一个编码阶段直接翻译成某种程序设计语言书写的程序,结构化程序设计技术是软件详细设计的基础,任何一个程序都可以用:顺序、选择、循环2种结构来设计和实现,结构化程序设计具有理解性和可维护性。

人机界面设计质量直接影响用户对软件产品的接受程度,因此必须对人机界面设计给与足够的重视。在人机界面的设计过程中,必须充分重视并认真处理好系统响应,用户帮助实施、出错信息处理和命令交互4个设计问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第五章:软件详细设计 的相关文章

随机推荐

  • Linux一键安装部署环境

    安装Java环境 yum install y java 1 8 0 openjdk devel x86 64 安装mariadb 1 vi install mariadb sh 创建文件并打开 2 输入 i 进入编辑 复制一下内容粘贴 bi
  • ubantu安装搜狗常见问题

    安装详情 参考步骤 语言设置里已经设置为fcitx xff0c 也装了这个 xff0c 但按照教程 xff0c 重启后 xff0c 点击键盘图标 xff0c 配置语言时 xff0c 却弹出来了这样的对话框 xff08 您正在图形界面下运行
  • ubuntu下virtualbox的安装、卸载

    一 添加VirtualBox的源并安装5 1版本 virtualbox官网 xff1a https www virtualbox org wiki Download Old Builds 虽然也可以直接安装deb包 xff08 例如 xff
  • CoreData的简单使用<二、CoreData两张数据库表的关联操作>

    两张数据库表的关联操作 在实际的数据结构中难免会遇到两张数据表需要进行关联 xff0c 比如通用的例子 xff0c 公司有两个员工张三和李四 xff0c 分别属于iOS和android部门 xff0c 如果所有的员工属于一张表 xff0c
  • 瑞士移位赛赛制解释

    这种比赛是用瑞士轮转法实施的积分编排制比赛 当参赛队数较多 xff0c 而比赛时间又不很充裕时 xff0c 瑞士移位法是理想的比赛方法 比赛分开闭室 各队都给予编号 xff0c 在整个比赛过程中各队的编号不动 第1轮对阵一般安排强队对弱队
  • Springboot:Spring Assistant创建项目框架

    Springboot Spring Assistant创建项目框架 Springboot自动配置项目流程步骤如下所示 第一步 第二步 第三步 第四步
  • vnc server干什么用的,简单介绍vnc server是干什么用的

    VNC Server 是一般 Linux 发行版都会附带的 vnc服务器软件 vncserver 是一个为了满足分布式用户共享服务器上面的资源 xff0c 而在服务器上开启的一项服务 xff0c 对应的客户端软件为vncviewer xff
  • GITHUB下载慢解决办法-插件解决

    在油猴上搜索此插件 或者直接导入插件代码如下 61 61 UserScript 61 61 64 name Github 增强 高速下载 64 name zh CN Github 增强 高速下载 64 name zh TW Github 增
  • OSPF路由协议配置实验

    实验目的 xff1a 理解OSPF xff1b 掌握OSPF的配置方法 xff1b 掌握查看OSPF协议的相关信息 实验器材 xff1a 路由器及PC机 xff0c 双绞线 实验内容 xff1a 本实验通过在路由器上配置OSPF协议 xff
  • linux 22.04版本ubuntu换源

    1 备份原始源文件 执行下面命令 xff0c 将原来的源文件备份保存 sudo cp etc apt sources list etc apt sources list bak 2 修改源文件sources list 打开源文件 xff0c
  • jquery dialog 弹出 ajax加载数据

    我之前就是想实现一个弹框 xff0c 在弹框的时候用ajax 动态加载要展示的内容 xff0c 这个地方实现起来并不难 xff0c 但是在实现的时候遇到了一个坑 页面 xff1a lt div id 61 34 logDiv 34 styl
  • 解决STM32新增加函数出现Undefined symbol HAL_ADC_Init (referred from main.o). 问题

    最近在开发STM32L0xx系列产品的ADC采集项目 xff0c 在老工程上添加库函数 xff0c stm32l0xx hal adc h stm32l0xx hal adc c函数 进行ADC初始化 xff0c 编译不通过出现 xff0c
  • GET,POST,PUT,DELETE,OPTIONS等请求方式简单总结

    之前做的java web项目 xff0c 基本上只使用get和post的请求方式 xff0c 但是现在新项目额外增加了put xff0c delete xff0c 查了点资料 xff0c 做个简单的总结 1 GET get请求是用来获取数据
  • IOS TableView Cell重用机制及TableView常用Code

    写的太好了 xff0c 多谢楼主的无私分享 文章来自 xff1a http heidianfeng blog 163 com blog static 6184345620121114104552518 创建UITableViewContro
  • 编译Linux驱动程序

    基于Ubuntu 12 10 xff0c 编译Linux驱动程序 1 准备linux内核源码 此时 xff0c 我要编译的驱动是基于Ubuntu 12 10内核的 xff0c 所以我下载的是其对应的内核源码包 xff1a linux 3 5
  • 卸载windows10子系统卸载linux

    参考地址 xff1a https docs microsoft com en us windows wsl wsl config 查看所有已经安装的分发版本 xff1a wsl list all 查看正在运行的分发版本 xff1a wsl
  • github镜像站

    github镜像站 xff1a https hub fastgit org GitHub 在国内经常会出现无法访问的情况 xff0c 下面分享几个 GitHub 镜像站供大家使用 xff01 全局加速 可直接访问站点 xff0c 查看代码等
  • vnc连接linux失败,vnc连接linux失败解决办法

    在日常工作学习中 xff0c 经常会使用到vnc连接 xff0c 那有小伙伴知道如何进行vnc连接linux吗 xff1f 当vnc连接linux失败又该如何解决呢 xff1f 之前有简单介绍过如何实现vnc连接linux 那接下来让我们一
  • 域名是如何关联到CDN的

    用户在访问一个域名的时候 xff0c 网络中是怎么知道这个域名到底是配置在哪一个CDN厂商的呢 xff1f 笔者以test1 huiziguoxueshe com为例 xff0c 来描述下具体的过程 xff0c 如下所示 xff1a ste
  • 第五章:软件详细设计

    真是应了那句 xff1a 白天游四方 晚上点灯补裤裆 捂脸 xff09 xff0c 孩子睡了夜深人静了 我才是开始我的小笔记整理工作 详细设计是软件设计的第二阶段 xff0c 这一阶段的工作 xff0c 就是要对系统中的每个模块给出足够详细