教案学时)(第次课,第三章结构化分析授课题目3.1概述3.2与用户交流的技术3.3分析建模与规格说明了解用户需求的特点及如何获取用户需求教学目的掌握如何对系统进行问题定义和可行性研究与要求了解系统结构化分析阶段具体要完成的工作对系统进行问题定义和可行性研究教学重点结构化分析阶段具体要完成的工作教学难点对系统进行可行性研究教学方法课堂讲授无课后作业专业术语SA (Structured Analysis),主要参考《软件工程概论》,郑人杰,机械工业出版社资料《软件工程一一方法与实践》,许家怡,电子工业出版社教学后记
教 案 (第 次课, 学时) 授课题目 第三章 结构化分析 3.1 概述 3.2 与用户交流的技术 3.3 分析建模与规格说明 教学目的 与要求 了解用户需求的特点及如何获取用户需求 掌握如何对系统进行问题定义和可行性研究 了解系统结构化分析阶段具体要完成的工作 教学重点 对系统进行问题定义和可行性研究 结构化分析阶段具体要完成的工作 教学难点 对系统进行可行性研究 教学方法 课堂讲授 课后作业 无 专业术语 SA(Structured Analysis), 主要参考 资料 《软件工程概论》,郑人杰,机械工业出版社 《软件工程——方法与实践》,许家怡,电子工业出版社 教学后记
3.1问题的定义与可行性研究当我们在着手做任何一件工作以前,必须明确工作的性质、任务,制定完成任务的计划,这是非常必要的。同样对于软件产品的开发,显然也应该解决好这样类似的问题,明确该软件产品开发的任务,以及完成任务的价值从而制定出完成任务的计划。那么问题的定义和可行性研究就是制定软件系统的计划的第一步。所以在软件工程中把这一步称为计划时期。开始计划时期的工作流程图:1问题定义1.现状调查和问题的定义-目的:弄清楚用户要求计算机解决什么问题。可性行研究任务:编写系统目标与规范说明书,1明确“该软件开发项目要解决什么问题”,即明确N可行否?用户的需求。Y示例:项目实施计划终止项目的建议1系统目标与规范说明书结束1、项目:教材销售系统2、问题:人工销售教材手续繁琐,容易出错3、项目目标:建立一个高效率、无差错的计算机教材销售系统4、项目范围:利用现有的计算机,软件开发费用不得超过2000元5、初步想法:建议在系统中增加对缺书的统计与采购功能6、可性行研究:建议进行大约10天的可性行研究,且研究费用不超过500元2.可行性研究与论证论证的焦点是:围绕着对系统开发的价值进行论证。经济可行性、技术可行性、操作可行性、社会可行性(1)经济可行性:进行成本效益分析,评估项目的开发成本。即是否值得投资开发。经济可行性考虑的问题:1、购置软、硬件及有关设备费用·成本/效益分析:一有形成本、效益如设备、消耗品2、系统开发费用基于计算一无形成本、效益如人力、时间、安机系统的成本由四全性3、系统安装和维护费用部分组成价值和成本的关系4、人员培训费用一质量与价值、成本的关系-价值/成本的均衡
3.1 问题的定义与可行性研究 当我们在着手做任何一件工作以前,必须明确工作的性质、任务,制定完成任务 的计划,这是非常必要的。同样对于软件产品的开发,显然也应该解决好这样类似的 问题,明确该软件产品开发的任务,以及完成任务的价值从而制定出完成任务的计划。 那么问题的定义和可行性研究就是制定软件系统的计划的第一步。 所以在软件工程中把这一步称为计划时期。 计划时期的工作流程图: 1. 现状调查和问题的定义 目的:弄清楚用户要求计算机解决什么问题。 任务:编写系统目标与规范说明书。 明确“该软件开发项目要解决什么问题”,即明确 用户的需求。 示例: 2. 可行性研究与论证 论证的焦点是:围绕着对系统开发的价值进行论证。 – 经济可行性、技术可行性、操作可行性、社会可行性 (1)经济可行性:进行成本效益分析,评估项目的开发成本。即是否值得投资开发。 经济可行性考虑的问题: • 成本/效益分析: – 有形成本、效益 如设备、消耗品 – 无形成本、效益 如人力、时间、安 全性 • 价值和成本的关系 – 质量与价值、成本的关系 – 价值/成本的均衡
·成本和效益的估算(效益往往过分乐观)-开发成本的估算-开发效益的估算-运行成本的估算=运行效益的估算(2)技术可行性技术可行性:度量一个解决方案的实用性及技术资源的可用性。可理解如下:能否在给定时间内实现需求说明书中的功能?(在开发过程中遇到的技术问题)一软件质量如何?(尤其一些正确度和精确度高的软件,或实用性等)-软件的生产率如何?(赚钱?竞争?)即:做得了吗?做得好吗?做得快吗?技术可行性考虑的问题:开发风险分析在给定的约束条件下,分析是否能满足系统所需的功能和性能要求。一资源分析可利用的资源怎样?一相关技术的发展现有技术能否实现新系统,技术、难点、建议采用技术的先进性如何?(3)操作可行性:一用户使用可能性系统概述1、-时间进度可行性组织和文化上的可行性2、可行性分析(4)社会可行性(即法律可行性)可行性一开发项目是否会在社会上或政治上引起侵权、论证报告3、拟订开发计划破坏或其它责任问题。合同、知识产权、专利等4、结论意见可行性论证报告:注意:如果下一阶段过程中出现问题或错误,则或许需要再回到这个阶段重新进行可行性研究。3.2需求分析概述1.为什么需要需求分析?开发人员往往急于求成-希望对开发进行指导一希望开发人员对用户的要求理解一希望用户理解开发人员
• 成本和效益的估算(效益往往过分乐观) – 开发成本的估算 – 开发效益的估算 – 运行成本的估算 – 运行效益的估算 (2)技术可行性 技术可行性:度量一个解决方案的实用性及技术资源的可用性。可理解如下: – 能否在给定时间内实现需求说明书中的功能?(在开发过程中遇到的技术 问题) – 软件质量如何?(尤其一些正确度和精确度高的软件,或实用性等) – 软件的生产率如何?(赚钱?竞争?) • 即:做得了吗?做得好吗?做得快吗? 技术可行性考虑的问题: – 开发风险分析 在给定的约束条件下,分析是否能满足系统所需的功能和 性能要求。 – 资源分析 可利用的资源怎样? – 相关技术的发展 现有技术能否实现新系统,技术、难点、建议采用技术 的先进性如何? (3)操作可行性: – 用户使用可能性 – 时间进度可行性 – 组织和文化上的可行性 (4)社会可行性(即法律可行性) – 开发项目是否会在社会上或政治上引起侵权、 破坏或其它责任问题。合同、知识产权、专利 等 可行性论证报告: 注意:如果下一阶段过程中出现问题或错误,则或许需要再回到这个阶段重新进 行可行性研究。 3.2 需求分析概述 1.为什么需要需求分析? – 开发人员往往急于求成 – 希望对开发进行指导 – 希望开发人员对用户的要求理解 – 希望用户理解开发人员
一测试部门有理可依2.需求分析的特点需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相庆的形式功能规约(需求规格说明)的过程。它的难点主要体现在以下几个方面:(2)交流障碍。(1)问题的复杂性。(3)不完备性和不一致性:由于各种原因,用户对问题的陈述往往是不完备的,其各方面的需求还可能存在着矛盾,需求分析要消除其矛盾,形成完备及一致的定义。(4)需求易变性。用户需求的变动是一个极为普便的问题,即使是部分变动,也往往会影响到需求分析的全部,导致不一致性和不完备性。3.需求分析的任务建立分析模型。准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。一用“需求规格说明书”规范的形式准确地表达用户的需求。4.需求分析的步骤需求获取需求建模注意:系统分析员的主要焦点是“做什么”,不是“怎么做”。5.需求分析模型-数据模型设计个需求验证需求描述-功能模型-行为模型6.软件项目需求需求:用户对问题域中的实体状态或者事件的期望描述。软件需求:指用户对软件的功能和性能的要求,就是用户希望软件能做什么事情,完成什么样的功能,达到什么样的性能。特点:模糊性、不确定性、变化性、主观性如何获取真实需求以及如何保证需求的相对稳定是每个项目组都必须面临的问题。尽管项目开发中的问题不一定都是由于需求问题导致的,但是需求通常是最主要、最普遍的问题源。3.2需求获取需求获取:就是进行需求收集的活动,从人员、资料和环境中得到系统开发所需要的相关信息。1.需求获取的过程·需求获取需要执行的活动:
– 测试部门有理可依 2.需求分析的特点 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非 形式的需求陈述转化为完整的需求定义,再由需求定义转换到相庆的形式功能规约(需 求规格说明)的过程。它的难点主要体现在以下几个方面: (1) 问题的复杂性。 (2) 交流障碍。 (3) 不完备性和不一致性:由于各种原因, 用户对问题的陈述往往是不完备的, 其各方面的需求还可能存在着矛盾,需求分析要消除其矛盾,形成完备及一致的定义。 (4) 需求易变性。用户需求的变动是一个极为普便的问题, 即使是部分变动,也 往往会影响到需求分析的全部,导致不一致性和不完备性。 3.需求分析的任务 – 建立分析模型。准确地定义未来系统的目标,确定为了满足用户的需求系 统必须做什么。 – 用“需求规格说明书”规范的形式准确地表达用户的需求。 4.需求分析的步骤 注意:系统分析员的主要焦点是“做什么”, 不是“怎么做”。 5. 需求分析模型 – 数据模型 – 功能模型 – 行为模型 6. 软件项目需求 需求:用户对问题域中的实体状态或者事件的期望描述。 软件需求:指用户对软件的功能和性能的要求,就是用户希望软件能做什么事情, 完成什么样的功能,达到什么样的性能。 特点: 模糊性、不确定性、变化性、主观性 如何获取真实需求以及如何保证需求的相对稳定是每个项目组都必须面临的问 题。 尽管项目开发中的问题不一定都是由于需求问题导致的,但是需求通常是最主 要、最普遍的问题源。 3.2 需求获取 需求获取:就是进行需求收集的活动,从人员、资料和环境中得到系统开发所需 要的相关信息。 1.需求获取的过程 • 需求获取需要执行的活动:
1)建立需求分析小组,与用户进行充分交流,同时要实地考察访谈,收集相关资料,必要时可采用图形、表格等工具。2)了解客户方的所有用户类型以及潜在的类型,然后根据他们的要求来确定系统的整体目标和系统的工作范围。3)对用户进行访谈和调研。交流的方式可以是会议、电话、电子邮件、小组讨论、模拟演示等不同形式。4)需求分析人员对收集到的用户需求做进一步的分析和整理。5)需求分析人员将调研的用户需求以适当的方式呈交给用户方和开发方的相关人员,大家共同确认需求分析人员所提交的结果是否真实地反映了用户的意图。2.需求获取常用的方法:1)联合分析小组:用户代表、领域专家和系统分析员。2)客户访谈3)问题分析与确认:多个来回。4)简易的应用规格说明技术软件原型5)3.2.1访谈访谈(或称为会谈)是最早开始运用的获取用户需求的技术,也是迄今为止仍然广泛使用的主要的需求分析技术。访谈有两种基本形式:正式的提出一些事先准备好的具体问题非正式的访谈提出一些可以自由回答的开放性问题在对用户进行访谈的过程中使用情景分析技术往往非常有效。所谓情景分析就是对用户运用目标系统解决某个具体问题的方法和结果进行分析。-最早且广泛使用-有两种形式::正式的(会议)事先准备好问题(调查表)·非正式情景分析技术一问题:·谁?谁将使用什么?功能·8改进、删除·哪里?.何时?完成?测试?文档提交?培训?.为什么?扩展该功能?减少工作量?.如何/怎样?描述流程3.2.2简易的应用规格说明技术
1) 建立需求分析小组,与用户进行充分交流,同时要实地考察访谈,收集相关资料, 必要时可采用图形、表格等工具。 2) 了解客户方的所有用户类型以及潜在的类型,然后根据他们的要求来确定系统的 整体目标和系统的工作范围。 3) 对用户进行访谈和调研。交流的方式可以是会议、电话、电子邮件、小组讨论、 模拟演示等不同形式。 4) 需求分析人员对收集到的用户需求做进一步的分析和整理。 5) 需求分析人员将调研的用户需求以适当的方式呈交给用户方和开发方的相关人 员,大家共同确认需求分析人员所提交的结果是否真实地反映了用户的意图。 2.需求获取常用的方法: 1) 联合分析小组:用户代表、领域专家和系统分析员。 2) 客户访谈 3) 问题分析与确认:多个来回。 4) 简易的应用规格说明技术 5) 软件原型 3.2.1 访谈 访谈(或称为会谈)是最早开始运用的获取用户需求的技术,也是迄今为止仍然广 泛使用的主要的需求分析技术。 访谈有两种基本形式: 正式的 提出一些事先准备好的具体问题 非正式的访谈 提出一些可以自由回答的开放性问题 在对用户进行访谈的过程中使用情景分析技术往往非常有效。所谓情景分析就是 对用户运用目标系统解决某个具体问题的方法和结果进行分析。 – 最早且广泛使用 – 有两种形式: • 正式的(会议) 事先准备好问题 (调查表) • 非正式 情景分析技术 – 问题: • 谁? 谁将使用 • 什么? 功能 • 哪里? 改进、删除 • 何时? 完成?测试?文档提交?培训? • 为什么? 扩展该功能?减少工作量? • 如何/怎样? 描述流程 3.2.2 简易的应用规格说明技术