《软件工程的需求分析》由会员分享,可在线阅读,更多相关《软件工程的需求分析(159页珍藏版)》请在金锄头文库上搜索。
1、第三章 需求分析 获取需求 1.需求获取原则 2.需求获取技术 3.需求调研方法 4.需求获取步骤 5.需求表达与整理 6.需求确认 需求分析 1.需求分析目标 2.需求分析任务 3.需求分析方法 4.需求分析过程 5.需求建模 1)功能建模 2)数据建模 3)行为建模 6.结构化分析方法 - E-R图 - 数据字典 - 状态-迁移图 7.实例 需求规格说明书 需求评审1软件工程3.1 需求获取 1.需求获取原则 2.需求获取技术 3.需求调研方法 4.需求获取步骤 5.需求表达与整理 6.需求确认2软件工程3.1.1 需求定义 需求定义就是识别用户的要求需求定义就是识别用户的要求 系统分析过
2、程的第一步就是系统分析过程的第一步就是识别用户要求识别用户要求。 分析员必须考虑以下问题:分析员必须考虑以下问题:vv 功能功能和和性能性能vv 可靠性可靠性和和质量质量vv 总的系统目标总的系统目标vv 成本成本与与进度限制进度限制vv 制造需求制造需求vv 市场与竞争情况市场与竞争情况vv 有效的技术有效的技术vv 将来可能的扩充将来可能的扩充 识别希望的功能和性能范围识别希望的功能和性能范围; ; 确定系统的功能、性能、约束和接口确定系统的功能、性能、约束和接口; ;3软件工程3.1.2.3.1.2. 需求获取的基本原则需求获取的基本原则深入浅出需求获取要尽可能全面、细致。获取的需 求是
3、个全集,系统真正实现的是个子集。细致地调研并不表明在分析时将调研内容 都纳入到新系统中, 但有利于以后的扩充。以流程为主线在与用户交流的过程中,应该用流程将所 有的内容串起来。如信息、组织结构、处理 规则等。这样便于交流沟通。 4软件工程流程的描述既要有宏观,又要有微观。即要 强调总体的业务流程、全生存期的业务流程 ,又要对流程细化,有分支的业务流程。 需求获取可能是软件开发中最困难、最关键、最易 出错及最需要交流的方面。表现在:v 需求的不稳定性:在整个软件生存周期内软件需 求会随着时间的推移发生变化;v 需求的不准确性:用户和开发人员的认识会随着 使用系统实现业务流程的实践逐步提高,一开始
4、 不可能设想得面面俱到。 需求获取只有通过有效的客户/开发者的合作才能成 功。 5软件工程3.1.3 需求获取技术需求获取是在问题及其最终解决方案之间架 设桥梁的第一步。 获取需求的一个必不可少的结果是对项目中 描述的客户需求的普遍理解。一旦理解了需 求,分析人员、开发人员和客户就能探索出 描述这些需求的多种解决方案。 需求获取技术包括两方面的工作:需求获取技术包括两方面的工作:vv 建立获取用户要求的方法的框架;建立获取用户要求的方法的框架;vv 支持和监控需求获取的过程的机制。支持和监控需求获取的过程的机制。6软件工程1. 弄清软件需求的层次业务需求 反映了组织或客户开展相关业务的工作流和
5、 业务规则,是对系统、产品高层次的目标要 求,与该组织或客户的业务领域有关。 用户需求描述用户使用软件需要完成哪些任务,可 通过用例 (use case) 图或场景说明加以阐明。 功能非功能需求定义了开发人员必须实现的软件功能,而 非功能需求如表所示:7软件工程2. 产品功能、性能要求及过程要求8软件工程3.1.4. 需求调研的方法调研用户的组织结构、岗位设置、职责定 义,从功能上区分有多少个子系统,划分 系统的大致范围,明确系统的目标。 调研每个子系统的工作流程、功能与处理 规则,收集原始信息资料,用数据流来表 示物流、资金流、信息流三者的关系。 对调研内容事先准备,针对不同管理层次 的用户
6、询问不同的问题,列出问题清单。 将操作层、管理层、决策层的需求既联系 又区分开来,形成一个需求的层次。9软件工程对与用户沟通的情况及时总结归纳,整理调 研结果,初步构成需求基线。若基线符合要 求,则需求获取完成。 需求调研的主要手段:需求调研的主要手段: vv 发调查表;发调查表;vv 召开调查会;召开调查会;vv 向用户领域的专家个别咨询;向用户领域的专家个别咨询;vv 实地考察,实地考察,vv 跟踪现场业务流程;跟踪现场业务流程;vv 查阅与待开发系统有关的资料;查阅与待开发系统有关的资料;vv 使用各种调查工具等。使用各种调查工具等。10软件工程由于软件开发项目和组织文化的不同 ,对于需
7、求开发没有一个简单的、公 式化的途径。 下面列出9个步骤,用以指导需求获取 活动。 3.1.5 需求获取的步骤11软件工程 定义项目的视图和范围 包括组织结构图、 各部门的岗位/角色列表。 确定用户类 包括人员/责任矩阵。 确定目标系统的业务工作流 包括物流、资 金流、信息流,建立业务工作流模型。 运用需求获取技术开发用例(或数据流图) 并设置优先级 用以掌握主要业务规则。收集来自用户的质量特性信息和其他非功能 需求 将性能、安全性、可靠性等需求和其 他设计约束结合业务规则,形成功能需求。12软件工程 分类在用例(或数据流图)中涉及的数据 包括数据的组成和数据之间的关系。 详细拟订用例(或数据
8、流图) 建立功能模 型,并进行审查,用以澄清需求获取的参与 者对需求的理解。 开发并评估界面原型 设想输入设备、输出 设备、显示风格、显示方式、输出格式等, 建立接口规范和信息流传输规则。 从功能描述中开发概念测试用例 用测试用 例来验证用例(或数据流图)、功能需求和 原型。13软件工程3.1.6. 3.1.6. 需求整理与表达的方法需求整理与表达的方法采用穷举方法可以避免遗漏。 采用归纳方法,通过对各种情况进行综合分 类可以使问题条理化。 采用抽象方法,可以发现问题的实质,抓住 问题的主要矛盾,忽略其次要矛盾。 需求整理可以多种手段共用,如组织结构图 、业务流程图、多叉树、关系矩阵、文字叙
9、述、表格、图形等。需求描述包括组织结构 与岗位定义、业务流程、处理规则、数据项 、功能以及上述5个方面的关系。14软件工程3.1.7. 3.1.7. 需求确认需求确认将整理好的用户需求说明书让用户确认15软件工程3.2 需求分析需求分析是软件定义时期的最后一个阶 段,它的基本任务是准确理解用户的要 求,进行细致的调查分析,将用户非形 式的需求陈述转化为完整的需求定义, 再由需求定义转换到相应的形式功能规 约(需求规格说明书)。 即准确地回答“系统必须做什么?”这个 问题16软件工程 软件开发是要实现软件开发是要实现目标系统的物理模型目标系统的物理模型。需。需 求分析的任务就是借助于求分析的任务
10、就是借助于当前系统的逻辑模当前系统的逻辑模 型导出目标系统的逻辑模型型导出目标系统的逻辑模型,解决目标系统,解决目标系统 “ “做什么做什么” ”的问题。的问题。目标系统当前系统物理模型逻辑模型模型化抽象化物理模型逻辑模型具体化实例化理 解 需 求导 出怎么做做什么17软件工程 需要能够表达和理解问题的信息域和功能需要能够表达和理解问题的信息域和功能 域域vv 信息流信息流:数据和控制通过一个系统时:数据和控制通过一个系统时 的变化方式。两个功能之间的数据的变化方式。两个功能之间的数据/ /控制控制 传递就确定了功能间的接口。传递就确定了功能间的接口。 vv 信息内容信息内容:单个数据或控制对
11、象,它:单个数据或控制对象,它 们构成了某个更大的由软件变换生成的们构成了某个更大的由软件变换生成的 信息的集合。信息的集合。vv 信息结构信息结构:各种数据和控制项的内部:各种数据和控制项的内部 组织。组织。3.2.1 需求分析的原则18软件工程 以层次化的方式对问题进行分解和不断细化以层次化的方式对问题进行分解和不断细化纵 向 分 解横向分解19软件工程计算机系统工程计算机系统工程 基于计算机的系统基于计算机的系统vv 系统是某些元素的一个集合或排列,这系统是某些元素的一个集合或排列,这 些元素被组织起来以实现些元素被组织起来以实现某种方法某种方法,过过 程程或借助处理信息或借助处理信息进
12、行控制进行控制。 分析员必须考虑以下问题:分析员必须考虑以下问题:vv 基于计算机的系统的系统元素包括基于计算机的系统的系统元素包括硬件硬件 、软件软件、人人、数据库数据库、文档文档和和过程过程。20软件工程基于计算机系统的系统元素输入系统系统过程硬件软件文档人数据库输出21软件工程 软件软件 计算机程序、数据结构、相关文档;计算机程序、数据结构、相关文档; 硬件硬件 电子计算设备(如电子计算设备(如CPUCPU,存储器)和存储器)和 外部机电设备(如传感器、马达等);外部机电设备(如传感器、马达等); 人人 硬件和软件的用户;硬件和软件的用户; 数据库数据库 一个大型的有组织的信息集合;一个
13、大型的有组织的信息集合; 文档文档 手册、表格和其它用以描述系统使用手册、表格和其它用以描述系统使用 和操作的信息;和操作的信息; 过程过程 定义每一种系统元素的特定使用步骤定义每一种系统元素的特定使用步骤 ,或系统驻留的过程性环境。,或系统驻留的过程性环境。22软件工程系统的层次结构 基于计算机的系统本身可以成为一个基于计算机的系统本身可以成为一个更大的更大的 基于计算机系统中的一个元素基于计算机系统中的一个元素,并称为那个,并称为那个 更大系统的更大系统的宏元素宏元素。23软件工程计算机系统工程 计算机系统工程是一个问题求解活动,目的计算机系统工程是一个问题求解活动,目的 是是揭示揭示、分
14、析所期望的功能分析所期望的功能,并把它们分配并把它们分配 到各个单独的系统元素中去到各个单独的系统元素中去。1)1) 与用户合作确认用户的目标和约束;与用户合作确认用户的目标和约束; 2)2) 导出导出功能功能、性能性能、接口接口、设计约束设计约束和和信信 息结构的表示息结构的表示;3)3) 将它们分配到每一个系统元素中。将它们分配到每一个系统元素中。24软件工程3.2.2 3.2.2 系统分析的目标系统分析的目标 识别用户要求识别用户要求 评价系统的可行性评价系统的可行性 进行经济分析和技术分析进行经济分析和技术分析 把功能分配给硬件、软件、人、数据库和把功能分配给硬件、软件、人、数据库和
15、其他系统元素其他系统元素 建立成本和进度限制建立成本和进度限制 生成系统规格说明,形成所有后续工程的生成系统规格说明,形成所有后续工程的 基础基础25软件工程系统建模 为了开发系统模型,使用了为了开发系统模型,使用了“ “结构模板结构模板” ”。 系统工程师把各种系统元素分配到模板内的系统工程师把各种系统元素分配到模板内的 五个处理区域:五个处理区域: 用户界面;用户界面; 输入;输入; 系统功能与控制;系统功能与控制; 输出;输出; 维护与自测试维护与自测试。 结构模板能帮助分析员建立一个分层结构。结构模板能帮助分析员建立一个分层结构。26软件工程 系统结构上下文图系统结构上下文图ACDACD则位于层次结构的则位于层次结构的 顶层顶层( (Architecture Context Diagram)Architecture Context Diagram)27软件工程 系统结构上下文图建立了待实现系统与系系统结构上下文图建立了待实现系统与系 统运行上下文环境之