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