版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、授课教师:授课教师: 蓝蓝 天天联系电话:联系电话: 1348892972313488929723电子邮箱:电子邮箱:设计工程概要介绍设计工程概要介绍1面向过程的系统设计面向过程的系统设计4面向对象的系统设计面向对象的系统设计5设计技术设计技术3设计过程和质量设计过程和质量2小结小结6能根据具体能根据具体项目进行模项目进行模块划分和软块划分和软件架构设计件架构设计掌握软件设掌握软件设计的主要技计的主要技术、主要内术、主要内容和主要方容和主要方法法理解软件设理解软件设计和需求分计和需求分析之间的相析之间的相互关系互关系 设计工程概要介绍v软件设计定义:软件设计定义:v在在IEEE610.12-9
2、0中,软件设计定义为软件中,软件设计定义为软件系统系统或组件的架构、构件、接口和其他特性或组件的架构、构件、接口和其他特性的定义过的定义过程及该过程的结果。程及该过程的结果。n理念:理念: 功在平时,受益最后功在平时,受益最后 分析分析设计设计编码编码测试测试维护维护 软件设计软件设计o 软件工程生命周期中的一个活动软件工程生命周期中的一个活动 o 进行软件编码的基础进行软件编码的基础 o 软件需求分析被转化为软件的内部结构软件需求分析被转化为软件的内部结构o 是连接用户需求和软件技术的桥梁是连接用户需求和软件技术的桥梁 软件架构设计(有时称为顶层设计)软件架构设计(有时称为顶层设计)o 描述
3、软件的顶层架构和组织,划分不同的组件描述软件的顶层架构和组织,划分不同的组件 软件详细设计软件详细设计o 详细描述各组件以便能够编码实现详细描述各组件以便能够编码实现 注意:注意:o 软件设计主要为软件设计主要为分解设计分解设计D-design(Decomposition design)D-design(Decomposition design);o 可以包括可以包括系列模式设计系列模式设计FP-design(Family Pattern design)FP-design(Family Pattern design);分解设计:将软件映射为各组件 好的设计应该具有如下三个特点好的设计应该具有如
4、下三个特点 o 设计必须实现在分析模型中包含的所有设计必须实现在分析模型中包含的所有明确要求明确要求,必,必须满足客户所期望的所有须满足客户所期望的所有隐含要求隐含要求;o 设计必须是对编码人员、测试人员及后续的维护人员设计必须是对编码人员、测试人员及后续的维护人员必须是必须是可读可理解可读可理解的;的;o 设计应提供该软件的设计应提供该软件的完整视图完整视图,以从,以从实现的角度实现的角度解决解决数据、功能及行为等各领域方面的问题数据、功能及行为等各领域方面的问题 设计指导原则设计指导原则o 设计应该是一种架构设计应该是一种架构o 设计应该是模块化的设计应该是模块化的 o 设计应该包含设计应
5、该包含数据数据、体系结构体系结构、接口接口和和组件组件各个方面各个方面 o 应该设计出系统所用的数据结构应该设计出系统所用的数据结构 o 应该设计出展现独立功能特性的各组件应该设计出展现独立功能特性的各组件 o 应该设计出各组件与外部环境连接的各接口应该设计出各组件与外部环境连接的各接口o 设计由软件需求分析过程中获得信息驱动,采用设计由软件需求分析过程中获得信息驱动,采用可重复使用可重复使用的方的方法导出法导出 o 设计应该采用正确清楚的表示法设计应该采用正确清楚的表示法 设计质量属性设计质量属性 o 功能性功能性 o 易用性易用性 o 可靠性可靠性 o 性能性能 o 可支持性可支持性 包含
6、三个属性:扩展性、适应性、可维护性包含三个属性:扩展性、适应性、可维护性 模型输入模型输入o 软件需求的数据模型、功能模型和行为模式软件需求的数据模型、功能模型和行为模式 分类分类o 数据设计数据设计 o 架构设计架构设计 o 接口设计接口设计 o 组件级设计组件级设计 基于场景的元素基于场景的元素面向流的元素面向流的元素行为元素行为元素基于类的元素基于类的元素用例文本用例文本用例图用例图活动图活动图泳道图泳道图数据流图数据流图控制流图控制流图处理叙述处理叙述状态图状态图顺序图顺序图类图类图分析包分析包CRC模型模型协作图协作图分析模型分析模型设计模型设计模型体系结构设计体系结构设计数据数据/
7、类设计类设计接口设计接口设计构件级构件级设计设计 信息隐藏信息隐藏 功能独立功能独立 细化细化 重构重构 抽象抽象 体系结构体系结构 设计模式设计模式 模块化模块化 含义:是含义:是“忽略具体的信息将不同事物看忽略具体的信息将不同事物看成相同事物的过程成相同事物的过程” 抽象机制:参数化、规范化抽象机制:参数化、规范化 规范化抽象规范化抽象o 数据抽象:描述数据对象的冠名数据集合数据抽象:描述数据对象的冠名数据集合o 过程抽象:具有明确和有限功能的指令序列过程抽象:具有明确和有限功能的指令序列 门门包含属性:门的类型、转动方向、包含属性:门的类型、转动方向、开门机关、重量和尺寸等开门机关、重量
8、和尺寸等开开一系列过程:走到门前,伸出手并抓住把一系列过程:走到门前,伸出手并抓住把手,转动把手并拉门,离开打开的门等手,转动把手并拉门,离开打开的门等 定义:软件的定义:软件的整体结构整体结构和这种结构为系统和这种结构为系统提供概念上完整性的方式提供概念上完整性的方式 体系结构设计可以使用大量的一种或多种体系结构设计可以使用大量的一种或多种模型来表达模型来表达o 结构模型结构模型o 框架模型框架模型o 动态模型动态模型o 过程模型过程模型o 功能模型功能模型 含义含义o 在给定上下文环境中一类共同问题的共同解决方案在给定上下文环境中一类共同问题的共同解决方案 微观结构微观结构 o 实体模式实
9、体模式 o 结构模式结构模式 o 行为模式行为模式 设计模式:可复用面向对象软件的基础设计模式:可复用面向对象软件的基础:面:面向对象的设计中精选出向对象的设计中精选出2323个设计模式个设计模式Erich Gamma Richard Helm John Vlissides Ralph Johnson 模式名:模式名:使用简短却富有表现力的名称描述模式的本质含义:含义:描述模式并说明该模式是什么别名别名:列出该模式的所有同义词动机动机:提供一个问题的示例适用性适用性:记录能够应用该模式的特殊的设计环境结构结构:描述实现该模式所必需的类参与者参与者:描述实现该模式所必需的类的职责协作协作:描述参
10、与者如何协作以便实现其职责因果关系因果关系:说明“设计的影响因素”,即影响模式的因素和模式在实施时必须考虑的潜在的权衡相关模式相关模式:相关设计模式的交叉索引实现实现、代码示例代码示例、已知应用已知应用提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 含义含义o 软件被划分为命名和功能相对独立的多个组件(通常称为模块)软件被划分为命名和功能相对独立的多个组件(通常称为模块),通过这些组件的集成来满足问题的需求,通过这些组件的集成来满足问题的需求 软件的模块性软件的模块性 o 程序可被智能管理的单一属性程序可被智能管理的单一属性 模块化的理论依据模块化的理论依据o 基于人类解
11、决问题观测数据基于人类解决问题观测数据 基于人类解决问题的观测数据基于人类解决问题的观测数据对两个问题对两个问题p1p1和和p2p2,如果有,如果有C(p1) C(p2) (4-1a)C(p1) C(p2) (4-1a)则则E(p1) E(p2) (4-1b) E(p1) E(p2) (4-1b) 有如下结论:有如下结论:C(p1 + p2) C(p1) + C(p2) (4-2) C(p1 + p2) C(p1) + C(p2) (4-2) E(p1 + p2) E(p1) + E(p2) (4-3) E(p1 + p2) E(p1) + E(p2) (4-3) 推论:无限分解任务,那开发该
12、软件的工作量将变成足够小以至于推论:无限分解任务,那开发该软件的工作量将变成足够小以至于可以忽略?可以忽略? 模块化和软件成本模块化和软件成本 如何确定最小代价区间如何确定最小代价区间MM 模块化设计标准模块化设计标准o 模块化的分解性模块化的分解性 :可分解为子问题:可分解为子问题o 模块化的组合性模块化的组合性 :组装可重用的组件:组装可重用的组件o 模块化的可理解性模块化的可理解性 :可作为独立单元理解:可作为独立单元理解o 模块化的连续性模块化的连续性 :需求小变化只影响单个模块:需求小变化只影响单个模块o 模块化的保护模块化的保护 :模块内异常只影响自身:模块内异常只影响自身 模块化
13、基本问题模块化基本问题o 如何分解软件系统以达最佳的模块划分如何分解软件系统以达最佳的模块划分 信息隐藏原则信息隐藏原则 o 模块应该具有彼此模块应该具有彼此相互隐藏相互隐藏的特性的特性 o 即:模块定义和设计时应当保证模块内的信息(过程和数据)即:模块定义和设计时应当保证模块内的信息(过程和数据)不不可以可以被不需要这些信息的其他模块访问被不需要这些信息的其他模块访问 特点特点o 抽象有助于定义构成软件的过程(或信息)实体。抽象有助于定义构成软件的过程(或信息)实体。o 信息隐藏原则定义和隐藏了模块内的过程细节和模块内的本地数信息隐藏原则定义和隐藏了模块内的过程细节和模块内的本地数据结构。据
14、结构。 含义含义o 每个模块只解决了需求中每个模块只解决了需求中特定的子功能特定的子功能,并从程序结构的其他部,并从程序结构的其他部分看该模块具有分看该模块具有简单的接口简单的接口 好处好处o 易于开发:功能被划分,接口被简化易于开发:功能被划分,接口被简化 o 易于维护(和测试):次生影响有限,错误传递减少,模块重用易于维护(和测试):次生影响有限,错误传递减少,模块重用 定性衡量标准定性衡量标准o 内聚性:模块的功能相对强度内聚性:模块的功能相对强度o 耦合性:模块之间的相互依赖程度耦合性:模块之间的相互依赖程度 o 模块独立性强模块独立性强 = = 高内聚低耦合高内聚低耦合 含义含义o
15、逐步求精的过程逐步求精的过程 与抽象的关系与抽象的关系o 抽象使设计师确定过程和数据,但不局限于底层细节抽象使设计师确定过程和数据,但不局限于底层细节o 细化有助于设计者在设计过程中揭示底层细节细化有助于设计者在设计过程中揭示底层细节 含义含义o 不改变组件功能和行为条件下,简化组件设计(或代码)的一种不改变组件功能和行为条件下,简化组件设计(或代码)的一种重组技术重组技术 方法方法o 检查现有设计的冗余情况、未使用的设计元素、无效或不必要的检查现有设计的冗余情况、未使用的设计元素、无效或不必要的算法、较差的构建方式或不恰当的数据结构,或任何其他可更改算法、较差的构建方式或不恰当的数据结构,或
16、任何其他可更改并导致更好设计的错误并导致更好设计的错误 含义含义o 数据设计(有时也被称为数据架构)构建高层抽象(客户数据设计(有时也被称为数据架构)构建高层抽象(客户/ /用户的用户的数据视图)的数据模型、信息模型数据视图)的数据模型、信息模型 相关概念相关概念o 数据建模数据建模 o 数据结构数据结构 o 数据库数据库 o 数据仓库数据仓库 计算机存储、组织数据的方式计算机存储、组织数据的方式按照数据结构来组织、存储和管理数据的仓库按照数据结构来组织、存储和管理数据的仓库数据字典、数据字典、E-RE-R图、类图图、类图 设计原则设计原则o应用于功能和行为应用于功能和行为系统分析的原则系统分
17、析的原则也应适用于数据设也应适用于数据设计计 o所有的数据结构及其对应的操作都应该确定所有的数据结构及其对应的操作都应该确定 o建立建立数据字典数据字典并在数据定义和程序设计中应用并在数据定义和程序设计中应用 o低层次的数据设计低层次的数据设计应该推迟到设计的后期过程应该推迟到设计的后期过程 o数据结构的表示应该只对直接使用数据结构中数据的数据结构的表示应该只对直接使用数据结构中数据的模块可见模块可见 o开发有用的数据结构及其对应操作的开发有用的数据结构及其对应操作的程序库程序库 软件设计和编程语言应该支持软件设计和编程语言应该支持抽象数据类型抽象数据类型的定义与的定义与实现实现 0.*11.
18、*10.11 含义及内容含义及内容o 系统需要执行的函数功能组件集(如数据库、计算模系统需要执行的函数功能组件集(如数据库、计算模块)块) o 组件之间通信、协同和合作的连接器组件之间通信、协同和合作的连接器 o 组件集成构成系统的约束组件集成构成系统的约束 o 设计人员通过分析其组成部分的已知特性理解系统整设计人员通过分析其组成部分的已知特性理解系统整体特性的语义模型分析体特性的语义模型分析 数据中心架构数据中心架构 数据库系统;超文本系统;黑板系统数据库系统;超文本系统;黑板系统 数据流体系架构数据流体系架构 批处理序列;管道批处理序列;管道- -过滤器过滤器 调用和返回架构调用和返回架构
19、 主程序主程序/ /子程序;分层子程序;分层 面向对象架构面向对象架构 o 系统组件封装数据和处理该数据的操作。组件之间的通信和协作系统组件封装数据和处理该数据的操作。组件之间的通信和协作通过消息传递实现通过消息传递实现 MVCMVC架构架构 层次架构层次架构 两个基本问题两个基本问题o 控制结构控制结构 在架构内部如何实现管理控制?是否有不同的控制在架构内部如何实现管理控制?是否有不同的控制架构存在?架构存在? o 数据传递数据传递 组件之间如何进行数据传递?数据流是否连续,或组件之间如何进行数据传递?数据流是否连续,或者传递给系统的数据对象是否零散?者传递给系统的数据对象是否零散? 高效用
20、户界面设计有三条重要原则:高效用户界面设计有三条重要原则: o 允许用户操作控制(用户为中心)允许用户操作控制(用户为中心)o 减少用户记忆负担减少用户记忆负担 o 保持界面一致保持界面一致 环境分析确定了用户接口操作的物理结构环境分析确定了用户接口操作的物理结构和社会结构和社会结构 推荐读物推荐读物o 交互交互设计设计超越人机交互超越人机交互,电子工业出版社,电子工业出版社 o 设计心理学设计心理学,唐纳德,唐纳德A A诺曼诺曼o 情感化设计情感化设计,唐纳德,唐纳德AA诺曼诺曼o 可用性工程可用性工程,尼尔森,尼尔森 以部署环境创建开始,在整个生命周期阶以部署环境创建开始,在整个生命周期阶
21、段中处于逻辑设计和技术需求阶段段中处于逻辑设计和技术需求阶段 部署环境包含整个解决方案的逻辑架构和部署环境包含整个解决方案的逻辑架构和服务质量(服务质量(QoSQoS)需求)需求 部署架构设计是一个反复迭代的过程,通部署架构设计是一个反复迭代的过程,通常需要多次查看常需要多次查看QoSQoS要求和多次检查先前的要求和多次检查先前的设计,需要考虑了服务质量设计,需要考虑了服务质量QoSQoS需求的相互需求的相互关系,平衡取舍相关问题成本以实现最佳关系,平衡取舍相关问题成本以实现最佳解决方案,最终满足项目的业务目标解决方案,最终满足项目的业务目标 部署架构部署架构 实施规范实施规范 实施计划实施计
22、划 o 迁移计划迁移计划 o 安装计划安装计划 o 用户管理计划用户管理计划 o 测试计划测试计划 o 滚动淘汰计划滚动淘汰计划o 灾难恢复计划灾难恢复计划 o 操作计划(运行书)操作计划(运行书) o 培训计划培训计划 逻辑体系结构逻辑体系结构 服务质量要求服务质量要求 使用情况分析使用情况分析 用例用例 服务水平协议服务水平协议 总体拥有成本总体拥有成本 业务目标业务目标 一般方法一般方法o 估计处理器需求估计处理器需求 o 估计安全传输的处理器需求估计安全传输的处理器需求 o 可用性和可扩展性的复制服务可用性和可扩展性的复制服务 设计分析设计分析o 识别瓶颈识别瓶颈 o 优化资源优化资源
23、 o 管理风险管理风险 设计实例设计实例 o 在线招聘系统在线招聘系统 体系结构体系结构 网上招聘系统网上招聘系统管理端管理端客户端客户端登录管登录管理理用户管用户管理理题库管题库管理理问卷管问卷管理理职位管职位管理理简历管简历管理理面试管面试管理理用户登录用户登录管理端页面管理端页面用户管理用户管理题库管理题库管理问卷管理问卷管理职位管理职位管理简历管理简历管理面试管理面试管理职位查询职位查询填写简历填写简历问卷回答问卷回答客户端页面客户端页面 设计是软件工程技术核心设计是软件工程技术核心 数据结构数据结构、体系结构体系结构、接口接口和和软件组件软件组件的过程细节在设计的过程细节在设计中逐步
24、细化、开发、评审和记录中逐步细化、开发、评审和记录 模块化模块化(包括程序和数据)和(包括程序和数据)和抽象抽象概念能够使设计人员简概念能够使设计人员简化和重用软件组件化和重用软件组件 细化细化提供了详细表示各顺序功能层的机制提供了详细表示各顺序功能层的机制 程序和数据结构程序和数据结构有助于建立软件架构的整体视图,而有助于建立软件架构的整体视图,而过程过程提供了算法实现必要的细节提供了算法实现必要的细节 信息隐藏信息隐藏和和功能独立功能独立为实现有效模块化提供了启发为实现有效模块化提供了启发 首先研究、分析和审查数据流图。首先研究、分析和审查数据流图。 从软件的需求规格说从软件的需求规格说明
25、中弄清数据流加工的过程,对于发现的问题及时解决。明中弄清数据流加工的过程,对于发现的问题及时解决。 然后根据数据流图决定问题的类型。数据处理问题典型的然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:类型有两种:变换型和事务型变换型和事务型。针对两种不同的类型分别。针对两种不同的类型分别进行分析处理。进行分析处理。 由数据流图由数据流图推导出推导出系统的初始结构图。系统的初始结构图。 利用一些启发式原则来改进系统的初始结构图,直到得到利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。符合要求的结构图为止。 修改和补充数据词典。修改和补充数据词典。 制定测试计划
26、。制定测试计划。 传入模块传入模块 从下属模块取得数据,经过某些处理,再将其从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。传送给上级模块。它传送的数据流叫做逻辑输入数据流。 传出模块传出模块 从上级模块获得数据,进行某些处理,再将其从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。传送给下属模块。它传送的数据流叫做逻辑输出数据流。 变换模块变换模块 它从上级模块取得数据,进行特定的处理,转它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做换成其它形式,再传送回上级模块。它
27、加工的数据流叫做变换数据流。变换数据流。 协调模块协调模块 对所有下属模块进行协调和管理的模块。对所有下属模块进行协调和管理的模块。 变换型数据处理问变换型数据处理问题的工作过程大致题的工作过程大致分为三步,即取得分为三步,即取得数据,变换数据和数据,变换数据和给出数据。给出数据。 相应于取得数据、相应于取得数据、变换数据、给出数变换数据、给出数据,变换型系统结据,变换型系统结构图由输入、中心构图由输入、中心变换和输出等三部变换和输出等三部分组成。分组成。 它接受一项事务,根据事务处理的特点和性质,选择分派它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。一个
28、适当的处理单元,然后给出结果。 在事务型系统结构图中,事务中心模块按所接受的事务的在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。模块又可能调用若干个细节模块。 变换分析方法由以下四步组成:变换分析方法由以下四步组成:o 重画数据流图;重画数据流图;o 区分有效(逻辑)输入、有效(逻辑)输出和中心变区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;换部分;o 进
29、行一级分解,设计上层模块;进行一级分解,设计上层模块;o 进行二级分解,设计输入、输出和中心变换部分的中进行二级分解,设计输入、输出和中心变换部分的中、下层模块。、下层模块。输入输入输出输出中心变换中心变换 在选择模块设计的次序时,必须对一个模块的在选择模块设计的次序时,必须对一个模块的全部直接下全部直接下属模块都设属模块都设计完成之后,计完成之后,才能转向另才能转向另一个模块的一个模块的下层模块的下层模块的设计。设计。 在设计下层模块时,应考虑模块的耦合和内聚问题,以提在设计下层模块时,应考虑模块的耦合和内聚问题,以提高初始结构图的质量。高初始结构图的质量。 使用使用“黑箱黑箱”技术技术:
30、: 在设计当前模块时,先把这个模块的在设计当前模块时,先把这个模块的所有下层模块定义成所有下层模块定义成“黑箱黑箱”,在设计中利用它们时,暂时,在设计中利用它们时,暂时不考虑其内部结构和实现。在这一步定义好的不考虑其内部结构和实现。在这一步定义好的“黑箱黑箱”,在,在下一步就可以对它们进行设计和加工。这样,又会导致更多下一步就可以对它们进行设计和加工。这样,又会导致更多的的“黑箱黑箱”。最后,全部。最后,全部“黑箱黑箱”的内容和结构应完全被确的内容和结构应完全被确定。定。 在模块划分时,一个模块的直接下属模块一般在在模块划分时,一个模块的直接下属模块一般在5 5个左右个左右。如果直接下属模块超
31、过。如果直接下属模块超过1010个,可设立中间层次。个,可设立中间层次。 如果出现了以下情况,就停止模块的功能分解:如果出现了以下情况,就停止模块的功能分解: 当模块不能再细分为明显的子任务时;当模块不能再细分为明显的子任务时; 当分解成用户提供的模块或程序库的子程序时;当分解成用户提供的模块或程序库的子程序时; 当模块的界面是输入输出设备传送的信息时;当模块的界面是输入输出设备传送的信息时; 当模块不宜再分解得过小时。当模块不宜再分解得过小时。 在很多软件应用中,存在某种作业数据流,它可以引发一在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。
32、这个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。种数据流就叫做事务。 与变换分析一样,事务分析也是从分析数据流图开始,自与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。顶向下,逐步分解,建立系统到结构图。输入ABCDEFGH中心变换输出逻辑逻辑输入输入物理物理输入输入逻辑逻辑输出输出物理物理输出输出总控总控逻辑输入逻辑输入调度控制调度控制C456CIFDEHG输出输出G H IG H I 识别事务源识别事务源利用数据流图和数据词典,从问题定义和需求分析的结果中利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事
33、务。通常,事务来自物理输入装置,找出各种需要处理的事务。通常,事务来自物理输入装置。有时,设计人员还必须区别系统的输入、中心加工和输出。有时,设计人员还必须区别系统的输入、中心加工和输出中产生的事务。中产生的事务。 规定适当的事务型结构规定适当的事务型结构在确定了该数据流图具有事务型特征之后,根据模块划分理在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。论,建立适当的事务型结构。 识别各种事务和它们定义的操作识别各种事务和它们定义的操作从问题定义和需求分析中找出的事务及其操作所必需的全部从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事
34、务,必须仔细地定义它们的操信息,对于系统内部产生的事务,必须仔细地定义它们的操作。作。 注意利用公用模块注意利用公用模块在事务分析的过程中,如果不同事务的一些中间模块可由具在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。低层模块构造成公用模块。 对每一事务,或对联系密切的一组事务,建立一个事务处对每一事务,或对联系密切的一组事务,建立一个事务处理模块;如果发现在系统中有类似的事务,可以把它们组成理模块;如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。
35、一个事务处理模块。 对事务处理模块规定它们全部的下层操作模块对事务处理模块规定它们全部的下层操作模块 对操作模块规定它们的全部细节模块对操作模块规定它们的全部细节模块 变换分析是软件系统结构设计的主要方法。一变换分析是软件系统结构设计的主要方法。一般,一个大型的软件系统是变换型结构和事务型结般,一个大型的软件系统是变换型结构和事务型结构的混合结构。所以,我们通常利用以构的混合结构。所以,我们通常利用以变换分析为变换分析为主,事务分析为辅主,事务分析为辅的方式进行软件结构设计。的方式进行软件结构设计。 组件级设计也称为过程设计,位于数据设计、体组件级设计也称为过程设计,位于数据设计、体系结构设计
36、和接口设计完成之后系结构设计和接口设计完成之后 任何程序总可以用三种结构化的构成元素来设计任何程序总可以用三种结构化的构成元素来设计和实现和实现o 顺序:任何算法规约中的核心处理步骤顺序:任何算法规约中的核心处理步骤o 条件:允许根据逻辑情况选择处理的方式条件:允许根据逻辑情况选择处理的方式o 重复:提供了循环重复:提供了循环 详细设计工具可以分为以下三类:详细设计工具可以分为以下三类:o 图形设计符号:流程图、盒图等图形设计符号:流程图、盒图等o 表格设计符号:决策表等表格设计符号:决策表等o 程序设计语言:程序设计语言:PDLPDL等等 程序流程图也称为程序框图,程序流程图使用五种基本控程
37、序流程图也称为程序框图,程序流程图使用五种基本控制结构是制结构是: :程序流程图的标准符号程序流程图的标准符号 循环的标准符号循环的标准符号 注解的使用注解的使用 多出口判断多出口判断 出口入口 某商场进行优惠促销:若购物金额某商场进行优惠促销:若购物金额x x在在500500元以上,打元以上,打8 8折;若购物金额折;若购物金额x x在在300300元以上元以上,打,打9 9折;否则,不打折折;否则,不打折. .设计算法的程序设计算法的程序框图,要求输入购物金额框图,要求输入购物金额x x,即能输出实际,即能输出实际交款额交款额. . N-SN-S图也叫做盒图。五种基本控制结构由五种图形构件
38、表图也叫做盒图。五种基本控制结构由五种图形构件表示。示。 N-SN-S图的嵌套定义形式图的嵌套定义形式 PADPAD也设置了五种基本控制结构的图式,并允许递归使用也设置了五种基本控制结构的图式,并允许递归使用。 PADPAD描述的示例描述的示例对应于增量型循环结构对应于增量型循环结构for i := n1 to n2 step n3 dofor i := n1 to n2 step n3 do在在PADPAD中有相应的循环控制结构中有相应的循环控制结构 判定表用于表示程序的静态逻辑判定表用于表示程序的静态逻辑 在判定表中的条件部分给出所有的两在判定表中的条件部分给出所有的两分支判断的列表,动作
39、部分给出相应分支判断的列表,动作部分给出相应的处理的处理 要求将程序流程图中的多分支判断都要求将程序流程图中的多分支判断都改成两分支判断改成两分支判断入口出口 列出与一个具体过程列出与一个具体过程( (或模块或模块) )有关的所有处理。有关的所有处理。 列出过程执行期间的所有条件列出过程执行期间的所有条件( (或所有判断或所有判断) )。 将特定条件取值组合与特定的处理相匹配,消去将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。不可能发生的条件取值组合。 将右部每一纵列规定为一个处理规则,即对于某将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。一条件取
40、值组合将有什么动作。 PDLPDL是一种用于描述功能模块的算法设计和是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。加工细节的语言。称为设计程序用语言。它是一种伪码。它是一种伪码。 伪码的语法规则分为伪码的语法规则分为“外语法外语法”和和“内语内语法法”。 PDLPDL具有严格的关键字外语法,用于定义控具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使作和条件的内语法又是灵活自由的,可使用自然语言的词汇。用自然语言的词汇。 PROCEDURE spellcheck IS PROCE
41、DURE spellcheck IS BEGINBEGIN split document into single words split document into single words lood up words in dictionary lood up words in dictionary display words which are not in display words which are not in dictionary dictionary create a new dictionary create a new dictionary END spellcheckEN
42、D spellcheck 提供全部结构化控制结构、数据说明和模提供全部结构化控制结构、数据说明和模块特征。能对块特征。能对PDLPDL正文进行结构分割,使之正文进行结构分割,使之变得易于理解。变得易于理解。 为了区别关键字,规定关键字一律大写,为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。划线,或者规定它们为黑体字。 内语法使用自然语言来描述处理特性。内语法比内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力
43、放在描述算法的逻辑上以利于人们可把主要精力放在描述算法的逻辑上。 有数据说明机制,包括简单的有数据说明机制,包括简单的( (如标量和数组如标量和数组) )与与复杂的复杂的( (如链表和层次结构如链表和层次结构) )的数据结构。的数据结构。 有子程序定义与调用机制,用以表达各种方式的有子程序定义与调用机制,用以表达各种方式的接口说明。接口说明。 PROCEDURE spellcheck IS PROCEDURE spellcheck IS BEGINBEGIN split document into single words split document into single words lo
44、od up words in dictionary lood up words in dictionary display words which are not in dictionary display words which are not in dictionary create a new dictionary create a new dictionary END spellcheckEND spellcheckPROCEDURE spellcheckPROCEDURE spellcheckBEGINBEGIN- -* * split document into single wo
45、rds split document into single wordsLOOP get next wordLOOP get next word add word to word list in sortorder add word to word list in sortorder EXIT WHEN all words processed EXIT WHEN all words processedEND LOOPEND LOOP- -* * look up words in dictionary look up words in dictionaryLOOP get word from w
46、ord listLOOP get word from word listIF word not in dictionary THENIF word not in dictionary THEN - -* * display words not in dictionary display words not in dictionary display word display word prompt on user terminal prompt on user terminal IF user response says word OK THEN IF user response says w
47、ord OK THEN add word to good word list add word to good word list ELSE ELSE add word to bad word list add word to bad word list ENDIF ENDIF ENDIF ENDIF EXIT WHEN all words processed EXIT WHEN all words processedEND LOOPEND LOOP - -* * create a new words dictionary create a new words dictionary dicti
48、onary :dictionary :merge dictionary and good word listmerge dictionary and good word listEND spellcheckEND spellcheck 面向对象设计强调定义软件对象,并且使这些软件对象相面向对象设计强调定义软件对象,并且使这些软件对象相互协作来满足用户需求。互协作来满足用户需求。 面向对象分析和设计的界限是模糊的,从面向对象分析到面向对象分析和设计的界限是模糊的,从面向对象分析到面向对象设计是一个逐渐扩充模型的过程。分析的结果通面向对象设计是一个逐渐扩充模型的过程。分析的结果通过细化直接生成设计
49、结果,在设计过程中逐步加深对需求过细化直接生成设计结果,在设计过程中逐步加深对需求的理解,从而进一步完善需求分析的结果。的理解,从而进一步完善需求分析的结果。 分析和设计活动是一个反复迭代的过程。分析和设计活动是一个反复迭代的过程。 面向对象方法学在概念和表示方法上的一致性,保证了各面向对象方法学在概念和表示方法上的一致性,保证了各个开发阶段之间的平滑性。个开发阶段之间的平滑性。 面向对象设计的四个层次:面向对象设计的四个层次:o 确定系统的总体结构和风格,构造系统的物理模型,确定系统的总体结构和风格,构造系统的物理模型,将系统划分成不同的子系统。将系统划分成不同的子系统。o 中层设计:对每个
50、用例进行设计,规划实现用例功能中层设计:对每个用例进行设计,规划实现用例功能的关键类,确定类之间的关系。的关键类,确定类之间的关系。o 进行底层设计:对每个类进行详细设计,设计类的属进行底层设计:对每个类进行详细设计,设计类的属性和操作,优化类之间的关系。性和操作,优化类之间的关系。o 补充实现非功能性需求所需要的类。补充实现非功能性需求所需要的类。 面向对象设计与结构化设计的过程面向对象设计与结构化设计的过程和方法完全不同和方法完全不同, ,要设计出高质量要设计出高质量的软件系统的软件系统, ,记住:记住:o 对接口进行设计对接口进行设计o 发现变化并且封装它发现变化并且封装它o 先考虑聚合
51、然后考虑继承先考虑聚合然后考虑继承 类内聚类内聚设计类的原则是一个类的属设计类的原则是一个类的属性和操作全部都是完成某个任务所必性和操作全部都是完成某个任务所必须的,其中不包括无用的属性和操作须的,其中不包括无用的属性和操作。o 例如设计一个平衡二叉树类,该类的目的就是要解决例如设计一个平衡二叉树类,该类的目的就是要解决平衡二叉树的访问,其中所有的属性和操作都与解决平衡二叉树的访问,其中所有的属性和操作都与解决这个问题相关,其他无关的属性和操作在这里都是垃这个问题相关,其他无关的属性和操作在这里都是垃圾,应该清除。圾,应该清除。 在面向对象设计中,耦合主要指不同对象之间相在面向对象设计中,耦合
52、主要指不同对象之间相互关联的程度。如果一个对象过多地依赖于其它互关联的程度。如果一个对象过多地依赖于其它对象来完成自己的工作,则不仅使该对象的可理对象来完成自己的工作,则不仅使该对象的可理解性下降,而且还会增加测试、修改的难度,同解性下降,而且还会增加测试、修改的难度,同时降低了类的可重用性和可移植性。时降低了类的可重用性和可移植性。 对象不可能是完全孤立的,当两个对象必须相互对象不可能是完全孤立的,当两个对象必须相互联系时,应该联系时,应该通过类的公共接口实现耦合通过类的公共接口实现耦合,不应,不应该依赖于类的具体实现细节。该依赖于类的具体实现细节。 交互耦合交互耦合如果对象之间的耦合是通过
53、如果对象之间的耦合是通过消消息连接息连接来实现的,则这种耦合就是交互耦来实现的,则这种耦合就是交互耦合。在设计时应该尽量减少对象之间发送合。在设计时应该尽量减少对象之间发送的消息数和消息中的参数个数,降低消息的消息数和消息中的参数个数,降低消息连接的复杂程度。连接的复杂程度。 继承耦合继承耦合继承耦合是继承耦合是一般化类与特殊化一般化类与特殊化类类之间的一种关联形式,设计时应该适当之间的一种关联形式,设计时应该适当使用这种耦合。在设计时要特别认真分析使用这种耦合。在设计时要特别认真分析一般化类与特殊化类之间继承关系,如果一般化类与特殊化类之间继承关系,如果抽象层次不合理,可能会造成对特殊化类抽
54、象层次不合理,可能会造成对特殊化类的修改影响到一般化类,使得系统的稳定的修改影响到一般化类,使得系统的稳定性降低。另外,在设计时特殊化类应该性降低。另外,在设计时特殊化类应该尽尽可能多地继承和使用可能多地继承和使用一般化类的属性和服一般化类的属性和服务,充分利用继承的优势。务,充分利用继承的优势。 软件重用是从设计阶段开始的,所有的设计工作软件重用是从设计阶段开始的,所有的设计工作都是为了使系统完成预期的任务,为了提高工作都是为了使系统完成预期的任务,为了提高工作效率、减少错误、降低成本,就要充分考虑软件效率、减少错误、降低成本,就要充分考虑软件元素的重用性。重用性有两个方面的含义:元素的重用
55、性。重用性有两个方面的含义:o 尽量使用已有的类尽量使用已有的类,包括开发环境提供的类库和已有的相似的类;,包括开发环境提供的类库和已有的相似的类;o 如果确实需要创建新类,则在如果确实需要创建新类,则在设计这些新类时考虑将来的可重用性设计这些新类时考虑将来的可重用性。 设计一个可重用的软件比设计一个普通软件的代设计一个可重用的软件比设计一个普通软件的代价要高,但是随着这些软件价要高,但是随着这些软件被重用次数被重用次数的增加,的增加,分摊到它的设计和实现成本就会降低。分摊到它的设计和实现成本就会降低。 框架是框架是一组可用于不同应用的类的集合一组可用于不同应用的类的集合。框架中。框架中的类通
56、常是一些抽象类并且相互有联系,可以通的类通常是一些抽象类并且相互有联系,可以通过继承的方式使用这些类。例如,过继承的方式使用这些类。例如,JavaJava应用程序应用程序接口(接口(APIAPI)就是一个成功的框架包,为众多的应)就是一个成功的框架包,为众多的应用提供服务,但一个应用程序通常只需要其中的用提供服务,但一个应用程序通常只需要其中的部分服务,可以部分服务,可以采用继承或聚合的方式采用继承或聚合的方式将应用包将应用包与框架包关联在一起来获得需要的服务。一般不与框架包关联在一起来获得需要的服务。一般不会直接去修改框架的类,而是通过继承或聚合为会直接去修改框架的类,而是通过继承或聚合为应
57、用创建合适的应用创建合适的GUIGUI类。类。 系统构架设计系统构架设计 用例设计用例设计 类设计类设计 数据库设计数据库设计 用户界面设计用户界面设计 构架设计的目的是要勾画出系统的总体结构架设计的目的是要勾画出系统的总体结构,这项工作由经验丰富的构架设计师主构,这项工作由经验丰富的构架设计师主持完成。持完成。 该活动以用例模型、分析模型为输入。该活动以用例模型、分析模型为输入。 输出:物理结构、子系统及其接口、概要输出:物理结构、子系统及其接口、概要的设计类。的设计类。 首先用首先用UMLUML的配置图(部署图)的配置图(部署图)描述系统的物理描述系统的物理构架构架 将需求分析阶段捕获的系
58、统功能分配到这些物理将需求分析阶段捕获的系统功能分配到这些物理节点上。节点上。 配置图上可以显示计算节点的拓扑结构、硬件设配置图上可以显示计算节点的拓扑结构、硬件设备配置、通信路径、各个节点上运行的系统软件备配置、通信路径、各个节点上运行的系统软件配置、应用软件配置。配置、应用软件配置。 一个图书馆信息管理系统的物理模型如图示一个图书馆信息管理系统的物理模型如图示 考虑到图书馆内部用户如果也通过互联网使用系统,效率会受影响。远程读者,通过Internet访问系统,实现查询图书、预借图书的功能。本单位其他部门的读者,通过单位局域网查询、预借图书。图书馆内部工作人员,在局域网上完成日常的借还书、采
59、编、图书管理等工作。 对于一个复杂的软件系统来说,将其分解成若干对于一个复杂的软件系统来说,将其分解成若干个子系统,子系统内还可以继续划分子系统或包个子系统,子系统内还可以继续划分子系统或包,这种自顶向下、逐步细化的组织结构非常符合,这种自顶向下、逐步细化的组织结构非常符合人类分析问题的思路。人类分析问题的思路。 每个子系统与其它子系统之间应该定义接口,在每个子系统与其它子系统之间应该定义接口,在接口上说明交互信息,注意这时还不要描述子系接口上说明交互信息,注意这时还不要描述子系统的内部实现。统的内部实现。 可用可用UMLUML组件图组件图表示。表示。 1 1)划分各个子系统的方式:)划分各个
60、子系统的方式:o 按照功能划分按照功能划分,将相似的功能组织在一个子系统中;,将相似的功能组织在一个子系统中;o 按照系统的物理布局划分按照系统的物理布局划分,将在同一个物理区域内的,将在同一个物理区域内的软件组织为一个子系统;软件组织为一个子系统;o 按照软件层次划分子系统按照软件层次划分子系统,软件层次通常可划分为用,软件层次通常可划分为用户界面层、专用软件层、通用软件层、中间层和数据户界面层、专用软件层、通用软件层、中间层和数据层,见后图。层,见后图。用户界面层用户界面层是与用户应用有密切关系的是与用户应用有密切关系的内容,主要接受用户的输入信息,并且内容,主要接受用户的输入信息,并且将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南充十中考试试题及答案
- 2026年物业管理师职业技能鉴定考试(技能实操中级、四级)强化练习题及答案
- 2026年上教资(小学)《综合素质》真题及答案
- 2026年遴选公务员考试(公共基础知识)全真模拟试题及答案解析(内蒙古兴安)
- 2026年湖北省孝感市专业技术职务水平能力测试(新闻)自测试题及答案
- 福建省晋江市部分学校2025-2026学年高一上学期学科素养检测英语试题(解析版)
- 2026年湖北省荆门市工程专业职务水平能力测试(纺织)全真模拟试题及答案
- 2026年湖北省鄂州市工程专业职务水平能力测试(纺织)模拟试题及答案
- 2026年海南省全国物业管理师资格考试(物业管理实务)在线自测试题库(建设部)
- 2026年度湖北省部分工程高、中级职称水平能力测试(科技信息图书资料+图书资料)综合练习题及答案
- 保险公司业务制度
- 2026春道德与法治三年级下册教学计划及进度表
- 6月9日档案宣传日课件
- 棉花检验知识培训课件
- (更新)高龄颈椎病患者加速康复外科与延续护理共识解读课件
- T-CCEMA 0006-2024煤矸石基人造土壤基质
- 新交际英语(2024)一年级上册Unit 5 School things 核心素养教案
- 2025小型化城市综合管廊技术规程
- 学习道法课件的方法
- 贝朗crrt使用及维护课件
- SHA1-42(01)-2025 上海市市政工程养护维修估算指标 第一册 城市道路
评论
0/150
提交评论