软件系统开发技术讲义.ppt_第1页
软件系统开发技术讲义.ppt_第2页
软件系统开发技术讲义.ppt_第3页
软件系统开发技术讲义.ppt_第4页
软件系统开发技术讲义.ppt_第5页
已阅读5页,还剩507页未读 继续免费阅读

下载本文档

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

文档简介

2020 3 4 1 课名 软件工程 主讲 谢明志Email tommyshell 使用教材 软件系统开发技术 修订版 潘锦平施小英姚天昉西安电子科技大学出版社 2020 3 4 2 第一章软件工程概述 2020 3 4 3 1 1软件工程的背景和历史 1968年由NATO 北大西洋公约组织 在德国Garmish召开的学术会议上 FeitzBauer首先提出了 软件工程 概念 2020 3 4 4 软件工程与编程 前者是一门学科 一种科学理论来指导软件系统开发 标准化 自动化的过程考虑如何分解一个系统 以便各人分工开发 考虑如何说明每个部分的规格要求 怎样才能易于维护 单纯的代码编写是软件工程发展的前身是软件工程中占据很少时间和空间的一部分 2020 3 4 5 计算机学科的发展 计算机科学 CS 计算机科学 CS 计算机工程 CE 软件工程 SE 信息系统 IS 计算学科 computingdiscipline 2020 3 4 6 60年代以来 工厂管理病人监护工资统发图书馆管理机票预定学籍管理 早期第二阶段第三阶段第四阶段 面向批处理 多用户 分布式系统 强大的桌面系统 有限的分布 实时 嵌入 智能 面向对象技术 自定义软件 数据库 低成本硬件 专家系统 软件产品 消费者的影响 人工神经网络 并行计算 网络计算机 1950 1960 1970 1980 1990 2000 Evolutionofsoftware 2020 3 4 8 为什么发展如此之快 不准确的时间和金钱的估算软件质量的低下相对硬件产品开发软件开发费用的增加维护 增强软件系统的必要性硬件价格大幅度下降 2020 3 4 9 软件技术面临的问题 规模复杂性生产率 Windows95有1000万行代码Windows2000有5000万行代码 例 Exchange2000和Windows2000开发人员结构 2020 3 4 11 人月神话 焦油坑 史前史中 没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼 上帝见证着恐龙 猛犸象 剑齿虎在焦油中挣扎 它们挣扎得越是猛烈 焦油纠缠得越紧 没有任何猛兽足够强壮或具有足够的技巧 能够挣脱束缚 它们最后都沉到了坑底 2020 3 4 12 软件危机的主要特征 软件开发周期大大超过规定日期 软件开发成本严重超标 软件质量难于保证 2020 3 4 13 软件工程的定义 FritzBauer在NATO会议上给出的定义 软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理 方法 2020 3 4 14 软件工程的定义 2 IEEE IEE83 给出的软件工程定义 软件工程是开发 运行 维护和修复软件的系统方法 2020 3 4 15 软件工程的定义 3 IEEE IEE93 给出了一个更加综合的定义 将系统化的 规范的 可度量的方法应用于软件的开发 运行和维护的过程 即将工程化应用于软件中 软件工程是一门交叉学科 软件工程的主要研究内容软件开发技术 软件开发方法学软件开发过程软件工具和软件工程环境软件工程管理 软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的 随着人们对软件系统的研制开发和生产的理解 应用发展的眼光看待它 2020 3 4 17 软件工程 一种层次化技术 工具 方法 过程 质量焦点 Softwareengineeringlayers 软件工程三个要素 方法 工具 过程 2020 3 4 18 软件工程与一般工程的差异 软件是逻辑产品而不是实物产品软件的功能依赖于硬件和软件的运行环境以及人们对它的操作软件设计的复杂性软件特征 功能的多样性实现的多样性能见度低软件结构合理性差智力密集及知识产权保护 2020 3 4 19 软件工程知识结构 2001年5月ISO IECJTC1 ISO和IEC的第一联合技术委员会 发布了 SWEBOK指南V0 95 试用版 SWEBOK把软件工程学科的主体知识分为10个知识领域 2020 3 4 20 软件工程知识结构 软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量 2020 3 4 21 软件工程 课程与其它软件专业课的区别 1 立足于系统的整体 2 讲授系统分析 系统设计 测试及维护的理论和方法 3 构筑一个软件系统 实践软件开发全过程 2020 3 4 22 软件工程 课程教学的目标 转变对软件的认识 上升程序系统转变思维定式 上升程序员系统工程师 系统分析员 2020 3 4 23 软件产品的标准化 软件开发过程的标准化 2020 3 4 24 软件的工业化生产过程应具备的特点 明确的工作步骤详细具体的规范化文档明确的质量评价标准 一个好的工业 应有一套良好的标准来配套 2020 3 4 25 软件工程技术的两个特点 强调规范化强调文档化 2020 3 4 26 1 2软件和软件生命期模型 SoftwareLifeCycle 软件产品或软件系统从设计 投入使用到被淘汰的全过程 2020 3 4 27 软件生存期的阶段划分 1 可行性研究与计划 2 需求分析 3 总体设计 4 详细设计 5 实现 6 集成测试 7 确认测试 8 使用和维护 成长期 开发期 怀孕期 计划期 成年期 运行期 2020 3 4 28 新的国际标准定义的软件生存过程 1995ISO IEC12207 软件生存期过程 支持过程 组织过程 主要过程 获取过程 供应过程 开发过程 运行过程 维护过程 文档编制过程 配置管理过程 质量保证过程 验证过程 确认过程 联合评审过程 审核过程 问题解决过程 管理过程 基础设施过程 改进过程 培训过程 2020 3 4 29 软件工作的范围 只考虑编写程序 涉及整个软件生存周期 扩展到 2020 3 4 30 软件开发模型是软件开发全部过程 活动和任务的结构框架 它能直观表达软件开发全过程 明确规定要完成的主要活动 任务和开发策略 软件开发模型也常称为 软件过程模型软件生存周期模型软件工程范型 软件开发模型 可行性研究与计划 需求分析 设计 编码 运行维护 测试 定义阶段 开发阶段 维护阶段 瀑布模型 WaterfallModel 2020 3 4 32 开发软件不仅仅是编程 2020 3 4 33 按照传统瀑布模型开发软件的特点 1 阶段间具有顺序性和依赖性 2 推迟实现的观点 3 每个阶段必须完成规定的文档 每个阶段结束前完成文档审查 及早改正错误 2020 3 4 34 原型模型 快速原型模型 原型范型 用户测试运行原型 建造 修改原型 听取用户意见 采用原型模型的软件生存周期 分析定义系统需求 生成原型 系统设计 程序设计 编码 测试 运行和维护 原型化 含原型化的软件生存期 2020 3 4 36 1 3软件质量的评价 成功的标准 用户在用用户可很容易做完要做的事失败的根本原因 开发人员写出的东西达不到用户要求 人的问题 技术问题 2020 3 4 37 质量与生产率 质量是软件需求方最关心的问题 用户即使不图物美价廉 也要求个货真价实质量与生产率之间有着内在的联系 高生产率必须以质量合格为前提质量与生产率的提高就指望程序员与程序经理非得在质量与生产率之间分个主次不可 那么应该是质量第一 生产率第二 2020 3 4 38 质量与生产率 2 质量直接体现在软件的每段程序中 高质量自然是开发人员的技术追求 也是职业道德的要求高质量对所有的用户都有价值 而高生产率只对开发方有意义如果一开始就追求高生产率 容易使人急功近利 留下隐患 2020 3 4 39 不贪污的官就是好官吗 运行正确 的程序就是高质量的程序吗 也许运行速度很低并且浪费内存 也许代码写得一塌糊涂 2020 3 4 40 软件的质量因素 软件的质量因素很多 如正确性 精确性 可靠性 容错性 性能 效率 易用性 可理解性 简洁性 可复用性 可扩充性 兼容性等等 还可以列出十几个 一般说来倾向于可维护性 可靠性 可理解性和效率 2020 3 4 41 软件质量因素分类和武学分类 2020 3 4 42 正确性与精确性 机器不会主动欺骗人 软件运行不正确或者不精确一般都是人造成的需求分析错了 那么对客户而言这个软件也存在错误如果软件没有100 地按需求规格执行 那么这个软件也存在错误程序员要为 正确 精确 四个字竭尽全力 2020 3 4 43 性能与效率 用户都希望软件的运行速度高些 高性能 并且占用资源少些 高效率 旧社会地主就是这么对待长工的 干活要快点 吃得要少点通过优化算法 数据结构和代码组织来提高软件系统的性能与效率优化的关键工作是找出限制性能与效率的 瓶颈 2020 3 4 44 易用性 导致软件易用性差的根本原因是开发人员犯了 错位 的毛病 他以为只要自己用起来方便 用户也一定会满意当用户真的感到软件很好用时 一股温暖的感觉油然而生 于是就用 友好 来评价易用性 2020 3 4 45 可理解性与简洁性 Note1 开发人员只有在自己思路清晰时才可能写出让别人能理解的程序编程时还要注意不可滥用技巧 应该用自然的方式编程简洁是一种美如果把学术文章写得很简洁 让人很容易理解 它往往中不了 2020 3 4 46 可复用性与可扩充性 一种方式是原封不动地使用现成的软件构件一种方式是对现成的软构件进行必要的扩充后再使用可复用性好的程序一般也具有良好的可扩充性 2020 3 4 47 测试已经开始 返回上级 再 瀑布模型的质量保障体系 2020 3 4 48 小结 Note2 软件的高质量主要是设计出来的不是 管 出来的更不能依赖质量检查 2020 3 4 49 第二章可行性研究与计划 2020 3 4 50 系统流程图 Note3 输入单据磁盘文件处理输出单据 2020 3 4 51 数据流程图 数据源点和终点 变换数据的加工 文件 数据 逻辑关系符号 与 或 异或 2020 3 4 52 2 1可行性研究基本概念 可行性研究的任务 可行性研究的主要任务是 了解客户的要求及现实环境 从技术 经济和社会因素等三方面研究并论证本软件项目的可行性 编写可行性研究报告 制定初步项目开发计划 2020 3 4 53 可行性研究的内容 1 技术可行性 2 经济可行性 3 操作可行性 4 社会可行性 法律可行性 5 抉择 2020 3 4 54 技术可行性 Note4 度量一个特定技术信息系统解决方案的实用性及技术资源的可用性考虑的问题开发风险分析资源分析相关技术的发展 现有技术能否实现新系统 技术难点 建议采用技术的先进性 2020 3 4 55 经济可行性 度量系统解决方案的性能价格比考虑的问题成本 效益分析有形成本 效益无形成本 效益价值和成本的关系质量与价值 成本的关系价值 成本的均衡 2020 3 4 56 经济可行性考虑的问题 Note5 成本和效益的估算开发成本的估算开发效益的估算运行成本的估算运行效益的估算 2020 3 4 57 成本分析 代码行技术 page19 任务估算技术 page20 总成本 总人力相对误差在内Putnam估算模型 page21 COCOMO模型比较复杂 2020 3 4 58 效益分析 系统的经济效益 使用新系统增加收入 使用心系统可以节省的运行费用总的效益和软件生存周期有关货币的时间价值 page23 投资回收期 page23 投资回收率 page23 纯收入 page23 投资回收率 2020 3 4 59 系统开发和每年运行费用举例 1 系统开发费用 一次 2名系统分析员 450小时 名 45美元 小时 40 500 5名系统开发人员 275小时 名 36美元 小时 49 500 1名数据库管理员 30小时 名 42美元 小时 1 260 2名技术写作者 120小时 名 25美元 小时 6 000 1名秘书 160小时 名 15美元 小时 2 400 2020 3 4 60 系统开发和每年运行费用举例 1名数据通讯专家 60小时 名 42美元 小时 2 4002名在转换期间数据输入人员 49 500 40小时 名 12美元 小时 2020 3 4 61 系统开发和每年运行费用举例 培训 三天的开发人员内部培训课程 7 00030个用户 三天的内部培训课程 10 000物资 复印 500磁盘 纸张等消耗品 650 2020 3 4 62 系统开发和每年运行费用举例 购买硬件 软件 20台工作站Windows软件 1 00020台工作站内存升级 8 000网络软件 17 50020台工作站办公软件产品 20 000系统开发总费用 161 670 2020 3 4 63 系统开发和每年运行费用举例 2 年运行费用 每年 人员 维护程序员 分析员 250小时 年 42美元 小时 10 500网络管理员 300小时 年 50美元 小时 15 000购买硬件 软件升级 硬件 5 000软件 6 000物资和杂项 3 500每年总运行费用 40 000 2020 3 4 64 操作可行性 用户使用可能性时间进度可行性组织和文化上的可行性 2020 3 4 65 社会可行性 法律可行性 开发项目是否会在社会上或政治上引起侵权 破坏或其它责任问题 2020 3 4 66 可行性研究计划的完成 可行性研究计划 2020 3 4 67 2 3可行性研究的步骤 page15 1 复查确认系统目标 规模 2 研究正使用系统工作流程 3 导出新系统高层逻辑模型 4 重新定义问题 5 导出和评价供选择的方案 6 推荐可行的方案 7 草拟开发计划 8 编写可行性研究报告 送审 2020 3 4 68 第三章需求分析和规格说明 2020 3 4 69 3 1为什么需要需求分析 开发人员往往急于求成希望对开发进行指导希望开发人员对用户的要求理解希望用户理解开发人员测试部门有理可依 2020 3 4 70 需求分析的任务 准确地定义未来系统的目标 确定为了满足用户的需求系统必须做什么 用规范的形式准确地表达用户的需求 2020 3 4 71 什么是用户需求 思考 涉及的几个问题如何识别 获取需求 你能够采取何种手段与用户进行交流沟通 何为需求建模 你如何理解模型与建模 2020 3 4 72 软件需求分析的几个阶段 问题分析问题评估和方案综合建模规约复审系统分析员的主要焦点是 做什么 what 不是 怎样做 how 2020 3 4 73 需求获取面临的挑战 Note6 客户说不清楚需求需求易变性问题的复杂性和对问题空间理解的不完备性与不一致性 2020 3 4 74 3 2需求获取的常用方法 Note7 建立分析小组领域专家 主角系统分析员 导演客户访谈问题分析与确认 某出版社系统调查表 某出版社系统调查表 2020 3 4 77 听一个故事 Note8 主人公 Contoso制药公司的高级管理长官GerhardContoso公司的信息系统开发小组的新管理员Cynthia内容 客户的需求观 2020 3 4 78 谁是客户 客户是指直接或间接从产品中获得利益的个人或组织软件客户包括提出要求 支付款项 选择 具体说明或使用软件产品的项目风险承担者 stakeholder 或是获得产品所产生的结果的人 2020 3 4 79 客户与开发人员之间的合作关系 Note10 高质量的需求来源于客户与开发人员之间有效的交流与合作通常 开发人员与客户或客户代理人成为一种对立关系 2020 3 4 80 软件客户需求权利书 1 Note11 客户有如下权利 1 要求分析人员使用符合客户语言习惯的表达 2 要求分析人员了解客户系统的业务及目标 3 要求分析人员组织需求获取期间所介绍的信息 并编写软件需求规格说明 4 要求开发人员对需求过程中所产生的工作结果进行解释说明 5 要求开发人员在整个交流过程中保持和维护一种合作的职业态度 2020 3 4 81 软件客户需求权利书 2 Note12 6 要求开发人员对产品的实现及需求都要提供建议 拿出主意 7 描述产品使其具有易用 好用的特性 8 可以调整需求 允许重用已有的软件组件 9 当需要对需求进行变更时 对成本 影响 得失 trade off 有个真实可信的评估 10 获得满足客户功能和质量要求的系统 并且这些要求是开发人员同意的 2020 3 4 82 软件客户需求义务书 1 Note13 客户有下列义务 1 给分析人员讲解业务及说明业务方面的术语等专业问题 2 抽出时间清楚地说明需求并不断完善 3 当说明系统需求时 力求准确详细 4 需要时要及时对需求做出决策 5 要尊重开发人员的成本估算和对需求的可行性分析 2020 3 4 83 软件客户需求义务书 2 Note14 6 对单项需求 系统特性或使用实例划分优先级 7 评审需求文档和原型 8 一旦知道要对项目需求进行变更 要马上与开发人员联系 9 在要求需求变更时 应遵照开发组织确定的工作过程来处理 10 尊重需求工程中开发人员采用的流程 过程 2020 3 4 84 签约 意味着什么 Note15 客户与开发人员关系中的重要部分客户代表经常把 签约 看作是毫无意义的更为重要的是签名是建立在一个需求协议的基线上与你的重要客户一起讨论权利书和义务书 以达成协议 并付诸实践 2020 3 4 85 高质量的需求过程带来的好处 Note16 开发后期和整个维护阶段的重做的工作大大减少强调需求质量并不能引起某些人的重视 他们错误地认为在需求上消耗多少时间就会导致产品开发推迟多少时间将选定系统的需求明确地分配到各软件子系统 强调采用产品工程的系统方法 这样能简化硬软件的集成 2020 3 4 86 优秀需求具有的特性 Note17 1 完整性2 正确性3 可行性4 必要性5 划分优先级6 无二义性7 可验证性 2020 3 4 87 3 3需求获取的内容 1 用户需求分类 1 功能性需求 定义了系统做什么 描述系统必须支持的功能和过程 2 非功能性需求 技术需求 定义了系统工作时的特性 描述操作环境和性能目标 2020 3 4 88 两类需求包括的内容 1 功能 2 性能 3 环境 4 界面 5 用户或人的因素 6 文档 7 数据 8 资源 9 安全保密 10 软件成本消耗与开发进度 11 质量保证 2020 3 4 89 1 功能需求 系统做什么 系统何时做什么 系统何时及如何修改或升级 2020 3 4 90 2 性能需求 软件开发的技术性指标例如 存储容量限制执行速度 相应时间吞吐量 2020 3 4 91 3 环境需求 硬件设备 机型 外设 接口 地点 分布 温度 湿度 磁场干扰等软件 操作系统网络数据库 2020 3 4 92 4 界面需求 有来自其它系统的输入吗 到自其它系统的输出吗 对数据格式有规定吗 对数据存储介质有规定吗 2020 3 4 93 5 用户或人的因素 用户类型 各种用户熟练程度 需受何种训练 用户理解 使用系统的难度 用户错误操作系统的可能性 2020 3 4 94 6 文档需求 需哪些文档 文档针对哪些读者 2020 3 4 95 7 数据需求 输入 输出数据的格式 接收 发送数据的频率 数据的准确性和精度 数据流量 数据需保持的时间 2020 3 4 96 8 资源需求 软件运行时所需的数据 软件 内存空间等资源 软件开发 维护所需的人力 支撑软件 开发设备等 2020 3 4 97 9 安全保密要求 需对访问系统或系统信息加以控制吗 如何隔离用户之间的数据 用户程序如何与其它程序和操作系统隔离 系统备份要求 2020 3 4 98 10 软件成本消耗与开发进度需求 开发有规定的时间表吗 软硬件投资有无限制 2020 3 4 99 11 质量保证 系统的可靠性要求 系统必须监测和隔离错误吗 规定系统平均出错时间 出错后 重启系统允许的时间 系统变化如何反映到设计中 维护是否包括对系统的改进 系统的可移植性 2020 3 4 100 怎样写需求分析报告 作报告时要先从宏观上讲一 二 三 四 五 再从细节上讲A B C D E 需求分析不象侦探推理那样从蛛丝马迹着手 应该先了解宏观的问题 再了解细节的问题如图S D1 D2 D3 Dn Di P1 P2 P3 Pm Pj F1 F2 F3 Fk 2020 3 4 101 怎样写需求分析报告 2020 3 4 102 3 4需求的开发和管理 整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适 需求工程域的层次分解示意图 2020 3 4 103 需求开发 Note18 问题获取 elicitation 分析 analysis 编写规格说明 specification 验证 verification 2020 3 4 104 知识技能 Note19 绝大部分的软件开发人员都没有接受过高效需求工程所需技能的正规培训培训需求分析人员所有的开发人员都应接受一个基本的需求工程培训培训软件需求的用户代表和管理人员参与软件开发的用户代表应接受为期一天左右 关于需求工程的培训 开发管理者和客户管理者也应参加让开发人员了解应用领域的基本概念组织一些简短的关于客户业务活动 术语 目标等方面的讨论会以帮助开发人员对应用领域有个基本了解 2020 3 4 105 需求获取 1 Note20 确定需求开发过程编写项目视图和范围文档项目视图将用户群分类并归纳各自特点选择每类用户的产品代表建立起典型用户的核心队伍把同类产品或你的产品的先前版本用户代表召集起来 从他们那里收集目前产品的功能需求和非功能需求 2020 3 4 106 需求获取 2 Note21 让用户代表确定使用实例召开应用程序开发联系会议分析用户工作流程观察用户执行业务任务的过程确定质量属性和其它非功能需求在功能需求之外再考虑一下非功能的质量特点通过检查当前系统的问题报告来进一步完善可查看需求是否有足够的灵活性以允许重用一些已有的软件组件 2020 3 4 107 需求分析 Note22 绘制系统关联图 建立数据字典 为需求建立模型 建立用户接口原型 确定需求优先级 2020 3 4 108 需求规格说明 SRS Note23 采用原始模板在你的组织中要为编写软件需求文档定义一种标准模板指明需求的来源为每项需求注上标号制定一种惯例来为每项需求提供一个独立的可识别的标号或记号记录业务规范业务规范创建需求跟踪能力矩阵 2020 3 4 109 需求验证 Note24 对需求文档进行正式审查以需求为依据编写测试用例编写用户手册在需求开发早期即可起草一份用户手册确定合格的标准让用户描述什么样的产品才算满足他们的要求和适合他们使用的 2020 3 4 110 需求管理 Note25 确定一个选择 分析和决策需求变更的过程建立变更控制委员会评估每项选择的需求变更跟踪所有受需求变更影响的工作产品建立需求基准版本和需求控制版本文档维护需求变更的历史记录记录跟踪每项需求的状态建立一个数据库衡量需求稳定性记录基准需求的数量和变更数量使用需求管理工具商业化的需求管理工具 2020 3 4 111 项目管理 Note26 选择一种合适的软件开发方法生存周期项目开发计划的进度安排将会不断改变发生需求变更时协商项目约定编写文档和管理与需求相关的风险跟踪需求工程所耗的工作量 2020 3 4 112 需求开发与需求管理之间的界限 Note27 2020 3 4 113 3 5改进需求过程 Note28 软件开发过程的改进有以下两个主要目标 解决在以前项目或目前项目中遇到的问题 防止和避免你可能在将来的项目中要遇到的问题 2020 3 4 114 四条改进软件的原则 Note29 改进过程应该是革命性的 彻底的 连续的 反复的人们和组织机构都只有在他们获得激励时才愿意变更过程变更是面向目标的将改进活动看作一些小项目 2020 3 4 115 过程改进周期 Note30 评价当前采用的方法 指定活动改进计划 创建 实验和实施新过程 评价结果 图 软件开发过程改进的周期 发现和建议 活动计划 新的过程 实验结果 获得经验 实施情况怎样 活动计划的效果如何 新过程是否达到预期目标 计划下一步的改进周期 2020 3 4 116 3 6软件需求与风险管理 Note31 听一个故事 同样在Contoso制药公司主人公 化学制品跟踪系统 的项目管理人员Dave首席程序员Helen首席测试员Ramesh内容需求工程的风险为何物 2020 3 4 117 软件风险管理的要素 Note32 风险管理就是使用某些工具和步骤把项目风险限制在一个可接受的范围内 风险管理提供了一种标准的方法来指出风险并把风险因素编成文档 评估其潜在的威胁 以及确定减少这些风险评价 riskassessment 风险避免 riskavoidance 风险控制 riskcontrol 2020 3 4 118 编写项目风险文档 Note33 2020 3 4 119 与需求有关的风险 下面介绍的风险因素是按需求工程中获取 分析 编写规格说明 验证和管理汇总起来的 并推荐了一些方法用于降低风险发生的可能性或减轻风险发生给项目带来的影响 这张清单仅仅是一个起点 在你做项目逐渐积累经验过程中 加入你的风险因素清单和减轻风险的策略 使用这里提供的条目来帮助你识别需求风险并采用条件 结果的格式来书写风险说明 2020 3 4 120 需求获取 Note34 1 产品视图与范围2 需求开发所需时间3 需求规格说明的完整性和正确性4 对革新产品的需求5 明确非功能需求6 客户赞同产品需求7 未加说明的需求8 把已有的产品作为需求基线9 给出期望的解决办法 2020 3 4 121 需求分析 Note35 1 划分需求优先级2 带来技术困难的特性3 不熟悉的技术 方法 语言 工具或硬件平台 2020 3 4 122 需求规格说明 Note36 1 需求理解2 时间压力对TBD的影响3 具有二义性的术语4 需求说明中包括了设计 2020 3 4 123 需求验证 Note37 1 未经验证的需求2 审查的有效性 2020 3 4 124 需求管理 Note38 1 变更需求2 需求变更过程3 未实现的需求4 扩充项目范围 2020 3 4 125 建立项目视图与范围 Note39 一个项目可能包括一些与软件没有直接关系的需求 例如 硬件的购买 产品的安装 维护或广告 但在此 我们只关心与软件产品有关系的业务需求 2020 3 4 126 通过业务需求确定项目视图 Note40 项目视图可以把项目参与者定位到一个共同和明确的方向上项目视图描述了产品所涉及的各个方面和在一个完美环境中最终所具有的功能市场需求文档 视图和范围的文档来自各个渠道的业务需求可能会发生冲突 2020 3 4 127 项目视图和范围文档的模板 Note41 a 业务需求a 1背景a 2业务机遇a 3业务目标a 4客户或市场需求a 5提供给客户的价值a 6业务风险b 项目视图的解决方案b 1项目视图陈述b 2主要特性 b 3假设和依赖环境c 范围和局限性c 1首次发行的范围c 2随后发行的范围c 3局限性和专用性d 业务环境d 1客户概貌d 2项目优先级e 产品成功的因素 2020 3 4 128 计算机学科的发展 计算学科是研究通过在计算机上建立模型并模拟物理过程来进行科学调查和研究的学科 学科的3个形态理论抽象 模型化 设计重复出现的概念绑定 binding 概念与形式模型一致性和完备性抽象层次重用 典型的学科方法 数学方法系统科学方法 计算中抽象的本质和使用 在处理复杂事务 构造系统 隐藏细节和获取重复模式方面使用抽象 通过具有不同层次的细节和指标的抽象 能够表达一个实体和系统 计算机科学与技术学科的方法论 2020 3 4 130 模型 model 模型 现实世界某些重要方面的表示 有时我们使用术语 抽象 来表示模型 因为我们从现实世界中抽象出对我们特别有用的东西 2020 3 4 131 抽象 模型化 源于实验科学 主要要素为数据采集方法和假设的形式说明 模型的构造与预测实验分析结果分析 在为可能的算法数据结构和系统结构等构造模型时使用此过程 抽象的结果是概念符号模型 2020 3 4 132 3 4需求分析的步骤 2020 3 4 133 逻辑模型和物理模型 模型是对对象系统的形式化的特征抽象 概括性或近似地表示构造模型的过程是一个抽象 分析的过程 逻辑模型物理模型 本质模型 概念模型 实施模型 技术模型 现行系统 目标系统 描述重要的业务功能 无论系统是如何实施的 描述现实系统是如何在物理上实现的 描述新系统的主要业务功能和用户新的需求 无论系统应如何实施 描述新系统是如何实施的 包括技术 2020 3 4 135 分析阶段中常用的模型 逻辑模型 数据流图 DFD 实体 联系图 ERD 类图实例图时序图状态图 协作图事件列表数据流定义数据元素定义 2020 3 4 136 数据流图 DFD DataFlowDiagram Note42 描述逻辑模型的图形工具 表示数据在系统内的变化 DFD可以用来表示一个系统或软件在任何层次上的抽象 较大型软件系统DFD分成多层 子图 父图概念 可以表示数据流和功能的进一步的细节 2020 3 4 137 数据流程图的表示 page29 32 数据源点和终点 变换数据的加工 文件 数据 逻辑关系符号 与 或 异或 2020 3 4 138 画数据流图 page32 33 规则 由外向里画画系统的输出 输入化系统的内部画加工的内部 2020 3 4 139 应该注意的几个问题 page33 34 适当地命名画数据流而不是控制流先考虑稳定状态忽略琐碎的枝节随时准备重画 2020 3 4 140 分层数据流图 对于大型系统 往往使用一张数据流图画出所有数据流和加工是不可能的自顶向下逐层分解不要一下子引入过多细节 应该逐步增加细节例子 page35 图3 13 a 画出了 图3说明 产生新文件 显然 2020 3 4 141 由顶向下画分层数据流图 page37 描绘中应该注意的问题 编号父图和子图的平衡局部文件分解的程度 2020 3 4 142 实例 运动会管理系统 自学3 3 5节 Page40 2020 3 4 143 数据流图的改进 检查数据流图的正确性数据守恒 page41 42 文件的使用 page42 父图和子图的平衡 page42 43 提高数据流图的易理解性简化加工间的联系 page43 分解的均匀 page43 适当地命名 page43 44 重新分解 page44 2020 3 4 144 数据实体关联图 Note43 与数据流图描绘了系统中发生的过程一样 实体联系图 entity relationshipdiagram ERD 描绘了系统的数据关系分析实体联系图有助于对业务或系统数据组成的理解和交互 并暗示产品将有必要包含一个数据库 实体 entity 是物理数据项 包括人 或者数据项的集合 这对所分析的业务或所要构造的系统是很重要的 2020 3 4 145 化学制品跟踪系统 的实体联系图 2020 3 4 146 需求建模实例酒店管理系统的局部DFD 已预订的入住 预订请求 预订 预订确认 未预订的入住 已预订的入住请求 未预订的入住请求 客人数据 客房数据 预订确认信息 客人信息 夜审 结算信息 财务系统 时钟 2020 3 4 147 需求建模实例 某金融贸易系统用例图 UML 2020 3 4 148 需求建模实例 用例图举例 UML 签定一份保险单 客户 保险销售人员 销售统计 客户统计 需求建模实例 UML类图实例 Note44 2020 3 4 150 需求建模实例 描述客房状态的状态图 Note45 取消 预定 入住 已预订 空闲 占用 维修 维修 完成 退房换房 入住 事件 创建 2020 3 4 151 需求建模实例 接电话的顺序图 UML 2020 3 4 152 需求建模实例 UML协作图举例 2020 3 4 153 3 5数据词典 DD DataDictionary DD是对所有与系统相关的数据元素的一个有组织的列表 以及精确的 严格的定义 使得用户和系统分析员对于输入 输出 存储成分和中间计算有共同的理解 2020 3 4 154 词典与数据流图之间关系 page44 数据流图描述了系统的 分解 依靠 词典 来说明各个成分的含义 数据流图中所有名字的定义就构成一本词典 数据流图和词典结合在一起构成了 需求说明书 数据流图中出现的每一个数据流名 每一个文件名和每一个加工名在词典中都应该有一个条目给出这个名字的定义 2020 3 4 155 词典条目的各种类型 page 45 四个类型条目数据流文件数据项 指不在分解的数据单位 加工词典条目的实例 page46 47 结合上次自习的内容自行学习本节 2020 3 4 156 需求建模实例 数据字典条目的定义 预订请求 客人数据 住宿期限 客房类别客人数据 客人姓名 地址 身份证号码 护照号码 支付方式身份证号码 十进制15 数字 18护照号码 字母 8 数字 8字母 A Z 十进制数字 0 9 2020 3 4 157 需求建模实例 数据字典条目的定义 F1 航班信息文件 航空公司名称 航班号 起点 终点 日期 起飞时间 降落时间 航空公司名称 2 字母 4航班号 3 十进制数字 3字母 A Z 十进制数字 0 9 起点 终点 1 汉字 10起飞时间 降落时间 时 分 2020 3 4 158 需求建模实例 数据字典条目的定义 时 00 23 分 00 59 日期 年 月 日年 2000 2001 2002 2004 月 01 12 日 01 31 2020 3 4 159 3 6小说明 数据流图中每一个基本加工 即不再进一步被分解的加工 都必须有一个 小说明 小说明中应精确描述用户要求一个加工 做什么 加工的激发条件加工逻辑加工优先级加工执行频率出错处理 2020 3 4 160 结构化的语言 page51 构成方式语态词汇举例 2020 3 4 161 判定表与判定树 page54 56 有些问题不易用单纯的语言表达判定表组成 条件桩条件条目操作桩操作条目判定树 2020 3 4 162 3 7模型的作用 在建模过程中了解系统通过抽象降低复杂性有助于回忆所有的细节有助于开发小组间的交流有助于与用户的交流为系统的维护提供文档 2020 3 4 163 需求分析建模方法 分析建模方法结构化分析 传统建模方法 面向对象分析 2020 3 4 164 模型的作用 计算机世界 现实世界 影射 模型的作用 2020 3 4 166 结构化分析模型的组成结构 2020 3 4 167 面向对象分析模型的组成结构 2020 3 4 168 重点小结 2020 3 4 169 3 8结构化分析方法 StructuredAnalisys SA 基于数据流技术的分析方法需求获取应遵循的三条基本原则 分解抽象投影 2020 3 4 170 分析模型的元素 数据字典 DD 模型核心 中心库 E R图 ERD 数据流图 DFD 指明数据在系统中移动时如何被变换 描述对数据流进行变换的功能 DFD中每个功能的描述包含在加工规约 小说明 状态变迁图 STD 指明作为外部事件的结果 系统将如何动作 2020 3 4 171 E R图是数据建模的基础 2020 3 4 172 将分析模型转换为软件设计 数据字典 数据流图 E R图 状态变迁图 加 工 规 约 控制规约 数 据 对 描述 象 数据设计 体系结构设计 接口设计 过程设计 分析模型 设计模型 2020 3 4 173 3 9实例考务处理系统功能 1 对考生送来的报名单进行检查 2 对合格的报名单编好准考证号后将准考证送给考生 并将汇总后的考生名单送给阅卷站 3 对阅卷站送来的成绩单进行检查 并根据考试中心制定的合格标准审定合格者 4 制作考生通知单 含成绩及合格 不合格标志 送给考生 5 按地区进行成绩分类统计和试题难度分析 产生统计分析表 2020 3 4 174 实例考务处理系统功能 考务处理系统的分层DFD如下 2020 3 4 175 顶层数据流图 考生 考务处理系统 考试中心 阅卷站 不合格报名单 报名单 准考证 考生通知单 成绩清单 合格标准 错误成绩清单 考生名单 统计分析表 2020 3 4 176 0层数据流图 2020 3 4 177 一层数据流图 a 2020 3 4 178 一层数据流图 b S 2 1 3 2 2 2 1 2 3 3 1 3 2 顶层 不编号 0层 1层 2020 3 4 180 数据字典举例 F1 航班信息文件 航空公司名称 航班号 起点 终点 日期 起飞时间 降落时间 航空公司名称 2 字母 4航班号 3 十进制数字 3字母 A Z 十进制数字 0 9 起点 终点 1 汉字 10起飞时间 降落时间 时 分 2020 3 4 181 再来看看 结构化分析模型的组成结构 2020 3 4 182 3 11需求分析的其他工作 page63 确定设计限制确定验收标准编写 初步用户手册 复查需求说明书 2020 3 4 183 补充知识 UML语言和图 2020 3 4 184 UML简介 NoteL1 UML定义由信息系统三位专家GradyBooch JamesRumbaugh和IvarJacobonOMG组织采奶作为业界标准 2020 3 4 185 UML的开发历程 NoteL2 2020 3 4 186 UML架构 NoteL3 UML由图和元模型组成元元模型层元模型层模型层用户模型层 2020 3 4 187 UML的模型 视图 图与系统架构的建模 NoteL4 用例视图逻辑视图并发视图组件视图展开视图 2020 3 4 188 UML与面相对象的软件分析与设计 OOA D NoteL5 标准的表示方法与软件开发的成功经验集成 2020 3 4 189 UML的应用领域 NoteL6 UML被用来为系统建模 它可应用的范围非常广泛在不同系统中的应用信息系统技术系统嵌入式实时系统分布式系统商业系统 2020 3 4 190 在软件开发不同阶段的应用 NoteL7 需求分析分析设计构造测试 2020 3 4 191 静态建模 用例和用例图 NoteL8 用例模型的基本组成 用例 角色和系统用例图 风险分析 交易估计 进行交易 进行交易 接待员 酒店系统 财务系统 2020 3 4 192 发现角色 NoteL9 通过回答下泪问题 可以帮助建模者发现角色使用系统主要功能的人是谁 需要借助于系统完成日常工作的人是谁 谁来维护 管理系统 保证系统正常工作系统控制的硬件设备有哪些 系统需要与哪些其它系统交互 对系统产生的结果感兴趣的人或事是哪些 2020 3 4 193 发现用例 NoteL10 询问以下问题角色需要从系统中获得哪种功能 角色需要做什么 角色需要读取 产生 删除 修改或存储系统中的信息吗 系统中发生的事件需要通知角色吗 如果用系统的新功能处理角色的日常工作是简化了还是提高了工作效率 2020 3 4 194 UML中的用例 NoteL11 2020 3 4 195 用例之间的关系 NoteL12 2020 3 4 196 描述用例 NoteL13 2020 3 4 197 测试用例 NoteL14 用例可用于测试系统的正确性和有效性 正确性表明系统的实现符合规格说明 有效性保证开发的系统是用户真正需要的系统 2020 3 4 198 实现用例 NoteL15 UML中实现用例的基本思想是用协作表示用例 而协作又被细化为用若干个图 协作的实现用脚本描述 2020 3 4 199 第四章设计方法 2020 3 4 200 主要内容 Note46 什么是结构化设计 结构化设计方法的主要思想 结构化设计的重要组成部分 结构化设计的方法 2020 3 4 201 结构化设计的工作原理 Note47 结构化设计目标结构化设计的优点利用模块结构减少开发和维护软件的费用 2020 3 4 202 软件设计分为两个阶段 1 概要设计 总体设计 Page66 确定软件的结构以及各组成成分 子系统或模块 之间的相互关系 2 详细设计确定模块内部的算法和数据结构 产生描述各模块程序过程的详细文档 2020 3 4 203 模块 模块是鱼油一定功能的可以用名词调用的程序语句集合 如 独立的汇编程序COBOL的段和节Pascal过程FORTRAN的子程序汇编的宏 2020 3 4 204 控制结构 程序结构 控制结构是软件模块间关系的表示 2020 3 4 205 控制结构图示 2020 3 4 206 控制结构的层次规则 只有一个顶层 0层 模块0层外任一模块都会在它的邻层存在一模块与它有关同层模块间不发生联系 2020 3 4 207 软件结构度量术语 深度 宽度 扇出 扇入 模块的层数 同一层最大模块数 一个模块直接调用的模块数 调用一个给定模块的模块个数 2020 3 4 208 模块化 Modularity 模块化是好的软件设计的一个基本准则高层模块 从整体上把握问题 隐蔽细节复杂问题较小问题分解可减小解题所需的总的工作 分解 2020 3 4 209 抽象 Abstraction 抽象原则应用举例WindowsNT一体化的I O系统设计 文件管理网络管理设备管理高速缓冲存储器 对虚拟文件的字节流 虚拟文件可为任何设备和实体 抽象 2020 3 4 210 例 将问题 P1 P2 分解为P1 P2 设函数C x 定义问题x的复杂程度函数E x 确定解决问题x需要的工作量对问题P1和P2 如 C P1 C P2 显然 E P1 E P2 有规律 C P1 P2 C P1 C P2 E P1 P2 E P1 E P2 各个击破 理论 2020 3 4 211 模块度 Note48 成本或工作量 模块数量 软件总成本 集成成本 成本 模块 M 最小成本区域 2020 3 4 212 结构化设计的适用范围 Note49 尤其适用于采用结构化程序设计实现的系统结构化设计并不是一种广泛适用的系统设计技术什么人来完成设计呢 结构化设计的结果 2020 3 4 213 SA与SD的关系 Note50 2020 3 4 214 SD来源于SA 来源 结构化分析 来源 结构化分析 来源 结构化分析 数据流图字典项伪码实体关系图事务框图 环境的限制 质量的标准 转化分析 细化设计 进入实现阶段 初始结构框图 2020 3 4 215 概要设计的基本概念 将系统划分成模块 Page66 决定每个模块的功能 Page66 决定模块的调用关系 Page66 决定模块的界面 即模块间传递的数据 Page66 2020 3 4 216 结构化设计 SD方法 概要 相对独立 单一功能的模块 page67 块间联系和块内联系 page67 描述方法 page68 步骤 page69 2020 3 4 217 结构图 SCStructureChart 结构图主要成分 page68 模块 用方框表示 方框中写有模块的名字 一个模块的名字应适当地反映这个模块的功能 这就在某种程度上反映了块内联系 调用 从一个模块指向另一个

温馨提示

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

评论

0/150

提交评论