第 7 讲 软件设计方法.

Slides:



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

——Windows98与Office2000(第二版) 林卓然编著 中山大学出版社
8 企业信息管理的定量分析 第八讲 企业信息管理的定量分析 8.1 企业信息化水平的测评 8.2 企业信息管理绩效的测评.
软件工程 第四章 结构化分析与设计 制作者 程丽.
臺北市國民小學101學年度第2學期 辦理祝妳好孕-課後照顧服務說明
初级会计电算化 (用友T3) 制作人:张爱红.
总体设计.
Informational School,Guangzhou University Spring 2005
第六章 详细设计 6.1 结构化程序设计 6.2 详细设计工具 6.3 面向数据结构的设计方法 退出.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
毛新军 教授 计算机科学与技术系602教研室 0731-(45)73649
实用操作系统概念 张惠娟 副教授 1.
UI(用户界面)集训班 Illustrator 高级班.
软件工程 咸阳师范学院 信息工程学院.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
计算机基础知识 丁家营镇九年制学校 徐中先.
Hadoop I/O By ShiChaojie.
面向对象建模技术 软件工程系 林 琳.
建國國小英語教學線上課程 字母拼讀篇(一) 製作者:秦翠虹老師、林玉川老師.
存储系统.
软件设计工具 Software design tool
走进编程 程序的顺序结构(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
课程设计.
第17章 网站发布.
Online job scheduling in Distributed Machine Learning Clusters
What have we learned?.
结构程序设计 过程设计的工具 面向数据结构的设计方法 程序复杂程度的定量度量
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
CPU结构和功能.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
DevDays ’99 The aim of this mission is knowledge..
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
C语言程序设计 主讲教师:陆幼利.
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
梁文新 办公室:综合楼108 电 话: 软件工程导论 梁文新 办公室:综合楼108 电 话:
软件设计任务 从工程管理的角度来看,软件设计分两步完成。 概要设计,将软件需求转化为数据结构和软件的系统结构。
信息系统开发 信息系统开发的组织工作 第一阶段 系统规划 第二阶段 系统分析.
信息系统开发 信息系统开发的组织工作 第一阶段 系统规划 第二阶段 系统分析 第三阶段 系统设计 第四阶段 系统实施.
VisComposer 2019/4/17.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第六章 Excel的应用 一、Excel的单元格与区域 1、单元格:H8, D7, IV26等 2、区域:H2..D8, HS98:IT77
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
Visual Basic程序设计 第13章 访问数据库
1.非线性规划模型 2.非线性规划的Matlab形式
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第二节 C语言的特点.
滤波减速器的体积优化 仵凡 Advanced Design Group.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Adj + Noun映射到知识库中的classes
鏈球的力學分析 日本奧運鏈球冠軍(82米91) 室伏廣治因小腿肌肉受傷,退出杜哈亞運。 俄羅斯「鐵娘子」泰亞娜.李森科 九十五年八月八日在
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
入侵检测技术 大连理工大学软件学院 毕玲.
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

第 7 讲 软件设计方法

体系结构设计 软件体系结构是软件系统中最本质的东西。 良好的体系结构必须是普适、高效和稳定的。 [BAS98]:软件的体系结构是系统的一个或多个结构,包含软件构件、构件对外可见的性质以及它们之间的关系。 体系结构是一种表示。 体系结构设计关注构件结构、构件的性质和交互的关系。

体系结构风格 style 体系结构风格包含: 一组构件(components)(如,数据库、计算模块)完成系统所需的某种功能; 一组连接子(connectors),能使构件间通信协调和合作; 约束(constraints),定义构件如何被集成,形成系统; 语义模型(semantic model),使得设计者通过分析构件的已知性质而理解系统的整体性质。

体系结构风格分类 数据为中心的体系结构 目标:实现数据的可集成性 共享数据可以是数据仓库或是黑板。 客户端 共享数据

Business-specific Components 体系结构风格分类 调用-返回体系结构 目标:系统的可更改性和可扩展性 主程序-子程序体系结构 将一个程序分层子部分 每个子节点都只由父节点控制 如远程过程调用系统 面向对象或抽象数据类型系统 强调对数据的绑定和对数据操纵及访问方式的掌握 实现可更改性 层次式 可更改 可移植 System Software Middleware Business-specific Components Application Systems

Web sites of Interest CMU Composable Systems Group www.cs.cmu.edu/~Compose/ CMU Architecture Based Languages and Environments Research Group www.cs.cmu.edu/~able/ The Acme ADL www.cs.cmu.edu/~acme/ Worldwide Institute of Software Architects www.wwisa.org

Web Sites of Interest The WRIGHT Language www.cs.cmu.edu/~able/wright/ Meta-H For Real-Time Software Analysis www.htc.honeywell.com/projects/dssa/ dssa_tools/dssa_tools_mh.html Rapide ADL pavg.stanford.edu/rapide/ C2 Project at UC Irvine www.ics.uci.edu/pub/arch/

面向数据流的设计 结构化开发方法(Structured Developing Method) 是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速、自然和方便。 结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD法)及结构化程序设计方法(SP法)构成的。 结构化设计方法(SD 法 Structured Design)是结构化开发方法的核心,与SA法,SD法密切联系,主要完成软件系统的总体结构设计。 面向数据流的设计方法又称结构化设计。  

面向数据流的设计 基本思想:将系统设计成由相对独立、单一功能的模块组成的结构。 采用方法: DFD  System Hierarchy 步骤: 确定数据流类型; 指明数据流的边界; 将DFD映射为程序结构; 根据元素的分解,定义控制的层次; 使用设计测量和启发信息,对结构进行细化和求精; 精化体系结构的描述。

结构图 (Structure chart) A A A A B B C D B C B a. 基本形式 b. 顺序 c. 选择 d. 重复

面向数据流的设计 1、Data Flow 的分类 ⑴ 变换流(Transform Flow): 事实上所有信息流都可归结为变换流 Internal representation Information Transform flow Outgoing flow Incoming External representation Time 事实上所有信息流都可归结为变换流

变换流 输入 变换 输出

面向数据流的设计 ⑵ 事务流(Transaction Flow) 当信息流具有明显的“发射中心”时,可归结为事务流。 T = Call one of the several subroutines depending on the type of the incoming transaction request. 当信息流具有明显的“发射中心”时,可归结为事务流。 … T Transaction request Action paths 事务中心

变换流设计 变换流设计是从变换流的DFD到程序结构图的转化。 设计步骤: 找出变换中心及逻辑输入/出; 设计软件结构的顶层; 变换中心-描述了系统的主要功能、特征,其特点是:输入/出数据流较多,变换中心可以不至一个。 逻辑输入/出 - 是指输入/出变换中心的数据流。 输入流 -是将物理输入转换为逻辑输入的数据流。 输出流 - 是将逻辑输出转换为物理输出的数据流。 设计软件结构的顶层; 为每个输入设计一个输入模块,为每个输出设计一个输出模块,同时为变换中心设计一个处理模块。 自顶向下,逐步细化,设计中下层模块。 即上层各个模块的从属模块,顺序一般是从设计输入模块的下层开始。

变换流设计 D 4 C 3 F B 2 E 5 1 G A H 输入 变换中心 输出 6 System 3 Get C 须检查;  每个传递的数据是否必须?  完成模块功能所必须的数据是否都传递了?  传输的数据是否只与单一的功能有关?是否目的明确? Make C into D and E Put E Put D E D F G C B B F G Make D into F Make B into C Make E into G Put G Put F Get B G H B H A A Make G into H Put H Make A into B Get A

变换流设计 2.2 Z 2.1 X 1 3 2.3 Y M B C N P D A System 2 Make B into C Get B Put C B C N P M M N P X Y Z

面向数据流的设计 变换流分析 例:汽车数字仪表板的设计 功能:① 通过模 - 数转换实现传感器和微处理机接口; ② 在发光二极管面板上显示数据; ③ 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等; ④ 指示加速或减速; ⑤ 如果车速超过55mph ,则发出警告铃声。

面向数据流的设计 第一步:DFD的分界,先分出I、P、O三块 燃料流 传感器信号 SPS 旋转信号 读 收集和求平均 确定加/减速 转换成 转/分 计算里程 计算mph,超速值 产生 加/减速显示 计算燃料消耗 计算gph 读和校核 产生mpg显示 产生mph显示 发出铃声 产生里程显示 SPS 箭头指示 燃烧流 上箭头 水平线 下箭头 rpm gph mph mpg 超速值 英里 显示 铃声 mph显示 mpg显示 第一步:DFD的分界,先分出I、P、O三块

面向数据流的设计 数字仪表板 控制 数据转换 驱动仪表板 接收传感器 信号 M P I O 一般问题的一级分解方法:

面向数据流的设计 第二步:映射 :由边界向回溯,将每个遇到的处理器映成相应的层模块。 :每个处理直接对应一个下层模块。 M I C B D A :由边界向回溯,将每个遇到的处理器映成相应的层模块。 I A D C B :每个处理直接对应一个下层模块。 P :由边界向外推,方法与 类似 O I

面向数据流的设计 例: 数字仪表板 控制 数据转换 接收传感器 信号 计算gph 转换成rpm 收集sps 读旋转信号 确定加/减速 驱动仪表板 接收传感器 信号 计算gph 读燃料流 转换成rpm 收集sps 读旋转信号 确定加/减速 计算mph 计算mpg 计算里程 加/减速 显示 显示mpg 显示mph 显示里程 发出铃声 发光二极管显示

面向数据流的设计 第三步:修改 —— 本着高内聚、低耦合的原则。 例:精化后的数字仪表板系统的软件结构。 注:每个模块应附一简要说明描述 ① 进出该模块的信息(接口描述); ② 模块内部的信息; ③ 过程陈述,包括主要判定点及任务等; ④ 对约束和特殊特点的简短讨论。

事务流设计 事务流设计是从事务流的DFD到程序结构的转换。 设计步骤: 确定流界: 进行一级分析,设计上层模块: 细化该事务结构和每条动作路径的结构。 对于接收分支,采用变换流设计方法设计中下层;对于发送分支,在发送模块下设计每条事务路径的结构。

事务流设计 I II S B A C … 事务流 M II I S A B C … 事务中心 事务处理

混合流设计 一般采用以变换流为主,事务流为辅的方法。 基本步骤: 利用变换设计,将DFD划分为输入、变换和输出三大部分; 设计软件结构的上层模块,即主模块,及其下层输入模块、变换模块和输出模块; 根据输入、变换和输出DFD的不同特征设计它们的下层模块。

混合流设计 GG H E D JJ EE C1 DD G K T1 C2 F J FF C3 T2 KK B1 B2 T3 B3 BB L System Make D into K Get D Put K D K LL AA A M

… … System Make D into K Get D Put K Get C DD EE FF GG JJ KK Put L Get B Edit BB LL Put M Get A AA T1 T2 T3 Operate 1 … Operate n Detail 1 … Detail m

面向数据流的设计过程 优化的前题是:“Get it to work, then make it fast.” “变换” “事物” 精化数据流图 流类型 区分事务中心和数据接收通路 区分输入和 输出分支 映射成事务结构 映射成变换结构 用启发式设计规则精化软件结构 导出接口描述和 全程数据结构 复 查 详细设计 变换分析 事务分析 优化的前题是:“Get it to work, then make it fast.”

精化体系结构设计 为每个模块开发处理说明; 为每个模块提供接口描述; 定义局部和全局数据结构; 给出所有的设计限制或约束; 进行设计评审; 如需要,进行结构设计优化。

SD方法的优点 SD方法是从以下5个方面来获得质量较好的软件结构: 根据描述用户需求的数据流图导出了实现用户需求的结构图。 为了控制大型软件系统复杂性,运用了下面两个手段: 将系统分解成许多个黑盒。 将黑盒组织成适合于用计算机实现的一个层次结构。 用内聚和耦合作为评价软件结构质量的标准。 给出一组设计技巧,如扇入和扇出、模块大小的掌握,作用范围和控制范围等。 用结构图直观地描述软件结构,因此易于理解,并直接可以用于评价、分析和复查等。

SD方法的缺点 SD方法的不足: 软件系统的概要设计应该包括两个方面:数据结构的设计和程序结构的设计,两者是密切相关的,但遗憾的是SD方法只考虑后者而不考虑前者,因此在使用 SD方法时,一般还需参考一些有关数据库、文件结构的设计方法。 “高内聚、低耦合”的原则虽已被广为接受,但这两个概念尚无严格的定义,更无健全的理论基础,只能用些例子来解释其含义,因而对实际系统的软件结构还难以作客观的质量评价,这是SD方法的一个缺陷。

面向数据结构的设计 结构化开发方法是一种面向数据流、数据封闭性的开发方法,来源于程序的模块化和功能分解。面向数据结构的设计是将问题的数据结构转换为程序结构,着重于问题的数据结构,不强调模块定义。 Jackson系统开发方法是JSP的扩展,是一种面向数据结构的设计方法,其基本思想是先建立输入输出的数据结构,再将其转换为软件结构。这种方法适用于数据处理类问题,特别是企业管理类的软件系统。

面向数据结构的设计 程序逻辑构造(logical construction of programs, LCP)由Warnier开发,是建立在数据结构和过程结构之间关系上的方法,将I/O数据结构映射为软件详细过程表达。 Wariner-Orr方法是LCP的扩展,除了设计能力之外,还增加了分析能力。

Jackson System Development (JSD) 与SD的由DFD导出结构设计不同,JSD是以数据结构(data structure)为基础设计每个模块的处理过程。 分析的重点是构造于系统相关的现实世界,并建立现实世界的信息域模型,目标是生成软件的过程性描述。 JSD的特点:获得简单清晰的设计方案,因为这样的方案易于理解、易于修改。  JSD的设计原则:使程序结构同数据结构相对应。

Jackson System Development(JSD) 1、Jackson Diagram: 注意: 层次方框图H中的方框表示模块,而JD中的方框代表几个语句构成的简单操作; H表现调用关系,而JD表现组成关系。 A B C A = Bo Co S A = B B* I

Jackson System Development(JSD) 例:一个正文文件由若干个记录组成, 每个记录是一个字符串。要求统计每个 记录中空格字符的个数,以及文件中空 格字符的总个数。要求的输出数据格式 是:每扫描一行输入字符串之后,换行 打印出这个字符串中的空格数,最后打 印出文件中空格的总个数。

Jackson System Development(JSD) 第1步:用Jackson图描述 I\O 的数据结构,包括顺序、选择和重复 正文文件 I 字符串* 字符* 空格O 非空格O S 输入 输出表格 表格体 串信息* 字符串 空格数 输出 空格总数 第2步:在两个图中指出有直接因果关系(causality)、可以同时处理的单元(重复的次序,次数均相同)

? ? 输入 输出 正文文件 字符串* 字符* 空格O 非空格O 输出表格 表格体 串信息* 字符串 空格数 空格总数 JSD I 字符串* 字符* 空格O 非空格O S 输入 输出表格 表格体 串信息* 字符串 空格数 输出 空格总数 JSD ? ?  经过程序处理由正文文件得到输出表格。  每处理输入中一个字符串后就得到输出中一个串信息,二者重复次序和次数均相同。  字符不与多字符组成的字符串对应。  单个空格不能决定空格数。

第3步:Data structure Program structure 用下述三条规则从描述数据结构的Jackson图导出描述程序结构的Jackson图: 第一,为每对有对应关系的数据单元,按照它们在数据结构图中的层次在程序结构图的相应层次画一个处理框(注意,若这对数据单元在输入数据结构和输出数据结构中所处的层次不同,则和它们对应的处理框在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应); 第二,根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图中的相应层次分别为它们画上对应的处理框; 第三,根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图中的相应层次分别为它们画上对应的处理框。

第3步:Data structure Program structure 把有对应关系的单元合为一个处理框,画在相应的层次中(不同层以低层为准) 正文文件 I 字符串* 字符* 空格O 非空格O S 输入 输出表格 表格体 串信息* 字符串 空格数 输出 空格总数 统计空格 程序体 印总数 处理字符串* I 印字符串 印空格数 分析字符* I 分析字符串 分析字符* 处理空格o 处理非空格o S 注:顺序执行的处理中不允许混有重复执行或选择执行的处理。

第4步:列出所有操作条件,并分配到上幅程序结构图中