毛新军 教授 计算机科学与技术系602教研室 0731-(45)73649

Slides:



Advertisements
Similar presentations
1 计算机软件考试命题模式 计算机软件考试命题模式 张 淑 平 张 淑 平. 2  命题模式内容  组织管理模式 − 命题机构和人员组成 − 命题程序  试卷组成模式.
Advertisements

软件工程 第5章 结构化分析与设计.
——Windows98与Office2000(第二版) 林卓然编著 中山大学出版社
计算机网络课程总结 一、计算机网络基础 计算机网络定义和功能、基本组成 OSI/RM参考模型(各层的功能,相关概念, 模型中数据传输 等)
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
软件工程.
初级会计电算化 (用友T3) 制作人:张爱红.
总体设计.
第7讲 软件需求管理 软件项目管理课程 之 毛新军
Informational School,Guangzhou University Spring 2005
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
UI(用户界面)集训班 Illustrator 高级班.
第3章 软件工程基础.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
计算机基础知识 丁家营镇九年制学校 徐中先.
施耐德电气(中国)投资有限公司 运动控制部技术经理 李幼涵 高级工程师
程序的形式验证 - 简介 中国科学院软件研究所 张文辉 1.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
面向对象建模技术 软件工程系 林 琳.
SOA – Experiment 3: Web Services Composition Challenge
软件设计工具 Software design tool
管理信息结构SMI.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数 控 技 术 华中科技大学机械科学与工程学院.
第 7 讲 软件设计方法.
课程设计.
Online job scheduling in Distributed Machine Learning Clusters
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
动态规划(Dynamic Programming)
CPU结构和功能.
《编译原理与技术》 期末复习 计算机科学与技术学院 郑启龙 李 诚 25/12/2018.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
专题作业.
C语言程序设计 主讲教师:陆幼利.
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
微机系统的组成.
顺序表的删除.
VisComposer 2019/4/17.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
实验七 安全FTP服务器实验 2019/4/28.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
软件工程 Software Engineering
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
Harvard ManageMentor®
iSIGHT 基本培训 使用 Excel的栅栏问题
数据集的抽取式摘要 程龚, 徐丹云.
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
第四章 总体设计.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
HSC高速输出例程 HORNER APG.
计算机绘图 AutoCAD2016.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第二节 C语言的特点.
基于列存储的RDF数据管理 朱敏
1.概述 软件的概念 软件特征 什么是项目 什么是项目管理,项目管理的特征,涉及的知识域 项目阶段,项目生命周期
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第十七讲 密码执行(1).
插入排序的正确性证明 以及各种改进方法.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
入侵检测技术 大连理工大学软件学院 毕玲.
Presentation transcript:

毛新军 教授 xjmao@nudt.edu.cn 计算机科学与技术系602教研室 0731-(45)73649 软件工程导论 之 第6讲 面向数据流的软件设计方法 毛新军 教授 xjmao@nudt.edu.cn 计算机科学与技术系602教研室 0731-(45)73649 用工程化的方法来开发软件

前言 软件设计基础知识 软件的需求分析及其需求规格说明书(SRS) 软件的SRS -> 软件设计信息 面向数据流的软件设计方法 前言 软件设计基础知识 软件的需求分析及其需求规格说明书(SRS) 软件的SRS -> 软件设计信息 面向数据流的设计方法:提供了方法和策略 ©Copyright Xinjun Mao

本讲内容 基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则 面向数据流的软件设计方法 ©Copyright Xinjun Mao

面向数据流设计基本概念和过程 前提 经过评审后的需求模型 -- 数据流图 面向数据流的软件设计方法 ©Copyright Xinjun Mao

数据流的类型 变换流 信息通常以“外部世界”所具有的形式进入系统,经过处理后,又以这种形式离开系统 面向数据流的软件设计方法 ©Copyright Xinjun Mao

事务型的数据流图 数据沿输入通道到达一个转换,该转换根据输入流类型和特征在若干动作序列中选择一条来执行 输入数据(事务) 面向数据流的软件设计方法 事务型的数据流图 数据沿输入通道到达一个转换,该转换根据输入流类型和特征在若干动作序列中选择一条来执行 输入数据(事务) 具有一个转换(事务中心) 一组动作执行路径 ©Copyright Xinjun Mao

数据流图类型的特点 实际上所有的数据流图都是变换流,事务流是变换流的一种特殊形式 为什么要将事务型的数据流图独立出来考虑? 面向数据流的软件设计方法 数据流图类型的特点 实际上所有的数据流图都是变换流,事务流是变换流的一种特殊形式 为什么要将事务型的数据流图独立出来考虑? 大多数系统的数据流途中,事务流和变换流往往交织在一起 ©Copyright Xinjun Mao

面向数据流的软件设计方法 混合型数据流图 ©Copyright Xinjun Mao

面向数据流的软件设计过程 面向数据流的设计方法的主要过程 确定数据流的类型:变换流还是事务流 划定流界 将数据流图转换为软件结构 面向数据流的软件设计方法 面向数据流的软件设计过程 面向数据流的设计方法的主要过程 确定数据流的类型:变换流还是事务流 划定流界 将数据流图转换为软件结构 通过设计复审和启发式策略精化所得到软件结构 ©Copyright Xinjun Mao

面向数据流的软件设计方法 ©Copyright Xinjun Mao

本讲内容 基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则 面向数据流的软件设计方法 ©Copyright Xinjun Mao

变换分析方法 基本思想 通过一系列的设计步骤,将变换型的数据流图映射为软件结构 输入:SRS(数据流图、数据字典、小说明) 面向数据流的软件设计方法 变换分析方法 基本思想 通过一系列的设计步骤,将变换型的数据流图映射为软件结构 输入:SRS(数据流图、数据字典、小说明) 输出:软件总体结构 ©Copyright Xinjun Mao

步骤1. 复审基本系统模型 什么是基本系统模型 为什么需要对基本系统模型进行复审 基本系统模型即SRS中的顶级数据流图 面向数据流的软件设计方法 步骤1. 复审基本系统模型 什么是基本系统模型 基本系统模型即SRS中的顶级数据流图 为什么需要对基本系统模型进行复审 对系统规格说明书和SRS进行评估,以确保系统的输入和输出数据符合实际 ©Copyright Xinjun Mao

步骤2. 复审和精化数据流图 为什么需要复审和精化数据流图 确保DFD给出目标系统正确的逻辑模型 以获得足够详细的DFD 面向数据流的软件设计方法 步骤2. 复审和精化数据流图 为什么需要复审和精化数据流图 确保DFD给出目标系统正确的逻辑模型 以获得足够详细的DFD 确保DFD中每个转换代表一个规模适中、相对独立的子功能 ©Copyright Xinjun Mao

步骤3. 确定数据流图的类型 信息流都可用变换流表示,但是如果有明显的事务流特征,则还应采用事务流的映射方法 面向数据流的软件设计方法 步骤3. 确定数据流图的类型 信息流都可用变换流表示,但是如果有明显的事务流特征,则还应采用事务流的映射方法 设计人员负责判定在数据流图中占主导地位的信息流是变换流还是事务流 ©Copyright Xinjun Mao

步骤4. 划分输入流、输出流边界 输入流处理部分 变换中心 输出流处理部分 面向数据流的软件设计方法 步骤4. 划分输入流、输出流边界 输入流处理部分 变换中心 输出流处理部分 划分因人而异,在一般情况下有点出入对整个目标软件系统的影响不是很大 ©Copyright Xinjun Mao

面向数据流的软件设计方法 划分流界例子 ©Copyright Xinjun Mao

步骤5. 执行一级分解 任务: 导出三个层次结构的软件结构 原则 一级分解的结果可以用层次图、结构图等来表示 面向数据流的软件设计方法 步骤5. 执行一级分解 任务: 导出三个层次结构的软件结构 底层模块:用于输入、输出和计算等基本功能 中间层模块:协调、控制底层模块的工作 高层模块:用于协调和控制所有的从属模块 原则 在确保完成系统功能并保持低耦合度、高内聚度的情况下尽可能的减少模块数目 一级分解的结果可以用层次图、结构图等来表示 ©Copyright Xinjun Mao

面向数据流的软件设计方法 一级分解例子 ©Copyright Xinjun Mao

步骤6. 执行二级分解 任务 方法 有必要为每一模块写简要的处理说明,包括:进出模块的信息,模块处理功能的陈述,有关的限制和约束 面向数据流的软件设计方法 步骤6. 执行二级分解 任务 把DFD中每个转换映射为软件结构中的模块 方法 从变换中心边界开始沿输入、输出通道向外移动,把输入、输出通道中的每个转换映射为软件结构中的 一个模块 沿着输入流到输出流的方向移动,将每个转换映射为 相应的模块 有必要为每一模块写简要的处理说明,包括:进出模块的信息,模块处理功能的陈述,有关的限制和约束 ©Copyright Xinjun Mao

步骤7. 精化软件结构改良软件质量 以“模块化”的思想,对软件结构中的模块进行拆并,以追求高内聚、低耦合、易实现、易测试、易维护的软件结构 面向数据流的软件设计方法 步骤7. 精化软件结构改良软件质量 以“模块化”的思想,对软件结构中的模块进行拆并,以追求高内聚、低耦合、易实现、易测试、易维护的软件结构 ©Copyright Xinjun Mao

本讲内容 基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则 面向数据流的软件设计方法 ©Copyright Xinjun Mao

事务分析方法 当数据流具有明显的事务特征时,应该采用事务流的分析方法 基本步骤 步骤1. 复审基本系统模型 步骤2. 复审和精化数据流图 面向数据流的软件设计方法 事务分析方法 当数据流具有明显的事务特征时,应该采用事务流的分析方法 基本步骤 步骤1. 复审基本系统模型 步骤2. 复审和精化数据流图 步骤3. 确定数据流图的类型:变换流还是事务流 ©Copyright Xinjun Mao

步骤4.识别事务流各个组成部分 把整个事务型DFD划分为以下三个部分 判定在每一条动作路径上数据流的特征:变换流或者事务流 面向数据流的软件设计方法 步骤4.识别事务流各个组成部分 把整个事务型DFD划分为以下三个部分 接受路径部分:接受事务的输入 事务处理中心 动作路径部分 判定在每一条动作路径上数据流的特征:变换流或者事务流 ©Copyright Xinjun Mao

面向数据流的软件设计方法 事务型DFD划分例子 ©Copyright Xinjun Mao

面向数据流的软件设计方法 步骤5.把事务型DFD映射为软件结构 ©Copyright Xinjun Mao

面向数据流的软件设计方法 步骤6.分解精化事务结构以及每个动作路径 ©Copyright Xinjun Mao

面向数据流的软件设计方法 步骤7. 精化初步软件结构 ©Copyright Xinjun Mao

面向数据流的软件设计方法 ©Copyright Xinjun Mao

本讲内容 基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则 面向数据流的软件设计方法 ©Copyright Xinjun Mao

启发式设计策略 改造软件结构,降低耦合度,提高内聚度 面向数据流的软件设计方法 启发式设计策略 改造软件结构,降低耦合度,提高内聚度 如果在几个模块中发现共有的子功能,一般应该将该子功能独立出来作为一个模块,以提高模块的独立性 合并那些具有较多的控制信息传递的模块以降低模块之间的耦合度 ©Copyright Xinjun Mao

减少扇出,追求高扇入 一个好的软件结构通常顶层扇出较高,中间层扇出较低,底层又高扇入到公共模块中去 面向数据流的软件设计方法 ©Copyright Xinjun Mao

使任一模块的作用域在其控制域内 作用域是指受模块内部判定影响的所有模块 控制域是指其所有的下属模块 面向数据流的软件设计方法 ©Copyright Xinjun Mao

其他启发式设计策略 降低模块接口复杂度和冗余度,提高协调性 模块功能可预测,避免对模块施加过多限制 追求单入口、单出口的模块 面向数据流的软件设计方法 其他启发式设计策略 降低模块接口复杂度和冗余度,提高协调性 模块接口应尽可能简单并与模块功能相一致如: Sort(Data; Number) ----Sort(Data) 模块功能可预测,避免对模块施加过多限制 模块的功能可预测是指输入恒定,则输出恒定 追求单入口、单出口的模块 为满足设计和可移植性要求,把某些软件用包 封装起来 ©Copyright Xinjun Mao

本讲内容 基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则 面向数据流的软件设计方法 ©Copyright Xinjun Mao

设计优化原则 在先不考虑时间复杂度的情况下设计并精化软件结构 借用CASE工具模拟分析运行性能,定位低效率的部分 面向数据流的软件设计方法 设计优化原则 在先不考虑时间复杂度的情况下设计并精化软件结构 借用CASE工具模拟分析运行性能,定位低效率的部分 详细设计时对耗时的模块进行仔细的推敲,以减少模块的运行开销 用高级语言编写 对大量占用CPU资源的模块必要时用低级语言重新进行编码,以提高效率 ©Copyright Xinjun Mao

本讲小结 基本概念和软件设计过程 变换分析方法 事务分析方法 启发式设计策略 设计优化原则 面向数据流的软件设计方法 ©Copyright Xinjun Mao

思考题 你觉得在进行软件设计时,除了上述启发式设计策略和优化原则之外,还应考虑那些问题? 面向数据流的软件设计方法 ©Copyright Xinjun Mao

An Introduction to Software Engineering 面向数据流的软件设计方法 An Introduction to Software Engineering Q & A Practice, Practice, and Practice ©Copyright Xinjun Mao