软件工程课件第三章完整版本.ppt_第1页
软件工程课件第三章完整版本.ppt_第2页
软件工程课件第三章完整版本.ppt_第3页
软件工程课件第三章完整版本.ppt_第4页
软件工程课件第三章完整版本.ppt_第5页
已阅读5页,还剩232页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件生存期中的决定性步骤 软件开发的依据 也是软件工程项目各项活动的基础 其最终目的是把软件功能和性能的总体概念描述为具体的完全的软件需求规格说明 在软件开发初期及时而准确地确定需求是软件开发人员 软件管理人员以及用户都非常关心的问题 这个问题解决好了 软件开发人员能够知道自己要做哪些开发工作 并可开始考虑怎样去满足这些需求 软件管理人员可以较准确地估计开发工作量 进度和计划 成本和价格 用户则可放心 预计获得的软件产品能解决自己哪些应用问题 软件需求分析 这一步由软件开发人员和用户共同完成 用户对软件功能和性能提出要求 软件开发人员细致分析 全面理解用户的各项要求 由此导出完全的 精细的软件逻辑模型并写出软件需求规格说明 以此作为软件设计的基础 软件需求分析的目标是深入描述软件的功能和性能 确定软件设计的约束和软件同其它系统元素的接口细节 定义软件的其它有效性需求 需求分析研究的对象是软件项目的用户要求 一方面 必须全面理解用户的各项要求 但又不能全盘接受所有的要求 另一方面 要准确地表达被接受的用户要求 只有经过确切描述的软件需求才能成为软件设计的基础 需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型 解决目标系统的 做什么 的问题 这里我们提到了建立逻辑模型 模型主要说明系统必须做什么 而不是怎么做 一般采用图形符号表示的方法来描述信息 处理 系统行为 模型的另外一些部分可以是纯的文字形式 需求分析中 建立模型可起到许多很重要的作用 可辅助分析人员更好地了解系统的信息 功能和行为 从而使分析更容易 更系统化 是评审的焦点 是确定系统完整性 一致性 规格说明准确性的关键 是设计的基础 能给设计人员提供一种软件的基本表达式 这种表达式可映射成为实现的正文 以后讨论的各种分析方法实际就是建模方法 一 问题识别研究 可行性分析报告 及 软件项目实施报告 从系统的角度来理解软件并评审软件范围是否恰当确定对目标系统的综合要求 即软件的需求提出这些需求实现条件 以及需求应达到的标准 软件的需求包括 功能需求性能需求环境需求可靠性需求安全保密要求用户界面需求 资源使用需求成本消耗需求开发进度需求预先估计以后系统可能达到的目标 问题识别的另一项工作是建立分析所需要的通信途径 以保证能顺利地对问题进行分析 分析员必须与用户 软件开发机构的管理部门 软件开发组人员建立联系 充分交流 沟通 需求获取技术 获取用户需求的主要方法是调查研究 1 了解系统的需求 软件开发常常是系统开发的一部分 仔细分析研究系统的需求规格说明 对软件的需求获取是很有必要的 2 市场调查 了解市场对待开发软件有什么样的要求 了解市场上有无与待开发软件类似的系统 如果有 在功能上 性能上 价格上情况如何 3 访问用户和用户领域的专家 把从用户那里得到的信息作为重要的原始资料进行分析 访问用户领域的专家所得到的信息将有助于对用户需求的理解 4 考察现场 了解用户实际的操作环境 操作过程和操作要求 对照用户提交的问题陈述 对用户需求可以有更全面 更细致的认识 在做调查研究时 可以采取如下的调查方式 制定调查提纲 向不同层次的用户发调查表 按用户的不同层次 分别召开调查会 了解用户对待开发系统的想法和建议 向用户领域的专家或在关键岗位上工作的人个别咨询 实地考察 跟踪现场业务流程 查阅与待开发系统有关的资料 使用各种调查工具 如数据流图 任务分解图 网络图等 为了能够有效地获取和理清用户需求 应当打破用户 需方 和开发者 供方 的界限 共同组成一个联合小组 发挥各自的长处 协同工作 二 分析与综合分析人员对获取的需求 进行一致性的分析检查 在分析 综合中从信息流和信息结构出发 逐步细化软件功能 划分成各个子功能 这里也包括对数据域进行分解 并分配到各个子功能上 以确定系统的构成及主要成分 并用图文结合的形式 建立起新系统的逻辑模型 常用的分析方法 面向数据流的结构化分析方法 SA 面向数据结构的Jackson方法 JSD 面向数据结构的结构化数据系统开发方法 DSSD 面向对象的分析方法 OOA 三 编制需求分析阶段的文档已经确定下来的需求应当得到清晰准确的描述 软件需求规格说明书 把双方共同的理解与分析结果用规范的方式描述出来 作为今后各项工作的基础 初步的用户手册 着重反映被开发软件的用户功能界面和用户使用的具体要求 它能强制分析人员从用户使用的观点考虑软件 确认测试计划 作为今后确认和验收的依据 修改 完善软件开发计划 能更准确地估计开发成本 进度及资源要求 因此要适当修正原计划 四 需求分析评审 需求分析的最后一步 复查手段 主要是验证需求的正确性 确定或修改需求以保证质量 一致性 需求之间不能互相矛盾 完整性 包括用户的每一个功能 性能等 现实性 软硬技术可以实现 有效性 确实能解决用户的问题 验证需求的正确性 评审的主要内容是 系统定义的目标是否与用户的要求一致 系统需求分析阶段提供的文档资料是否齐全 文档中的所有描述是否完整 清晰 准确反映用户要求 与所有其它系统成分的重要接口是否都已经描述 被开发项目的数据流与数据结构是否足够 确定 所有图表是否清楚 在不补充说明时能否理解 主要功能是否已包括在规定的软件范围之内 是否都已充分说明 设计的约束条件或限制条件是否符合实际 开发的技术风险是什么 是否考虑过软件需求的其它方案 是否考虑过将来可能会提出的软件需求 是否详细制定了检验标准 它们能否对系统定义是否成功进行确认 参加的人员 分析员 用户 需求者 开发部门的管理者 软件设计 实现 测试的人员都应当参加评审工作 评审一旦完成 软件需求规格说明书要由用户和开发者双方签字 这样的规格说明书就成为软件开发合同 需求分析流程 软件分析方法多种多样 但必须遵循以下基本原则 一 必须能够表达和理解问题的数据域和功能域数据流 数据通过一个系统时的变化方式 对数据进行变换即功能域 两功能间的数据传递即为接口 数据内容 数据项 数据结构 各种数据项的逻辑组织 数据域 二 必须按自顶向下逐层分解的方式对问题进行分解和不断细化复杂问题简单化 要确定各部分的接口 功能域 数据域均能分解 三 建模建立模型可以帮助分析人员更好地理解软件系统的信息 功能 行为 这些模型也是软件设计的基础 一 分析员负责沟通用户和开发人员的认识和见解 起着桥梁作用 协助用户对所开发的软件阐明要求 与开发人员交换意见 探讨用户所提要求的合理性及实现的可能性 即对要求进行规范 负责编写软件需求规格说明书和用户手册 分析员应具备相当的素质 1 熟练掌握计算机硬 软件专业知识 具有一定的系统开发经验 2 善于进行抽象的思维和创造性的思维 善于把握抽象的概念 并把它们重新整理成为各种逻辑成分 并给出简明 清晰的描述 3 理解能力 接受能力 组织能力强 4 能够倾听他人的意见 注意发挥其他人员的作用 5 具有良好的书面和口头交流表达能力 即人际交往能力强 二 用户 用户在软件需求分析中也负有重要责任 用户 是个集体 应包括单位的业务负责人 有关部门的负责人以及与系统运行有关的操作人员 他们为分析员提供完整 准确的原始资料 分析员的工作应始终得到用户的密切配合 需求分析方法由对软件问题的数据域和功能域的系统分析过程及其表示方法组成 它定义了表示系统逻辑模型和物理模型的方式 大多数的需求分析方法均是以数据为中心的 都具有以下特征 1 支持数据域分析的机制 提供了一种表示数据域的机制 分析员根据这种表示 确定软件功能及其它特性 最终建立一个待开发软件的抽象模型 即目标系统的逻辑模型 数据流 用将输入转换成输出的变换过程来描述 数据内容 可用数据词典表示 2 功能表示的方法 用数据变换或加工来表示 功能的标识 用图形符号标识功能 功能的说明 用自然语言 形式化的规格说明语言或结构化语言来说明功能 3 接口的定义 接口可通过数据流分析来确定 两个功能间的数据传递就确定了功能间的接口 某个具体功能的流进或流出数据流应是其它相关功能的流出或流入数据流 4 问题分解机制以及对抽象的支持 支持自顶向下 逐层细化策略 使系统形成层次结构 在开发初期 要想得到一个完整准确的规格说明不是一件容易的事 特别是对一些大型的软件项目 用户往往对系统只有一个模糊的想法 很难完全准确地表达对系统的全面要求 软件开发者对于所要解决的应用问题认识更是模糊不清 随着开发工作向前推进 用户可能会产生新的要求 或因环境变化 要求系统也能随之变化 开发者又可能在设计与实现的过程中遇到些没有预料到的实际困难 需要以改变需求来解脱困境 因此规格说明难以完善 需求的变更 以及通信中的模糊和误解 都会成为软件开发顺利推进的障碍 为解决这些问题 逐渐形成了软件系统的快速原型的概念 一 软件原型化方法概述 在软件开发中 原型是软件的一个早期可运行的版本 它反映最终系统的部分重要特性 原型是获得需求的机制 可以逐步确定各种需求细节 适应需求的变更 原型的分类 原型有三种不同的作用类型 探索型 目的是要弄清对目标系统的要求 确定所希望的特性 并探讨多种方案的可行性 实验型 这种原型用于大规模开发和实现之前 考核方案是否合适 规格说明是否可靠 进化型 这种原型的目的不在于改进规格说明 而是将系统建造得易于变化 在改进原型的过程中 逐步将原型进化成最终系统 由此可见 原型化方法可用于软件开发的全过程 在使用原型时可采取两种不同的策略 废弃策略 先构造一个功能简单而且质量要求不高的模型系统 针对这个模型系统反复进行分析修改 形成比较好的设计思想 据此设计出更加完整 准确 一致 可靠的最终系统 系统构造完成后 原来的模型系统就被废弃不用 追加策略 先构造一个功能简单而且质量要求不高的模型系统 作为最终系统的核心 然后通过不断地扩充修改 逐步追加新要求 最后发展成为最终系统 建立快速原型 进行系统的分析和构造的好处 增进软件人员和用户对系统需求的理解 使比较含糊的具有不确定性的软件需求 主要是功能 明确化 节省开销 缩短开发周期 软件原型化方法提供了一种有力的学习手段 使用原型化方法 可以容易地确定系统的性能 确认各项主要系统服务的可应用性 确认系统设计的可行性 确认系统作为产品的结果 即可作为理解和确认软件需求规格说明的工具 软件原型的最终版本 有的可以原封不动地成为产品 有的略加修改就可以成为最终系统的一个组成部分 这样有利于建成最终系统 二 快速原型开发模型 原型生存期 原型的开发和使用过程叫做原型生存期 下图是原型生存期的模型及模型的细化 1 快速分析 在分析者和用户的紧密配合下 快速确定软件系统的基本要求 要进行两项工作 原型开发目标的建立 弄清原型应该反映系统哪些方面的需求及希望从原型中学到什么 原型的功能选择 通常就是把最初的需求简化到某种程度上的单一化 但是 应当注意保证单一化是一致的和连贯的 存在不同的原型开发方式 水平原型开发 原型中包含全部系统功能 但每个功能都被单一化 垂直原型开发 只包含某些功能 而这些功能的每一个都被完全实现 对角原型开发 两者的混合 2 原型构造 在快速分析基础上 根据基本需求 尽快实现一个可运行的系统 这要采用一定的原型开发技术来完成 3 运行与评价 用户在开发者指导下试用原型 在试用的过程中考核评价原型的特性 分析其运行结果是否满足规格说明的要求 以及规格说明描述是否满足用户愿望 在评价过程中 开发人员对用户需求理解中的不一致和不足的地方都将被发现 此时 原型就成了一个有效的通信媒体 使用户和开发人员能够相互了解 每个评价期后 原型都要从它的使用中获得经验 进行修改 然后接受进一步评价 这个过程迭代进行 直到原型符合目标为止 三 软件开发过程 在软件开发过程中的任何阶段均可引进原型开发过程 也可合并若干阶段 用原型开发过程代替 如下图所示 1 辅助或代替分析阶段 在分析阶段利用快速原型方法可以补充和完善需求 以得到良好的需求规格说明 它代替了传统的仅由复审和确认来提高需求规格说明质量的方法 2 辅助设计阶段 目的是考察设计方案的可行性与合理性 可迅速得到完善的设计规格说明 3 代替分析与设计阶段 在实施原型开发的过程中 不再考虑完善的需求说明 把分析 定义和设计交织在一起 通过原型的构造 评价与改进的迭代过程 逐步向最终系统的全面要求靠近 在原型完成后 可同时得到良好的需求规格说明和设计规格说明 4 代替分析 设计和实现阶段 此方式是在强有力的软件开发环境的支持下 通过原型生存期的反复迭代 直接得到软件的程序系统 交付系统测试 进化型的原型开发 5 代替全部定义和开发阶段 典型的进化型原型开发方法 它完全摆脱了传统的软件生存期模式 不再强调严格的开发阶段和高质量的阶段文档 在反复的原型迭代过程中 加强用户与开发者的通信 更有效地发现问题和解决问题 直接得到最终的软件产品 四 原型开发技术 用于尽快实现一个可运行的原型系统 通常用于构造原型的技术包括 可执行规格说明基于脚本 scenario 的设计自动程序设计专用语言可复用 reusable 的软件简化假设 1 可执行规格说明 可执行规格说明是用于需求规格说明的一种自动化技术 使用这种方法 人们可以直接观察他们用语言规定的任何系统性的行为 包括 代数规格说明有限状态模型可执行的数据流图 1 代数规格说明 代数规格说明使用集合 定义于这些集合上的函数和定义于这些函数上的方程来描述对象 规格说明的操作语义用这些方程表示 NEW STACK StackPUSH Stack Element StackPOP Stack Element Undefined POP NEW STACK UndefinedPOP PUSH stk elem elem其中 前三行定义了操作的语法 后两行把它们的语义定义为一些方程 举例 定义一个无界的栈及其操作 2 有限状态模型 parnas提出的使用最广泛的一种可执行规格说明形式 从一个初始状态开始接收输入 到产生输出 状态在推移变化 施加在状态元素上的约束确定了有效状态的推移 举例 建立用户 程序对话 3 可执行的数据流图 数据流图是基于结构化开发方法的结构化规格说明用一种可执行的语言程序代替定义处理逻辑的结构化英语 数据流图就成为由可执行语言程序模块组成的网络 在一定环境或工具的支持下就可成为一个可以执行的原型系统 2 基于脚本的设计 脚本是指用户界面的原型 一个脚本用以模拟在系统运行期间用户经历的事件 它提供了输入 处理 输出的屏幕格式和有关对话的模型 因此 软件开发者能够给用户显示系统的逼真的视图 使用户得以判断是否符合他的意图 可在任一脚本中使用一套可复用的软件模块 以表达某一方面的要求 可使用一种原型语言来描述原型系统 原型开发过程中用这种语言来定义屏幕 数据项 及其相关的操作 从系统的外部描述开始 开发与数据库的接口 错误处理和恢复过程等系统的与外部视图一致的细节 3 自动程序设计 自动程序设计是指在程序自动生成环境的支持下 利用计算机实现软件的开发 它可以自动地或半自动地把用户的非过程式问题规格说明转换为某种高级语言程序 主要手段有以下4种 演绎综合手段 基于数学推理的构造式证明 程序变换手段 将一程序转换成另一功能等价的程序 并保持其正确性不变 实例推广手段 从实例特征出发 将它推广为待编程序的特征 最后得到程序 过程化手段 研究甚高级语言的编译和知识的过程化 4 专用语言 专用语言是应用领域的模型化语言 在原型开发中使用专用语言 可方便用户和软件开发者在计划中的系统特性方面的交流 5 软件复用技术 利用可复用的模块 做出适当的组合 就可得到快速构造的原型系统 为了快速地构造原型 这些模块必须具备以下特征 具有简单而清晰的界面 接口 尽量不依赖其它的模块或数据结构 应具有一些通用的功能 软件复用技术可分为两大类 合成技术 可复用的软件构件可以是对某一函数 过程 子程序 数据类型 算法等可复用软件成份的抽象 利用这些构件来构造软件系统 用构件合成较大的构件有三种方式 一是连接 二是消息传递和继承 三是管道 pipe 机制 生成技术 利用可复用的模式 通过生成程序产生一个新的程序或程序段 产生的程序可以看做是模式的实例 可复用的模式有两种不同的形式 代码模式和规则模式 前者的例子是应用生成器 可复用的代码模式就存在于生成器自身 通过特定的参数替换 生成抽象软件模块的具体实体 后者的例子是变换系统 它通常采用超高级的规格说明语言 形式化地给出软件的需求规格说明 利用程序变换系统 有时要经过一系列的变换 把用超高级规格说明语言编写的程序转化成某种可执行语言的程序 6 简化假设 简化假设是在开发过程中使设计者迅速得到一个简化的系统所做的假设 尽管这些假设可能实际上并不能成立 但它们在原型开发过程中可以使开发者的注意力集中在一些主要的方面 在修改一个文件时 可以假设这个文件确实存在在存取文件时 待存取的记录总是存在一旦计划中的系统满足用户所有的要求 就可以撤消这些假设 并追加一些细节 面向数据流进行需求分析的方法结构化分析方法适合于数据处理类型软件的需求分析具体来说 结构化分析方法是一种建模活动 该方法使用简单易读符号 根据软件内部数据传递 变换的关系 自顶向下逐层分解 描绘出满足功能要求的软件模型 结构化分析方法使用工具 数据流图数据词典结构化英语判定表与判定树 一 数据流图 DFD DFD是一种描述数据流从输入到输出变换的应用图形技术 它只描述信息在系统中流动和处理的情况 用于功能建模 1 数据流图中的主要图形元素 数据加工 数据变换 数据源点或终点 外部实体 数据流 数据存储文件 DFD的基本要点 描述系统 做什么 而不考虑 怎么做 所以 DFD可用来表示一个系统或软件在任何层次上的抽象 即描述系统的逻辑模型 例 如图示 是一个飞机票预订系统的数据流图 它反映的功能是 旅行社把预订机票的旅客信息 姓名 年龄 单位 身份证号码 旅行时间 目的地等 输入机票预订系统 系统为旅客安排航班 打印出取票通知单 附有应交的帐款 旅客在飞机起飞前一天凭取票通知交款取票 系统检验无误 输出机票给旅客 2 数据流与数据加工之间的关系 3 数据流图的层次结构 为了表达数据处理过程的数据加工情况 需要采用层次结构的数据流图 按照系统的层次结构进行逐步分解 并以分层的数据流图反映这种结构关系 能清楚地表达和容易理解整个系统 分层的数据流图 在多层数据流图中 顶层流图仅包含一个加工 它代表被开发系统 它的输入流是该系统的输入数据 输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图 它处在最底层中间层流图则表示对其上层父图的细化 它的每一加工可能继续细化 形成子图 4 画数据流图的步骤 为了表达较为复杂问题的数据处理过程 要按照问题的层次结构进行逐步分解 并以一套分层的数据流图反映这种结构关系 1 首先画出顶层数据流图 顶层DFD的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系 顶层DFD只包含一个加工 用以表示被开发的系统 然后考虑该系统有哪些输入数据 从哪里来 有哪些输出数据 输出到哪里去 下图为飞机机票预订系统的顶层图 2 画系统内部 即画下层数据流图 将层号从0开始编号 采用自顶向下 由外向内的原则 画0层DFD 一般根据当前系统工作分组情况 并按新系统应有的外部功能 分解顶层图为若干子系统 决定每个子系统间的数据接口和活动关系 如机票预订系统的0层DFD如下 画更下层DFD 分解上层图中的加工 一般沿着输入流的方向 凡数据流的组成或值发生变化的地方则设置一个加工 这样一直进行到输出数据流 如有必要 某加工还可在下层图中继续分解 直到每一个加工足够简单 不能再分解为止 基本加工 5 画DFD的注意事项 DFD描述了系统由哪几部分组成 各部分之间的联系 是分析员交流思想的工具 它符号少 通俗易懂 只要稍作解释 用户就能理解 在草图的基础上 系统分析员应对图的分解 布局进行适当调整 画出正式图 使之更清晰 可读性更好 数据流图上所有图形符号只限于前述四种基本图形元素 数据流图的主图上的数据流必须封闭在外部实体之间 画数据流而不是控制流 DFD反映系统 做什么 不反映 如何做 因此箭头上的数据流名称只能是名词或名词短语 整个图中不反映加工的执行顺序 1 基本要求 2 关于层次的划分 在分层的DFD中 最上层DFD概括地反映出系统主要的逻辑功能 外部实体及数据存储 逐层扩展DFD 是对父图中某些处理框加以分解 凡是与这个处理框有关系的数据流 数据存储必须在子图中反映出来 怎样划分层次 划分到什么程度 一般认为 展开的层次与管理层次一致 分解要自然 功能要完整单一 一个处理框分解为3 4个处理 最多不超过7个 当进一步分解将涉及如何具体实现一个加工时就停止分解 此时每个加工应能完成单一功能 根据管理要求 功能可适当合并 处理框的描述一般用HIPO图 层次 输入 处理 输出图 表示 其本质就是数据词典 3 检查DFD的正确性 核对 修改 得到能确切反映用户问题的DFD 数据守恒 I O数据匹配 不能遗漏数据流 数据存储 必定有流入的数据流 写文件 从处理框指向数据存储 及流出的数据流 读文件 从数据存储指向处理框 至少要有流入的数据流 否则 就意味着遗漏某些加工 父图 子图的平衡 父图中某一处理框的I O数据流必须出现在子图中 否则 无法理解 任何一个数据流至少有一端是处理框 因为数据流是处理功能的输入或输出 即数据流的流动不能出现以下情况 外部实体数据存储外部实体外部实体数据存储数据存储 4 提高DFD的易理解性 可从以下方面提高易理解性 简化处理间的联系 分解过程中 应尽量减少处理框间I O数据流的数目 数目 处理的独立性 易理解性 均匀分解在同一层DFD中 若某些处理已是基本加工 描述的是细节 而另一些描述的是较高层的功能 还要进一步分解多次 则这样的分解就不均匀 此时应重新考虑分解 尽量避免特别不均匀的分解 适当命名DFD中各种成份的命名与易理解性有直接的关系 对所有的成份应用有意义的名称标注 准确表达其确切含义 6 DFD另一套基本符号 为了使数据流图便于在计算机上输入输出 以下给出了描述数据流图的另一套基本符号 表示数据流 只能水平或垂直画 表示加工 表示数据存储 表示源点或终点 以下是采用这套符号画出的飞机机票预订系统的DFD 7 实例 销售管理系统 某企业销售管理系统的功能为 1 接受顾客的订单 检验订单 若库存有货 进行供货处理 即修改库存 给仓库开备货单 并且将订单留底 若库存量不足 将缺货订单等入缺货记录 2 根据缺货记录进行缺货统计 将缺货通知单发给采购部门 以便采购 3 根据采购部门发来的进货通知单处理进货 即修改库存 并从缺货记录中取出缺货订单进行供货处理 4 根据留底的订单进行销售统计 打印统计表给经理 顶层 0层 分析功能说明 先找出哪些是属于系统之外的外部实体 然后画出顶层数据流图 1 顶层图如下 随后分解系统 每个子系统有哪些流动着的数据 哪些需要暂时保存的数据 通过什么加工使数据发生变换 根据系统功能在0层图上分解系统为五个加工 加工的名称及加工之间的数据流在功能说明中有动词和名词与之对应 1 0层图如下 返回 在下层 一层 二层 图的分解过程中 应仔细考虑每个加工内部还应该进行哪些处理 还有什么数据流产生 这些可能在功能说明中没有 需要分析人员和用户参考现行系统的工作流程 进行 创造 精细数据流图 1层图 图1 1 0层图 1层图 图2 0层图 订单记录 1层图 图3 0层图 1层图 图4 0层图 1层图 图5 0层图 二 数据词典 DD 数据词典是关于数据信息的集合 也就是对DFD中包含的所有被命名的图形元素的定义的集合 作用 供人查阅 提供关于数据的描述信息 数据词典与数据流图配合 能清楚地表达数据处理的要求 共同构成系统的逻辑模型 因此 数据词典中所有的定义应是严密的 精确的 不可有半点含混 不可有二义性 一 数据词典的内容 包括关于数据的以下信息 1 名称 注意名称的一致性 2 别名 将会使用的另一个名字 3 何处用 怎样用4 内容描述 用符号来定义数据 描述数据的结构 5 附加信息 数据类型 预置值 限制等 不同词条应给出的内容稍有不同 具体如下 1 数据流条目 数据流名 别名 说明 简要介绍作用即它产生的原因和结果数据流来源 来自何方数据流去向 去向何处数据流组成 数据结构数据流量 单位时间内的传输次数 例 数据流 订单 名称 订单别名 无说明 顾客订货时填写的项目数据流来源 顾客数据流去向 加工1 1组成 编号 订货日期 顾客编号 地址 电话 银行帐号 货物名称 规格 数量流通量 1000份 每周 2 数据存储条目 数据存储名称 别名 简述 存放的是什么数据组成 数据结构组织方式 查询要求 例 数据存储 库存记录 数据存储名称 库存记录别名 无简述 存放库存所有可供货物的信息组成 货物名称 编号 生产厂家 单价 库存量组织方式 索引文件 以货物编号为关键字查询要求 要求能立即查询 3 数据项条目 数据项名称 别名 简述 类型 长度 取值范围及含义 例 数据项 货物编号 数据项名称 货物编号别名 G No G num Goods No简述 本公司的所有货物的编号类型 字符串长度 10取值范围及含义 第一位 进口 国产第2 4位 类别第5 7位 规格第8 10位 品名编号 4 加工条目 加工名 加工编号 反映该加工的层次激发条件 优先级 输入数据流 输出数据流 加工逻辑 简述加工程序 加工顺序 例 加工 查询库存 加工名 查询库存加工编号 1 2激发条件 接收到合格订单时优先级 普通输入 合格订单输出 可供货订单 缺货订单加工逻辑 根据库存记录IF订单项目的数量 该项目库存量的临界值THEN可供货处理ELSE此订单缺货 登录 待进货后再处理ENDIF 5 源点及汇 终 点词条描述 名称 外部实体名简要描述 什么外部实体有关数据流 数目 二 数据结构的描述 基本方法 对数据自顶向下分解 由数据元素组成数据的方式有 顺序 以确定的次序连接两个或多个分量 选择 从两个或多个可能的元素中选取一个 重复 把指定的元素重复零次或多次 重复的次数可由上 下限说明 可选 一个元素可有可无 重复0次或1次 常用的描述方法有 定义式 Warnier图 1 定义式 符号含义举例 被定义为 与x a b 或 或x a b x a b 或m n重复x a x 3 a 8 可选x a 基本数据元素x a 连结符x 1 9 存折格式 存折 户名 所号 帐号 开户日 性质 印密 1 存取行 50户名 2 字母 24所号 001 999 帐号 00000001 99999999 开户日 年 月 日性质 1 6 注 1 表示普通户 5 表示工资户等印密 0 注 印密在存折上不显示存取行 日期 摘要 支出 存入 余额 操作 复核 日期 年 月 日年 1900 2099 月 01 12 日 01 31 摘要 1 字母 4支出 金额金额 0000000 01 9999999 99 操作 00001 99999 2 Warnier图 用树形结构描绘数据结构 方法 从左至右 从上到下 逐层分解 符号如下 花括号 表层次关系 同一括号下数据元素从上到下顺序排列 圆括号 表数据元素的重复次数 表示对位于它上 下两边的数据元素二者择一 例 报纸编辑的数据层次结构 头条新闻地区队头版部分国内新闻体育新闻职业队本地新闻拳击社论 1 1 经营简讯社论部分专栏 1 3 副刊部分 读者来信 1 3 商业新闻雇员简讯讽刺漫画 0 1 一般新闻体育新闻招生副刊部分商业新闻广告招聘广告求助 报纸 a Warnier图 b 细化后的Warnier图 三 DD的特点 通过名字能方便地查阅数据的定义 无冗余 无二义性 定义的书写方法简单方便且精确 严格 易更新 修改 四 DD的使用及管理 DD在整个系统开发过程以及系统运行后的维护阶段都是必不可少的工具 是所有人员工作的依据 统一的标准 可以确保数据在系统中的完整性和一致性 DD有两种使用方式 人工方式 把各类条目按前面介绍的描述格式写在卡片上 并分类建立一览表 1 按四类条目规范的格式印制卡片并分别填写各类条目的内容 2 先按图号顺序排列 同一图号的所有条目按数据流 数据项 数据存储和加工的顺序排列 3 同一图号中的同一条目 如数据流条目 咳按名字的字典顺序存放 加工一般按编号存放 4 同一成分在父图和子图都出现时 则只在父图上定义 5 建立索引目录 计算机方式 在人工方式基础上 整理存入计算机 大 中型计算机有专门的自动化DD软件包管理数据 方便查询 修改 DD由专人管理 数据管理员 数据管理员负责维护和管理DD 保证DD内容的完整一致 任何人 分析员 设计员 程序员 修改DD内容 都必须通过数据管理员 数据管理员要把DD的最新版本及时通知有关人员 对数据流图的每一个基本加工 必须有一个基本加工逻辑说明基本加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则加工逻辑说明必须描述实现加工的策略而不是实现加工的细节加工逻辑说明中包含的信息应是充足的 完备的 有用的 无冗余的 三 基本加工逻辑说明 用于写加工逻辑说明的工具 结构化英语判定表判定树 1 结构化英语 是一种介于自然语言和形式化语言之间的语言 问题描述语言PDL 语言的正文用基本控制结构进行分割 顺序结构选择结构重复结构加工中的操作用自然语言短语来表示 词汇表组成如下 英语命令动词数据词典中定义的名字控制结构关键词IF THEN ELSE CASE OF WHILE DO REPEAT UNTIL 的构成 PDL 例 商店业务处理系统中 检查发货单 if发货单金额超过 500thenif欠款超过了60天then在偿还欠款前不予批准else 欠款未超期 发批准书 发货单endifelse 发货单金额未超过 500 if欠款超过60天then发批准书 发货单及赊欠报告else 欠款未超期 发批准书 发货单endifendif 2 判定表 如果数据流图的加工需要依赖于多个逻辑条件的取值 使用判定表来描述比较合适判定表提供了一种把各种动作和条件转换为表格形式的表示法 判定表由四部分组成 各部分由双实线分隔 下面以加工 检查发货单 为例说明其组成 因此 判定表右半部的每一列实质上是一条规则 规定了与特定的条件组合相对应的处理 现就一实例讲讲构造判定表的步骤 某DFD中有一个 确定保险类别 加工 指的是申请汽车驾驶保险时 要根据申请者的情况确定不同的保险类别 加工逻辑为 如果申请者的年龄在21岁以下 要额外收费 如果申请者是21岁以上并是26岁以下的女性 适用于A类保险 如果申请者是26岁以下的已婚男性 或者是26岁以上的男性 适用于B类保险 如果申请者是21岁以下的女性或是26岁以下的单身男性 适用于C类保险 除此之外的其他申请者都适用于A类保险 返回 构造判定表的步骤如下 1 提取问题中的条件 条件是 年龄 性别 婚姻 2 标出条件的取值 如下表示 3 计算所有条件的组合数N 4 提取可能采取的动作 适用于A类保险 B类保险 C类保险 额外收费共四种 5 制作判定表 6 完善判定表 合并规则 减少冗余规则 规则的合并规律如下 判定表不能描述循环处理特性 3 判定树 判定树也是用来表达加工逻辑的一种工具 有时侯它比判定表更直观 经过需求分析 开发人员已经基本上理解了用户的要求 确定了目标系统的功能 DFD 定义了系统的数据 DD 描述了处理这些数据的基本策略 将这些共同的理解进行整理 最后形成文档资料 需求规格说明书 系统的需求规格说明通常是用自然语言来叙述的 但是用自然语言描述往往会出现歧义性 为了直观地分析系统的动作 从特定的视点出发描述系统的行为 需要采用动态分析的方法 最常用的动态分析方法 状态迁移图时序图Petri网 一 状态迁移图 状态迁移图是描述系统的状态如何响应外部的信号进行推移的一种图形表示 常用的图形符号如下 圆圈 表示可得到的系统状态箭头 表示从一种状态向另一种状态的迁移 标以导致迁移的信号或事件的名字 迁移的原因 例如 当有多个申请占用CPU运行的进程时 有关CPU分配的进程的状态迁移图如下 关键是要根据分析的目标和表达的目的来设置系统的状态 可得到的状态 就绪 运行 等待生成的事件 t1 t2 t3 t4 t1 中断事件 t2 中断已处理 t3 分配CPU t4 用完CPU时间 t1 中断事件 t2 中断已处理 t3 分配CPU t4 用完CPU时间 迁移图所表示的关系还可用表格形式表达 状态迁移表 有i行j列 Sij表示第i行 j列的元素 是一种状态 表示在当前状态Sj下因事件ti要移到的下一状态 状态迁移图的优点 状态之间的关系能够直观地捕捉到 由于状态迁移图的单纯性 能够机械地分析许多情况 可很容易地建立分析工具 在系统分析中 时序图用于对比在系统中处理事件的时序和相应的处理时间 进行系统分析 确定设计方案 在右图中 对于事件e 功能1 功能3的处理时间总计为 T1 T2 T3 其中功能间切换时间0 二 时序图 采用扩充时序图可表示进程间的通信流 用于分析几个事件的交错现象 左图中C1与C2 R1与R2是交错的 因此 可以做如下分析 必须设计成 HOST1在等待C1的回答R1期间要能接收从HOST2发出的命令C2 三 Petri网 Petri网已广泛地应用于硬件与软件系统的开发中 它适用于描述与分析相互独立 协同操作的处理系统 也就是并发执行的处理系统 1 基本概念 Petri网简称PNG PetriNetGraph 是一种有向图 1 符号包括 它有两种结点 位置 place 符号为 它用来表示系统的状态 转移 transition 符号为 或 它用来表示系统中的事件 图中的有向边表示对转移的输入 或由转移的输出 表示事件发生的前提 即对转移的输入 表示事件的结果 即由转移的输出 2 激发 称转移的起动为激发 是转移的输出 只有当作为输入的所有位置的条件都满足时才能引起激发 标记 令牌 表示位置的圆圈中间点一个黑点称为标记 是表明系统当前处于什么状态的标志 标记在位置上的出现表明了处理要求的到来 若激发成功 则标记就会移动到作为输出的位置上 标记在PNG中游动 就出现了 状态的迁移 这反映了系统的动态行为 此过程称PNG的执行 状态迁移的各种情况如下图所示 下图是一个简单的PNG的例子 图 a 表示一个处于静止状态的系统 图中只给出系统中各个状态通过转移而表示出来的相互关系 图 b 为一个可执行的PNG 它描述系统的动态行为 2 简单Petri网的模型 如下图示 有一个环形铁路 在A站与B站间是单轨 在某一时刻只允许一列火车通过 因此只有当单线上没有列车通过时 火车才能进入单线运行 否则火车只能在A或B站等候 等待单线空出来使用 但A站与B站都是双向运行的 上行 下行列车交替行驶 则两列火车在铁路上的运行实况可用以下PNG来描述 在数据词典中 强调对数据存储结构的逻辑设计 并用数据结构表达数据项之间的逻辑关系 但任何一个软件系统都可能有成千上万个数据项 仅仅描述这些数据项是不够的 更重要的是如何把它们以最优的方式组织起来 以满足系统对数据的要求 一 有关数据库的基本概念 在软件系统中需要处理的数据是现实世界中存在的事物及其联系的反映 人们通常将与数据处理有关的的领域分为三个世界 现实世界信息世界数据世界 1 现实世界是存在于人们头脑之外的客观世界 现实世界中的事物可分成对象和性质两大类 1 对象可以是人 是物 还可以是实际的东西或概念的东西 例如 大学 城市等 对象还可以指事物与事物间的联系 2 性质则是指事物的性质或特征 2 信息世界也叫做观念世界 是现实世界在人们头脑中的反映 客观世界中的事物在信息世界中叫做实体 反映事物之间联系的叫做实体模型 实体是由若干属性的属性值组成 属性是实体某一方面的特征 相应于事物的性质 例如 一个学生实体是如下的一个5元组 951149 袁秋慧 女 19 软件 5元组中每一元素是学生的某一属性的属性值 他们对应的属性集合是 这些属性集合表征了 学生 实体的类型 叫做实体型 同一类型的实体的集合叫做实体集 3 数据世界则是信息世界中信息的数据化 现实世界中的事物及其联系在数据世界中用数据模型描述 学号 姓名 性别 年龄 专业 描述每一实体的数据称为记录 描述属性的数据叫做数据项或字段 与实体集相对应的称为文件 例如 学生文件就由多个记录组成 这些记录放在一起构成一个二维表 表中每一横排叫做一个记录或元组 每一纵列叫做一个属性 记录由数据项组成 正如实体由若干属性的属性值组成一样 一般数据项沿用属性名 用做属性名时表示观念信息 用做数据项名时表示数据信息 每个数据项包括两个特征 即数据类型和数据长度 若干同类型的记录构成文件 为了对文件中的记录有效组织和存取 通常指定一个数据项进行区别 这个数据项叫做关键字 二 E R方法 Entity RelationshipApproach 和实体模型 在需求分析阶段进行数据库逻辑设计过程中 使用E R图 可定义一个实体模型 实体模型是现实世界的纯表示 它不涉及数据世界的数据结构 存取路径 存取效率等问题 因此 它可以转换成数据库中的数据模型 数据可以按相应数据模型进行组织 E R图中表示实体联系的符号如下 在E R图中 每个方框表示实体型或属性 方框之间的连线表示实体之间 或实体与属性之间的联系 出现在连线上的短竖线可以看成是 1 而圆圈隐含表示 0 例如 在教学管理中 一个教师可以教授零门 一门或多门课程 每位学生也需要学习几门课程 因此 教学管理中涉及的对象 实体型 有学生 教师和课程 用E R图描述它们之间的联系 得下图 其中 学生与课程是多对多的联系 而教师与课程的联系是零 一对多 进一步 要确定属性 例如 学生具有学号 姓名 性别 年龄 专业 其它略 等属性 课程具有课程号 课程名 学分 学时数等属性 教师具有职工号 姓名 年龄 职称等属性 此外 学生通过学号 分数与课程发生联系 如此可得教学实体模型 教学实体模型 三 数据结构的规范化 信息域分析需要确定数据的内容 每个数据项要用表格列出 最后组织成文件的逻辑结构 为了便于数据库的设计 常常要对这种结构做一些简化 其中最常见的一种方法就是规范化技术 在关系式数据库模型中 规范化将数据的逻辑结构归结为满足一定条件的二维表 关系 表格中每个信息项必须是一个不可分割的数据项 不可是组项 表格中每一列 列表示属性 中所有信息项必须是同一类型 各列的名字 属性名 互异 列的次序任意 表格中各行 行表示元组 互不相同 行的次序任意 不满足上述要求的二维表或关系 叫做非规范化关系 对于非规范化的关系 必须将它规范化 即利用更单纯 更规则的关系来代替原来的关系 规范化的目的是 消除数据冗余 即消除表格中数据的重复 消除多义性 使关系中的属性含义清楚 单一 使关系的 概念 单一化 让每个数据项只是一个简单的数或字符串 而不是一个组项或重复组 方便操作 使数据的插入 删除与修改操作可行并方便 使关系模式更灵活 易于实现接近自然语言的查询方式 用教学管理例说明如何规范化 有三个实体型 即课程 学生和教师 用三个关系保存它们的信息 学生 学号 姓名 性别 年龄 专业 籍贯 教师 职工号 姓名 年龄 职称 工资级别 工资 课程 课程号 课程名 学分 学时 课程类型 为表示实体型之间的联系 又建立两个关系 选课 学号 课程号 听课出勤率 作业完成率 分数 教课 职工号 课程号 这五个关系 组成了数据库的模型 在每个关系中 属性名下加下划线 指明关键字 并规定关键字能唯一地标识一个元组 关系规范化的程度 通常按属性间的依赖程度来区分 并以范式NF NormalForm 来表达 常用的范式分为第一范式 1NF 第二范式 2NF 和第三范式 3NF 设 是一个关系 和 是 中的两个属性 若对于 的任一个值 仅有一个值与之对应 则称 的属性 函数依赖于属性 例如 教师 职工号 姓名 年龄 其中 属性 姓名 年龄 等都函数依赖于属性 职工号 属性 可以是复合属性 如 选课 学号 课程号 听课出勤率 如果属性 函数依赖于复合属性 而不与 的任何真子集函数依赖 则称属性 完全函数依赖于复合属性 例如在 选课 关系中 属性 听课出勤率 作业完成率 和 分数 等表示某个学生学习某门课程时的学习情况 只有同时指定 学号 和 课程号 才能准确地说明是哪位学生学习哪门课程时的学习情况 因此 分数 等属性完全函数依赖于 学号 课程号 判断规范化程度的条件是 关系中所有属性都是 单纯域 即不出现 表中有表 非主属性完全函数依赖于关键字 非主属性相互独立 即任何非主属性间不存在函数依赖 如果一个关系连条件 都不满足 则这个关系是非规范化的 如果一个关系仅满足条件 则这个关系满足第一范式 1NF 如果一个关系满足条件 但不满足 则这个关系满足第二范式 2NF 如果一个关系同时满足条件 和 则这个关系表满足第三范式 3NF 当数据模型达到3NF 一般情况下就能满足数据库应用的需要 数据库分析的过程 在需求分析阶段进行数据库分析的流程 为开发一个系统所使用的数据库 在开始分析数据库的需求前 分析员必须了解该系统的总目标和范围 然后建立一个完整并高度细化的信息模型 此信息模型应包括一个综合的数据词典 定义所有在开发数据库时用到的数据项 接着数据库分析定义数据库的逻辑特性和物理特性 以信息模型和系统规格说明为指导 定义数据库的逻辑数据结构 这种逻辑结构必须适应数据存取 修改 关联性及其它相关需求 一旦逻辑数据结构建立起来 就可以研制数据库的物理结构 物理数据库结构定义文件结构 记录格式 与硬件相关的处理方式以及数据库管理系统的特性 最后 要对模式和物理特性进行完全的评审 结构化分析方法 上面介绍了传统的结构化分析方法 该方法最初由DouglasRoss提出 由DeMarco推广 由Ward和Mellor以及后来的Hatley和Pirbhai扩充 形成了今天的结构化分析方法的框架 结构化分析方法是一种建模技术 它建立的分析模型如图所示 在模型的核心是数据词典 它描述了所有的在目标系统中使用的和生成的数据对象 围绕着这个核心的有三种图 实体 关系图 ERD 描述数据对象及数据对象之间的关系 数据流图 DFD 描述数据在系统中如何被传送或变换 以及描述如何对数据流进行变换的功能 子功能 状态 迁移图 STD 描述系统对外部事件如何响应 如何动作 因此 ERD用于数据建模 DFD用于功能建模 STD用于行为建模 需求分析是基础 关键 软件系统中15 的错误起源于错误的需求 提高软件质量确保软件开发成功降低开发成本 严格验证需求的正确性 一 从哪些方面验证正确性 一致性 需求必须是一致的 任何一条需求不能和其它需求互相矛盾 完整性 需求必须是完整的 应包括用户需要的每一个功能或性能 现实性 用现有的软 硬件技术基本上可以实现 有效性 确实能解决用户面对的问题 二 验证方法 1 一致性 1 非形式化描述软件需求用自然语言书写规格说明书 人工技术审查验证 效果无保证 易出现冗余 遗漏 不一致的问题 影响后期开发工作 2 形式化描述软件需求用形式化的需求陈

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论