360 likes | 595 Views
软件工程导论 之. 第 3 讲 需求分析基础. 毛新军 教授 xjmao@nudt.edu.cn 计算机科学与技术系 602 教研室 0731-(45)73649. 用工程化的方法来开发软件. 序言 (1/2). 开发软件系统前,须了解用户的期望和要求 软件需求 需求分析过程 需求分析的重要性 软件开发的基础和前提 最终目标软件系统验收的标准 避免或者尽早剔除早期的错误. 序言 (2/2). 需求分析的复杂性和面临的困难 片面 , 不完全 模糊 , 不准确 不一致 , 歧义 需求复杂和庞大
E N D
软件工程导论 之 第3讲 需求分析基础 毛新军 教授 xjmao@nudt.edu.cn 计算机科学与技术系602教研室 0731-(45)73649 用工程化的方法来开发软件
需求分析基础 序言(1/2) • 开发软件系统前,须了解用户的期望和要求 • 软件需求 • 需求分析过程 • 需求分析的重要性 • 软件开发的基础和前提 • 最终目标软件系统验收的标准 • 避免或者尽早剔除早期的错误
需求分析基础 序言(2/2) • 需求分析的复杂性和面临的困难 • 片面, 不完全 • 模糊, 不准确 • 不一致, 歧义 • 需求复杂和庞大 • 因此必须使用系统的方法、借助于一系列行之有效的技术和工具进行软件需求分析
需求分析基础 本讲内容 • 需求分析的任务和过程 • 需求获取技术 • 需求分析和描述技术 • 软件需求规格说明书及其评审
需求分析基础 需求分析的任务和过程(1/2) • 什么是用户需求 • 待开发软件系统的功能、性能、设计约束和其它要求 • 用户需求例子-图书馆管理系统 • 功能需求:办理读者借书证, … • 性能需求:查询操作延迟时间不超过1秒钟, … • 设计约束:前台运行在windows OS下,… • 其它要求:开发时间6个月, …
需求分析基础 需求分析的任务和过程(2/2) • 需求分析的任务 • 通过对应用问题及其环境的理解和分析,准确、一致和完全地刻划用户需求,形成软件需求规格说明书( SRS: Software Requirement Specification ) • 需求分析过程 • 获取和理解用户需求 • 描述和分析用户需求 • 对用户需求进行评审
获取和理解需求 需求获取技术 描述和分析需求 建模、抽象、多视点、问题分解、原型 评审用户需求 需求评审原则 需求分析基础 需求分析过程示意图
需求分析基础 步骤1:获取和理解用户需求阶段 • 任务 • 获取并理解用户需求, 清除用户需求的不一致性, 模糊性和歧义性,帮助用户发现潜在的需求 • 原则 • 和用户进行交流和合作 • 将对原始问题理解与软件开发经验结合, 发现….
需求分析基础 步骤2:描述和分析用户需求阶段 • 任务 • 对用户需求进行建模,生成SRS和初步用户手册 • SRS : 用户需求(功能, 行为, 性能等) • 用户手册:如何操作和使用目标软件,界面描述和使用初步构想,目的… • 原则 • 确保SRS的完整性、一致性和准确性 • 鼓励用户参与SRS以及用户手册的制定 • 尽可能做到SRS结构清晰,措辞准确和简洁
需求分析基础 步骤3:对用户需求进行评审 • 任务 • 多方人员一起对SRS进行复核和评审,以确保用户手册和SRS全面、准确、一致地反映用户需求 • 原则 • 支持各方(用户,需求分析人员、设计人员)共同参与评审工作
需求分析基础 本讲内容 • 需求分析的任务和过程 • 需求获取技术 • 需求分析和描述技术 • 软件需求规格说明书及其评审
需求分析基础 需求获取技术
需求分析基础 访谈和会议
需求分析基础 观察用户工作流程或者实践
需求分析基础 用户和开发人员共同组成联合小组 • 加强联系 • 促进交流 • 增进合作
读者管理 读者借阅管理 书库管理 需求分析基础 案例分析:图书馆管理系统(1/3)
项目负责人 用户 需求分析人员 设计员 需求分析基础 案例分析:图书馆管理系统(2/3) 1. 建立联合小组 • 参与者: 用户、需求分析人员、设计人员。
需求分析基础 案例分析:图书馆管理系统(3/3) 2. 会议讨论 • 明确问题、范围、环境等,逐步了解用户需求 • 会议应有记录,整理形成文档 3. 分成三小组 • 读者管理、图书管理和读者借阅子系统 4. 总结各方成果形成结论性的SRS
需求分析基础 本讲内容 • 需求分析的任务和过程 • 需求获取技术 • 需求分析和描述技术 • 软件需求规格说明书及其评审
需求分析基础 需求描述和分析技术 • 问题分解 • 抽象 • 建模 • 多视点 • 快速原型
子问题1 整个问题 子问题3 子问题2 需求分析基础 问题分解 • 什么是问题分解 • 将大问题分解为小问题,通过小问题解决来实现大问题的解决 • 问题分解有助于降低解决问题的复杂度; 获取和分析问题本身所固有的整体-部分关系 • 图书馆系统 • 读者管理 • 图书管理 • 借阅管理
需求分析基础 问题抽象(1/2) • 什么是抽象? • 抽象有助于控制问题复杂度,抓住问题的本质,获取一般和特殊关系
读者抽象(提取成份) 名字 性别 单位 类别 照片 Email 电话 读者抽象(抛弃成份) 身高 年龄 …… 需求分析基础 问题抽象(2/2)
需求分析基础 需求建模(1/2) • 什么是需求模型 • 模型是对现实的简化,包含有广泛影响的要素,忽略不相关的次要因素 • 需求模型详细、准确地描述了用户对目标软件系统的功能、行为、性能、 设计约束等方面的要求 • 为什么需要建模 • 建模可缩小和简化所用户需求的分析和描述,从多个视点、多个不同的抽象层次来描述用户需求,从而更好促进软件的开发
需求分析基础 需求建模(2/2) • 注意 • 需求建模不要涉及软件设计和实现细节 • 需求建模方法 • 面向数据流的方法 • 面向对象的方法
需求分析基础 多视点分析 • 什么是多视点分析 • 从多个角度、不同层面上分析和描述用户需求 • 为什么需要多视点分析 • 人的认识具有片面性(瞎子摸象) • 多视点可以帮助我们全面把握用户的需求
需求分析基础 快速原型方法 • 传统软件开发存在的问题 • 需求分析员与用户之间没有一种直观交流媒介 • 用户需求不断变化 如何适应这样一种变化 • 如何更为直观地评价用户需求 • 什么是软件系统的原型 • 对软件系统的主要功能和行为的直观描述(操作模式、过程和界面) • 什么是快速原型方法 • 通过构建用户需求的原型来分析和描述用户需求
需求分析基础 快速原型方法示意图
需求分析基础 本讲内容 • 需求分析的任务和过程 • 需求获取技术 • 需求分析和描述技术 • 软件需求规格说明书及其评审
需求分析基础 软件需求规格说明书及其评审 • 软件需求规格说明书 • 软件需求规格说明书评审
需求分析基础 软件需求规格说明书 • 需求规格说明书的内容 • 功能与行为需求描述,例如,办理读者借书证,验证读者借书证号码是否存在 • 性能需求描述,例如查询响应时间不超过1秒钟 • 设计约束,例如运行在windows 2000操作系统下 • 其他,要求在6个月内完成
需求分析基础 软件需求规格说明书评审 • 在将需求规格说明书递交给软件设计之前,必须对它进行评审 • 评审要求用户、需求分析员和设计员共同参与
需求分析基础 需求评审的内容和标准 • 正确性 • 无歧义性 • 完全性 • 可验证性 • 一致性 • 可理解和可修改性 • 可追踪性
需求分析基础 本讲小结 • 需求分析的任务和过程 • 需求获取技术 • 需求描述和分析技术 • 软件需求规格说明书以及评审
需求分析基础 思考题 • 你认为课堂上讲的这些需求分析技术是否有效和可行? 如不可行你认为应怎样进行需求分析? • 如果你是一名软件项目经理,你如何组织和开展需求分析工作(包括人员组织、方法和技术的采用、结果等) • 需求分析对软件开发的意义何在,有何作用? • 请认真理解和领会各种需求分析技术,分析各种技术的特点以及在需求分析和描述中的作用?
需求分析基础 An Introduction to Software Engineering Q & A Practice, Practice, and Practice