软件工程导论之详细设计

合集下载

软件工程导论第章详细设计

软件工程导论第章详细设计

软件工程导论第章详细设计什么是详细设计详细设计(详设)是软件工程开发过程中的一个阶段,它在需求分析、概要设计之后,向开发人员提供了实现程序模块的技术性设计,包括算法、数据结构、类设计、数据库设计等。

详细设计是概要设计的实现描述,可以说是概要设计在技术层面上的具体实现方案。

详细设计的主要任务是将概要设计中的概括性和抽象性描述转化为具体的数据结构和程序实现,为程序员提供清晰而具有技术可行性的设计思路,对于开发人员和项目管理人员来说,详细设计是一个实现程序的重要规划蓝图。

具体地说,详细设计需要包含以下内容: - 详细的模块设计文档 - 数据结构的定义 - 数据库的设计和实现方案 - 详细的程序流程图和算法描述 - 功能模块测试用例 - 视图、用户界面和用户操作设计详细设计的意义详细设计是软件工程过程中不可或缺的一个阶段,它具有以下重要意义:1. 提高程序设计质量详细设计提供了对程序模块实现技术和方法的规范描述,能够帮助程序员更加清晰地了解系统的结构和技术实现。

详细设计一旦完成,开发人员就可以按照文档中的设计思路进行编码,这样不仅可以提高代码的效率和质量,还能避免不必要的代码优化和重构。

2. 避免系统漏洞通过详细设计,可以确保需要实现的每一个模块都有规范的设计文档,并且每个模块都被明确的标记,程序员能够避免系统漏洞、代码重复和冲突等问题。

3. 提升工作效率详细设计使得开发人员能够更加系统化和规范化的进行编码,避免返工、重复或无效的工作,最终提升项目的开发效率和工作质量。

4. 方便项目管理详细设计文档可以作为项目管理的工作依据,包括项目计划、进程控制和编码标准的制定。

详细设计可以帮助管理人员了解整个项目的实现思路和技术路线,从而更好的进行计划和控制。

详细设计的步骤详细设计的步骤通常可以分为以下几个阶段:1. 定义模块详细设计阶段首先需要对要实现的每个需求模块进行定义和规划,包括模块名称、模块功能描述、模块输入输出、异常处理等等。

软件工程导论(第五版) 第六章

软件工程导论(第五版) 第六章

•经典的结构程序设计:只允许使用顺序、
IF_THEN_ELSE选择和DO_WHILE循环;
扩展的结构程序设计:除了三种基本控制结构, 还使用DO_CASE和DO_UNTIL循环;
修正的结构程序设计:除了三种基本控制结构 和两种扩充结构,还使用BREAK等结构。
6.1.1 结构化程序
6.1.1.1 控制结构 • 流程图通常由三种结点组成: •1)函数结点 • 如果一个结点有一个入口线和
行李重量w30行李重量w30国内乘客外国乘客头等舱其他舱头等舱其他舱残疾乘客正常乘客残疾乘客正常乘客残疾乘客正常乘客残疾乘客正常乘客w302w304w303w306w304w308w306w3012免费图67用判定树表示计算行李费的算法636pdl2可以使用普通的正文编辑程序或文字处理系统来完成pdl的书写和编辑工作
•定义7:由基本程序的一个固定的基集合构造出的复合
程序,称为结构化程序。
6.1.2 结构化定理 •结构化定理:任一正规程序都可以函数等价于
一 个 由基 集 合 {顺 序 , If-else-then,While-do} 产生的结构化程序。
• 实际上,只要能证明可以将任一正规程序转
换成等价的结构化程序就可以证明这个结构化 定理。
123456789 TTTTFFFF TFTFTFTF FFTTFFTT
TFFFFFFFF
×
×
×
×
×
×
×
×
×
•6.3.5 判定树
• 判定树是判定表的变种。
行李重量
国内乘客
头等舱 其他舱
残疾乘客
正常乘客 残疾乘客 正常乘客
(W-30)×2 (W-30)×4 (W-30)×3 (W-30)×6

软件工程导论实践指南:详细设计

软件工程导论实践指南:详细设计
➢ 在详细设计阶段采用自顶向下逐步求精的设计方法,可以 把一个模块的功能逐步分解和细化为一系列具体的处理步 骤或某种高级语言的语句。
控制结构
第9章 详细设计
第9章 详细设计
详细设计描述工具
程序流程图 盒图(N-S图) PAD图 判定表 判定树 过程设计语言(PD审 实践项目详细设计
Q&A
➢ 详细设计的结果基本上决定了最终程序代码的质量。
第9章 详细设计
详细设计阶段应遵循下列原则:
➢ 模块的逻辑描述正确可靠、清晰易读 ➢ 设计过程中应采用逐步细化的实现方法
第9章 详细设计 结构程序设计
➢ 在总体设计阶段采用自顶向下逐步求精的设计方法,可以 把一个复杂问题分解细化为为一个由若干模块组成的层次 结构的软件系统;
第9章 详细设计
详细设计阶段的任务
➢ 详细设计的主要任务是在进行程序编码之前,根据总体设计提供的文 档,细化总体设计中已划分出的每个功能模块,为每个模块确定具体 的实现算法、所需的局部数据结构,并清晰、准确地描述出来,从而 在具体编码阶段可以把这些描述直接翻译成用某种程序设计语言书写 的程序。
➢ 详细设计成果可用程序流程图描述,也可用伪码描述,还可用形式化 软件设计语言描述。

软件工程导论 第6章 详细设计(Finished)

软件工程导论 第6章 详细设计(Finished)

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

详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。

因此,详细设计的结果基本上决定了最终的程序代码的质量。

考虑程序代码的质量时必须注意,程序的“读者”有两个,那就是计算机和人。

在软件的生命周期中,设计测试方案、诊断程序错误、修改和改进程序等等都必须首先读懂程序。

实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。

因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,更主要的是要看它是否容易阅读和理解。

详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。

结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。

6.1 结构程序设计结构程序设计的概念最早由E.W.D ijkstra 提出。

1965年他在一次会议上指出:“可以从高级语言中取消GO TO 语句”,“程序的质量与程序中所包含的GO TO 语句的数量成反比”。

1966年Bohm 和Jacopini 证明了,只用3种基本的控制结构就能实现任何单入口单出口的程序。

这3种基 本的控制结构是“顺序”、“选择”和“循环”,它们的流程图分别为图6.1(a),6.1(b)和6.1(c)。

实际上用顺序结构和循环结构(又称DO_WHILE 结构)完全可以实现选择结构(又称IF_THEN_ELSE 结构),因此,理论上最基本的控制结构只有两种。

Bohm 和Jacopini 的证明给结构程序设计技术奠定了理论基础。

1968年Dijkstra再次建议从一切高级语言中取消GO TO语句,只使用3种基本控制结构写程序。

软件工程导论课件之第6章-详细设计(第六版)(张海潘编著)详述

软件工程导论课件之第6章-详细设计(第六版)(张海潘编著)详述
(7)允许犯错误。系统应该能保护自己不受严重错误的 破坏。
(8)按功能对动作分类,并据此设计屏幕布局。下拉菜单 的一个主要优点就是能按动作类型组织命令。实际上, 设计者应该尽力提高命令和动作组织的“内聚性”。
(9)提供对用户工作内容敏感的帮助设施。 (10)用简单动词或动词短语作为命令名。过长的命令名
(1)只显示与当前工作内容有关的信息。 (2)不要用数据淹没用户,应该用便于用户迅速吸取信息
的方式来表示数据。
(3)使用一致的标记、标准的缩写和可预知的颜色。显示 的含义应该非常明确,用户无须参照其他信息源就能 理解。
(4)允许用户保持可视化的语境。如果对显示的图形进行 缩放,原始的图像应该一直显示着。
(3) 设计模型中包含的动作、命令和系统状态的数量, 预示了用户学习使用该系统时需要记忆的内容的多少。
(4) 界面风格、帮助设施和出错处理协议,预示了界 面的复杂程度及用户接受该界面的程度。
6.2.3 人机界面设计指南
一般交互指南 信息显示指南 数据输入指南
1.一般交互指南
一般交互指南涉及信息显示、数据输入和系统整体 控制
有3种选择:
在独立的窗口中;
指出参考某个文档(不理想);
在屏幕固定位置显示简短提示。
(4)用户怎样返回到正常的交互方式中?
有两种选择:
屏幕上的返回按钮;
功能键。
(5)怎样组织帮助信息? 有3种选择:
平面结构(所有信息都通过关键字访问); 信息的层次结构(在该结构中查到更详细的信息) 超文本结构。
三条“黄金规则”:
置用户于控制之下
以不强迫用户进入不必要的或不希望的动作的方式来定 义交互方式;允许用户交互可以被中断和撤消;设计应允许 用户和出现在屏幕上的对象直接交互。

软件工程之详细设计

软件工程之详细设计

WHILE P DO
P1
IF A S1;
>O
THEN
A1
ELSE
A2
ENDIF;P2
WHILE C
P
UNTIL C
P
IF
B>0 THEN B1; WHILE C DO S2;S3
ENDWHaI.L顺E序; 结构
ELSE B2
b.当型循环结构
c.直到型循环结构
L1 P1
ENDIF; B3
C
P1
L2 X=
详细设计
详细设计(又称为过程设计或模块设 计),是编码的前导。其主要任务是确定每 一个模块所使用的算法、块内数据结构和接 口细节,用描述工具表达算法的过程,即对 模块的具体实现过程进行详细地描述。。
• 详细设计的具体任务 • (1)算法设计 • (2)数据结构设计 • (3)模块接口细节 • (4)测试用例设计 • (5)数据库物理设计 • (6)数据代码设计 • (7)其他设计 • (8)编写详细设计说明书并进行评审。
C3 … Cn
多分支结构
A exp
UNTIL循环
两种循环结构不同之处
exp A
当循环结构
A exp
直到循环结构
详细设计的工具
1.程序流程图 程序流程图又叫程序框图,它是历史最悠久、使用最广泛的一种算法表示工具。
程序流程图的主要符号
2.盒图(N-S图 Nassi Shneiderman)
A B C
用判定树表示计算行李费的算法
5.过程设计语言(PDL:Process Design Language)
也称程序描述语言,又称为伪码。它是一种用于描述模块算法 设计和处理细节的语言。

软件工程导论第6章

软件工程导论第6章

70年代初N.Wirth在Pascal语言中设置支持“顺序 结构”、“IF-THEN-ELSE选择结构”、“DO-WHILE 重复结构”或“DO-UNTIL重复结构”三种基本控制 结构语句。
25
3种基本控制结构
(1) 顺序型
A B
(2) 选择型
F P A B T
(2) 多情况选择型(case)
T T
P=1 F P=2 F P=n F

A1 A2
T
An
(3) 先判定型循环
后判定型循环
(do-while)
F
(do-until)
P T S
S P F
T
例1、某模块有两个输入a和b,一 个输出c,当满足条件(a>0)and(b<2) 时,c=a+b,否则c=a-b。画出该模 块的程序流程图。
a b
第6章 详细设计
6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量 6.6 小结 习题
1
详细设计阶段的根本目标:确定应该怎样具体地 实现所要求的系统。 为软件结构图中的每一个模块确定使用的算法和 块内数据结构,并用某种选定的表达工具给出清晰 的描述。
100 110
120
130 140
Eq:等于 ne:不等于 gt:大于 lt:小于 ge:大于等于 le:小于等于
例:打印A、B、C三数中最小者的程序 if (A.LT.B .AND. A.LT.C)then write(6,*) A else if (A.GE.B .AND. B.LT.C) then write(6,*) B else write(6,*) C endif endif

软件工程导论第6章(第4版)

软件工程导论第6章(第4版)

二. 人机界面设计
人机界面设计是接口设计的一个重要的组成部 分。对于交互式系统来说,人机界面设计和数据设 计、体系结构设计及过程设计一样重要。
1.指导规则
T.Mandel在《用户界面设计要素》中,提出了3 条指导规则: 让用户驾驭软件,不是软件驾驭用户 减少用户的记忆 保持界面的一致性
2. 应该考虑的设计问题
4. 人机界面设计指南
(3) 数据输入指南 尽量减少用户的输入动作。 保持信息显示和数据输入之间的一致性。 允许用户自定义输入。 交互应该是灵活的,可调整成用户喜欢的输入方式。 使在当前动作语境中不适用的命令不起作用。 让用户控制交互流。 对所有输入动作都提供帮助。 消除冗余的输入。
三. 过程设计
1.过程设计的目的与任务 目的 确定模块采用的算法和块内数据结构,用某种 选定的表达工具给出清晰的描述。 任务:编写软件的“过程设计说明书” 为每个模块确定采用的算法 (模块的详细过程性 描述) 确定每一模块使用的数据结构 确定模块接口的细节 (包括对系统外部的接口和 用户界面,对系统内部其他模块的接口,以及关 于模块输入数据、输出数据及局部数据的全部细 节)
三. 过程设计
2.过程设计的原则与方法
清晰第一的设计风格 结构化的控制结构 结构程序设计的经典定义为: “如果一个程序的代码块仅仅通过顺序、选择和循环这3 种基本控制结构进行连接,并且每个代码块只有一个入口和 一个出口,则称这个程序是结构化的。” 结构程序设计技术是一种实现在逻辑上正确描述每个模 块的功能,并且使设计出的处理过程尽可能简明易懂的关键 技术,是过程设计的逻辑基础。 逐步细化的实现方法 例:在一组数中找出其中的最大数
(4) 命令交互 命令行现在仍然是许多高级用户偏爱的交互方式。在 多数情况下,用户既可以从菜单中选择软件功能,也可以 通过键盘命令序列调用软件功能。 在提供命令交互方式时,必须考虑下列设计问题: 是否每个菜单选项都有对应的命令? 采用何种命令形式?有3种选择:控制序列(例如Ctrl+P), 功能键和键入命令。 学习和记忆命令的难度有多大?忘记了命令怎么办? 用户是否可以定制或缩写命令? 在理想的情况下,所有应用软件都有一致的命令使用 方法。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程导论
题目:图书管理系统文档名称:详细设计班级:科技0801
项目组长:唐子龙
项目成员:
唐子龙(05082019)朱磊(05082025)
赵欣(05082023)
刘华琛(05082004)
详细设计
§3.1 设计目标
概要设计是软件开发过程中的一个阶段,在这个阶段需要完成一些明确的事情。

概要设计阶段的基本目的是回答“概括的说,系统应该如何实现?”。

通过这个阶段,确定系统的组成模块。

本图书管理系统由读者管理、图书管理、流通管理、统计管理、查询管理5个大模块组成。

每个模块又由自己的子模块组成。

§3.2 软件结构图
1.概要设计:
○1需求规定:本软件提供一个既可以存储信息,同时又具有浏览、插入、查询、修改、删除功能,供使用者轻松管理图书馆
的库存图书。

数据库信息由使用者进行输入。

○2运行环境:硬件普通PC机
支持环境WINDOWS操作系统,Turbo C 2.0软件○3基本设计概念:本系统由主单函数调用各个子函数(功能函数)来实现各项操作。

功能函数包括插入函数,删除函数,显示函数,文件读入函数,文件读出函数,借出函数,归还函数,退出函数
函数调用关系图如下图所示:
○4系统结构
○5模块划分与功能需求关系
模块编号模块名称功能
M1 身份验证模块输入验证信息
M2 主菜单模块输入选择的功能
M3 插入模块插入相关信息
M4 删除模块删除指定信息
M5 查询模块查询指定信息
M6 显示模块以列表方式显示所有信息
M7 借出模块实现书籍借出
M8 归还模块实现书籍归还
M9 读入模块从外部文件读入信息
M10 备份模块备份文件信息
M11 退出模块退出程序保存文件
○6人工处理过程:数据的录入工作需人工完成
3、数据流图
图书管理系统的顶层数据流图如图3-1所示。

借书证信息
读者S1
图书维护
查询图书信息
管理员
S3
图书
S2
管理员
登录
发出
控制
指令
查询信息
图书管理系统
P1
图3-1 顶层数据流图
一级数据流图
根据顶层数据流图,继续向下分解,得到一级数据流图。

如图3-2所示。

S1
借书证
个人信息
S3
图书名称
控制命令
控制命令
查询信息
控制命令
所需统计信息条目
条码识别信
息控制命令
S2
查询信息
图书状态
图书状态
图书借还信息表
图书状态
P1.5
查询管理
P1.1读者管理
P1.4统计管理
P1.2
图书管理P1.3
流通管理
图3-2 一级数据流图
二级数据流图
由一级数据流图继续向下分解,可得二级数据流图。

本文档主要针对流通管
理和统计管理画出二级数据流图。

流通管理数据流图如图3-3,统计数据管理如图3-4。

图书预定P1.3.1
S3图书损坏、丢失处理
P1.3.4S3图书归还P1.3.3
S3
图书借阅P1.3.2S3
S2图书
D1ISBN 或图书编号
D2图书编号D4图书编号
D7图书信息
F2
历史图书信息表
F1
D3借书信息
D5还书信息
图书借还信息表
D6图书编号F3
图书预定信息表
D8预定信息
F4
图书借还信息表
D9罚金
F0到书通知单
D0到书通知
图3-3 流通管理数据流图
S2图书
D11借还信息
F5
图书借还信息表统计历史借阅信息P1.5.1S3统计借阅信息P1.5.2S3
D12还书信息D14借书信息流通管理P1.3S3
D15借书记录
F7借阅信息表
D13还书记录
F6
历史借阅信息表

D10ISBN/图书编号
图3-4 统计管理数据流图
4、接口设计
○1用户接口:用户输入信息按 “书名”(空格)“库存数量” 的
格式输入。

TXT 文件也按上述格式保存。


2外部接口:用户界面:DOS 界面 软件接口:运行于Win95以上版本,且要求安装Turbo C 2.0
5、运行设计

1运行控制:系统运行后先进行身份验证,验证通过后,登录,并调用M2,进入服务选择模块,由用户选择的信息选择激活M3—M10等模块,最后根据用户输入的接受信息退出程序,关闭系统。


2运行时间:各模块运行时间控制在1秒内。

6系统数据结构设计
书名char name[] 剩余数量int sum
7、系统出错处理设计
○1出错信息
出错类型处理方法
用户输入无效字符提示出错,重新输入
借出数量过大提示出错,重新输入
○2维护设计
本软件必须按照软件产品设计规范的步骤进行开发,充分考虑软件的可维护性,以便于未来版本开发及移植等二次开发。

在编写过程中如果发现有的模块没有必要,或者实现比较困难,可以由开发者提出修改意见,决定是否修改。

相关文档
最新文档