软件设计工具 Software design tool 任课老师:黄武 上午8时11分 54
提纲 软件设计概述 软件设计的基本原理 软件设计过程 结构化设计方法 面向对象的设计方法 典型的设计工具介绍 上午8时11分 54
1 软件设计概述 设计是指应用各种技术和原理对一个设备、一个过程或一个系统做出足够详细的规定,使之能够在物理上得以实现 软件设计是一个把软件需求转化为软件表示的过程,也就是把它加工为在程序细节上非常接近于源码的软件表示 上午8时11分 54
1.1 软件设计的概念 软件设计是把用户需求准确转化为软件产品或者系统的方法 软件设计是后续所有软件工程活动的基础 软件设计决定了软件质量 软件需求 软件编码 软件设计决定了软件质量 软件设计提供了可以进行质量评估的软件表示 软件设计 上午8时11分 54
1.2 软件设计的两个过程 软件设计可以分成两个过程 概要设计 概要设计的主要任务是确定软件的体系结构及其接口,概要设计又可以分为结构设计,接口设计和数据设计 详细设计 详细设计则是确定每一个功能模块算法和数据结构 上午8时11分 54
1.2.1 软件的总体设计组成 结构设计 确定软件系统各主要部件之间的关系 接口设计 描述软件和协作系统之间以及软件与人之间的通讯 数据设计 对各种全局数据结构的定义,将创建的信息域模型变换为数据结构 上午8时11分 54
1.3 软件设计的重要性 软件设计非常重要,这是因为: 软件设计阶段是在软件开发中形成质量的关键环节 软件设计是把软件需求转换为软件产品的重要步骤 软件设计做出的决策,最终会影响到软件实现的成败 设计是软件工程和软件维护的基础 上午8时11分 54
1.4 软件设计的要求 软件设计既要实现分析模型中所涉及的所有显示需求,又要实现用户希望的所有隐式需求 设计应该是对编程人员、测试人员以及维护人员可读的,以便于在后期过程中得到指导 从实现的角度看,设计应给出相关数据功能及其行为相关的软件全貌 上午8时11分 54
2. 软件设计的基本原理 软件设计的基本原理包括 分解与抽象 模块化 信息隐藏 模块独立性 上午8时11分 54
2.1分解与抽象 分解是指有计划地将系统分解成足够小的子系统 分解是控制软件复杂性的基本手段 抽象是把事物本质的共同特征提取出来从而不考虑细节,抽象是一个逐步的过程 上午8时11分 54
2.2 模块化 模块化是把一个待开发软件分解成若干个与语言相对应的子功能 模块化是指解决一个复杂问题是自顶向下逐层把软件系统划分成若干个子模块的过程 上午8时11分 54
2.2.1 模块分解的标准 用以下5条标准来评价一种设计方法 可分解性 有效分解降低系统复杂性 可组装性 利用现有模块组装新系统的能力,使模块可重用的标准 可理解性 系统易于理解便于构造和修改 上午8时11分 54
2.2.2 模块分解的标准(续) 模块连续性 系统的微小变动只引起单个模块的修改 模块保护性 模块内部的异常情况将被限制在模块内 上午8时11分 54
2.3 信息隐藏 信息隐藏是指一个模块包含的信息,对于外部而言是不可直接访问的,只有通过接口进行访问 上午8时11分 54
2.4 模块独立性 模块独立性是指每个模块都是独立的,与其它模块的联系最少并且接口简单 模块独立性是评价设计好坏的重要指标 2.4 模块独立性 模块独立性是指每个模块都是独立的,与其它模块的联系最少并且接口简单 模块独立性是评价设计好坏的重要指标 模块独立性的要求是高内聚和低耦合 最紧密的内聚是功能内聚 最松散的耦合是非直接耦合 上午8时11分 54
3 软件设计过程 软件设计的过程是把分析阶段产生的软件需求规格说明书转换为适当手段表示的软件设计文档,其设计过程如下: 设计 信息描述 功能描述 行为描述 其它描述 数据设计 编码 模块/构件 结构设计 过程设计 接口设计 上午8时11分 54
4 结构化设计方法 软件设计的方法是指开发阶段设计软件时所使用的方法 软件设计方法可以分为: 结构化设计方法(Structured Design, SD) 面向对象的设计方法(Object-Oriented Design, OOD) 上午8时11分 54
4.1 结构化设计方法概述 结构化设计方法是基于模块化、自顶向下分解及结构化设计等程序设计技术基础发展起来的 结构化设计是早期的程序设计方法,至今仍然起到重要作用 上午8时11分 54
4.2 结构化设计方法基本思想 结构化设计的基本思想是将软件设计成由相对独立、单一化功能的模块组成的结构 结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理和技术,以数据流图为基础得到软件的模块结构 上午8时11分 54
4.3 模块化设计的原则 使每个模块执行一个功能 每个模块用过程语句调用其它模块 模块间传送的参数做数据用 模块间共用的信息尽量少 总结起来就是高内聚、低耦合 上午8时11分 54
4.4 结构化设计方法的步骤 评审和细化数据流图 确定数据流图的类型 把数据流图映射到软件模块结构,设计出模块结构的上层 基于数据流图逐步分解高层模块,设计中下层模块 对模块结构进行优化 描述模块结构 上午8时11分 54
4.5 结构化设计的两个阶段 结构化设计包括两个阶段: 概要设计阶段 详细设计阶段 上午8时11分 54
4.5.1 概要设计阶段 概要设计阶段也称为总体设计,主要任务是把系统功能需求分配给软件结构,形成软件的模块结构图,即将数据流图DFD等转换为系统结构图 本阶段的描述工具是结构图 上午8时11分 54
4.5.1.1 概要设计的基本任务 概要设计的基本任务包括: 软件系统结构设计 划分功能模块、确定模块间调用关系 数据结构及数据库设计 实现需求定义和规格过程中提出的数据对象的逻辑表示 编写概要设计文档 概要设计文档评审 上午8时11分 54
4.5.1.2 结构化设计的目的任务 结构化设计的目的:使程序的结构尽可能地反映要解决问题的结构 结构化设计的任务:把需求分析得到的数据流图变换为系统结构图 上午8时11分 54
4.5.2 结构图 结构图反应了系统的功能实现以及模块与模块之间的联系与通讯 结构图的基本组成 模块 数据 调用 上午8时11分 54
4.5.2.1 结构图的基本术语 深度:模块结构的层次数 宽度:同一层模块的最大模块数 扇出:一个模块直接调用的其它模块数 扇入:调用一个给定模块的模块个数 原则上,结构化设计的深度宽度要适当应该形成低扇出,高扇入 上午8时11分 54
4.5.3 数据流图到结构图的转换 面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法,典型的信息流类型: 变化型 事务型 上午8时11分 54
4.5.3.1 变换型信息流 变换型信息流是指信息沿输入通路进入系统,同时由外部形式转换为内部形式,然后经过变化中心加工然后沿输出通路再转变为外部形式 上午8时11分 54
4.5.3.2 事务型信息流 事物型信息流是指数据沿输入通路到达一个处理T,这个处理根据数据类型在若干个动作序列中选择一个来执行 上午8时11分 54
4.5.4 详细设计及其工具 详细设计为软件结构图中的每一个模块确定采用的算法,模块内部的数据结构 详细设计的工具: 程序流程图 N-S图 问题分析图等 上午8时11分 54
4.5.4.1 流程图 流程图用方框表示各种操作,菱形表示分支 上午8时11分 54
4.5.4.2 N-S图 用方框代表流程图 上午8时11分 54
5 面向对象方法的设计方法 面向对象方法通过一组互相关联的模型详细表示类之间的关系和对象的行为,这些模型从不同的侧面表示了软件的体系结构,包括: 静态逻辑模型(对象模型) 动态逻辑模型(动态模型) 静态物理模型 动态物理模型 上午8时11分 54
5.1 面向对象方法的4种模型 静态逻辑模型——描述类及类的实例化、关联、聚集、继承等关系,表达了对象之间的静态逻辑关系 动态逻辑模型——描述对象之间的相互作用,相互作用通过一组协同的对象,对象之间的消息序列,参考对象的可见性来定义系统运行时的行为,表达了对象之间的动态逻辑关系 上午8时11分 54
5.1.1 面向对象方法的4种模型 静态物理模型——通过模块描述代码的布局,即模块与文件的关系 动态物理模型——描述软件的进程和线程体系结构,描述了对象运行时载体之间的关系 面向对象的4种模型通常使用UML语言表达 上午8时11分 54
5.2 UML语言的表示法(上) UML表示法由5类共9种图形来定义 用例图(Use case diagram),从用户角度描述系统功能 静态图(Static diagram),描述系统的静态逻辑结构,包括类图、对象图和包图 行为图(Behavior diagram),描述系统的动态模型和组成对象间的交互关系,包括状态图和活动图 上午8时11分 54
5.2.1 UML语言的表示法(下) 交互图(Interactive diagram),描述对象间的交互关系,包括时序图和协作图 实现图(Implementation diagram),包括组件图和配置图 UML语言包括了这些图形的语义、语法和说明,提供了静态、动态、系统环境及组织结构的模型 上午8时11分 54
5.3 UML的4+1模型视图 UML的4+1模型视图通过五个不同的视图来描述系统,每个视图对应于特定的研究系统的观点,不同的视图突出特定参与者所关心系统的不同方面,通过合并所有5个视图中得到的信息就可以形成系统的完整描述 其中的用例视图具有将其他4个视图的内容结合到一起的特殊作用 上午8时11分 54
5.4UML不同模型之间的关系 UML可以通过称为4+1视图模型的软件体系结构来了解系统 UML 的4+1模型视图 设计视图 实现视图 用例视图 进程视图 部署视图 UML 的4+1模型视图 上午8时11分 54
5.5 UML的5个模型视图的作用 用例视图:定义了系统的外部行为 设计视图:描述的是支持用例视图中规定功能需求的逻辑结构 实现视图:描述构造系统的物理组件 进程视图:设计系统中的并发性问题 部署视图:描述物理组件如何在系统的实际环境中分布 上午8时11分 54
5.6 UML的图与视图的关系 序号 图(Diagram) 视图(View) 1 用例图(Use case) 用例视图 2 对象图(Object) 用例和设计视图 3 顺序图(Sequence) 4 协作图(Collaboration) 5 类图(Class) 设计视图 6 状态图(Stutechart) 设计和进程视图 7 活动图(Activity) 8 组件图(Component) 实现视图 9 部署图(Deployment) 部署视图 上午8时11分 54
5.7 用例驱动的过程 使用用例进行UML模型视图的实化和细化 用例 领域模型 Realization Refinement 类图 时序图 状态图 使用用例进行UML模型视图的实化和细化 上午8时11分 54
5.8 UML图形举例 用例图 上午8时11分 54
5.8.1 UML图形举例-类图 上午8时11分 54
5.8.2 UML图形举例-时序图 上午8时11分 54
5.8.3 UML图形举例-状态图 上午8时11分 54
6. StarUML软件介绍 StarUML是一款开放源码的UML开发工具 是由韩国公司主导开发出来的产品,可以直接到StarUML网站下载 StarUML(简称SU),是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具 上午8时11分 54
6.1 StarUML软件特点 可绘制9款UML图:用例图、类图、序列图、状态图、活动图、通信图、模块图、部署图以及复合结构图等 正反向工程:StarUML可以依据类图的内容生成Java、C++、C#代码,也能够读取Java、C++、C#代码反向生成类图 导入Rose文件:StarUML可以读取Rational Rose生成的文件,让原先Rose的用户可以转而使用免费的StarUML 上午8时11分 54
6.2 StarUML软件启动 根据需要选择相应的项目 上午8时11分 54
6.3 StarUML软件界面介绍 StarUML软件主界面 上午8时11分 54
6.4 StarUML主要功能介绍 上午8时11分 54
课堂讨论 学生讲解:请介绍一款自己所熟悉的设计软件,比如UML语言,PowerDesigner 上午8时11分 54
作业 名次解释 软件设计 简答题 简述结构化设计和面向对象设计的差异 上午8时11分 54