220 likes | 445 Views
第 4 讲 系统设计. 系统设计的任务和过程 系统设计的基本原则 面向数据流的设计方法 面向对象的设计方法 模型 - 视图 - 控制器框架 系统设计说明书. 4.1 系统设计的任务和过程 系统设计的任务 将软件需求转化为软件表示的过程 软件的总体框架 ⇒ 细化 ( 子功能系统 / 模块 ) ⇒ 模块实现细节 ( 接近源代码 ) 系统设计的过程 1 、制定规范 2 、设计软件系统的总体结构 3 、处理设计 4 、处理数据结构 5 、设计可靠性 6 、系统设计阶段的文档编写 7 、系统设计评审.
E N D
第4讲 系统设计 系统设计的任务和过程 系统设计的基本原则 面向数据流的设计方法 面向对象的设计方法 模型-视图-控制器框架 系统设计说明书
4.1 系统设计的任务和过程 系统设计的任务 将软件需求转化为软件表示的过程 软件的总体框架⇒ 细化(子功能系统/模块) ⇒模块实现细节(接近源代码) 系统设计的过程 1、制定规范 2、设计软件系统的总体结构 3、处理设计 4、处理数据结构 5、设计可靠性 6、系统设计阶段的文档编写 7、系统设计评审
4.2 系统设计的基本原则 软件设计 1、自顶先下,逐步细化 2、软件结构 划分软件的体系结构-子功能部件的划分 确定软件的数据结构 3、程序结构 1)程序的树状结构和网状结构 2)结构图 模块内容及图示 模块的调用关系和接口 模块间的信息传递 模块间的调用条件
结构图的形态特征 深度:软件结构中控制的层数,能粗略地标志一个系统的大小和复杂程度。 宽度:软件结构内同一个层次上的模块总数的最大值。一般说来,宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出。 扇出:一个模块直接控制(调用)的模块数目。 扇入:调用一个给定模块的模块数,即有多少个上级模块直接调用这个给定的模块,扇入越大则共享该模块的上级模块数目越多。
3)数据结构 数据的组织、存取方式、相关程序及信息的不同处理方法 4)模块化 模块的独立性 5)抽象化 不同层次应采用不同的描述方式: 过程抽象 数据抽象 控制抽象 6)信息隐藏
模块设计 模块化设计的优点: 1)降低系统复杂性,方便系统开发和维护 2)实现各功能部分并行开发,提高生产效率 模块设计的因素: 模块-由一个总体标识符代表,并能通过该标识调用,由边界元素限定的相邻程序元素(如数据说明语句、可执行的语句等)构成的序列。 模块独立性-把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能以满足用户的需求。
耦合性-一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。耦合性-一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。
内聚性-一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。内聚性-一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。 内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都是进行模块化设计的有力工具,但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。
结构设计 根据问题域的数据来定义一组不同的“映射”,利用这些映射将数据流图变换成软件结构。 过程: 研究、分析和审查数据流图 根据数据流图确定数据处理的类为变换型或事务型 由数据流图推导出系统初始结构图、 利用一些启发式规则改进系统初始结构图 修改、补充数据字典 制定测试计划
4.3 面向数据流的设计方法 典型的系统结构图 1、系统结构图中的模块 完全因子分解的系统 四类模块:传入、传出、变换、协调模块 2、变换型系统结构图 3、事务型系统结构图
变换分析 1、重画数据流图 2、区分系统逻辑输入、输出和中心变换部分 3、一级分解,设计上层模块 4、二级分解,设计输入、输出和中心变换部分的中、下层模块
事务分析 1、识别事务源 2、规定适当的事务型结构 3、识别事务并定义事务操作 4、构造功用模块 5、建立事物处理模块 6、规定事务处理模块的全部下层操作模块 7、规定操作模块的全部细节模块 模块结构的改进
4.4 面向对象的设计方法 面向对象的基本概念和特征 模块化、信息隐藏、数据抽象、继承性、消息机制 面向对象的技术要点 方法的唯一性 各个阶段之间的高度连续性 OOA、OOD到OOP的集成 面向对象技术的基本原理:对问题领域进行自然的分解,按照人们习惯的思维方式建立问题领域的模型,设计出尽可能直接自然表现问题求解的软件。
面向对象分析模型(概念模型) 五个层次及其实现步骤: 标识对象 标识结构 标识主题 定义属性 定义服务
4.5 面向对象软件设计模型 设计模式描述 横向:问题域、人机交互、任务管理和数据管理 纵向:主题层、类-对象层、结构层、属性层和服务层 面向对象分析模型 对面向对象分析的扩充 面向对象设计模型 OOA向OOD的演进图 问题域 部分 人机交 互部分 任务管 理部分 数据管 理部分 主题层 类-&-对象层 结构层 属性层 服务层
设计模式分类 对象模型-定义做事情的实体,描述系统的数据结构,包括对象之间的关系、对象的属性和操作,用对象图表示。 功能模型-说明发生什么,只关心系统做什么,而不考虑怎么做,描述系统的功能结构,用数据流程图DFD描述。 动态模型-明确规定什么时候做(即在何种状态下接受了什么事件的触发),描述系统的控制结构,即:描述类的对象的状态和事件的正确次序。
在面向对象方法学中,对象模型是最基本的、最重要的,它为其他两种模型奠定了基础,我们依靠对象模型完成三种模型的集成。在面向对象方法学中,对象模型是最基本的、最重要的,它为其他两种模型奠定了基础,我们依靠对象模型完成三种模型的集成。 三种模型的关系: 针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。 状态转换驱使行为发生,这些行为在数据流图中被映射成处理,它们同时与对象模型中的服务相对应。 功能模型中的处理,对应于对象模型中类-&-对象所提供的服务。 功能模型中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。 功能模型中的数据流往往是对象模型中的属性值,也可能是整个对象。 功能模型中的处理可能产生动态模型中的事件。 对象模型描述了功能模型中的动作对象、数据存储以及数据流的结构。
4.6 模型-视图-控制器框架 MVC模式(model-view-controller) MVC中的模型类、视图类和控制类
4.7 系统设计说明书 用户界面处理 输出处理 输入处理 处理与控制 维护与测试 结构模板
作业: 1、什么叫面向对象?面向对象方法的特点是什么? 2、如何理解模块独立性?用什么指标来衡量模块独立性?