北京大学研究生软件工程课程第三章结构化建模技术_第1页
北京大学研究生软件工程课程第三章结构化建模技术_第2页
北京大学研究生软件工程课程第三章结构化建模技术_第3页
北京大学研究生软件工程课程第三章结构化建模技术_第4页
北京大学研究生软件工程课程第三章结构化建模技术_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第三章系统建模技术 结构化方法 一 结构化分析方法要回答 如何定义问题 就如何定义问题而言 如何获得需求如何规约需求如何验证需求1 关于需求获取需求面临的挑战 问题空间理解 人与人之间的通信 需求的不断变化 1 需求目标在任何一个设计中 精确地陈述问题总是第一步的 需求的目标是要简洁而精确地说明所要解决的问题 为此 软件人员的注意力应在做什么和为什么做 而不是如何做 与用户和该领域的专家进行交流 导引出他们对软件产品的要求 基于对用户要求的理解 结合计算机软件的特有能力 创造出对用户有价值的 能提高产品的质量与可用性的新的产品要求 分析所定出的产品要求 判断其正确性 一致性 完整性及可行性 决定解决方案 完成高层次的设计 确定出功能子系统及子系统之间的接口界面 把产品要求以用户手册及工程设计技术要求的形式表达出来 可能还包括测试的标准 用于在开发的全过程中 验证核实所开发的产品确能满足用户的要求 支持技术文档的管理 更重要的是支持需求变化的管理 可见 为了实现这一目标 需求 工程 包括需求的引出 创造 分析 表述 验核和管理 2 需求工程的重要性Standish Group对350家公司的8000个软件项目作过一次调查其中 31 的项目的结局是被取消 引致这些项目失败的原因是 13 1 不完整的产品要求 12 4 缺乏用户的参与 10 6 缺少资源 人力 财力 9 9 不现实的期望 9 3 高层领导支持不足 8 7 产品要求与指标的改变 8 1 没有订计划 7 5 不再需耍该开发中的系统 其中 与产品需求有关的 1 2 4 和6项 占了44 1 这些数据突出地显示了软件产品需求在软件开发中的重要性 重要性之一 软件需求工程直接关系到 成本 质量和按时交付 等问题 它们是项目成败的关键因素 项目的五维 进度 特性 质量 成本 人员 重要性之二 软件需求工程 这种发生在软件生命周期的初始阶段的错误是非常难于改正 并且是代价极高的 最新的研究兴趣聚焦于 需求引出 因为它涉及到软件开发人员与非软件专业人员合作的问题 3 需求工程的原则 1 抽象 抓住事物的本质 要素 其中 一个重要方面是 捕获问题空间的 一般 特殊 关系是认识 构造问题的一般途径 2 划分 分离问题 其中 一个重要方面是 捕获问题空间的 整体 部分 关系是降低问题复杂性的基本途径之一 3 投影 捕获并建立问题空间的多维 视图 是描述问题的基本手段之一是解决 A是B B是A 的基本方法 分析问题和需求的能力取决于分析人员的思维和经验 思维来源于 严谨 逻辑和 活跃 的思考习惯 1 严谨要求思考的对象应该是不放过任何一个 小 问题 2 逻辑要求思考的过程应该是一种符合规则的推导过程 3 活跃思维要求思考的方式应该是并行的 即不是仅一个角度 而是多个角度来思考问题经验来源于 1 开发了一些软件并善于总结 创新与教训 2 跟踪最新技术 具体地说 1 基础软件人员必须先在一定程度上熟悉并学习软件所涉及的专业领域 程度的深浅 以满足工作的要求为目标 软件人员要懂得如何帮助用户去表达出他们对产品的耍求 因为需求获取是一个交互的过程 软件人员面对的用户是 他们不是计算机或软件的专业人员 他们不能完全清楚软件能带来一些什么新的功能可以帮助提高工作效率和提供新的服务 因此必须在需求规约中包括用户对产品工作性能 可靠性 可维护性 可扩展性等的需求 2 表达使用清楚而良构的语言完成需求规约 必须完全用问题领域方面的词汇来表达 不应该出现软件领域内的词汇 通过浏览文档 能够完全理解所要解决的具体问题和该问题的一般性解决方案 3 做法开始问题定义时 通常是建立一个词汇表 对于具有模糊含义的术语 或者在目前的问题中用于有限范围内的术语 要给出专门的定义 另外 在词汇表中加入精化细节也是很有帮助的 那些通常归入功能性需求规范的 东西 常体现在精化细节中 集中在公司的关键任务的目标上 一个新项目的开始 可能是执行一个已有的长期系统计划的结果 或来自于一系列高层战略信息系统计划编制的建议 因此 由此产生的建造 应该尽量基于长期的方向和目标 而不是针对商业危机或技术潮流而做出的反应 应该直接集中在公司的业务需要上 而不是技术员的理想软件列表上 应该通过考察现在的应用情况 并根据其业务性能和任何预计的未来的市场影响 对每个系统进行分类 需求分类根据软件产品的性能指标和实现难度 对问题和需求进行分类 核心需求基本功能需求高级功能需求组合功能需求 恰当地选取问题和需求的切入点 所有问题和需求都有发生的根源 其表面现象往往是开发者思路的切入点 其中 如果切入点是狭隘的 那么围绕着问题和需求的分析往往局限于自身的思路范围 问题和需求产生的原因就很难发现 所以当不能理解分析的问题和需求时 不妨先跳出思维惯例 寻求存在这样的问题和需求的原因 然后再分析理解之 交替反复分析多个问题和需求 寻找问题间的共性和特性 问题复杂化 是一个抽象问题或需求的逆过程 提出问题需求的许多可能的假设 丰富问题需求的形式 问题复杂化的意图是许多问题应该从更多的方面去验证不同环境下问题是否同样存在 问题抽象化 继而简化问题 众多的问题和需求变成程序式过程 就是公式化问题和需求 类模板就是一个抽象问题很好的例子 4 需求获取技术特征由上可见 需求获取技术特征 方便通讯 使用易于理解的语言 提供定义系统边界的方法 提供划分 抽象 投影等方法 允许采用多种可供选择的设计方法 适应需求的变化 支持使用问题空间的术语 思考问题和编制文档 需求获取技术 UseCase IvarJacobson 1994 1 引言UseCase主要用于促进和用户的交流 沟通 为此使用了一种用户和开发人员都能理解方式描述系统功能和行为 UseCase可以划分系统与外部实体的界限 是系统开发的起点 而最终应该落实到类和实现代码上 UseCase既然是对系统行为的动态描述 因此它是类 对象 操作的来源 是系统分析和设计阶段的输入之一 是分析和设计 制定开发计划 测试计划 设计测试用例的依据之一 UseCaseModel是系统需求分析阶段的成果之一 UseCase不但有助于帮助分析员理清思路 验证用户需求 而且 也是开发人员之间进行交流的重要手段 2 语义与表示一般地说 USECASE是用户为了达到某一目标和系统进行的典型交互 例如 做一次拼写检查 对一个文档建立索引 对一个用况而言 关键要素是 表示一种用户可以理解并对该用户有价值的功能 用况提供了客户和开发人员在制订项目计划中进行交流的主要成分 1 USECASE语义一个USECASE是系统或其它语义实体 例如子系统或一个类 所提供的一块 unit 高内聚的功能 显露该系统和一个或多个外部的交互者 称为操作者 交替出现的消息序列 以及该系统所执行的动作 可见 一个USECASE捕获了参与交互的各方关于其行为的一个约定 通过这一约定 描述了该语义实体在不同条件下的行为对参与者一个要求的响应 以实现某一目的 不同的行为序列 依赖于所给出的特定要求以及与这些要求相关的条件 2 表示与描述USECASE通常被表示为 USECASE包含一组操作和属性 这些操作和属性规约了该USECASE的实例所执行的那个动作序列 动作包含状态的改变以及该USECASE与其环境的通讯 为了表明USECASE所包含的具体内容 还应给出它的正文描述 即 USECASE中包含的信息名称 Name 标识 Identifier 描述 Description 角色 Actor 状态 Status 活动及时序频度 Frequency 注 具体例子请参见P16 17 3 操作者语义与表示一个操作者定义了一组高内聚的角色 当用户与该实体交互时 用户可以扮演这一角色 对于每一USECASE 一个操作者有一种角色 即每一USECASE与具有一种角色的操作者进行通讯 通常 一个操作者被表示为 4 USECASE获取仿真法 Simulation 掌握用户的所有输入与输出的数据种类 通过仿真的方法 找出它们之间的对应关系 与及相应的数据处理过程 包括任何计划中将要新增加的数据类型与处理过程 原型法 Prototyping 从用户处取得一组基本的USECASE产品要求之后 立即建造USECASE产品的原型 这个原型可以是实际可运行的软件 外壳 或是一个用描述来表达的产品 然后让用户去模拟使用这个原型 提出修改的意见 其中 值得注意的是 不要忽略将要新增加的数据类型与处理过程 场景法 ScenarioGeneration 让用户穷举他们现有的所有的数据处理实践以及任何计划中将要新增加的数据类型与处理过程 从以上三种方法中可以看出 UseCase的功能划分均要以角色为主体 行为是角色触发的 5 关系在USECASE之间 或在操作者与USECASE之间 存在一些标准的关系 关联 参与关系 即操作者参与一个USECASE 例如 操作者的实例与USECASE实例相互通讯 关联是操作者和USECASE之间的唯一关系 扩展 USECASEA到USECASEB的一个扩展关系 指出了USECASEB的一个实例可以由A说明的行为予以扩展 根据该扩展所说明的特定条件 并依据该扩展点定义的位置 A说明的行为被插入到B中 包含 USECASEA到USECASEB的一个包含 指出A的一个实例将包含B说明的行为 即这一行为将包含在A定义的那部分中 泛化 USECASEA到USECASEB的泛化 指出A是B的特殊情况 1 thesalespersonasksforthecatalog PlaceOrderextensionpointsadditionalrequests aftercreationoftheorder SupplyCustomerData OrderProduck ArrangePayment RequestCatalog salesperson 例 USECASE关系Actor关系 Supervisor EstablishCredit 1 6 USECASE图USECASE图给出了操作者和USECASE以及它们之间的关系 即图中给出了一些操作者 一组关系 一些接口和这些元素之间的关系 关系是操作者和USECASE之间的关联是操作者之间的泛化是USECASE之间的泛化 扩展和包含 可以将一些USECASE用一矩形括起 以表示所包括的那个系统或其它语义实体的边界 Checkstatus Placeorder Fillorder Establishcredit TelephoneCatalog Salesperson ShippingClerck Supervisor Customer 例 USECASE图 7 使用USECASE图的建模类型使用USECASE图所建造的模型类型 可以从两个层面上进行分类 它们是 整体 部分 关系系统建模 systemmodeling 系统建模用于描述软件系统的结构和行为业务建模 businessmodeling 业务建模用于企业或组织过程的优化和再工程 processre engineering 业务建模的图形元素不仅包括普通的Actor和UseCase 还包括Worker Artifact Business过程描述时还应结合时序图 sequencediagram 和活动图 activitydiagram 2 关于需求规约需求规约的主要目标 依据需求陈述 作为输入 解决其中的歧义 不一致等问题 以系统化的形式表达用户的需求 即给出问题的形式化或半形式化的描述 建立模型 形成需求规格说明书 为了实现这一目标 一 结构化分析方法1 提出的概念有 数据流 加工 数据存储 数据源 数据潭 概念是完备的 2 建模过程 1 建立系统的功能模型 使用的工具为数据流图DFD首先 建立系统环境图 确定系统边界继之 自顶向下 逐层分解 2 建立数据字典定义数据流定义数据存储定义数据项 3 给出加工小说明 使用的工具可以为判定表判定树 1 建立系统的功能模型 使用的工具为数据流图DFD数据流图 是一种描述数据变换的图形工具 例如 旅行社 订票单 预定机票 准备机票 记帐 费用 航班 帐单 机票 记帐文件 航班目录 旅行社 数据流图由四个基本成分组成 数据流加工数据存储数据源和数据潭 其中 1各成分的定义2数据流 数据存储 支持数据抽象加工 支持过程 功能的抽象3关于命名问题 简化的商业自动化系统 营业员 收款员 经理 销售的商品 现金额 现金余额 销售情况 日销售额 查询要求 首先 建立系统环境图 确定系统边界 顶层DFD 其中 1数据流为 销售的商品 日销售额等3个输入流 3个输出流数据源为 营业员 经理 收款员数据潭为 经理 收款员2加工名为 要建立的系统名字 录入 修改或删除商品信息 录入 修改现金额 并计算余额 查询商品销售情况计算日销售额 1 2 3 继之 自顶向下 逐层分解A 按人或部门的功能要求 将加工 打碎 形成 注 需给每一加工编号 B 分派 数据流 形成 录入 修改或删除商品信息 2录入 修改现金额 并计算余额 查询商品销售情况计算日销售额 销售的商品 现金额 现金余额 查询要求 销售情况 日销售额 1 3 其中 要根据特定的加工要求进行分派 保持与顶层数据流的一致 可以不引入数据源和数据潭 录入 修改或删除商品信息 录入 修改现金额 并计算余额 查询商品销售情况计算日销售额 销售的商品 现金额 现金余额 查询要求 销售情况 日销售额 销售文件 1 2 3 C 引入文件 使之形成一个有机整体 系统 注 到一个文件 既有输入流 又有输出流 则可简化为 并可不给出标识 至此 体现精化 形成0层数据流图 查询商品销售情况计算日销售额 查询要求 销售情况 日销售额 销售文件 3 继续A B C 自顶向下 逐层分解 例如 加工3 可分解为 判定要求 查询要求 3 1统计销售情况 3 2计算日销售额 销售文件 查询要求2 查询要求1 销售情况 日销售额 加工3 其中为什么要引入加工 判定要求 2 建立数据字典定义数据流定义数据存储定义数据项引入 结构符 用于定义数据结构 A A A B C B0 C0 B 数据字典 1 数据流 销售的商品 商品名 商品编号 单价 数量 日期现金额 余额 日销售额 非负实数查询要求 商品编号 日期 查询要求1 商品编号查询要求2 日期销售情况 商品名 商品编号 金额2 数据存贮 销售文件 销售的商品 3 数据项 3 给出加工小说明 使用的工具可以为判定表判定树判断表 条件类别 条件组合 操作 操作执行例如 考试总分 620 620 620单科成绩有满分有不及格有满分发升级通知书yyn发留级通知书nny发重修通知书nyn 3 建模中注意的问题 1 模型平衡规则 父图和子图必须平衡 每个数据流和数据存储必须在数据字典中予以定义 叶 加工 最低层 必须给出加工小说明 小说明和数据流图的图形表示必须一致 例如 在小说明中 必须说明 输入数据流 如何使用 必须说明如何产生 输出数据流 必须说明如何选取 使用 修改 数据存储 2 控制复杂性规则 上层数据可以 打包 上 下数据流对应关系在数据字典中给出 但包内数据流的性质 输入 输出 必须一致 一幅图中的图元个数应控制在7 2以内 与每一加工相关的数据流的数目应适中 与层次有关 分析数据内容 确定是否所有的输入信息都用于产生输出信息 分析加工 确定一个加工所产生的输出 是否都能由该加工的输入信息导出 实例讲解 图书管理系统 问题陈述见P35 根据问题陈述 在一定的层次上 可以把该系统分为两 大块 即 借还书等事务的处理 以及咨询事务处理 进行功能抽象 注 不同的功能抽象将导致不同的结果 但应该是等价的 于是 可以根据这一抽象 可以识别 1 顶层数据流 借还书等事务处理要求咨询事务要求以及相关的数据流2 数据源和数据潭为 图书管理人员 读者以及时钟 基于以上分析 可形成该系统的环境图 图书管理系统 图书管理员 图书管理要求 查询要求 图书统计表 图书情况 读者情况 读者 系统时钟 当前日期 罚款单 其中 3个输入流 图书管理要求 查询要求 系统时钟图书管理要求 入库单借书单还书单注销单查询要求 读者情况图书情况图书统计表4个输出流 图书统计表 图书情况 读者情况 罚款单 通过 打碎 分派 可形成如下0层DFD 1处理借还书等事务 2处理咨询事务 图书管理要求 查询要求 当前日期 目录文件 借书文件 读者文件 罚款单 读者情况 图书情况 图书统计表 其中 保持输入与输出的一致 引入三个文件 对顶层DFD进行细化 注 存在数据库设计问题 以同样方式 对加工1进行分解 形成 1 1入库新书 1 2借书 1 3还书 1 4注销图书 图书管理要求 处理图书管理要求 目录文

温馨提示

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

评论

0/150

提交评论