《软件工程》第六讲详细设计(精)

合集下载

《软件工程》课件 第6章详细设计

《软件工程》课件 第6章详细设计
2014年春 • 软件工程
6.2.1
1. 2. 3. 4.
设计问题
在设计人机界面的过程中,几乎总会遇到下述 4个问题: 系统响应时间 用户帮助设施 出错信息处理 命令交互
2014年春 • 软件工程
6.2.2
设计过程
用户界面设计是一个迭代的过程,步骤如下:
2014年春 • 软件工程
6.2.3
2014年春 • 软件工程
6.3.2
盒图(N-S图)
2014年春 • 软件工程
示例
2014年春 • 软件工程
N-S图的嵌套定义形式
2014年春 • 软件工程
特点:
① 没有箭头,不允许随意转移控制;
② 每个矩形框(Case中条件取值例外)都是一 个功能域(即一个特定结构的作用域),结 构表示明确; ③ 局部及全程数据的作用域易见;
2014年春 • 软件工程
6.3
过程设计的工具
在详细设计阶段,要决定各个模块的实现算法, 并精确地表达这些算法。表达过程规格说明的工 具叫做详细设计工具,它可以分为以下三类:
图形工具:程序流程图;盒图;问题
分析图; 表格工具:判断表;判断树; 语言工具:过程设计语言;
2014年春 • 软件工程
2014年春 • 软件工程
6.4.1 Jackson图
注意:
A A
S
A
I
Co
H中的方框表示模 块,而JD中的方 框代表几个语句构 成的简单操作; H表现调用关系, 而JD表现组成关 系。
B
C
Bo
B*
A=
B
A=
B
S C
A=B
C
2014年春 • 软件工程

软件工程第六章 详细设计

软件工程第六章 详细设计

软件工程第六章详细设计软件工程第六章详细设计6.1 概述本章节旨在对软件系统的详细设计进行介绍。

详细设计将在系统的高层设计基础上,进一步细化系统结构、模块划分以及相互关系,并定义系统中各个组件的详细功能和接口。

6.2 系统结构设计系统结构设计主要包括以下内容:- 系统总体架构:描述系统整体的结构和组成部分,包括各个模块和它们的关系。

- 模块划分:根据系统需求,将系统划分为若干个模块,并定义各个模块的职责和功能。

- 模块关系:描述各个模块之间的依赖关系和通信方式,包括模块之间的接口和数据流。

6.3 模块设计模块设计是详细设计的核心内容,主要包括以下内容:- 模块接口:定义模块的输入和输出接口,包括参数和数据格式。

- 模块内部实现:描述模块内部的算法、数据结构以及运行流程。

- 模块测试方法和策略:定义对模块进行单元测试的方法和策略。

6.3.1 模块A设计本节详细介绍模块A的设计。

- 模块接口:模块A接收来自模块B的数据输入,处理后输出结果给模块C。

- 模块内部实现:模块A内部使用算法X对输入数据进行处理,然后将结果输出给模块C。

- 模块测试方法和策略:对模块A进行单元测试时,使用测试用例集合Y进行测试。

6.3.2 模块B设计本节详细介绍模块B的设计。

- 模块接口:模块B接收来自模块D的数据输入,处理后输出结果给模块A。

- 模块内部实现:模块B内部使用算法Z对输入数据进行处理,然后将结果输出给模块A。

- 模块测试方法和策略:对模块B进行单元测试时,使用测试用例集合Z进行测试。

6.3.3 模块C设计本节详细介绍模块C的设计。

- 模块接口:模块C接收来自模块A的数据输入。

- 模块内部实现:模块C内部对输入数据进行处理,并输出结果。

6.4 数据库设计如果系统涉及数据库,本节详细介绍数据库的设计。

- 数据库结构:描述数据库的表、字段以及它们之间的关系。

- 数据库访问接口:定义系统访问数据库的接口和方法。

6.5 接口设计本节详细介绍系统与外部系统或用户的接口设计。

软件工程06-详细设计

软件工程06-详细设计

软件工程06-详细设计1. 引言详细设计是软件工程中非常重要的一个环节,它是在需求分析和概要设计的基础上,对系统的各个模块进行进一步的细化和设定。

本文档旨在对软件工程06项目的详细设计进行说明和介绍,以便开发人员能够更加清晰地了解系统的具体实现方式和技术选型。

2. 系统架构设计本项目采用三层架构来进行系统的设计和实现。

其中,前端采用React进行开发,后端使用Spring Boot进行开发,数据库选择MySQL。

三层架构分别为:表示层、业务逻辑层和数据访问层。

下面将对每个层次的具体设计进行详细说明。

2.1 表示层设计表示层是用户与系统直接交互的界面,主要负责前后端交互、数据展示和用户操作。

在本项目中,采用React作为表示层的开发框架。

在表示层设计中,需要注意以下几点:•使用React进行页面的模块化开发,将页面拆分成若干组件,提高代码的复用性和维护性;•使用React Router进行前端路由的配置,使得页面跳转更加友好和灵活;•使用Redux进行状态管理,统一管理应用的数据,提供更好的可维护性和可扩展性。

2.2 业务逻辑层设计业务逻辑层是实现系统的核心功能和业务逻辑的部分。

在本项目中,采用Spring Boot作为业务逻辑层的开发框架。

在业务逻辑层设计中,需要注意以下几点:•使用面向接口的编程方式,降低模块之间的耦合度,提高代码的可测试性和可扩展性;•使用AOP(面向切面编程)进行事务管理和日志记录,保证系统的数据一致性和安全性;•使用Spring Security进行权限管理,保护系统的安全性。

2.3 数据访问层设计数据访问层负责与数据库进行交互,对数据进行持久化。

在本项目中,使用MySQL作为数据库。

在数据访问层设计中,需要注意以下几点:•使用JPA(Java Persistence API)进行对数据库的操作,提供了一种对数据库进行对象化操作的方式;•使用数据库连接池提升数据库的连接性能,减少数据库的压力;•使用缓存技术进行数据的缓存,提高系统的性能和响应速度。

软件工程06-详细设计

软件工程06-详细设计

软件工程06-详细设计软件工程06-详细设计1. 引言2. 系统架构系统的整体架构采用三层架构模式,包括表示层、业务逻辑层和数据访问层。

表示层负责与用户交互,接收用户的输入并显示输出结果。

业务逻辑层负责处理用户的请求,调用合适的数据访问层的接口来访问数据库。

数据访问层负责与数据库进行交互,实现数据的增删改查操作。

3. 模块设计3.1 模块A模块A负责处理用户的注册请求。

具体实现包括输入校验、密码加密和用户信息保存等功能。

模块A的接口定义如下:javapublic interface ModuleA {public boolean validateInput(String input);public String encryptPassword(String password);public boolean saveUserInfo(UserInfo userInfo);}3.2 模块B模块B负责处理用户的登录请求。

具体实现包括用户名密码的校验和登录状态的维护等功能。

模块B的接口定义如下:javapublic interface ModuleB {public boolean validateLogin(String username, String password);public boolean mntnLoginState(LoginState loginState);}3.3 模块C模块C负责处理用户的数据查询请求。

具体实现包括构建查询语句、执行查询操作和返回查询结果等功能。

模块C的接口定义如下:javapublic interface ModuleC {public String buildQuery(String condition);public ResultSet executeQuery(String query);public List<Data> parseResultSet(ResultSet resultSet);}4. 模块接口模块之间的接口定义如下:模块A与模块B的接口:模块A通过调用模块B的验证登录方法来实现用户注册时的用户名唯一性验证。

软件工程导论 第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种基本控制结构写程序。

软件工程第六章 详细设计

软件工程第六章 详细设计

软件工程第六章详细设计软件工程第六章详细设计1. 引言本章将对软件系统的详细设计进行介绍。

详细设计是软件开发过程中的一个重要阶段,它负责将需求分析阶段产生的需求和概念设计阶段产生的设计方案转化为具体的实现细节。

2. 设计概述2.1 数据设计在数据设计方面,我们将详细定义系统中所使用的数据结构、数据类型和数据库设计。

这将包括实体类的定义、数据库表的设计以及数据字典的编制。

2.2 模块设计模块设计是将系统划分成各个功能模块,并定义模块之间的接口和交互方式。

我们将详细描述每个模块的功能、输入输出以及模块之间的调用关系。

2.3 界面设计界面设计负责定义系统与用户之间的交互方式。

我们将详细描述系统的界面布局、界面元素的设计和交互逻辑的实现。

3. 数据设计3.1 数据结构在此处描述系统中所使用的各种数据结构,包括树、链表、堆栈等,以及它们的定义和使用方式。

3.2 数据类型在此处描述系统所使用的各种数据类型,包括整型、浮点型、字符型等,以及它们的定义和使用方式。

3.3 数据库设计在此处描述系统所使用的数据库的设计,包括数据库表的结构、字段定义、关系等。

3.4 数据字典在此处编制系统的数据字典,明确定义每个数据元素的含义、取值范围、数据类型等。

4. 模块设计4.1 模块1名称在此处详细描述模块1的功能、输入输出以及模块内部的具体实现细节。

4.2 模块2名称在此处详细描述模块2的功能、输入输出以及模块内部的具体实现细节。

5. 界面设计5.1 界面布局在此处详细描述系统的界面布局方案,包括各个界面的位置、大小、排列等。

5.2 界面元素设计在此处详细描述系统所使用的各种界面元素,包括按钮、文本框、下拉框等,以及它们的样式和交互方式。

5.3 交互逻辑在此处详细描述系统与用户之间的交互逻辑,包括各个界面的功能和用户操作的响应方式。

6. 附件本文档涉及的附件包括:- 数据结构定义文档- 数据库表设计文档- 界面原型设计文档7. 法律名词及注释- 法律名词1: 注释1 - 法律名词2: 注释2。

软件工程_6_详细设计.pptx

软件工程_6_详细设计.pptx

3. 出错信息处理
交互式系统的出错信息或警告信息,应该具有下 述属性:
(1) 信息应该使用用户可以理解的术语描述问题; (2) 信息应该提供有助于从错误中恢复的建设性 意见; (3) 信息应该指出错误可能导致哪些负面后果(例 如,破坏数据文件); (4) 信息应该伴随着听觉上或视觉上的提示,强 化出现异常; (5) 信息不能带有指责用户的内容。 当确实出现了问题的时候,有效的出错信息能提 高交互式系统的质量,减轻用户的挫折感。
直接影响用户对软件产品的评价,从而影响软 件产品的竞争力和寿命。
人机界面目前所占的工作量越来越大。
6.2.1 设计问题
在设计人机界面常会遇到下述4个问题: 系统响应时间 用户帮助设施 出错信息处理 命令交互
上述问题,最好在设计初期作为重要的设计问题 来考虑,这时修改比较容易,代价也低。
1. 系统响应时间
第6章 详细设计
6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量 6.6 小结及作业
6.1 结构程序设计
结构程序设计的经典定义:“如果一个程序的 代码块仅仅通过顺序、选择和循环这3种基本控 制结构进行连接,并且每个代码块只有一个入口 和一个出口,则称这个程序是结构化的。”
6.3.2 盒图(N-S图)
6.3.2 盒图(N-S图)
出于要有一种不允许违背结构程序设计精神的 图 形 工 具 的 考 虑 , Nassi 和 Shneiderman 提 出 了 盒 图,又称为N-S图。它有下述特点:
(1) 功能域(即,一个特定控制结构的作用域) 明确,可以从盒图上一眼就看出来。
2. 用户帮助设施
几乎交互式系统的每个用户都需要帮助,大多数 现代软件都提供联机帮助设施,这使得用户无须离 开用户界面就能解决自己的问题。

软件工程-第六章-软件详细设计

软件工程-第六章-软件详细设计

软件工程-第六章-软件详细设计第六章软件详细设计1、引言本章描述了软件详细设计阶段的任务和目标,包括需求分析阶段后续的工作内容,以及软件详细设计的重要性和作用。

2、设计目标本节介绍软件详细设计的目标和要求,包括系统的性能、可靠性、可维护性等方面的要求。

2.1 性能目标描述系统在不同负载条件下的性能要求,包括响应时间、吞吐量等指标。

2.2 可靠性目标描述系统需要达到的可靠性要求,包括故障处理、容错机制等。

2.3 可维护性目标描述系统需要达到的可维护性要求,包括代码可读性、模块化、可重用性等。

3、系统结构设计本节介绍软件系统的整体结构设计,包括模块划分和模块之间的关系。

3.1 模块划分根据需求分析的功能模块进行划分,并对每个功能模块进行详细描述。

3.2 模块之间的关系描述每个模块之间的接口和依赖关系,包括数据传输、函数调用等。

4、数据结构设计本节介绍系统中使用到的数据结构,包括数据库设计、文件结构设计等。

4.1 数据库设计描述系统中所需的数据库的表结构、字段定义等。

4.2 文件结构设计描述系统中所需的文件的结构和格式。

5、界面设计本节介绍系统的用户界面设计,包括页面布局、交互方式等。

5.1 页面布局设计描述系统的页面布局和组件的排列方式。

5.2 交互方式设计描述用户与系统之间的交互方式,包括输入、输出等。

6、算法设计本节介绍系统中使用的算法和数据处理方法。

6.1 算法描述描述系统中使用的算法的原理和实现方式。

6.2 数据处理方法描述系统中对数据进行处理的方法和策略。

7、安全性设计本节介绍系统的安全性设计,包括用户身份验证、数据加密等。

7.1 用户身份验证描述系统中对用户身份进行验证的方法和过程。

7.2 数据加密描述系统中对敏感数据进行加密的方法和策略。

8、测试计划本节介绍软件详细设计阶段的测试计划和测试策略。

8.1 功能测试描述对每个功能模块进行的功能测试计划和测试用例。

8.2 性能测试描述对系统性能进行测试的计划和方法。

软件工程06-详细设计

软件工程06-详细设计

软件工程06-详细设计软件工程06-详细设计1. 引言详细设计阶段是软件工程项目中的关键阶段之一。

在这一阶段,我们对软件系统的各个部分进行了详细的规划和设计,以确保软件系统的功能和性能能够满足用户的需求。

2. 整体架构设计软件工程06项目是一个在线购物平台,我们的目标是为用户提供便捷、安全的购物体验。

基于此目标,我们设计了以下的整体架构:2.1 客户端客户端是指用户使用的设备,如电脑、方式等。

我们将客户端设计成一个响应式网页,使得用户能够在不同的设备上都能够良好地使用我们的软件系统。

2.2 服务器服务器是承载软件系统的核心部分。

我们将服务器设计成一个分布式系统,以提高系统的性能和可靠性。

服务器的主要功能包括用户身份验证、数据存储和处理以及与第三方支付系统的集成。

2.3 数据库软件系统需要一个可靠的数据库来存储用户的个人信息、商品信息以及订单信息。

我们选择了关系型数据库作为数据存储的方案,以保证数据的一致性和完整性。

3. 模块设计在整体架构的基础上,我们将软件系统划分为以下几个模块:3.1 用户管理模块用户管理模块负责处理用户注册、登录、注销等功能。

该模块需要与数据库和服务器进行交互,以实现用户身份验证和用户信息的存储和读取。

3.2 商品管理模块商品管理模块负责管理系统中的商品信息,包括商品的发布、编辑、删除等功能。

该模块需要与数据库进行交互,以实现商品信息的存储和读取。

该模块需要提供给用户浏览商品的功能。

3.3 订单管理模块订单管理模块负责处理用户下单、取消订单、查询订单等功能。

该模块需要与数据库和服务器进行交互,以实现订单信息的存储和读取。

该模块还需要与第三方支付系统进行交互,以实现订单支付的功能。

3.4 购物车模块购物车模块负责处理用户将商品添加到购物车、从购物车移除商品等功能。

该模块需要与数据库进行交互,以实现购物车信息的存储和读取。

4. 数据结构设计在软件系统的设计中,数据结构起着至关重要的作用。

软件工程第六章详细设计学生课件(完)

软件工程第六章详细设计学生课件(完)

数据显示界面设计
• 采用统一的标号、标准的缩写和预先定义好的颜色 • 仅显示与当前上下文有关的信息 • 相关的数据显示在一起
• • • •
避免因数据过于费解造成的用户烦恼 允许用户对可视环境进行维护,如放大、缩小图像 只显示有意义的出错信息 使用大小写、缩进和文本分组以帮助理解
6.3过程设计的工具
用判定表表示计算行李费的算法
6.3.5 判定树
实例1:风景区门票折扣量算法判定树 定票量<=20 —— 5% 定票量>20 —— 15% 定票量<=20 —— 20% 定票量>20 —— 30%
折扣量 算法
旅游时间 7-9,12 月 旅游时间 1-6,10-11月
练习:“基本奖金计算”的判定树 练习:用判定树计算行李费的算法
• • • • • • • • • • • 例:工资系统中的“计算应发工资” 这个加工在数据字典中的条目描述 数据加工名称:计算应发工资 加工编号:1.2 说明:根据职工的工资档案及本月奖金发放表数据计算每个职工的应发工资 输入数据流:奖金发放表及工资档案 输出数据流:应发工资表 加工逻辑:DO WHILE工资档案文件指针未指向文件尾 从工资档案中取出当前职工工资的各项基本数据进 行累加 在奖金发放表中按职工号查找到该职工的奖金数 对奖金数与工资基本数据的累计和进行求和得到 该职工的应发工资数 ENDDO
• •
6.6.4 判定表
• 实例1:某风景区门票预定价格折扣执行如下规定:在旅游季 节(7,8,9,12月),如订票量小于等于20张,折扣为5%; 订票量大于20张,折扣为15%;在非旅游季节,如订票量小于 等于20张,折扣为20%;订票量大于20张,折扣为30%。
旅游时间

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

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

步骤Ⅱ—找出输入数据构造和输出数据构6.造4 续
的对应关系
所谓有对应关系是指有直接的因果关系,在 程序中可以同时处置的数据单元。需求留意 的是,对于反复的数据单元,必需是反复的 考生 次情况 序文与件次数都一样才考 有生新 能文件 够有对应关系。考分文件
I 考生记录*
I 考生记录*
I 考生记录*
步骤Ⅲ—确定程序构造图
步骤Ⅱ—找出输入数据构造和输出数据构6.造4 续
的对应关系
所谓有对应关系是指有直接的因果关系,在 程序中可以同时处置的数据单元。需求留意 的是,对于反复的数据单元,必需是反复的 次序与次数都一样才有能够有对应关系。
步骤Ⅲ—确定程序构造图
6.4 续
由Jackson图导出相应的程序构造图的规那么:
⑴为每对有对应关系的数据单元,按照它们 在数据构造图中所处的层次,在程序构造图 中的相应层次画一个处置框。假设这对数据
方法:
⑴McCabe方法
McCabe方法——流图
6.5 续
流图本质上是一种简化了的程序流程图,它
仅仅描画程序的控制流程,完全不表现对数 据的详细操作以及分支或循环的详细条件。
程序流程图中的各种框〔包括处置框,断定
框等〕,在流图中都被简化为一个用圆圈表 示的结点。
程序流程图中的一个顺序的处置框序列和一
称考分文件〕合并成一个新文件〔简称考生
新文件〕。考生根本情况文件和考分文件都
是由考生记录组成的。为简便起见,考生根
本情况文件中的考生记录的内容包括:准考
证号、姓名、通讯地址。考分文件中的考生
记录的内容包括:准考证号和各门考分。合
并后的考生新文件自然也是由考生记录组成,
内容包括:准考证号、姓名、通讯地址和各

《软件工程教学课件》06-类的详细设计

《软件工程教学课件》06-类的详细设计

设计实例三:商品类设计
总结词
商品类是软件中基础的数据类之一,用于描述商品的 基本属性和行为。
详细描述
商品类通常包含商品ID、名称、价格、库存量等属性 ,以及添加商品、修改商品信息、删除商品等行为。 在设计商品类时,需要考虑如何保证数据的完整性和 可靠性,例如对商品信息进行规范化和标准化管理。
05
接口隔离原则
总结词
详细描述
客户端不应该被强制依赖于它不使用的接口。
接口隔离原则是面向对象设计的原则之一, 它要求将大接口拆分成小接口,每个接口只 负责特定的功能。这样可以减少客户端对不 必要接口的依赖,降低耦合度,提高代码的 可维护性和可复用性。
依赖倒置原则
要点一
总结词
高层模块不应该依赖于低层模块,它们都应该依赖于抽象 。抽象不应该依赖于细节,细节应该依赖于抽象。
THANKS
感谢观看
《软件工程教学课件》 06-类的详细设计
目录
• 类的概念 • 类的设计原则 • 类的详细设计 • 类设计的实践 • 类设计的评估与优化
01
类的概念
类的定义
总结词
类是面向对象编程中的一个基本概念, 它是对具有相同属性和行为的对象的 抽象。
详细描述
类是对一组具有共同特征和行为的对 象的抽象,它定义了对象的属性(数 据元素)和方法(功能)。通过类, 可以创建具有相同属性和行为的多个 对象。
类的属性
总结词
类的属性也称为成员变量,用于描述对象的特征。
详细描述
类的属性定义了对象的静态特征,这些特征描述了对象的状态。每个对象都有其自己的属性值,这些值在对象创 建时被初始化,并在对象生命周期中保持不变或发生变化。
类的行为
总结词

软件工程06-详细设计

软件工程06-详细设计
(7)选用等效的高效率算法
2013-8-8
请设计求解下列问题的算法
20 3
∑∑ (i+1)² (j+2)
i=1 j=1
2013-8-8
20
i=1 j=1
∑∑(i+1)² (j+2)
3
main() { int i,j; float sum; sum=0.0; for(i=1;i<=20;i++) for(j=1;j<=3;j++) sum=sum+(i+1)*(i+1)*(j+2); printf(“sum=%d\n”,sum); }
2013-8-8
四、程序效率
程序效率是指程序的执行速度及程序占用 的存储空间。程序编码是最后提高运行速度和 节省存储机会,因此在此阶段不能不考虑程序 的效率。
2013-8-8
1、算法对效率的影响
源程序的效率与详细设计阶段确定的算法的效率 有着直接的关系。当我们把详细设计翻译并转换 成源代码之后,那么算法效率就会反映为程序的 执行速度和存储容量的要求
程序描述:程序简要描述,意义和特点 功能:程序应具备的功能 性能:精度、灵活性和时间特性等 输入项 输出项

软件工程
详细设计的任务

详细设计内容
– 内容包括
算法:具体的计算步骤和过程 接口:模块的隶属关系、调用方式和参数、与模 块直接关联的数据结构(如数据库表、文件等) 存储分配(根据需要) 注释设计:程序注释说明 限制条件:程序运行中所受的限制条件

软件工程
详细设计的任务

详细设计优化
– 在不考虑时间因素的前提下开发并精化软件 结构 – 选出最耗时的模块,仔细设计处理算法 – 孤立出大量占有处理机资源的模块 – 必要时重新设计或用依赖于机器的语言重写 大量占有资源的模块

软件工程06-详细设计本月修正版

软件工程06-详细设计本月修正版

软件工程06-详细设计软件工程06-详细设计1. 引言详细设计是软件开发过程中非常关键的一步,它确保了系统在实现阶段按照需求进行正确的设计和实现。

本文档将详细描述软件工程项目06的详细设计方案,包括项目的总体设计、模块设计和界面设计等内容。

2. 总体设计在总体设计阶段,主要完成以下几个设计任务:2.1 架构设计项目06的架构设计采用了三层架构模式,将系统分为表示层、业务逻辑层和数据层。

表示层负责接收用户的请求和展示数据,业务逻辑层负责处理具体的业务逻辑,数据层负责数据的存储和访问。

2.2 数据库设计项目06的数据库采用关系型数据库,并进行了数据模型的设计。

根据系统的需求,将数据分为若干实体,并建立了它们之间的关系。

同时,为了提高系统的性能和扩展性,还进行了一些数据库的优化设计。

2.3 接口设计系统的接口设计是非常重要的,它决定了系统之间的通信方式和数据传递方式。

通过定义清晰的接口,可以提高代码的复用性和可维护性。

在项目06中,我们采用了RESTful接口设计的方式,使得系统之间的通信更加简洁和高效。

3. 模块设计在模块设计阶段,主要对系统进行了功能模块的划分和详细设计。

3.1 模块划分根据系统的需求,将系统划分为若干个功能模块。

每个模块负责特定的功能,模块之间通过接口进行通信和数据传递。

3.2 模块详细设计对每个功能模块进行详细设计,包括模块的输入输出、业务逻辑和功能实现等方面。

通过详细设计,能够清晰地了解每个模块的功能和实现细节,从而能够更好地进行编码和测试。

4. 界面设计界面设计是用户与系统之间交互的重要环节。

在项目06中,通过详细设计每个页面的布局、样式和功能,能够提供用户友好的界面,提高用户体验和系统的易用性。

4.1 页面布局设计通过合理的布局设计,能够使页面看起来更加美观和整洁。

在设计过程中,考虑到不同屏幕尺寸的适配和用户习惯的因素。

4.2 样式设计通过设计统一的样式,能够使每个页面看起来风格一致,并提供用户良好的视觉效果。

软件工程06详细设计

软件工程06详细设计
第六页,共93页。
详细设计(shè jì)的任务
详细设计过程 1.确定每个模块的算法 选择(xuǎnzé)适当工具表达算法执行过
程 2.确定每一个模块的数据组织 3.为每一个模块设计一组测试用例 输入数据、预期输出结果 4.编写《详细设计说明书》
第七页,共93页。
详细设计(shè jì)的任务
详细(xiá ngxì)设计的任务
详细设计内容 内容包括 算法:具体的计算步骤和过程 接口:模块的隶属关系、调用方式和参
数、与模块直接关联的数据结构(如数 据库表、文件等) 存储(cún chǔ)分配(根据需要) 注释设计:程序注释说明
第九页,共93页。
详细(xiá ngxì)设计的任务
软件工程(ruǎn jiàn ɡōnɡ chénɡ)
岐兵
第一页,共93页。
软件生命周期
软件定义
第二页,共93页。
软件开发
软件使用 与维护
软件设计的任务(rèn wu)
从工程(gōngchéng)管理的角度来看,软 件设计分两步完成
总体设计(概要设计),将软件需求转 化为数据结构和软件的系统结构。
第五页,共93页。
详细(xiá ngxì)设计的任务
Program Design ≠ Coding 为SC图的每个模块确定算法和数据结构 进行详细设计的原则 在保证正确可靠前提(qiántí)下,尽量提高算
法可读性 采用结构化设计方法,改善控制结构,降低
程序复杂度,提高可测试性和可维护性 自顶向下逐步求精; 具有单入、单出的控制结构(取消GOTO语句)
(wèntí) (2)应该提供有助第于二十页,从共93页。错误中恢复的建设性
人机界面(rén jī jiè miàn)设 计
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6.3.2 盒图(N-S图)(I)
出于要有一种不允许违背结构程序设计精神 的图形工具的考虑,Nassi和Shneiderman提 出了盒图,又称为N-S图。
6.3.2 盒图(N-S图)(I)
6.3.2 盒图(N-S图)(II)
•嵌套的表示
6.3.2 盒图(N-S图)(III)
盒图的特点: (1) 功能域明确,可以从盒图上一眼就看出来。 (2) 不可能任意转移控制。 (3) 很容易确定局部和全程数据的作用域。 (4) 很容易表现嵌套关系,也可以表示模块的层次结构。
第6章 详细设计
6.1 6.2 6.3 6.4 6.5 详细设计任务 人机界面设计 过程设计的工具 面向数据结构的设计方法 程序复杂程度的定量度量
目标
设计人机交互界面 利用工具设计程序蓝图 计算程序蓝图复杂程度
详细设计任务
详细设计阶段的根本目标
确定应该怎样具体地实现所要求的系统, 不是具体地编写程序,而是要设计出程序的 “蓝图”,以后程序员将根据这个蓝图,写出实 际的程序代码。
下面以计算应发工资模块为例, 用上述三种图形工具:程序流程图、盒图以 及PAD图,分别来设计。
开始
在工资档案中读一条记录
文件结束? 计算各项基本数据之和并存入pay
num=当前工资号 在奖金发放表中查找职工号与num相同的记录
找到否? 计算各项奖金之和并存入bonus 应发工资=pay+bonus 显示错误
读下一条记录
结束
在工资档案中读一条记录 文件结束吗? 计算工资各项基本数据之和存入pay num=当前职工号 在奖金表中查职工号与num相同的记录 找到否? T 计算各项奖金总和并存入bonus
F
应发工资=pay+bonus
读下一条记录
显示错误
在工资档案中读一条记录 文件没有读完 计算应发工资 计算工资各项基本数据之和存入pay
计算应发工资
def
num=当前职工号 在奖金表中查职工号与num相同的记录 计算奖金 找到否? 显示错误信息 读下一条记录
计算奖金
def
计算各项奖金之和存入bonus
应发工资=pay+bonus
判定表
6.3.4 判定表(II)
下面以行李托运费的算法为例,说明判定表的组织 方法。 假设某航空公司规定,乘客可以免费托运重量不超 过30kg的行李。 当行李重量超过30kg时,对头等舱的国内乘客超重 部分每公斤收费4元,对其他舱的国内乘客超重部分 每公斤收费6元,对外国乘客超重部分每公斤收费比 国内乘客多一倍,对残疾乘客超重部分每公斤收费比 正常乘客少一半。 用判定表可以清楚地表示与上述每种条件组合相对 应的计算行李费的算法。
TYPE number AS STRING LENGTH (12)
6.3.6 过程设计语言(II)
(2)程序块: PDL的过程成分是由块结构构成的, 而块将作为一个单个的实体来执行。
BEGIN <块名> < 一组伪代码语句> END (3)子程序结构: 把 PDL 中的过程称为子程序。
PROCEDURE <子程序名> <一组属性> INTERFACE <参数表> < 程序块或一组伪代码语句> END
使用代码和缩写。 自动填入已输入过的内容或需要重复输入的内容。 如果输入内容是来自一个有限的备选集,可以采用列表
选择或指点方式。
数据显示界面设计
6.3 过程设计的工具
6.3.1 程序流程图(I)
6.3.1 程序流程图(III)
6.3.1 程序流程图(III)
程序流程图的主要缺点如下: (1) 程序流程图本质上不是逐步求精的好工 具,它诱使程序员过早地考虑程序的控制流程, 而不去考虑程序的全局结构。 (2) 程序流程图中用箭头代表控制流,因此 程序员不受任何约束,可以完全不顾结构程序 设计的精神,随意转移控制。 (3) 程序流程图不易表示数据结构。
详细设计任务
(1) 过程设计。确定每个模块的具体算法。 (2) 数据设计。设计模块内所需要的数据结 构。 (3) 接口设计。确定模块间的接口信息以及 用户界面(比如GUI设计)。 (4) 为每个模块设计一组测试用例。 (5) 编写文档,参加复审。
6.2 人机界面设计
设计问题
设计过程
人机界面设计指南
一般交互指南 信息显示指南 数据输入指南
数据输入界面设计
数据输入的规则
•在设计时要考虑尽可能减少用户的记忆负担,使界面具
有预见性和一致性,防止用户输入出错,以及尽可能增加 数据自动输入。
在软件设计的范围,可以通过以下方法来减 少用户输入的工作量。
对共同的输入内容设置默认值(缺省值) T F
×
× × × × × ×
×
6.3.5 判定树
判定表虽然能清晰地表示复杂的条件组合与 应做的动作之间的对应关系,但其含义却不是 一眼就能看出来的,初次接触这种工具的人, 理解它需要有一个简短的学习过程。 判定树是判定表的变种,它的形式简单到不 需任何说明,一眼就可以看出其含义,因此易 于掌握和使用。
图6.7 用判定树表示计算行李费的算法
6.3.6 过程设计语言
过程设计语言(PDL)也称为伪码,现在有许多种 不同的过程设计语言在使用。它是用正文形式表示数 据和处理过程的设计工具。 PDL具有严格的关键字外部语法,内部语法灵活 PDL-----关键字+自然语言
(1)数据说明: 其功能是定义数据的类型和作用域 格式: TYPE <变量名> AS <限定词1> <限定词2>
1
国内乘客 头等舱 残疾乘客
行李重量W不超过30 kg
免费 (W - 30)* 2 (W - 30)* 3 (W - 30)* 4 (W - 30)* 6 (W - 30)* 8 (W - 30)* 12
T ×
2 T T F F
3 T F F F
4 T T T F
5 T F T F
6 F T F F
盒图没有箭头,因此不允许随意转移控制。这对我们结构 化的思考方式很有帮助。
问题分析图PAD
6.3.3 PAD图(I)
6.3.3 PAD图(II)
PAD示例
6.3.3 PAD图(III)
对应于增量型循环结构 for i := n1 to n2 step n3 do 在PAD中有相应的循环控制结构
相关文档
最新文档